Search in sources :

Example 11 with DiagramNodePart

use of org.eclipse.sapphire.ui.diagram.editor.DiagramNodePart in project liferay-ide by liferay.

the class ShowDiagramPartActionHandler method run.

@Override
protected Object run(Presentation context) {
    SapphireDiagramEditorPagePart diagramPart = context.part().nearest(SapphireDiagramEditorPagePart.class);
    if (diagramPart != null) {
        LabelProvider labelProvider = new LabelProvider() {

            @Override
            public Image getImage(Object element) {
                if (element instanceof DiagramNodePart) {
                    DiagramNodePart diagramNodePart = (DiagramNodePart) element;
                    Element modelElement = diagramNodePart.getLocalModelElement();
                    return diagramPart.getSwtResourceCache().image(modelElement.type().image());
                } else if (element instanceof DiagramConnectionPart) {
                    return diagramPart.getSwtResourceCache().image(Transition.TYPE.image());
                } else {
                    return diagramPart.getSwtResourceCache().image(WorkflowNode.TYPE.image());
                }
            }

            @Override
            public String getText(Object element) {
                if (element instanceof DiagramNodePart) {
                    return ((DiagramNodePart) element).getId();
                } else if (element instanceof DiagramConnectionPart) {
                    return ((DiagramConnectionPart) element).getLabel();
                } else {
                    if (element != null) {
                        return element.toString();
                    }
                    return "";
                }
            }
        };
        ElementListSelectionDialog dialog = new ElementListSelectionDialog(((SwtPresentation) context).shell(), labelProvider);
        List<SapphirePart> parts = new ArrayList<>();
        parts.addAll(diagramPart.getNodes());
        parts.addAll(diagramPart.getConnections());
        dialog.setElements(parts.toArray());
        dialog.setMultipleSelection(false);
        dialog.setHelpAvailable(false);
        dialog.setTitle("Find Part");
        dialog.setMessage("Select part:");
        dialog.open();
        Object[] result = dialog.getResult();
        if ((result != null) && (result.length == 1)) {
            // select node in diagram
            ISapphirePart part = (ISapphirePart) result[0];
            if (part instanceof DiagramConnectionPart || part instanceof DiagramNodePart) {
                /*
					 * diagramPart.setSelections( ReadOnlyListFactory.create(
					 * part ) );
					 */
                SapphireDiagramEditor diagramEditor = diagramPart.adapt(SapphireDiagramEditor.class);
                GraphicalViewer viewer = diagramEditor.getGraphicalViewer();
                GraphicalEditPart editpart = diagramEditor.getGraphicalEditPart(part);
                if (editpart != null) {
                    // Force a layout first.
                    viewer.flush();
                    viewer.select(editpart);
                    viewer.reveal(editpart);
                }
            }
        }
    }
    return null;
}
Also used : GraphicalViewer(org.eclipse.gef.GraphicalViewer) Element(org.eclipse.sapphire.Element) ArrayList(java.util.ArrayList) SapphireDiagramEditor(org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor) ISapphirePart(org.eclipse.sapphire.ui.ISapphirePart) SapphirePart(org.eclipse.sapphire.ui.SapphirePart) ISapphirePart(org.eclipse.sapphire.ui.ISapphirePart) SapphireDiagramEditorPagePart(org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart) ElementListSelectionDialog(org.eclipse.ui.dialogs.ElementListSelectionDialog) DiagramConnectionPart(org.eclipse.sapphire.ui.diagram.DiagramConnectionPart) LabelProvider(org.eclipse.jface.viewers.LabelProvider) GraphicalEditPart(org.eclipse.gef.GraphicalEditPart) DiagramNodePart(org.eclipse.sapphire.ui.diagram.editor.DiagramNodePart)

Aggregations

DiagramNodePart (org.eclipse.sapphire.ui.diagram.editor.DiagramNodePart)11 DiagramConnectionPart (org.eclipse.sapphire.ui.diagram.DiagramConnectionPart)7 SapphireDiagramEditorPagePart (org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart)6 ConnectionService (org.eclipse.sapphire.ui.diagram.ConnectionService)5 DiagramNodeBounds (org.eclipse.sapphire.ui.diagram.editor.DiagramNodeBounds)5 CanTransition (com.liferay.ide.kaleo.core.model.CanTransition)4 Position (com.liferay.ide.kaleo.core.model.Position)4 Transition (com.liferay.ide.kaleo.core.model.Transition)4 WorkflowNode (com.liferay.ide.kaleo.core.model.WorkflowNode)4 WorkflowNodeMetadata (com.liferay.ide.kaleo.core.model.WorkflowNodeMetadata)3 ISapphirePart (org.eclipse.sapphire.ui.ISapphirePart)3 Point (org.eclipse.sapphire.ui.Point)3 ConnectionBendpoint (com.liferay.ide.kaleo.core.model.ConnectionBendpoint)2 TransitionMetadata (com.liferay.ide.kaleo.core.model.TransitionMetadata)2 ArrayList (java.util.ArrayList)2 Element (org.eclipse.sapphire.Element)2 SapphireDiagramEditor (org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor)2 WorkflowDefinitionEditor (com.liferay.ide.kaleo.ui.editor.WorkflowDefinitionEditor)1 GraphicalEditPart (org.eclipse.gef.GraphicalEditPart)1 GraphicalViewer (org.eclipse.gef.GraphicalViewer)1