]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.region.ui/src/org/simantics/district/region/ui/DiagramRegionsTableView.java
Add initial version of regions to source control
[simantics/district.git] / org.simantics.district.region.ui / src / org / simantics / district / region / ui / DiagramRegionsTableView.java
diff --git a/org.simantics.district.region.ui/src/org/simantics/district/region/ui/DiagramRegionsTableView.java b/org.simantics.district.region.ui/src/org/simantics/district/region/ui/DiagramRegionsTableView.java
new file mode 100644 (file)
index 0000000..1fff18d
--- /dev/null
@@ -0,0 +1,83 @@
+package org.simantics.district.region.ui;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+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.MHandledToolItem;
+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.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.services.EMenuService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Jani Simomaa
+ */
+public class DiagramRegionsTableView {
+
+    DiagramRegionsTableUI 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 toolbar items via fragment at this point
+     */
+    @Inject
+    public void init(MPart part, MApplication app) {
+        MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
+        // Command is contributed via fragment
+        createHandledToolItem.setCommand(app.getCommand("org.simantics.district.region.ui.command.createRegionFromSelection"));
+        createHandledToolItem.setLabel("Create Region From Selection");
+        createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/table_add.png");
+        MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar();
+        toolBar.setToBeRendered(true);
+        toolBar.getChildren().add(createHandledToolItem);
+        part.setToolbar(toolBar);
+        
+        
+        MPopupMenu createPopupMenu = MMenuFactory.INSTANCE.createPopupMenu();
+        createPopupMenu.setElementId(POPUP_ID);
+        createHandledToolItem.setContributorURI("org.simantics.district.region.ui.contextMenu");
+        
+        List<MMenuContribution> menuContributions = app.getMenuContributions();
+        for (MMenuContribution menuContribution : menuContributions) {
+            if ("org.simantics.district.region.ui.contextMenu".equals(menuContribution.getParentId())) {
+                // ok, add to menu
+                createPopupMenu.getChildren().addAll(menuContribution.getChildren());
+            }
+        }
+        
+        part.getMenus().add(createPopupMenu);
+    }
+
+    public static final String POPUP_ID = "org.simantics.district.region.ui.popup";
+
+    @PostConstruct
+    public void postConstruct(ESelectionService selectionService, Composite parent, EMenuService menuService) {
+        // System.out.println("construct MPTV");
+        this.ui = new DiagramRegionsTableUI(selectionService, parent, 0);
+        menuService.registerContextMenu(this.ui.getTree(), POPUP_ID);
+    }
+
+    @PreDestroy
+    public void dispose() {
+        // System.out.println("dispose MPTV");
+        ui.dispose();
+        ui = null;
+    }
+
+    @Focus
+    public void onFocus() {
+        ui.setFocus();
+    }
+
+}
\ No newline at end of file