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.eclipse.ui.IEditorPart;
\r
13 import org.simantics.db.ReadGraph;
\r
14 import org.simantics.db.exception.DatabaseException;
\r
15 import org.simantics.g2d.diagram.DiagramHints;
\r
16 import org.simantics.g2d.diagram.IDiagram;
\r
17 import org.simantics.g2d.layers.ILayersEditor;
\r
18 import org.simantics.modeling.ui.Activator;
\r
19 import org.simantics.modeling.ui.diagramEditor.DiagramEditor;
\r
20 import org.simantics.ui.contribution.DynamicMenuContribution;
\r
21 import org.simantics.utils.threads.AWTThread;
\r
22 import org.simantics.utils.threads.ThreadUtils;
\r
23 import org.simantics.utils.ui.workbench.WorkbenchUtils;
\r
26 * @author Tuukka Lehtonen
\r
28 public class SetFocusabilityContribution extends DynamicMenuContribution implements IExecutableExtension {
\r
31 ImageDescriptor image = null;
\r
32 boolean allow = true;
\r
35 public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
\r
36 throws CoreException {
\r
37 if (data instanceof Map<?,?>) {
\r
38 @SuppressWarnings("unchecked")
\r
39 Map<String, String> args = (Map<String, String>) data;
\r
40 name = args.get("name");
\r
41 String imageId = args.get("image");
\r
42 image = Activator.getDefault().getImageRegistry().getDescriptor(imageId);
\r
43 allow = Boolean.parseBoolean(args.get("allow"));
\r
48 protected Object[] getSelectedObjects() {
\r
49 IEditorPart editorPart = WorkbenchUtils.getActiveEditor();
\r
50 if (editorPart == null)
\r
52 if(editorPart instanceof DiagramEditor) {
\r
53 DiagramEditor editor = (DiagramEditor) editorPart;
\r
54 IDiagram diagram = (IDiagram) editor.getAdapter(IDiagram.class);
\r
55 if (diagram == null)
\r
57 ILayersEditor le = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);
\r
60 return new Object[] { le, le.getIgnoreFocusSettings() };
\r
66 protected IContributionItem[] getContributionItems(ReadGraph graph, Object[] elements) throws DatabaseException {
\r
67 if (elements == NO_OBJECTS)
\r
70 final ILayersEditor le = (ILayersEditor) elements[0];
\r
71 final Boolean value = (Boolean) elements[1];
\r
76 return new IContributionItem[] {
\r
77 new ActionContributionItem(new Action(name, image) {
\r
80 ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
\r
83 le.setIgnoreFocusSettings(!value);
\r