@Override public void setRegionWidgets(List<RegionWidget> regionWidgets) { if(this.regionWidgets == null) { this.regionWidgets = new ArrayList<JpaRegionWidget>(); } this.getRegionWidgets().clear(); if(regionWidgets != null) { for(RegionWidget widget : regionWidgets) { widget.setRegion(this); this.getRegionWidgets().add(widget); } } }
/** * Utility function to move a RegionWidget to a new Region * * @param regionWidget the RegionWidget to move * @param moveToRegion the new Region to move it to */ private void moveRegionWidgetToNewRegion(RegionWidget regionWidget, Region moveToRegion) { List<RegionWidget> regionWidgets = moveToRegion.getRegionWidgets(); int renderOrder = regionWidgets.isEmpty() ? 1 : regionWidgets.get(regionWidgets.size()-1).getRenderOrder() + 1; regionWidget.setRegion(moveToRegion); regionWidget.setRenderOrder(renderOrder); moveToRegion.getRegionWidgets().add(regionWidget); }
private RegionWidget createWidgetInstance(Widget widget, Region region, int position) { RegionWidget regionWidget = new RegionWidgetImpl(); regionWidget.setRenderOrder(position); regionWidget.setWidgetId(widget.getId()); // TODO: setLocked and setHideChrome are hard-coded to false for new widgets manually added by users // which makes sense for most default cases. However should we change them to a customizable property // to allow for more flexibility? regionWidget.setLocked(false); regionWidget.setHideChrome(false); regionWidget.setRegion(region); region.getRegionWidgets().add(position, regionWidget); updateRenderSequences(region.getRegionWidgets()); Region persistedRegion = regionRepository.save(region); return persistedRegion.getRegionWidgets().get(position); }
/** * convertWidgets: List of PageTemplateWidget, JpaRegion -> List of RegionWidget * Converts the Page Template Widgets to RegionWidgets for the given JpaRegion * @param pageTemplateWidgets List of PageTemplateWidget * @param region JpaRegion * @return List of RegionWidget */ private List<RegionWidget> convertWidgets(List<PageTemplateWidget> pageTemplateWidgets, JpaRegion region){ List<RegionWidget> widgets = new ArrayList<RegionWidget>(); for (PageTemplateWidget ptw : pageTemplateWidgets){ RegionWidget regionWidget = new JpaRegionWidget(); regionWidget.setRegion(region); regionWidget.setCollapsed(false); regionWidget.setLocked(ptw.isLocked()); regionWidget.setHideChrome(ptw.isHideChrome()); regionWidget.setRenderOrder((int) ptw.getRenderSeq()); regionWidget.setWidgetId(ptw.getWidgetId()); widgets.add(regionWidget); } return widgets; }
@Override @Transactional public RegionWidget moveRegionWidgetToPage(String regionWidgetId, String toPageId) { // Get the new page Page toPage = getFromRepository(toPageId, pageRepository); // Get the region widget RegionWidget regionWidget = getFromRepository(regionWidgetId, regionWidgetRepository); Region moveFromRegion = regionWidget.getRegion(); // Move it to first position of the first region Region moveToRegion = toPage.getRegions().get(0); // verify the region widget, source, and target regions not locked verifyRegionWidgetIsNotLocked(regionWidget); verifyRegionIsNotLocked(moveToRegion); regionWidget.setRenderOrder(0); regionWidget.setRegion(moveToRegion); moveToRegion.getRegionWidgets().add(0, regionWidget); //remove it from the old region moveFromRegion.getRegionWidgets().remove(regionWidget); // update the rendersequences of the widgets in this region updateRenderSequences(moveToRegion.getRegionWidgets()); updateRenderSequences(moveFromRegion.getRegionWidgets()); // persist it regionRepository.save(moveToRegion); regionRepository.save(moveFromRegion); return getFromRepository(regionWidgetId, regionWidgetRepository); }
private void updatePage(Map<String, User> usersByOriginalId, Map<String, Widget> widgetsById, Page page) { for (Region region : page.getRegions()) { region.setPage(page); setIdViaReflection(region, null); for (RegionWidget widget : region.getRegionWidgets()) { widget.setRegion(region); Widget fromDb = widgetsById.get(widget.getId()); if (fromDb != null) { widget.setWidgetId(fromDb.getId()); } setIdViaReflection(widget, null); } } for (PageUser user : page.getMembers()) { user.setPage(page); setIdViaReflection(user, null); User fromDb = usersByOriginalId.get(user.getUserId()); if (fromDb != null) { user.setUserId(fromDb.getId()); } } User user = usersByOriginalId.get(page.getOwnerId()); page.setOwnerId(user.getId()); }