1 package org.simantics.modeling.ui.actions;
\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
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
17 * @author Hannu Niemistö
\r
18 * @author Tuukka Lehtonen
\r
20 public class ExpandFlagsHandler extends FlagOperationHandler {
\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
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
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