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
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.modeling.ui.preferences;
\r
14 import java.util.Collections;
\r
15 import java.util.HashMap;
\r
16 import java.util.Map;
\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
26 * @author Tuukka Lehtonen
\r
28 public final class DiagramPreferences {
\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
37 public static final Margin MARGIN_10MM = new Margin(0, 0, 10);
\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
48 public final IEclipsePreferences preferences;
\r
50 private final Map<String, Object> map;
\r
52 public DiagramPreferences(IEclipsePreferences preferences, Map<String, Object> map) {
\r
53 this.preferences = preferences;
\r
56 map = Collections.emptyMap();
\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
65 @SuppressWarnings("unchecked")
\r
66 public <T> T get(String preference) {
\r
67 T t = (T) map.get(preference);
\r
69 throw new IllegalStateException("no value for preference " + preference + " available");
\r
73 public PageDesc getCompletePageDesc() {
\r
74 PageDesc pd = get(P_DEFAULT_PAGE_SIZE);
\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
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