]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/ExpandFlagsHandler.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / ExpandFlagsHandler.java
1 package org.simantics.modeling.ui.actions;\r
2 \r
3 import java.util.Arrays;\r
4 import java.util.HashSet;\r
5 import java.util.List;\r
6 import java.util.Set;\r
7 \r
8 import org.eclipse.core.runtime.IProgressMonitor;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.WriteGraph;\r
11 import org.simantics.db.exception.DatabaseException;\r
12 import org.simantics.diagram.synchronization.runtime.DiagramSelectionUpdater;\r
13 import org.simantics.g2d.canvas.ICanvasContext;\r
14 import org.simantics.modeling.flags.ExpandFlags;\r
15 \r
16 /**\r
17  * @author Hannu Niemistö\r
18  * @author Tuukka Lehtonen\r
19  */\r
20 public class ExpandFlagsHandler extends FlagOperationHandler {\r
21 \r
22     @Override\r
23     protected void perform(IProgressMonitor monitor, WriteGraph graph, List<Resource> flags,\r
24             ICanvasContext canvasContext) throws DatabaseException {\r
25         monitor.beginTask("Expand Flags", IProgressMonitor.UNKNOWN);\r
26 \r
27         Set<Resource> newSelection = new HashSet<Resource>();\r
28         for (Resource flag : flags) {\r
29             Resource[] result = ExpandFlags.expandFlag(graph, flag);\r
30             newSelection.addAll( Arrays.asList(result) );\r
31         }\r
32 \r
33         // Make sure the diagram selection is set to the\r
34         // merged flag after the merge.\r
35         new DiagramSelectionUpdater( canvasContext )\r
36         .setNewSelection(0, newSelection)\r
37         .setOneshot(true)\r
38         .track();\r
39     }\r
40 \r
41 }\r