]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/preferences/DiagramPreferences.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / preferences / DiagramPreferences.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.Collections;\r
15 import java.util.HashMap;\r
16 import java.util.Map;\r
17 \r
18 import org.eclipse.core.runtime.preferences.IEclipsePreferences;\r
19 import org.simantics.g2d.page.DiagramDesc;\r
20 import org.simantics.utils.page.MarginUtils.Margin;\r
21 import org.simantics.utils.page.MarginUtils.Margins;\r
22 import org.simantics.utils.page.PageDesc;\r
23 import org.simantics.utils.page.PageOrientation;\r
24 \r
25 /**\r
26  * @author Tuukka Lehtonen\r
27  */\r
28 public final class DiagramPreferences {\r
29 \r
30     public static final String             P_SNAP_GRID_SIZE           = "grid.size";\r
31     public static final String             P_DEFAULT_PAGE_SIZE        = "page.default.size";\r
32     public static final String             P_DISPLAY_PAGE_SIZE        = "page.display.size";\r
33     public static final String             P_DISPLAY_MARGINS          = "page.display.margins";\r
34     public static final String             P_DISPLAY_GRID             = "page.display.grid";\r
35     public static final String             P_DISPLAY_RULER            = "page.display.ruler";\r
36 \r
37     public static final Margin             MARGIN_10MM                = new Margin(0, 0, 10);\r
38 \r
39     public static final Double             DEFAULT_SNAP_GRID_SIZE     = 1.0;\r
40     public static final PageOrientation    DEFAULT_PAGE_ORIENTATION   = PageOrientation.Landscape;\r
41     public static final Margins            DEFAULT_PAGE_MARGINS       = new Margins(MARGIN_10MM, MARGIN_10MM, MARGIN_10MM, MARGIN_10MM);\r
42     public static final PageDesc           DEFAULT_PAGE_SIZE          = PageDesc.DEFAULT.withOrientation(DEFAULT_PAGE_ORIENTATION).withMargins(DEFAULT_PAGE_MARGINS);\r
43     public static final Boolean            DEFAULT_DISPLAY_PAGE_SIZE  = Boolean.TRUE;\r
44     public static final Boolean            DEFAULT_DISPLAY_MARGINS    = Boolean.TRUE;\r
45     public static final Boolean            DEFAULT_DISPLAY_GRID       = Boolean.FALSE;\r
46     public static final Boolean            DEFAULT_DISPLAY_RULER      = Boolean.FALSE;\r
47 \r
48     public final IEclipsePreferences       preferences;\r
49 \r
50     private final Map<String, Object>      map;\r
51 \r
52     public DiagramPreferences(IEclipsePreferences preferences, Map<String, Object> map) {\r
53         this.preferences = preferences;\r
54         this.map = map;\r
55         if (map == null)\r
56             map = Collections.emptyMap();\r
57     }\r
58 \r
59     public DiagramPreferences withValue(String preference, Object value) {\r
60         Map<String, Object> newMap = new HashMap<String, Object>(map);\r
61         newMap.put(preference, value);\r
62         return new DiagramPreferences(preferences, newMap);\r
63     }\r
64 \r
65     @SuppressWarnings("unchecked")\r
66     public <T> T get(String preference) {\r
67         T t = (T) map.get(preference);\r
68         if (t == null)\r
69             throw new IllegalStateException("no value for preference " + preference + " available");\r
70         return t;\r
71     }\r
72 \r
73     public PageDesc getCompletePageDesc() {\r
74         PageDesc pd = get(P_DEFAULT_PAGE_SIZE);\r
75         return pd;\r
76 //        PageOrientation po = get(P_DEFAULT_PAGE_ORIENTATION);\r
77 //        Margins margins = get(P_DEFAULT_PAGE_MARGINS);\r
78 //        return pd.withOrientation(po).withMargins(margins);\r
79     }\r
80 \r
81     public DiagramDesc getDiagramDesc() {\r
82         double gridSize = get(DiagramPreferences.P_SNAP_GRID_SIZE);\r
83         boolean bordersVisible = get(DiagramPreferences.P_DISPLAY_PAGE_SIZE);\r
84         boolean marginsVisible = get(DiagramPreferences.P_DISPLAY_MARGINS);\r
85         boolean gridVisible = get(DiagramPreferences.P_DISPLAY_GRID);\r
86         boolean rulerVisible = get(DiagramPreferences.P_DISPLAY_RULER);\r
87         return new DiagramDesc(getCompletePageDesc(), gridSize, bordersVisible, marginsVisible, gridVisible, rulerVisible);\r
88     }\r
89 \r
90 }\r