--- /dev/null
+package org.simantics.district.route.ui;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Tuukka Lehtonen
+ * @since 6.08
+ */
+public class RouteView {
+
+ private static final String POPUP_CONTRIBUTION_ID = "org.simantics.district.route.ui.contextMenu";
+ public static final String POPUP_ELEMENT_ID = "org.simantics.district.route.ui.popup";
+
+ @Inject ESelectionService selectionService;
+ @Inject IEventBroker broker;
+ RouteTree ui;
+
+ /**
+ * See
+ * 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
+ *
+ * Cannot contribute context menu via fragment at this point
+ */
+ @Inject
+ public void init(MPart part, MApplication app) {
+ MPopupMenu popupMenu = MMenuFactory.INSTANCE.createPopupMenu();
+ popupMenu.setElementId(POPUP_ELEMENT_ID);
+ List<MMenuContribution> menuContributions = app.getMenuContributions();
+ for (MMenuContribution menuContribution : menuContributions) {
+ if (POPUP_CONTRIBUTION_ID.equals(menuContribution.getParentId())) {
+ // ok, add to menu
+ popupMenu.getChildren().addAll(menuContribution.getChildren());
+ }
+ }
+ part.getMenus().add(popupMenu);
+ }
+
+ @PostConstruct
+ public void postConstruct(Composite parent) {
+ this.ui = new RouteTree(parent, 0, selectionService);
+ }
+
+ @PreDestroy
+ public void dispose() {
+ ui = null;
+ }
+
+ @Focus
+ public void onFocus() {
+ ui.setFocus();
+ }
+
+}
\ No newline at end of file