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.MMenuContribution;
14 import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
15 import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
16 import org.eclipse.e4.ui.services.EMenuService;
17 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
18 import org.eclipse.swt.widgets.Composite;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
23 * @author Tuukka Lehtonen
26 public class RouteView {
28 private static final Logger LOGGER = LoggerFactory.getLogger(RouteView.class);
30 private static final String POPUP_CONTRIBUTION_ID = "org.simantics.district.route.ui.contextMenu";
31 public static final String POPUP_ELEMENT_ID = "org.simantics.district.route.ui.popup";
33 @Inject ESelectionService selectionService;
34 @Inject IEventBroker broker;
39 * 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
41 * Cannot contribute context menu via fragment at this point
44 public void init(MPart part, MApplication app) {
45 MPopupMenu popupMenu = MMenuFactory.INSTANCE.createPopupMenu();
46 popupMenu.setElementId(POPUP_ELEMENT_ID);
47 List<MMenuContribution> menuContributions = app.getMenuContributions();
48 for (MMenuContribution menuContribution : menuContributions) {
49 if (POPUP_CONTRIBUTION_ID.equals(menuContribution.getParentId())) {
51 popupMenu.getChildren().addAll(menuContribution.getChildren());
54 part.getMenus().add(popupMenu);
58 public void postConstruct(Composite parent, EMenuService menuService) {
59 this.ui = new RouteTree(parent, 0, selectionService);
60 if (!(menuService.registerContextMenu(this.ui.getTree(), POPUP_ELEMENT_ID)))
61 LOGGER.warn("Could not register context menu {}", POPUP_ELEMENT_ID);
65 public void dispose() {
70 public void onFocus() {
74 public void editCurrentSelection() {
75 ui.editCurrentSelection();