]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/handlers/ToggleFocusabilityHandler.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / handlers / ToggleFocusabilityHandler.java
1 /*******************************************************************************\r
2  * Copyright (c) 2013 Association for Decentralized Information Management in\r
3  * Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     Semantum Oy - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.modeling.ui.diagramEditor.handlers;\r
13 \r
14 import java.util.Map;\r
15 \r
16 import org.eclipse.core.commands.AbstractHandler;\r
17 import org.eclipse.core.commands.ExecutionEvent;\r
18 import org.eclipse.core.commands.ExecutionException;\r
19 import org.eclipse.ui.IEditorPart;\r
20 import org.eclipse.ui.PlatformUI;\r
21 import org.eclipse.ui.commands.ICommandService;\r
22 import org.eclipse.ui.commands.IElementUpdater;\r
23 import org.eclipse.ui.menus.UIElement;\r
24 import org.simantics.g2d.diagram.DiagramHints;\r
25 import org.simantics.g2d.diagram.IDiagram;\r
26 import org.simantics.g2d.layers.ILayersEditor;\r
27 import org.simantics.modeling.ui.diagramEditor.DiagramEditor;\r
28 import org.simantics.utils.ui.workbench.WorkbenchUtils;\r
29 \r
30 /**\r
31  * @author Tuukka Lehtonen\r
32  */\r
33 public class ToggleFocusabilityHandler extends AbstractHandler implements IElementUpdater {\r
34 \r
35         @Override\r
36         public Object execute(ExecutionEvent event) throws ExecutionException {\r
37                 ILayersEditor le = getLayers();\r
38                 if (le != null) {\r
39                         boolean b = le.getIgnoreFocusSettings();\r
40                         le.setIgnoreFocusSettings( !b );\r
41 \r
42                         ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);\r
43                         service.refreshElements(event.getCommand().getId(), null);\r
44                 }\r
45                 return null;\r
46         }\r
47 \r
48         @SuppressWarnings("rawtypes")\r
49         @Override\r
50         public void updateElement(UIElement element, Map parameters) {\r
51                 //System.out.println("updateElement: " + element);\r
52                 DiagramEditor editor = getEditor();\r
53                 if (editor != null) {\r
54                         //System.out.println("updateElement2: " + editor);\r
55                         ILayersEditor le = getLayers(editor);\r
56                         if (le != null) {\r
57                                 boolean bool = le.getIgnoreFocusSettings();\r
58                                 //System.out.println("get ignore focus setting: " + bool);\r
59                                 element.setChecked(bool);\r
60                                 element.setTooltip((bool ? "Deny" : "Allow") + " Focusing and Editing of Images");\r
61                                 return;\r
62                         }\r
63                 }\r
64         }\r
65 \r
66         protected ILayersEditor getLayers() {\r
67                 DiagramEditor editor = getEditor();\r
68                 if (editor == null)\r
69                         return null;\r
70                 return getLayers(editor);\r
71         }\r
72 \r
73         protected ILayersEditor getLayers(DiagramEditor editor) {\r
74                 // The diagram might not be available since the diagram editor loads it asynchronously.\r
75                 IDiagram diagram = (IDiagram) editor.getAdapter(IDiagram.class);\r
76                 if (diagram == null)\r
77                         return null;\r
78                 //System.out.println("getLayersEditor(" + diagram + ")");\r
79                 ILayersEditor le = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);\r
80                 return le;\r
81         }\r
82 \r
83         protected DiagramEditor getEditor() {\r
84                 IEditorPart editorPart = WorkbenchUtils.getActiveEditor();\r
85                 if (editorPart == null)\r
86                         return null;\r
87                 if (editorPart instanceof DiagramEditor) {\r
88                         DiagramEditor editor = (DiagramEditor) editorPart;\r
89                         return editor;\r
90                 }\r
91                 return null;\r
92         }\r
93 \r
94 }\r