X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.selection.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fselection%2Fui%2Fparts%2FElementSelectionView.java;fp=org.simantics.district.selection.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fselection%2Fui%2Fparts%2FElementSelectionView.java;h=1cddde9f7034c62c2c37c4ce186a375707f4f78b;hb=09b78f5c26bb8b521beb6eeeb5c3f44ac1aa4d07;hp=0000000000000000000000000000000000000000;hpb=ca6eef9623e3369fe3d6fa7570e1ebd77d30bc34;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.selection.ui/src/org/simantics/district/selection/ui/parts/ElementSelectionView.java b/org.simantics.district.selection.ui/src/org/simantics/district/selection/ui/parts/ElementSelectionView.java new file mode 100644 index 00000000..1cddde9f --- /dev/null +++ b/org.simantics.district.selection.ui/src/org/simantics/district/selection/ui/parts/ElementSelectionView.java @@ -0,0 +1,100 @@ +package org.simantics.district.selection.ui.parts; + +import java.util.List; + +import javax.annotation.PostConstruct; +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.model.application.ui.menu.MToolBarElement; +import org.eclipse.e4.ui.services.EMenuService; +import org.eclipse.e4.ui.workbench.modeling.ESelectionService; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.simantics.district.selection.ElementSelector; +import org.simantics.district.selection.ui.ElementSelectorTableUI; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ElementSelectionView { + private static final String CONTEXT_MENU_ID = "org.simantics.district.selection.ui.contextMenu"; + private static final String POPUP_ID = "org.simantics.district.selection.ui.selectiontable.popup"; + private static final String CREATE_NEW_ID = "org.simantics.district.selection.ui.command.createNewSelection"; + private static final String CREATE_NEW_LABEL = "Create New Element Selection Query"; + private static final String CREATE_NEW_ICON = "platform:/plugin/com.famfamfam.silk/icons/add.png"; + private static final String EDIT_ID = "org.simantics.district.selection.ui.command.editElementSelector"; + private static final String EDIT_LABEL = "Edit Element Selection Query"; + private static final String EDIT_ICON = "platform:/plugin/com.famfamfam.silk/icons/pencil.png"; + private static final String DELETE_ID = "org.simantics.district.selection.ui.command.deleteElementSelector"; + private static final String DELETE_LABEL = "Delete Element Selection Query"; + private static final String DELETE_ICON = "platform:/plugin/com.famfamfam.silk/icons/cross.png"; + + private static final Logger LOGGER = LoggerFactory.getLogger(ElementSelectionView.class); + + private ElementSelectorTableUI table; + + @Inject + private ESelectionService selectionService; + + @Inject + public void init(MPart part, MApplication app) { + // Command is contributed via fragment + MHandledToolItem createItem = MMenuFactory.INSTANCE.createHandledToolItem(); + createItem.setCommand(app.getCommand(CREATE_NEW_ID)); + createItem.setLabel(CREATE_NEW_LABEL); + createItem.setIconURI(CREATE_NEW_ICON); + MHandledToolItem editItem = MMenuFactory.INSTANCE.createHandledToolItem(); + editItem.setCommand(app.getCommand(EDIT_ID)); + editItem.setLabel(EDIT_LABEL); + editItem.setIconURI(EDIT_ICON); + MHandledToolItem deleteItem = MMenuFactory.INSTANCE.createHandledToolItem(); + deleteItem.setCommand(app.getCommand(DELETE_ID)); + deleteItem.setLabel(DELETE_LABEL); + deleteItem.setIconURI(DELETE_ICON); + + MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar(); + toolBar.setToBeRendered(true); + + List children = toolBar.getChildren(); + children.add(createItem); + children.add(editItem); + children.add(deleteItem); + + part.setToolbar(toolBar); + + MPopupMenu popupMenu = MMenuFactory.INSTANCE.createPopupMenu(); + popupMenu.setElementId(POPUP_ID); + + List menuContributions = app.getMenuContributions(); + for (MMenuContribution menuContribution : menuContributions) { + if (CONTEXT_MENU_ID.equals(menuContribution.getParentId())) { + popupMenu.getChildren().addAll(menuContribution.getChildren()); + } + } + + part.getMenus().add(popupMenu); + } + + @PostConstruct + public void createPartControl(Composite parent, EMenuService menuService) { + table = new ElementSelectorTableUI(selectionService, parent, SWT.BORDER); + if (!(menuService.registerContextMenu(this.table.getTree(), POPUP_ID))) + LOGGER.warn("Could not register context menu {}", POPUP_ID); + } + + @Focus + public void setFocus() { + table.setFocus(); + } + + public ElementSelector getSelectedItem() { + return table.getSelectedItem(); + } +}