Search in sources :

Example 1 with ParallelExecutionAction

use of org.talend.designer.core.ui.action.ParallelExecutionAction in project tdi-studio-se by Talend.

the class TalendEditorContextMenuProvider method buildContextMenu.

/**
     * Called when the context menu is about to show. Actions, whose state is enabled, will appear in the context menu.
     * 
     * @see org.eclipse.gef.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager)
     */
@Override
public void buildContextMenu(final IMenuManager menu) {
    if (!isEnableContextMenu()) {
        return;
    }
    // Add standard action groups to the menu
    menu.add(new Separator(GROUP_CONNECTIONS));
    menu.add(new Separator(GEFActionConstants.GROUP_UNDO));
    menu.add(new Separator(GEFActionConstants.GROUP_COPY));
    menu.add(new Separator(GEFActionConstants.GROUP_EDIT));
    menu.add(new Separator(GEFActionConstants.GROUP_REST));
    menu.add(new Separator(GROUP_OTHER));
    menu.add(new Separator(GEFActionConstants.GROUP_VIEW));
    menu.add(new Separator(GROUP_BREAKPOINT));
    IAction action;
    // target group id
    menu.appendToGroup(// target group id
    GEFActionConstants.GROUP_UNDO, // action to add
    getAction(ActionFactory.UNDO.getId()));
    menu.appendToGroup(GEFActionConstants.GROUP_UNDO, getAction(ActionFactory.REDO.getId()));
    if (part != null) {
        // new GEFCopyAction(part);
        action = getAction(ActionFactory.COPY.getId());
        if (action instanceof GEFCopyAction) {
            ((GEFCopyAction) action).update();
        }
        menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
        // new GEFPasteAction(part);
        action = getAction(ActionFactory.PASTE.getId());
        GEFPasteAction pasteAction = (GEFPasteAction) action;
        Point p = Display.getCurrent().getCursorLocation();
        p = this.getViewer().getControl().toControl(p);
        // gcui see bug 7812:Copy/Paste component in Job designer.
        LayerManager layerManager = (LayerManager) this.getViewer().getEditPartRegistry().get(LayerManager.ID);
        IFigure contentLayer = layerManager.getLayer(LayerConstants.PRINTABLE_LAYERS);
        // System.out.println("X:" + contentLayer.getSize().width + "   Y:" + contentLayer.getSize().height);
        org.eclipse.draw2d.geometry.Point p1 = new org.eclipse.draw2d.geometry.Point(p.x, p.y);
        contentLayer.translateToAbsolute(p1);
        // System.out.println("relative:" + p);
        p.x = 2 * (p.x) - p1.x;
        p.y = 2 * (p.y) - p1.y;
        // System.out.println("absolute:" + p);
        pasteAction.setCursorLocation(p);
        menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
        menu.appendToGroup(GEFActionConstants.GROUP_EDIT, getAction(ActionFactory.DELETE.getId()));
        menu.appendToGroup(GEFActionConstants.GROUP_EDIT, getAction(ActionFactory.SELECT_ALL.getId()));
        action = new ActivateElementAction(part);
        ((ActivateElementAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = new ActivateSubjobAction(part);
        ((ActivateSubjobAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = new ActivateSubjobOneComponentAction(part);
        ((ActivateSubjobOneComponentAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = getAction(ConnectionSetAsMainRef.ID);
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = getAction(ModifyMergeOrderAction.ID);
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = getAction(ModifyOutputOrderAction.ID);
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        List<String> orderActionIDs = ModifyConnectionOrderAction.getOrderActionIDs();
        for (String id : orderActionIDs) {
            action = getAction(id);
            if (action != null && action.isEnabled()) {
                menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
            }
        }
        //$NON-NLS-1$
        MenuManager subMenu = new MenuManager(Messages.getString("TalendEditorContextMenuProvider.Row"));
        menu.appendToGroup(GROUP_CONNECTIONS, subMenu);
        action = new ConnectionCreateAction(part, EConnectionType.FLOW_MAIN);
        ((ConnectionCreateAction) action).update();
        List<INodeConnector> connectors = ((ConnectionCreateAction) action).getConnectors();
        if (connectors.size() > 1) {
            for (INodeConnector connector : connectors) {
                if (connector.isMultiSchema()) {
                    action = new ConnectionCreateAction(part, connector);
                    ((ConnectionCreateAction) action).update();
                    if (action.isEnabled() && connector.isShow()) {
                        List<String> menuList = ((ConnectionCreateAction) action).getMenuList();
                        for (int i = 0; i < menuList.size(); i++) {
                            action = new ConnectionCreateAction(part, connector);
                            ((ConnectionCreateAction) action).update();
                            ((ConnectionCreateAction) action).setText(menuList.get(i));
                            subMenu.add(action);
                        }
                    }
                } else {
                    action = new ConnectionCreateAction(part, connector);
                    ((ConnectionCreateAction) action).update();
                    if (action.isEnabled() && connector.isShow()) {
                        ((ConnectionCreateAction) action).setText(connector.getMenuName());
                        subMenu.add(action);
                    }
                }
            }
        } else {
            if (connectors.size() == 1) {
                action = new ConnectionCreateAction(part, connectors.get(0));
                ((ConnectionCreateAction) action).update();
                if (action.isEnabled() && connectors.get(0).isShow()) {
                    List<String> menuList = ((ConnectionCreateAction) action).getMenuList();
                    for (int i = 0; i < menuList.size(); i++) {
                        action = new ConnectionCreateAction(part, connectors.get(0));
                        ((ConnectionCreateAction) action).update();
                        ((ConnectionCreateAction) action).setText(menuList.get(i));
                        subMenu.add(action);
                    }
                }
            }
        }
        retrieveConnectors(subMenu, EConnectionType.ITERATE);
        retrieveConnectors(subMenu, EConnectionType.ROUTE);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_TRY);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_CATCH);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_FINALLY);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_ENDBLOCK);
        //$NON-NLS-1$
        subMenu = new MenuManager("Link");
        menu.appendToGroup(GROUP_CONNECTIONS, subMenu);
        action = new ConnectionCreateAction(part, EConnectionType.TABLE);
        ((ConnectionCreateAction) action).update();
        if (action.isEnabled()) {
            List<String> menuList = ((ConnectionCreateAction) action).getMenuList();
            for (int i = 0; i < menuList.size(); i++) {
                action = new ConnectionCreateAction(part, EConnectionType.TABLE);
                ((ConnectionCreateAction) action).update();
                ((ConnectionCreateAction) action).setText(menuList.get(i));
                subMenu.add(action);
            }
        }
        //$NON-NLS-1$
        subMenu = new MenuManager("Move to joblet");
        menu.appendToGroup(GROUP_OTHER, subMenu);
        action = getMoveToJobletAction(part, null, null);
        if (action != null) {
            ((AddToJobletAction) action).update();
            List<Node> nodeList = ((AddToJobletAction) action).getJobletNodeList();
            Map<INode, IConnection> nodeMap = ((AddToJobletAction) action).getJobletNodeMap();
            if (nodeList != null) {
                for (Node jobletNode : nodeList) {
                    action = getMoveToJobletAction(part, jobletNode, nodeMap);
                    if (action != null) {
                        ((AddToJobletAction) action).update();
                        action.setText(jobletNode.getLabel());
                        subMenu.add(action);
                    }
                }
            }
        }
        action = getMoveToJobAction(part);
        if (action != null) {
            ((SelectionAction) action).update();
            if (action.isEnabled()) {
                menu.appendToGroup(GROUP_OTHER, action);
            }
        }
        //$NON-NLS-1$
        subMenu = new MenuManager(Messages.getString("TalendEditorContextMenuProvider.Trigger"));
        menu.appendToGroup(GROUP_CONNECTIONS, subMenu);
        /*
             * action = new ConnectionCreateAction(part, EConnectionType.RUN_BEFORE); ((ConnectionCreateAction)
             * action).update(); if (action.isEnabled()) { subMenu.add(action); }
             */
        retrieveConnectors(subMenu, EConnectionType.ON_SUBJOB_OK);
        retrieveConnectors(subMenu, EConnectionType.ON_SUBJOB_ERROR);
        subMenu.add(new Separator());
        retrieveConnectors(subMenu, EConnectionType.SYNCHRONIZE);
        retrieveConnectors(subMenu, EConnectionType.PARALLELIZE);
        subMenu.add(new Separator());
        retrieveConnectors(subMenu, EConnectionType.RUN_IF);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_WHEN);
        retrieveConnectors(subMenu, EConnectionType.ROUTE_OTHER);
        retrieveConnectors(subMenu, EConnectionType.ON_COMPONENT_OK);
        retrieveConnectors(subMenu, EConnectionType.ON_COMPONENT_ERROR);
        retrieveConnectors(subMenu, EConnectionType.STARTS);
        action = new NodeBreakpointAction(part);
        ((NodeBreakpointAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
        }
        action = new ShowComponentSettingViewerAction(part);
        ((ShowComponentSettingViewerAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_OTHER, action);
        }
        action = new DisplaySubjobAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_OTHER, action);
        }
        if (PluginChecker.isAutoParalelPluginLoaded()) {
            action = new SetParallelizationAction(part);
            ((SelectionAction) action).update();
            if (action.isEnabled()) {
                menu.appendToGroup(GROUP_OTHER, action);
            }
            action = new DisableParallelizationAction(part);
            ((SelectionAction) action).update();
            if (action.isEnabled()) {
                menu.appendToGroup(GROUP_OTHER, action);
            }
        }
        // see feature 5027
        action = new ParallelExecutionAction(part);
        ((SelectionAction) action).update();
        if (PluginChecker.isTeamEdition() && action.isEnabled()) {
            menu.appendToGroup(GROUP_OTHER, action);
        }
        action = new SearchComponentAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_OTHER, action);
        }
        action = new TraceEnableAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_BREAKPOINT, action);
        }
        action = new TraceDisableAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_BREAKPOINT, action);
        }
        action = new FilterTraceColumnAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_BREAKPOINT, action);
        }
        action = new ShowBreakpointAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_BREAKPOINT, action);
        }
        action = new OpenJobHierarchyAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_OTHER, action);
        }
        action = new OpentRunJobComponentAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_VIEW, action);
        }
        action = new BringForwardAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_VIEW, action);
        }
        action = new BringToFrontAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_VIEW, action);
        }
        action = new SendBackwardAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_VIEW, action);
        }
        action = new SendToBackAction(part);
        ((SelectionAction) action).update();
        if (action.isEnabled()) {
            menu.appendToGroup(GEFActionConstants.GROUP_VIEW, action);
        }
        List<SelectionAction> instances = CustomExternalActions.getInstances(part);
        for (SelectionAction selectionAction : instances) {
            selectionAction.update();
            if (selectionAction.isEnabled()) {
                menu.appendToGroup(GEFActionConstants.GROUP_VIEW, selectionAction);
            }
        }
    }
}
Also used : INode(org.talend.core.model.process.INode) GEFCopyAction(org.talend.designer.core.ui.action.GEFCopyAction) GEFPasteAction(org.talend.designer.core.ui.action.GEFPasteAction) Node(org.talend.designer.core.ui.editor.nodes.Node) INode(org.talend.core.model.process.INode) SearchComponentAction(org.talend.designer.core.ui.action.SearchComponentAction) IConnection(org.talend.core.model.process.IConnection) DisableParallelizationAction(org.talend.designer.core.ui.action.DisableParallelizationAction) INodeConnector(org.talend.core.model.process.INodeConnector) NodeBreakpointAction(org.talend.designer.core.ui.action.NodeBreakpointAction) OpenJobHierarchyAction(org.talend.designer.core.ui.hierarchy.OpenJobHierarchyAction) ParallelExecutionAction(org.talend.designer.core.ui.action.ParallelExecutionAction) OpentRunJobComponentAction(org.talend.designer.core.ui.action.OpentRunJobComponentAction) FilterTraceColumnAction(org.talend.designer.core.ui.action.FilterTraceColumnAction) BringToFrontAction(org.talend.designer.core.ui.action.BringToFrontAction) LayerManager(org.eclipse.gef.editparts.LayerManager) IFigure(org.eclipse.draw2d.IFigure) ActivateSubjobOneComponentAction(org.talend.designer.core.ui.action.ActivateSubjobOneComponentAction) SetParallelizationAction(org.talend.designer.core.ui.action.SetParallelizationAction) ActivateElementAction(org.talend.designer.core.ui.action.ActivateElementAction) TraceDisableAction(org.talend.designer.core.ui.action.TraceDisableAction) IAction(org.eclipse.jface.action.IAction) Point(org.eclipse.swt.graphics.Point) SendToBackAction(org.talend.designer.core.ui.action.SendToBackAction) SelectionAction(org.eclipse.gef.ui.actions.SelectionAction) SendBackwardAction(org.talend.designer.core.ui.action.SendBackwardAction) Point(org.eclipse.swt.graphics.Point) BringForwardAction(org.talend.designer.core.ui.action.BringForwardAction) AddToJobletAction(org.talend.designer.core.ui.action.AddToJobletAction) MenuManager(org.eclipse.jface.action.MenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) ShowComponentSettingViewerAction(org.talend.designer.core.ui.action.ShowComponentSettingViewerAction) ShowBreakpointAction(org.talend.designer.core.ui.action.ShowBreakpointAction) ActivateSubjobAction(org.talend.designer.core.ui.action.ActivateSubjobAction) Separator(org.eclipse.jface.action.Separator) TraceEnableAction(org.talend.designer.core.ui.action.TraceEnableAction) ConnectionCreateAction(org.talend.designer.core.ui.action.ConnectionCreateAction) DisplaySubjobAction(org.talend.designer.core.ui.action.DisplaySubjobAction)

Aggregations

IFigure (org.eclipse.draw2d.IFigure)1 LayerManager (org.eclipse.gef.editparts.LayerManager)1 SelectionAction (org.eclipse.gef.ui.actions.SelectionAction)1 IAction (org.eclipse.jface.action.IAction)1 IMenuManager (org.eclipse.jface.action.IMenuManager)1 MenuManager (org.eclipse.jface.action.MenuManager)1 Separator (org.eclipse.jface.action.Separator)1 Point (org.eclipse.swt.graphics.Point)1 IConnection (org.talend.core.model.process.IConnection)1 INode (org.talend.core.model.process.INode)1 INodeConnector (org.talend.core.model.process.INodeConnector)1 ActivateElementAction (org.talend.designer.core.ui.action.ActivateElementAction)1 ActivateSubjobAction (org.talend.designer.core.ui.action.ActivateSubjobAction)1 ActivateSubjobOneComponentAction (org.talend.designer.core.ui.action.ActivateSubjobOneComponentAction)1 AddToJobletAction (org.talend.designer.core.ui.action.AddToJobletAction)1 BringForwardAction (org.talend.designer.core.ui.action.BringForwardAction)1 BringToFrontAction (org.talend.designer.core.ui.action.BringToFrontAction)1 ConnectionCreateAction (org.talend.designer.core.ui.action.ConnectionCreateAction)1 DisableParallelizationAction (org.talend.designer.core.ui.action.DisableParallelizationAction)1 DisplaySubjobAction (org.talend.designer.core.ui.action.DisplaySubjobAction)1