]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/handlers/e4/ToggleFocusabilityHandler.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / handlers / e4 / 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.e4;\r
13 \r
14 import org.eclipse.e4.core.contexts.Active;\r
15 import org.eclipse.e4.core.di.annotations.CanExecute;\r
16 import org.eclipse.e4.core.di.annotations.Execute;\r
17 import org.eclipse.e4.core.di.annotations.Optional;\r
18 import org.eclipse.e4.ui.model.application.ui.basic.MPart;\r
19 import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;\r
20 import org.eclipse.ui.IEditorPart;\r
21 import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor;\r
22 import org.simantics.g2d.diagram.DiagramHints;\r
23 import org.simantics.g2d.diagram.IDiagram;\r
24 import org.simantics.g2d.layers.ILayersEditor;\r
25 import org.simantics.modeling.ui.diagramEditor.DiagramEditor;\r
26 import org.simantics.utils.ui.workbench.WorkbenchUtils;\r
27 \r
28 /**\r
29  * @author Tuukka Lehtonen\r
30  */\r
31 public class ToggleFocusabilityHandler {\r
32 \r
33     @CanExecute\r
34     public boolean canExecute(@Active MPart part) {\r
35         if (!(part.getObject() instanceof CompatibilityEditor))\r
36             return false;\r
37         CompatibilityEditor editor = (CompatibilityEditor) part.getObject();\r
38         if (!(editor.getPart() instanceof DiagramEditor))\r
39             return false;\r
40         return true;\r
41     }\r
42     \r
43         @Execute\r
44         public void execute(@Optional MToolItem toolItem) {\r
45                 ILayersEditor le = getLayers();\r
46                 if (le != null) {\r
47                         boolean b = le.getIgnoreFocusSettings();\r
48                         le.setIgnoreFocusSettings( !b );\r
49 \r
50                         if (toolItem != null) {\r
51                             toolItem.setSelected(!b);\r
52                             toolItem.setTooltip((!b ? "Deny" : "Allow") + " Focusing and Editing of Images");\r
53                         }\r
54                 }\r
55         }\r
56 \r
57         protected ILayersEditor getLayers() {\r
58                 DiagramEditor editor = getEditor();\r
59                 if (editor == null)\r
60                         return null;\r
61                 return getLayers(editor);\r
62         }\r
63 \r
64         protected ILayersEditor getLayers(DiagramEditor editor) {\r
65                 // The diagram might not be available since the diagram editor loads it asynchronously.\r
66                 IDiagram diagram = (IDiagram) editor.getAdapter(IDiagram.class);\r
67                 if (diagram == null)\r
68                         return null;\r
69                 //System.out.println("getLayersEditor(" + diagram + ")");\r
70                 ILayersEditor le = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);\r
71                 return le;\r
72         }\r
73 \r
74         protected DiagramEditor getEditor() {\r
75                 IEditorPart editorPart = WorkbenchUtils.getActiveEditor();\r
76                 if (editorPart == null)\r
77                         return null;\r
78                 if (editorPart instanceof DiagramEditor) {\r
79                         DiagramEditor editor = (DiagramEditor) editorPart;\r
80                         return editor;\r
81                 }\r
82                 return null;\r
83         }\r
84 \r
85 }\r