1 package org.simantics.modeling.ui.diagram;
\r
3 import java.util.Map;
\r
5 import org.eclipse.core.runtime.CoreException;
\r
6 import org.eclipse.core.runtime.IConfigurationElement;
\r
7 import org.eclipse.core.runtime.IExecutableExtension;
\r
8 import org.eclipse.jface.action.Action;
\r
9 import org.eclipse.jface.action.ActionContributionItem;
\r
10 import org.eclipse.jface.action.IContributionItem;
\r
11 import org.eclipse.jface.resource.ImageDescriptor;
\r
12 import org.simantics.Simantics;
\r
13 import org.simantics.db.ReadGraph;
\r
14 import org.simantics.db.Resource;
\r
15 import org.simantics.db.Statement;
\r
16 import org.simantics.db.WriteGraph;
\r
17 import org.simantics.db.common.request.IndexRoot;
\r
18 import org.simantics.db.common.request.WriteRequest;
\r
19 import org.simantics.db.exception.DatabaseException;
\r
20 import org.simantics.diagram.stubs.DiagramResource;
\r
21 import org.simantics.modeling.ui.Activator;
\r
22 import org.simantics.scl.commands.Command;
\r
23 import org.simantics.scl.commands.Commands;
\r
24 import org.simantics.ui.contribution.DynamicMenuContribution;
\r
25 import org.simantics.ui.utils.ResourceAdaptionUtils;
\r
28 * @author Tuukka Lehtonen
\r
30 public class ResetProfileMonitorTransformContribution extends DynamicMenuContribution implements IExecutableExtension {
\r
33 ImageDescriptor image = null;
\r
36 public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
\r
37 throws CoreException {
\r
38 if (data instanceof Map<?,?>) {
\r
39 @SuppressWarnings("unchecked")
\r
40 Map<String, String> args = (Map<String, String>) data;
\r
41 name = args.get("name");
\r
42 String imageId = args.get("image");
\r
43 image = Activator.getDefault().getImageRegistry().getDescriptor(imageId);
\r
48 protected Object[] getSelectedObjects() {
\r
49 return ResourceAdaptionUtils.toResources(getSelection());
\r
53 protected IContributionItem[] getContributionItems(ReadGraph graph, final Object[] elements) throws DatabaseException {
\r
54 if (elements.length == 0)
\r
57 boolean todo = false;
\r
58 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
59 for (Object object : elements) {
\r
60 Resource element = (Resource)object;
\r
61 Statement stm = graph.getPossibleStatement(element, DIA.Element_profileMonitorOffset);
\r
62 if (stm != null && !stm.isAsserted(element)) {
\r
71 return new IContributionItem[] {
\r
72 new ActionContributionItem(new Action(name, image) {
\r
75 Simantics.async(new WriteRequest() {
\r
77 public void perform(WriteGraph graph) throws DatabaseException {
\r
78 Command cmd = Commands.get(graph, "Simantics/Profile/resetProfileMonitorPosition");
\r
79 Resource model = graph.syncRequest(new IndexRoot((Resource)elements[0]));
\r
80 for(Object element : elements)
\r
81 cmd.execute(graph, model, element);
\r