1 package org.simantics.modeling.ui.actions;
3 import java.util.Collections;
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.ui.PlatformUI;
8 import org.simantics.db.Resource;
9 import org.simantics.db.WriteGraph;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.diagram.synchronization.runtime.DiagramSelectionUpdater;
12 import org.simantics.g2d.canvas.ICanvasContext;
13 import org.simantics.modeling.flags.MergeFlags;
16 * @author Hannu Niemistö
17 * @author Tuukka Lehtonen
19 public class MergeFlagsHandler extends FlagOperationHandler {
21 protected void perform(IProgressMonitor monitor, WriteGraph graph, List<Resource> flags, ICanvasContext canvasContext) throws DatabaseException {
22 monitor.beginTask("Merge Selected Flags", IProgressMonitor.UNKNOWN);
23 performMerge(graph, flags, canvasContext);
26 public static void performMerge(WriteGraph graph, List<Resource> flags, ICanvasContext canvasContext) throws DatabaseException {
27 final String text = MergeFlags.validateForMerge(graph, flags);
29 System.err.println(text);
30 PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
33 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
34 .getActiveEditor().getEditorSite().getActionBars().getStatusLineManager()
35 .setErrorMessage(text);
40 String result = MergeFlags.merge(graph, flags);
41 if(result != null && !result.isEmpty()) {
42 System.err.println(result); // Should not happen because of prevalidation
44 if (canvasContext != null) {
45 // Make sure the diagram selection is set to the
46 // merged flag after the merge.
47 new DiagramSelectionUpdater( canvasContext )
48 .setNewSelection(0, Collections.singleton( flags.get(0) ))