1 package org.simantics.district.selection.ui.parts;
5 import javax.annotation.PostConstruct;
6 import javax.inject.Inject;
8 import org.eclipse.e4.ui.di.Focus;
9 import org.eclipse.e4.ui.model.application.MApplication;
10 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
11 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
12 import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
13 import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
14 import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
15 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
16 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
17 import org.eclipse.e4.ui.services.EMenuService;
18 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.widgets.Composite;
21 import org.simantics.district.selection.ElementSelector;
22 import org.simantics.district.selection.ui.ElementSelectorTableUI;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
26 public class ElementSelectionView {
27 private static final String CONTEXT_MENU_ID = "org.simantics.district.selection.ui.contextMenu";
28 private static final String POPUP_ID = "org.simantics.district.selection.ui.selectiontable.popup";
29 private static final String CREATE_NEW_ID = "org.simantics.district.selection.ui.command.createNewSelection";
30 private static final String CREATE_NEW_LABEL = "Create New Element Selection Query";
31 private static final String CREATE_NEW_ICON = "platform:/plugin/com.famfamfam.silk/icons/add.png";
32 private static final String EDIT_ID = "org.simantics.district.selection.ui.command.editElementSelector";
33 private static final String EDIT_LABEL = "Edit Element Selection Query";
34 private static final String EDIT_ICON = "platform:/plugin/com.famfamfam.silk/icons/pencil.png";
35 private static final String DELETE_ID = "org.simantics.district.selection.ui.command.deleteElementSelector";
36 private static final String DELETE_LABEL = "Delete Element Selection Query";
37 private static final String DELETE_ICON = "platform:/plugin/com.famfamfam.silk/icons/cross.png";
39 private static final Logger LOGGER = LoggerFactory.getLogger(ElementSelectionView.class);
41 private ElementSelectorTableUI table;
44 private ESelectionService selectionService;
47 public void init(MPart part, MApplication app) {
48 // Command is contributed via fragment
49 MHandledToolItem createItem = MMenuFactory.INSTANCE.createHandledToolItem();
50 createItem.setCommand(app.getCommand(CREATE_NEW_ID));
51 createItem.setLabel(CREATE_NEW_LABEL);
52 createItem.setIconURI(CREATE_NEW_ICON);
53 MHandledToolItem editItem = MMenuFactory.INSTANCE.createHandledToolItem();
54 editItem.setCommand(app.getCommand(EDIT_ID));
55 editItem.setLabel(EDIT_LABEL);
56 editItem.setIconURI(EDIT_ICON);
57 MHandledToolItem deleteItem = MMenuFactory.INSTANCE.createHandledToolItem();
58 deleteItem.setCommand(app.getCommand(DELETE_ID));
59 deleteItem.setLabel(DELETE_LABEL);
60 deleteItem.setIconURI(DELETE_ICON);
62 MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar();
63 toolBar.setToBeRendered(true);
65 List<MToolBarElement> children = toolBar.getChildren();
66 children.add(createItem);
67 children.add(editItem);
68 children.add(deleteItem);
70 part.setToolbar(toolBar);
72 MPopupMenu popupMenu = MMenuFactory.INSTANCE.createPopupMenu();
73 popupMenu.setElementId(POPUP_ID);
75 List<MMenuContribution> menuContributions = app.getMenuContributions();
76 for (MMenuContribution menuContribution : menuContributions) {
77 if (CONTEXT_MENU_ID.equals(menuContribution.getParentId())) {
78 popupMenu.getChildren().addAll(menuContribution.getChildren());
82 part.getMenus().add(popupMenu);
86 public void createPartControl(Composite parent, EMenuService menuService) {
87 table = new ElementSelectorTableUI(selectionService, parent, SWT.BORDER);
88 if (!(menuService.registerContextMenu(this.table.getTree(), POPUP_ID)))
89 LOGGER.warn("Could not register context menu {}", POPUP_ID);
93 public void setFocus() {
97 public ElementSelector getSelectedItem() {
98 return table.getSelectedItem();