]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.route.ui/src/org/simantics/district/route/ui/RouteView.java
Hide "enabled" column for non-component type tech type tables
[simantics/district.git] / org.simantics.district.route.ui / src / org / simantics / district / route / ui / RouteView.java
1 package org.simantics.district.route.ui;
2
3 import java.util.List;
4
5 import javax.annotation.PostConstruct;
6 import javax.annotation.PreDestroy;
7 import javax.inject.Inject;
8
9 import org.eclipse.e4.core.services.events.IEventBroker;
10 import org.eclipse.e4.ui.di.Focus;
11 import org.eclipse.e4.ui.model.application.MApplication;
12 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
13 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
14 import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
15 import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
16 import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
17 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
18 import org.eclipse.e4.ui.services.EMenuService;
19 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
20 import org.eclipse.swt.widgets.Composite;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 /**
25  * @author Tuukka Lehtonen
26  * @since 6.08
27  */
28 public class RouteView {
29
30     private static final Logger LOGGER = LoggerFactory.getLogger(RouteView.class);
31
32     private static final String POPUP_CONTRIBUTION_ID = "org.simantics.district.route.ui.contextMenu";
33     public static final String POPUP_ELEMENT_ID = "org.simantics.district.route.ui.popup";
34
35     @Inject ESelectionService selectionService;
36     @Inject IEventBroker broker;
37     RouteTree ui;
38
39     /**
40      * See
41      * http://www.vogella.com/tutorials/EclipsePlugin/article.html#adding-eclipse-4-x-parts-to-eclipse-3-x-applications-via-the-code-org-eclipse-ui-views-code-extension-point
42      * 
43      * Cannot contribute context menu via fragment at this point
44      */
45     @Inject
46     public void init(MPart part, MApplication app) {
47         MPopupMenu popupMenu = MMenuFactory.INSTANCE.createPopupMenu();
48         popupMenu.setElementId(POPUP_ELEMENT_ID);
49         List<MMenuContribution> menuContributions = app.getMenuContributions();
50         for (MMenuContribution menuContribution : menuContributions) {
51             if (POPUP_CONTRIBUTION_ID.equals(menuContribution.getParentId())) {
52                 // ok, add to menu
53                 popupMenu.getChildren().addAll(menuContribution.getChildren());
54             }
55         }
56         part.getMenus().add(popupMenu);
57         
58         /**
59          * See
60          * http://www.vogella.com/tutorials/EclipsePlugin/article.html#adding-eclipse-4-x-parts-to-eclipse-3-x-applications-via-the-code-org-eclipse-ui-views-code-extension-point
61          * 
62          * Cannot contribute toolbar items via fragment at this point
63          */
64         MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar();
65         toolBar.setToBeRendered(true);
66         toolBar.getChildren().add(createActivateRouteToolItem(app));
67         toolBar.getChildren().add(createDeactivateRouteToolItem(app));
68         part.setToolbar(toolBar);
69     }
70
71
72     private static MHandledToolItem createActivateRouteToolItem(MApplication app) {
73         MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
74         createHandledToolItem.setCommand(app.getCommand("org.simantics.district.route.ui.command.activatecreateroute")); // Command is contributed via fragment //$NON-NLS-1$
75         createHandledToolItem.setLabel("Activate create route");
76         createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/table_add.png"); //$NON-NLS-1$
77         createHandledToolItem.setEnabled(true);
78         return createHandledToolItem;
79     }
80
81     private static MHandledToolItem createDeactivateRouteToolItem(MApplication app) {
82         MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
83         createHandledToolItem.setCommand(app.getCommand("org.simantics.district.route.ui.command.deactivatecreateroute")); // Command is contributed via fragment //$NON-NLS-1$
84         createHandledToolItem.setLabel("Deactivate create route");
85         createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/table_edit.png"); //$NON-NLS-1$
86         createHandledToolItem.setEnabled(true);
87         return createHandledToolItem;
88     }
89
90     @PostConstruct
91     public void postConstruct(Composite parent, EMenuService menuService) {
92         this.ui = new RouteTree(parent, 0, selectionService);
93         if (!(menuService.registerContextMenu(this.ui.getTree(), POPUP_ELEMENT_ID)))
94             LOGGER.warn("Could not register context menu {}", POPUP_ELEMENT_ID);
95     }
96
97     @PreDestroy
98     public void dispose() {
99         ui = null;
100     }
101
102     @Focus
103     public void onFocus() {
104         ui.setFocus();
105     }
106
107     public void editCurrentSelection() {
108         ui.editCurrentSelection();
109     }
110
111 }