1 package org.simantics.district.route.ui;
5 import javax.annotation.PostConstruct;
6 import javax.annotation.PreDestroy;
7 import javax.inject.Inject;
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;
25 * @author Tuukka Lehtonen
28 public class RouteView {
30 private static final Logger LOGGER = LoggerFactory.getLogger(RouteView.class);
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";
35 @Inject ESelectionService selectionService;
36 @Inject IEventBroker broker;
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
43 * Cannot contribute context menu via fragment at this point
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())) {
53 popupMenu.getChildren().addAll(menuContribution.getChildren());
56 part.getMenus().add(popupMenu);
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
62 * Cannot contribute toolbar items via fragment at this point
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);
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;
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;
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);
98 public void dispose() {
103 public void onFocus() {
107 public void editCurrentSelection() {
108 ui.editCurrentSelection();