]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.region.ui/src/org/simantics/district/region/ui/DiagramRegionsTableView.java
Enabling/Disabling map painting
[simantics/district.git] / org.simantics.district.region.ui / src / org / simantics / district / region / ui / DiagramRegionsTableView.java
1 package org.simantics.district.region.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.ui.di.Focus;
10 import org.eclipse.e4.ui.model.application.MApplication;
11 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
12 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
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.model.application.ui.menu.MToolBar;
17 import org.eclipse.e4.ui.services.EMenuService;
18 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
19 import org.eclipse.swt.widgets.Composite;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 /**
24  * @author Jani Simomaa
25  */
26 public class DiagramRegionsTableView {
27
28     private static final Logger LOGGER = LoggerFactory.getLogger(DiagramRegionsTableView.class);
29
30     DiagramRegionsTableUI ui;
31
32     /**
33      * See
34      * 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
35      * 
36      * Cannot contribute toolbar items via fragment at this point
37      */
38     @Inject
39     public void init(MPart part, MApplication app) {
40         MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
41         // Command is contributed via fragment
42         createHandledToolItem.setCommand(app.getCommand("org.simantics.district.region.ui.command.createRegionFromSelection"));
43         createHandledToolItem.setLabel("Create Region From Selection");
44         createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/table_add.png");
45         MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar();
46         toolBar.setToBeRendered(true);
47         toolBar.getChildren().add(createHandledToolItem);
48         part.setToolbar(toolBar);
49         
50         
51         MPopupMenu createPopupMenu = MMenuFactory.INSTANCE.createPopupMenu();
52         createPopupMenu.setElementId(POPUP_ID);
53         createHandledToolItem.setContributorURI("org.simantics.district.region.ui.contextMenu");
54         
55         List<MMenuContribution> menuContributions = app.getMenuContributions();
56         for (MMenuContribution menuContribution : menuContributions) {
57             if ("org.simantics.district.region.ui.contextMenu".equals(menuContribution.getParentId())) {
58                 // ok, add to menu
59                 createPopupMenu.getChildren().addAll(menuContribution.getChildren());
60             }
61         }
62         
63         part.getMenus().add(createPopupMenu);
64     }
65
66     public static final String POPUP_ID = "org.simantics.district.region.ui.popup";
67
68     @PostConstruct
69     public void postConstruct(ESelectionService selectionService, Composite parent, EMenuService menuService) {
70         // System.out.println("construct MPTV");
71         this.ui = new DiagramRegionsTableUI(selectionService, parent, 0);
72         if (!(menuService.registerContextMenu(this.ui.getTree(), POPUP_ID)))
73             LOGGER.warn("Could not register context menu {}", POPUP_ID);
74     }
75
76     @PreDestroy
77     public void dispose() {
78         // System.out.println("dispose MPTV");
79         ui.dispose();
80         ui = null;
81     }
82
83     @Focus
84     public void onFocus() {
85         ui.setFocus();
86     }
87
88 }