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.g2d.diagram.impl;
\r
14 import java.util.Collection;
\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
24 * @author Toni Kalajainen
\r
26 public class Diagram extends AbstractDiagram implements IDiagram {
\r
28 public static final IDiagram EMPTY_DIAGRAM = spawnNew(DiagramClass.DEFAULT);
\r
31 * Spawn a new diagram to the world
\r
35 public static IDiagram spawnNew(DiagramClass clazz)
\r
37 Diagram d = new Diagram(clazz);
\r
38 AbstractDiagram.fireCreated(d);
\r
43 * Instantiate new diagram for purpose of loading from file...
\r
47 static Diagram instantiate(DiagramClass clazz)
\r
49 Diagram d = new Diagram(clazz);
\r
50 AbstractDiagram.fireCreated(d);
\r
55 * Creates an identical clone of a diagram.
\r
59 public static IDiagram clone(IDiagram src)
\r
62 DiagramClass clazz = src.getDiagramClass();
\r
63 Diagram d = new Diagram(clazz);
\r
65 d.setHints(src.getHints());
\r
67 for (IElement e : src.getElements())
\r
68 d.addElement( Element.clone(e) );
\r
70 AbstractDiagram.fireLoaded(d);
\r
75 * Creates an identical clone of a diagram.
\r
79 public static IDiagram clone(IDiagram src, Collection<IElement> elements)
\r
82 DiagramClass clazz = src.getDiagramClass();
\r
83 Diagram d = new Diagram(clazz);
\r
85 d.setHints(src.getHints());
\r
87 for (IElement e : elements) {
\r
88 d.addElement( Element.clone(e) );
\r
90 AbstractDiagram.fireLoaded(d);
\r
95 Diagram(DiagramClass clazz)
\r
97 super(clazz, new HintContext());
\r
101 public String toString() {
\r
102 String name = getHint(DiagramHints.KEY_TEXT);
\r
103 if (name==null) name = super.toString();
\r