]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.selection.ui/src/org/simantics/district/selection/ui/handlers/EditElementSelector.java
Selection queries from explicit sets of elements.
[simantics/district.git] / org.simantics.district.selection.ui / src / org / simantics / district / selection / ui / handlers / EditElementSelector.java
index f914d1618ce10adf7ea36243777cd8453bcf304e..69fcbccdb234b62cdab00e38dd8a0dfecab20067 100644 (file)
@@ -1,20 +1,26 @@
 package org.simantics.district.selection.ui.handlers;
 
+import java.util.Collection;
+
 import javax.inject.Inject;
 
-import org.eclipse.e4.core.contexts.ContextInjectionFactory;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.ui.workbench.IWorkbench;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
+import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.district.selection.ElementSelector;
+import org.simantics.district.selection.ElementSelector.ExplicitGenerator;
 import org.simantics.district.selection.ui.parts.EditSelectorDialog;
 import org.simantics.district.selection.ui.parts.ElementSelectionView;
+import org.simantics.utils.ui.AdaptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,6 +46,8 @@ public class EditElementSelector {
 
        @Execute
        public void editElementSelector(IEclipseContext context, IWorkbench workbench) {
+               Object currentSelection = context.get(IServiceConstants.ACTIVE_SELECTION);
+               
                MPart part = partService.getActivePart();
                if (part == null) return;
                
@@ -49,8 +57,17 @@ public class EditElementSelector {
                
                ElementSelectionView view = (ElementSelectionView)object;
                
+               Collection<Resource> selection;
+               ElementSelector selectedItem = view.getSelectedItem();
+               if (selectedItem.getGenerator() instanceof ExplicitGenerator) {
+                       selection = ((ExplicitGenerator)selectedItem.getGenerator()).elements;
+               }
+               else {
+                       selection = AdaptionUtils.adaptToCollection(currentSelection, Resource.class);
+               }
+               
                Shell shell = context.getActive(Shell.class);
-               EditSelectorDialog dialog = new EditSelectorDialog(shell, view.getSelectedItem());
+               EditSelectorDialog dialog = new EditSelectorDialog(shell, selectedItem, selection);
                
                LOGGER.debug("Opening dialog");
                int result = dialog.open();