private SelectionControl<H, Element> clearSelection(final boolean fireEvent) { deselect(getSelectedItems()); if (fireEvent) { fireCanvasClear(); } return this; }
@Override public SelectionControl<H, Element> select(final String uuid) { return select(Collections.singletonList(uuid)); }
public static <H extends AbstractCanvasHandler> MapSelectionControl<H> build(final Consumer<CanvasSelectionEvent> selectionEventConsumer, final Consumer<CanvasClearSelectionEvent> clearSelectionEventConsumer) { return new MapSelectionControl<>(selectionEventConsumer, clearSelectionEventConsumer); }
private AbstractCanvasHandler getCanvasHandler() { return getSelectionControl().getCanvasHandler(); } }
@SuppressWarnings("unchecked") private void updateViewShapesState(Collection<String> uuids) { uuids.stream() .map(uuid -> getCanvas().getShape(uuid)) .filter(Objects::nonNull) .forEach(shape -> { final boolean isSelected = isSelected(shape.getUUID()); if (isSelected && isReadonly()) { shape.applyState(ShapeState.HIGHLIGHT); } else if (isSelected) { shape.applyState(ShapeState.SELECTED); } else { shape.applyState(ShapeState.NONE); } }); getCanvas().focus(); }
@Override public Optional<Object> getSelectedItemDefinition() { String selectedItemUUID = null; final Collection<String> selectedItems = getSelectedItems(); if (null != selectedItems && !selectedItems.isEmpty()) { selectedItemUUID = selectedItems.iterator().next(); } if (Objects.isNull(selectedItemUUID)) { final AbstractCanvasHandler canvasHandler = getCanvasHandler(); if (!Objects.isNull(canvasHandler)) { final Diagram<?, ?> diagram = getCanvasHandler().getDiagram(); if (!Objects.isNull(diagram)) { final String cRoot = diagram.getMetadata().getCanvasRootUUID(); // Check if there exist any canvas root element. if (!StringUtils.isEmpty(cRoot)) { selectedItemUUID = cRoot; } } } } if (!Objects.isNull(selectedItemUUID)) { final Element<? extends Definition<?>> element = CanvasLayoutUtils.getElement(getCanvasHandler(), selectedItemUUID); return Optional.ofNullable(element); } else { return Optional.empty(); } }
public void onCanvasElementSelected(final CanvasSelectionEvent event) { checkNotNull("event", event); if (null == canvasHandler) { return; } final boolean isSameCtxt = canvasHandler.equals(event.getCanvasHandler()); final boolean isSingleSelection = event.getIdentifiers().size() == 1; final boolean isCanvasRoot = isSingleSelection && event.getIdentifiers().iterator().next().equals(getRootUUID()); final boolean equals = items.entrySet().stream() .filter(Map.Entry::getValue) .map(Map.Entry::getKey) .anyMatch(uuid -> event.getIdentifiers().contains(uuid)); if (isSameCtxt && !isCanvasRoot && !equals) { this.clearSelection(false); select(event.getIdentifiers()); } }
@Override protected void doDestroy() { if (null != layerClickHandler) { getCanvas().removeHandler(layerClickHandler); this.layerClickHandler = null; } items.clear(); }
@Override public void onChanged(final SelectionManager.SelectedItems selectedItems) { final SelectionManager.ChangedItems changedItems = selectedItems.getChanged(); getSelectionControl().deselect(new Lists.Builder<String>() .addAll(shapesToIdentifiers(changedItems.getRemovedShapes().toList())) .addAll(shapesToIdentifiers(changedItems.getRemovedConnectors().toList())).build()); getSelectionControl().select(new Lists.Builder<String>() .addAll(shapesToIdentifiers(changedItems.getAddedShapes().toList())) .addAll(shapesToIdentifiers(changedItems.getAddedConnectors().toList())).build()); defaultSelectionListener.onChanged(selectedItems); } };
@Override public SelectionControl<H, Element> deselect(final String uuid) { selectionControl.deselect(uuid); return this; }
@Override public void clear() { clearSelection(true); }
@Inject public AbstractSelectionControl(final Event<CanvasSelectionEvent> canvasSelectionEvent, final Event<CanvasClearSelectionEvent> clearSelectionEvent) { this.canvasSelectionEvent = canvasSelectionEvent; this.canvasClearSelectionEvent = clearSelectionEvent; this.selectionControl = MapSelectionControl.build(this::fireSelectionEvent, this::fireClearSelectionEvent); }
@Override public void destroy() { onDestroy(); selectionControl.destroy(); }
@Override public final void deregister(final Element element) { selectionControl.deregister(element); onDeregister(element); }
private AbstractCanvasHandler getCanvasHandler() { return getSelectionControl().getCanvasHandler(); }
protected void deregister(final String uuid) { final Shape shape = getSelectionControl().getCanvas().getShape(uuid); final ViewHandler<?> handler = handlers.get(uuid); doDeregisterHandler(shape, handler); }
@Override public SelectionControl<H, Element> deselect(final String uuid) { return deselect(Collections.singletonList(uuid)); }
@Override public SelectionControl<H, Element> clearSelection() { return clearSelection(true); }
private WiresManager getWiresManager() { return ((WiresCanvas) getSelectionControl().getCanvasHandler().getCanvas()) .getWiresManager(); }
@Override protected void doInit() { // Click handler for the canvas area - cleans current selection, if any. final MouseClickHandler clickHandler = new MouseClickHandler() { @Override public void handle(final MouseClickEvent event) { if (event.isButtonLeft() || event.isButtonRight()) { clearSelection(false); final String canvasRootUUID = getRootUUID(); fireCanvasClear(); if (null != canvasRootUUID) { selectionEventConsumer.accept(new CanvasSelectionEvent(canvasHandler, canvasRootUUID)); } } } }; getCanvas().addHandler(ViewEventType.MOUSE_CLICK, clickHandler); this.layerClickHandler = clickHandler; }