protected void refreshDs() { Collection<Stencil> items = new ArrayList<>(stencilsDs.getItems()); stencilsDs.clear(); Map<Stencil, List<Stencil>> groupMap = new LinkedHashMap<>(); items.stream().filter(stencil -> stencil instanceof GroupStencil) .forEach(groupStencil -> groupMap.put(groupStencil, new ArrayList<>())); items.stream().filter(stencil -> !(stencil instanceof GroupStencil)) .forEach(stencil -> groupMap.get(stencil.getParentGroup()).add(stencil)); groupMap.values().stream().forEach(stencilsList -> stencilsList.sort((o1, o2) -> o1.getOrderNo() - o2.getOrderNo())); for (Map.Entry<Stencil, List<Stencil>> entry : groupMap.entrySet()) { Stencil groupStencil = entry.getKey(); List<Stencil> stencilsInsideGroup = entry.getValue(); stencilsDs.addItem(groupStencil); stencilsInsideGroup.stream().forEach(stencilsDs::addItem); } }
protected void initData() { groupsDs.clear(); stencilsDs.clear(); String srcStencilSetJson = stencilSetService.getStencilSet(); List<Stencil> stencils = StencilSetJsonHelper.parseStencilSetJson(srcStencilSetJson); for (Stencil stencil : stencils) { stencilsDs.addItem(stencil); if (stencil instanceof GroupStencil) { groupsDs.addItem((GroupStencil) stencil); } } }
public void createGroupStencil() { if (!validateActiveStencilFrame()) return; GroupStencil groupStencil = metadata.create(GroupStencil.class); groupStencil.setEditable(true); stencilsDs.addItem(groupStencil); stencilsTable.setSelected(groupStencil); activeStencilFrame.requestFocus(); groupsDs.addItem(groupStencil); }
public void createServiceTaskStencil() { if (!validateActiveStencilFrame()) return; GroupStencil group = null; Stencil currentlySelected = stencilsDs.getItem(); if (currentlySelected != null) { if (currentlySelected instanceof GroupStencil) { group = (GroupStencil) currentlySelected; } else { group = currentlySelected.getParentGroup(); } } if (group == null) { showNotification(getMessage("selectGroup"), NotificationType.WARNING); return; } ServiceTaskStencil stencilEntity = metadata.create(ServiceTaskStencil.class); stencilEntity.setOrderNo(0); GroupStencil finalGroup = group; stencilsDs.getItems().stream() .filter(stencil -> finalGroup.equals(stencil.getParentGroup())) .max((o1, o2) -> o1.getOrderNo() - o2.getOrderNo()) .ifPresent(stencilWithMaxOrderNo -> stencilEntity.setOrderNo(stencilWithMaxOrderNo.getOrderNo() + 1)); stencilEntity.setParentGroup(group); stencilsDs.addItem(stencilEntity); stencilsTable.setSelected(stencilEntity); activeStencilFrame.requestFocus(); stencilsTable.expand(group.getId()); }
@Override public void actionPerform(Component component) { BandDefinition parentDefinition = treeDs.getItem(); Report report = getItem(); // Use root band as parent if no items selected if (parentDefinition == null) { parentDefinition = report.getRootBandDefinition(); } if (parentDefinition.getChildrenBandDefinitions() == null) { parentDefinition.setChildrenBandDefinitions(new ArrayList<>()); } // orderBandDefinitions(parentDefinition); BandDefinition newBandDefinition = metadata.create(BandDefinition.class); newBandDefinition.setName("newBand" + (parentDefinition.getChildrenBandDefinitions().size() + 1)); newBandDefinition.setOrientation(Orientation.HORIZONTAL); newBandDefinition.setParentBandDefinition(parentDefinition); if (parentDefinition.getChildrenBandDefinitions() != null) { newBandDefinition.setPosition(parentDefinition.getChildrenBandDefinitions().size()); } else { newBandDefinition.setPosition(0); } newBandDefinition.setReport(report); parentDefinition.getChildrenBandDefinitions().add(newBandDefinition); treeDs.addItem(newBandDefinition); treeDs.refresh(); bandTree.expandTree(); bandTree.setSelected(newBandDefinition);//let's try and see if it increases usability bandTree.focus(); }