]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/preferences/DiagramPreferenceUtil.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / preferences / DiagramPreferenceUtil.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.preferences;\r
13 \r
14 import java.util.HashMap;\r
15 import java.util.Map;\r
16 \r
17 import org.eclipse.core.runtime.preferences.DefaultScope;\r
18 import org.eclipse.core.runtime.preferences.IEclipsePreferences;\r
19 import org.eclipse.core.runtime.preferences.IScopeContext;\r
20 import org.eclipse.core.runtime.preferences.InstanceScope;\r
21 import org.osgi.service.prefs.BackingStoreException;\r
22 import org.osgi.service.prefs.Preferences;\r
23 import org.simantics.modeling.ui.Activator;\r
24 import org.simantics.utils.page.PageDesc;\r
25 \r
26 /**\r
27  * @author Tuukka Lehtonen\r
28  */\r
29 public final class DiagramPreferenceUtil {\r
30 \r
31     public static final String PLUGIN_ID = Activator.PLUGIN_ID;\r
32 \r
33     public static DiagramPreferences getDefaultPreferences() {\r
34         return getPreferences(DefaultScope.INSTANCE);\r
35     }\r
36 \r
37     /**\r
38      * @return\r
39      */\r
40     public static DiagramPreferences getPreferences() {\r
41         return getPreferences(InstanceScope.INSTANCE);\r
42     }\r
43 \r
44     /**\r
45      * @return\r
46      */\r
47     public static DiagramPreferences getPreferences(IScopeContext context) {\r
48         IEclipsePreferences node = context.getNode(PLUGIN_ID);\r
49         double gridSize = node.getDouble(DiagramPreferences.P_SNAP_GRID_SIZE, DiagramPreferences.DEFAULT_SNAP_GRID_SIZE);\r
50         PageDesc pageDesc = getPageDesc(node);\r
51         //System.out.println("GET pagedesc: " + pageDesc);\r
52         //String pos = node.get(DiagramPreferences.P_DEFAULT_PAGE_ORIENTATION, DiagramPreferences.DEFAULT_PAGE_ORIENTATION.toString());\r
53         //PageOrientation po = PageOrientation.valueOf(pos);\r
54 \r
55 //        Margins margins = DiagramPreferences.DEFAULT_PAGE_MARGINS;\r
56 //        String marginString = node.get(DiagramPreferences.P_DEFAULT_PAGE_MARGINS, null);\r
57 //        if (marginString != null)\r
58 //            margins = PageDesc.deserializeMargins(marginString, margins);\r
59 //        pageDesc = pageDesc.withMargins(margins);\r
60 \r
61         boolean displayPage = node.getBoolean(DiagramPreferences.P_DISPLAY_PAGE_SIZE, DiagramPreferences.DEFAULT_DISPLAY_PAGE_SIZE);\r
62         boolean displayMargins = node.getBoolean(DiagramPreferences.P_DISPLAY_MARGINS, DiagramPreferences.DEFAULT_DISPLAY_MARGINS);\r
63         boolean displayGrid = node.getBoolean(DiagramPreferences.P_DISPLAY_MARGINS, DiagramPreferences.DEFAULT_DISPLAY_GRID);\r
64         boolean displayRuler = node.getBoolean(DiagramPreferences.P_DISPLAY_MARGINS, DiagramPreferences.DEFAULT_DISPLAY_RULER);\r
65 \r
66         Map<String, Object> map = new HashMap<String, Object>();\r
67         map.put(DiagramPreferences.P_SNAP_GRID_SIZE, gridSize);\r
68         map.put(DiagramPreferences.P_DEFAULT_PAGE_SIZE, pageDesc);\r
69 //        map.put(DiagramPreferences.P_DEFAULT_PAGE_ORIENTATION, po);\r
70 //        map.put(DiagramPreferences.P_DEFAULT_PAGE_MARGINS, margins);\r
71         map.put(DiagramPreferences.P_DISPLAY_PAGE_SIZE, displayPage);\r
72         map.put(DiagramPreferences.P_DISPLAY_MARGINS, displayMargins);\r
73         map.put(DiagramPreferences.P_DISPLAY_GRID, displayGrid);\r
74         map.put(DiagramPreferences.P_DISPLAY_RULER, displayRuler);\r
75 \r
76         return new DiagramPreferences(node, map);\r
77     }\r
78 \r
79     /**\r
80      * @return\r
81      * @throws BackingStoreException\r
82      */\r
83     public static void setPreferences(DiagramPreferences prefs) {\r
84         _setPreferences(InstanceScope.INSTANCE, prefs);\r
85     }\r
86 \r
87     /**\r
88      * @return\r
89      * @throws BackingStoreException\r
90      */\r
91     public static void flushPreferences(DiagramPreferences prefs) throws BackingStoreException {\r
92         Preferences p = _setPreferences(InstanceScope.INSTANCE, prefs);\r
93         p.flush();\r
94     }\r
95 \r
96     /**\r
97      * @return\r
98      * @throws BackingStoreException\r
99      */\r
100     public static void setPreferences(IScopeContext context, DiagramPreferences prefs) {\r
101         _setPreferences(context, prefs);\r
102     }\r
103 \r
104     /**\r
105      * @return\r
106      * @throws BackingStoreException\r
107      */\r
108     private static IEclipsePreferences _setPreferences(IScopeContext context, DiagramPreferences prefs) {\r
109         IEclipsePreferences node = context.getNode(PLUGIN_ID);\r
110         //System.out.println("SET pagedesc: " + prefs.get(DiagramPreferences.P_DEFAULT_PAGE_SIZE));\r
111         node.putDouble(DiagramPreferences.P_SNAP_GRID_SIZE, (Double) prefs.get(DiagramPreferences.P_SNAP_GRID_SIZE));\r
112         node.put(DiagramPreferences.P_DEFAULT_PAGE_SIZE, PageDesc.serialize((PageDesc) prefs.get(DiagramPreferences.P_DEFAULT_PAGE_SIZE)));\r
113 //        node.put(DiagramPreferences.P_DEFAULT_PAGE_ORIENTATION, prefs.get(DiagramPreferences.P_DEFAULT_PAGE_ORIENTATION).toString());\r
114 //        node.put(DiagramPreferences.P_DEFAULT_PAGE_MARGINS, PageDesc.serialize((Margins) prefs.get(DiagramPreferences.P_DEFAULT_PAGE_MARGINS)));\r
115         node.putBoolean(DiagramPreferences.P_DISPLAY_PAGE_SIZE, (Boolean) prefs.get(DiagramPreferences.P_DISPLAY_PAGE_SIZE));\r
116         node.putBoolean(DiagramPreferences.P_DISPLAY_MARGINS, (Boolean) prefs.get(DiagramPreferences.P_DISPLAY_MARGINS));\r
117         node.putBoolean(DiagramPreferences.P_DISPLAY_GRID, (Boolean) prefs.get(DiagramPreferences.P_DISPLAY_GRID));\r
118         node.putBoolean(DiagramPreferences.P_DISPLAY_RULER, (Boolean) prefs.get(DiagramPreferences.P_DISPLAY_RULER));\r
119         return node;\r
120     }\r
121 \r
122     private static PageDesc getPageDesc(IEclipsePreferences node) {\r
123         String desc = node.get(DiagramPreferences.P_DEFAULT_PAGE_SIZE, null);\r
124         return PageDesc.deserialize(desc, DiagramPreferences.DEFAULT_PAGE_SIZE);\r
125     }\r
126 \r
127 }\r