DecisionNavigatorItem makeItem(final Element<?> element) { final Node<org.kie.workbench.common.stunner.core.graph.content.view.View, Edge> node = (Node<org.kie.workbench.common.stunner.core.graph.content.view.View, Edge>) element.asNode(); return itemFactory.makeItem(node); }
@Override public ClipboardControl<Element, AbstractCanvas, ClientSession> set(Element... element) { clear(); elements.addAll(Arrays.stream(element).collect(Collectors.toSet())); elementsParent.putAll(elements.stream().filter(e -> e instanceof Node).collect(Collectors.toMap(Element::getUUID, e -> GraphUtils.getParent(e.asNode()).getUUID()))); return this; }
@SuppressWarnings("unchecked") public static boolean isFormGenerationSupported(final Element<?> element) { return null != element.asNode() && element.getContent() instanceof View && ((Element<View<?>>) element) .getContent() .getDefinition() .getClass() .equals(UserTask.class); } }
@Override @SuppressWarnings("unchecked") public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler, final String uuid, final MouseClickEvent event) { if (confirmDelete.test(this)) { final Node<?, Edge> node = CanvasLayoutUtils.getElement(canvasHandler, uuid).asNode(); clearSelectionEvent.fire(new CanvasClearSelectionEvent(canvasHandler)); sessionCommandManager.execute(canvasHandler, commandFactory.deleteNode(node)); } return this; } }
@SuppressWarnings("unchecked") private boolean isParentAnEventSubProcess(final String uuid) { AbstractCanvasHandler canvasHandler = (AbstractCanvasHandler) sessionManager.getCurrentSession().getCanvasHandler(); Node node = canvasHandler.getGraphIndex().getNode(uuid); Element<?> parent = GraphUtils.getParent(node); if (null != parent && null != parent.asNode() && parent.asNode().getContent() instanceof View) { return ((Node<View<?>, Edge>) parent.asNode()) .getContent() .getDefinition() .getClass() .equals(EventSubprocess.class); } return false; } }
private boolean isBusinessKnowledgeModel(final Element<?> element) { return null != element.asNode() && element.getContent() instanceof Definition && ((Definition) element.getContent()).getDefinition() instanceof BusinessKnowledgeModel; } }
private boolean isSupported(final AbstractCanvasHandler canvasHandler, final Element<?> element) { return null != element.asNode() && !CommandUtils.isError( commandFactory.deleteNode((Node) element).allow(canvasHandler) ); } }
private boolean isDecision(final Element<?> element) { return null != element.asNode() && element.getContent() instanceof Definition && ((Definition) element.getContent()).getDefinition() instanceof Decision; }
@Override @SuppressWarnings("unchecked") public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler, final String uuid, final MouseClickEvent event) { // Notice the toolbox factory ensure this action is only being included // for Decision definitions, next cast is safe. final Node<View<? extends Decision>, Edge> decisionNode = (Node<View<? extends Decision>, Edge>) CanvasLayoutUtils.getElement(canvasHandler, uuid) .asNode(); final Decision decision = decisionNode.getContent().getDefinition(); editExpressionEvent.fire(new EditExpressionEvent(sessionManager.getCurrentSession(), uuid, decision, Optional.of(decision))); return this; } }
protected Consumer<Node> cloneNodeCallback(AbstractCanvasHandler context) { return clone -> { //check if not a redo operation, in case size == 1 it was set before if (!command.isEmpty()) { command = buildCommand(); } command.addCommand(getCloneCanvasNodeCommand(GraphUtils.getParent(clone).asNode(), clone, context.getDiagram().getMetadata().getShapeSetId())); cloneNodeCommandCallback.ifPresent(callback -> callback.accept(clone)); }; }
@Override @SuppressWarnings("unchecked") public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler, final String uuid, final MouseClickEvent event) { // Notice the toolbox factory ensure this action is only being included // for BusinessKnowledgeModel definitions, next cast is safe. final Node<View<? extends BusinessKnowledgeModel>, Edge> bkmNode = (Node<View<? extends BusinessKnowledgeModel>, Edge>) CanvasLayoutUtils.getElement(canvasHandler, uuid) .asNode(); final BusinessKnowledgeModel bkm = bkmNode.getContent().getDefinition(); editExpressionEvent.fire(new EditExpressionEvent(sessionManager.getCurrentSession(), uuid, bkm.asHasExpression(), Optional.of(bkm))); return this; } }
@Override protected AbstractCompositeCommand<GraphCommandExecutionContext, RuleViolation> initialize(GraphCommandExecutionContext context) { //getting the node parent Optional<String> parentUUID = getParentUUID(); if (!parentUUID.isPresent()) { throw new IllegalStateException("Parent not found for node " + candidate); } final Object bean = candidate.getContent().getDefinition(); clone = (Node<View, Edge>) context.getFactoryManager().newElement(UUID.uuid(), bean.getClass()).asNode(); cloneNodeContentWithProperties(context); //creating node commands to be executed addCommand(new RegisterNodeCommand(clone)); addCommand(new AddChildNodeCommand(parentUUID.get(), clone, position)); return this; }
@Override @SuppressWarnings("unchecked") public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler, final String uuid, final MouseClickEvent event) { final String ssid = canvasHandler.getDiagram().getMetadata().getShapeSetId(); final Node<View<?>, Edge> sourceNode = (Node<View<?>, Edge>) CanvasLayoutUtils.getElement(canvasHandler, uuid).asNode(); //deselect node to be morphed, to avoid showing toolbar while morphing clearSelectionEventEvent.fire(new CanvasClearSelectionEvent(canvasHandler)); //delay is used to overcome the toolbar animation while morphing the node final CommandResult<CanvasViolation> result = sessionCommandManager.execute(canvasHandler, commandFactory.morphNode(sourceNode, morphDefinition, targetDefinitionId, ssid)); if (CommandUtils.isError(result)) { LOGGER.log(Level.SEVERE, result.toString()); } else { CanvasLayoutUtils.fireElementSelectedEvent(selectionEvent, canvasHandler, uuid); } return this; }
public static Point2D getComputedPosition(final Node<?, ? extends Edge> element) { double x = 0; double y = 0; Element<?> parent = element; while (null != parent && null != parent.asNode() && parent.getContent() instanceof View) { final Point2D position = getPosition((View) parent.getContent()); x += position.getX(); y += position.getY(); parent = getParent((Node<?, ? extends Edge>) parent); } return new Point2D(x, y); }
public void init(ClientSession session) { Diagram diagram = session.getCanvasHandler().getDiagram(); String canvasRootUUID = diagram.getMetadata().getCanvasRootUUID(); @SuppressWarnings("unchecked") Node<?, ? extends Edge> selectedNode = getSourceNode(diagram, getSelectedElementUUID(session)); if (selectedNode != null) { Map<String, VariableMetadata> collectedVariables = new HashMap<>(); Set<String> collectedTypes = new HashSet<>(); Node<?, ? extends Edge> parentNode = getParent(selectedNode).asNode(); String parentVariables; while (parentNode != null) { parentVariables = getVariables(parentNode); if (!isEmpty(parentVariables)) { addVariables(parentVariables, collectedVariables, collectedTypes); } if (parentNode.getUUID().equals(canvasRootUUID)) { parentNode = null; } else { parentNode = getParent(parentNode).asNode(); } } Path path = session.getCanvasHandler().getDiagram().getMetadata().getPath(); TypeMetadataQuery query = new TypeMetadataQuery(path, collectedTypes); service.call(result -> initVariables(collectedVariables.values(), ((TypeMetadataQueryResult) result))).findMetadata(query); } }
@Override @SuppressWarnings("unchecked") public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler, final String uuid, final MouseClickEvent event) { // Obtain the connector and source node instances for proxying. final Element<?> element = CanvasLayoutUtils.getElement(canvasHandler, uuid); final Node<View<?>, Edge> sourceNode = (Node<View<?>, Edge>) element.asNode(); final Edge<? extends ViewConnector<?>, Node> connector = (Edge<? extends ViewConnector<?>, Node>) clientFactoryManager .newElement(UUID.uuid(), edgeId) .asEdge(); // Set the transient connection to the source node, for further rule evaluations. connector.setSourceNode(sourceNode); // Built and show a connector drag proxy, to check and finally set // candidate the target node. final double x = event.getX(); final double y = event.getY(); dragProxy = showDragProxy(canvasHandler, connector, sourceNode, (int) x, (int) y); return this; }
int levels = 0; do { parentNode = GraphUtils.getParent(currentNode).asNode(); compensableNodes.addAll(getCompensableNodes(parentNode));
@Override public void executeAction(final AbstractCanvasHandler canvasHandler, final String selectedNodeId) { final Node sourceNode = CanvasLayoutUtils.getElement(canvasHandler, selectedNodeId).asNode(); final String definitionSetId = canvasHandler.getDiagram().getMetadata().getDefinitionSetId(); final CommonDomainLookups commonDomainLookups = toolboxDomainLookups.get(definitionSetId); final Set<String> connectorDefinitionIds = commonDomainLookups.lookupTargetConnectors(sourceNode); for (final String connectorDefinitionId : connectorDefinitionIds) { final Set<String> targetNodesDefinitionIds = commonDomainLookups.lookupTargetNodes(canvasHandler.getDiagram().getGraph(), sourceNode, connectorDefinitionId); for (final String targetNodeDefinitionId : targetNodesDefinitionIds) { final Object definition = definitionsCacheRegistry.getDefinitionById(targetNodeDefinitionId); if (canAppendNodeOfDefinition(definition)) { generalCreateNodeAction.executeAction(canvasHandler, selectedNodeId, targetNodeDefinitionId, connectorDefinitionId); break; } } } }
double yToCheck = 0; if (parentNode != null) { parentNodePosition = GraphUtils.getComputedPosition(parentNode.asNode()); xToCheck = x + parentNodePosition.getX(); yToCheck = y + parentNodePosition.getY();