]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/Diagram.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / diagram / impl / Diagram.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.g2d.diagram.impl;\r
13 \r
14 import java.util.Collection;\r
15 \r
16 import org.simantics.g2d.diagram.DiagramClass;\r
17 import org.simantics.g2d.diagram.DiagramHints;\r
18 import org.simantics.g2d.diagram.IDiagram;\r
19 import org.simantics.g2d.element.IElement;\r
20 import org.simantics.g2d.element.impl.Element;\r
21 import org.simantics.utils.datastructures.hints.HintContext;\r
22 \r
23 /**\r
24  * @author Toni Kalajainen\r
25  */\r
26 public class Diagram extends AbstractDiagram implements IDiagram {\r
27 \r
28     public static final IDiagram EMPTY_DIAGRAM = spawnNew(DiagramClass.DEFAULT);\r
29 \r
30     /**\r
31      * Spawn a new diagram to the world\r
32      * @param clazz\r
33      * @return\r
34      */\r
35     public static IDiagram spawnNew(DiagramClass clazz)\r
36     {\r
37         Diagram d = new Diagram(clazz);\r
38         AbstractDiagram.fireCreated(d);\r
39         return d;\r
40     }\r
41 \r
42     /**\r
43      * Instantiate new diagram for purpose of loading from file...\r
44      * @param clazz\r
45      * @return\r
46      */\r
47     static Diagram instantiate(DiagramClass clazz)\r
48     {\r
49         Diagram d = new Diagram(clazz);\r
50         AbstractDiagram.fireCreated(d);\r
51         return d;\r
52     }\r
53 \r
54     /**\r
55      * Creates an identical clone of a diagram.\r
56      * @param src\r
57      * @return\r
58      */\r
59     public static IDiagram clone(IDiagram src)\r
60     {\r
61         // Clone diagram\r
62         DiagramClass clazz = src.getDiagramClass();\r
63         Diagram d = new Diagram(clazz);\r
64         // Clone variables\r
65         d.setHints(src.getHints());\r
66         // Clone elements\r
67         for (IElement e : src.getElements())\r
68             d.addElement( Element.clone(e) );\r
69 \r
70         AbstractDiagram.fireLoaded(d);\r
71         return d;\r
72     }\r
73 \r
74     /**\r
75      * Creates an identical clone of a diagram.\r
76      * @param src\r
77      * @return\r
78      */\r
79     public static IDiagram clone(IDiagram src, Collection<IElement> elements)\r
80     {\r
81         // Clone diagram\r
82         DiagramClass clazz = src.getDiagramClass();\r
83         Diagram d = new Diagram(clazz);\r
84         // Clone variables\r
85         d.setHints(src.getHints());\r
86         // Clone elements\r
87         for (IElement e : elements) {\r
88             d.addElement( Element.clone(e) );\r
89         }\r
90         AbstractDiagram.fireLoaded(d);\r
91 \r
92         return d;\r
93     }\r
94 \r
95     Diagram(DiagramClass clazz)\r
96     {\r
97         super(clazz, new HintContext());\r
98     }\r
99 \r
100     @Override\r
101     public String toString() {\r
102         String name = getHint(DiagramHints.KEY_TEXT);\r
103         if (name==null) name = super.toString();\r
104         return name;\r
105     }\r
106 \r
107 }\r