@Override public Stream<E> getItems() { return datasource.getItems().stream(); }
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); } }
public void saveStencilSet() throws IOException { if (!validateActiveStencilFrame()) return; String modifiedStencilSetJson = StencilSetJsonHelper.generateCustomStencilSet(stencilsDs.getItems()); stencilSetService.setStencilSet(modifiedStencilSetJson); stencilsDs.getItems().stream() .filter(stencil -> stencil instanceof ServiceTaskStencil) .forEach(stencil -> stencilSetService.registerServiceTaskStencilBpmnJsonConverter(stencil.getStencilId())); showNotification(getMessage("saved"), NotificationType.HUMANIZED); }
public void exportStencilSet() throws IOException { String customStencilSetJson = StencilSetJsonHelper.generateCustomStencilSet(stencilsDs.getItems()); List<FileDescriptor> icons = stencilsDs.getItems().stream() .filter(stencil -> stencil instanceof ServiceTaskStencil && ((ServiceTaskStencil) stencil).getIconFileId() != null) .map(stencil -> { if (((ServiceTaskStencil)stencil).getIconFile() != null) { return ((ServiceTaskStencil)stencil).getIconFile(); } else { LoadContext<FileDescriptor> ctx = new LoadContext<>(FileDescriptor.class).setId(((ServiceTaskStencil) stencil).getIconFileId()); return dataManager.load(ctx); } }) .collect(Collectors.toList()); byte[] bytes = stencilSetService.exportStencilSet(customStencilSetJson, icons); exportDisplay.show(new ByteArrayDataProvider(bytes), "stencilset.zip"); }
@Override public void actionPerform(Component component) { Stencil selectedStencil = stencilsDs.getItem(); Integer currentOrderNo = selectedStencil.getOrderNo(); stencilsDs.getItems().stream() .filter(stencil -> stencil.getParentGroup() != null && stencil.getParentGroup().equals(selectedStencil.getParentGroup()) && stencil.getOrderNo() > currentOrderNo) .min((o1, o2) -> o1.getOrderNo() - o2.getOrderNo()) .ifPresent(nextStencil -> { selectedStencil.setOrderNo(nextStencil.getOrderNo()); nextStencil.setOrderNo(currentOrderNo); refreshDs(); stencilsTable.setSelected(selectedStencil); }); }
@Override protected boolean isApplicable() { Stencil selectedItem = stencilsDs.getItem(); if (selectedItem != null && selectedItem instanceof ServiceTaskStencil) { for (Stencil stencil : stencilsDs.getItems()) { if (selectedItem.getParentGroup().equals(stencil.getParentGroup()) && stencil.getOrderNo() < selectedItem.getOrderNo()) { return true; } } } return false; }
@Override public void actionPerform(Component component) { Stencil selectedStencil = stencilsDs.getItem(); Integer currentOrderNo = selectedStencil.getOrderNo(); stencilsDs.getItems().stream() .filter(stencil -> stencil.getParentGroup() != null && stencil.getParentGroup().equals(selectedStencil.getParentGroup()) && stencil.getOrderNo() < currentOrderNo) .max((o1, o2) -> o1.getOrderNo() - o2.getOrderNo()) .ifPresent(prevStencil -> { selectedStencil.setOrderNo(prevStencil.getOrderNo()); prevStencil.setOrderNo(currentOrderNo); refreshDs(); stencilsTable.setSelected(selectedStencil); }); }
@Override protected boolean isApplicable() { Stencil selectedItem = stencilsDs.getItem(); if (selectedItem != null && selectedItem instanceof ServiceTaskStencil) { for (Stencil stencil : stencilsDs.getItems()) { if (selectedItem.getParentGroup().equals(stencil.getParentGroup()) && stencil.getOrderNo() > selectedItem.getOrderNo()) { return true; } } } return false; }
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()); }