]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/PlainDiagramViewer.java
Sync git svn branch with SVN repository r33406.
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / PlainDiagramViewer.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in 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  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.modeling.ui.diagramEditor;\r
13 \r
14 import java.util.Collections;\r
15 import java.util.Set;\r
16 \r
17 import org.simantics.db.common.request.ParametrizedRead;\r
18 import org.simantics.db.layer0.request.combinations.Combinators;\r
19 import org.simantics.diagram.participant.PointerInteractor2;\r
20 import org.simantics.g2d.canvas.ICanvasContext;\r
21 import org.simantics.g2d.diagram.DiagramHints;\r
22 import org.simantics.g2d.diagram.IDiagram;\r
23 import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;\r
24 import org.simantics.g2d.layers.ILayer;\r
25 import org.simantics.g2d.layers.ILayers;\r
26 import org.simantics.g2d.layers.ILayersEditor;\r
27 import org.simantics.modeling.ui.diagramEditor.handlers.StructuralBrowsingHandler;\r
28 import org.simantics.ui.workbench.IResourceEditorInput;\r
29 import org.simantics.ui.workbench.editor.input.InputValidationCombinators;\r
30 \r
31 /**\r
32  * @author Tuukka Lehtonen\r
33  */\r
34 public class PlainDiagramViewer extends org.simantics.modeling.ui.diagramEditor.DiagramViewer {\r
35 \r
36     ParametrizedRead<IResourceEditorInput, Boolean> INPUT_VALIDATOR =\r
37         Combinators.compose(\r
38                         InputValidationCombinators.hasURI(),\r
39                 InputValidationCombinators.extractInputResource()\r
40         );\r
41 \r
42     protected String getPopupId() {\r
43         return "#PlainDiagramViewerPopup";\r
44     }\r
45     \r
46     public ParametrizedRead<IResourceEditorInput, Boolean> getInputValidator() {\r
47         return INPUT_VALIDATOR;\r
48     }\r
49 \r
50     @Override\r
51     protected PointerInteractor getPointerInteractor() {\r
52         return new PointerInteractor2(true, true, true, false, false, false, synchronizer.getElementClassProvider());\r
53     }\r
54     \r
55     protected void addStructureParticipants(ICanvasContext ctx) {\r
56         ctx.add(new StructuralBrowsingHandler(getSite(), sessionContext, getResourceInput2()));\r
57         addWorkbenchSelectionProvider(ctx);\r
58 \r
59         ctx.add(\r
60                 new TerminalInformer(\r
61                         c,\r
62                         resourceManager,\r
63                         getEditorSite().getActionBars().getStatusLineManager(),\r
64                         new DefaultTerminalNamingStrategy()\r
65                         )\r
66                 );\r
67     }\r
68 \r
69     @Override\r
70     protected void beforeSetDiagram(IDiagram diagram) {\r
71         setupLayers(diagram);\r
72     }\r
73 \r
74     protected void setupLayers(IDiagram diagram) {\r
75         diagram.setHint(DiagramHints.KEY_LAYERS, new ILayers() {\r
76 \r
77             @Override\r
78             public boolean isActive(ILayer layer) {\r
79                 return true;\r
80             }\r
81 \r
82             @Override\r
83             public Set<ILayer> getVisibleLayers() {\r
84                 return Collections.emptySet();\r
85             }\r
86 \r
87             @Override\r
88             public Set<ILayer> getLayers() {\r
89                 return Collections.emptySet();\r
90             }\r
91 \r
92             @Override\r
93             public boolean getIgnoreVisibilitySettings() {\r
94                 return true;\r
95             }\r
96 \r
97             @Override\r
98             public boolean getIgnoreFocusSettings() {\r
99                 return true;\r
100             }\r
101 \r
102         });\r
103 \r
104         // Disable roles (layers) by default in symbol editor to show everything.\r
105         ILayersEditor le = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);\r
106         if (le != null) {\r
107             le.setIgnoreFocusSettings(true);\r
108             le.setIgnoreVisibilitySettings(true);\r
109         }\r
110     }\r
111 \r
112     @Override\r
113     protected EditorState getSavedEditorState(ICanvasContext ctx) {\r
114         return DiagramEditorStates.toEditorState(ctx, true, true, false);\r
115     }\r
116 \r
117 }\r