fiore@0
|
1 /*
|
fiore@0
|
2 CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool
|
fiore@0
|
3
|
fiore@0
|
4 Copyright (C) 2011 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/)
|
fiore@0
|
5
|
fiore@0
|
6 This program is free software: you can redistribute it and/or modify
|
fiore@0
|
7 it under the terms of the GNU General Public License as published by
|
fiore@0
|
8 the Free Software Foundation, either version 3 of the License, or
|
fiore@0
|
9 (at your option) any later version.
|
fiore@0
|
10
|
fiore@0
|
11 This program is distributed in the hope that it will be useful,
|
fiore@0
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
fiore@0
|
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
fiore@0
|
14 GNU General Public License for more details.
|
fiore@0
|
15
|
fiore@0
|
16 You should have received a copy of the GNU General Public License
|
fiore@0
|
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
|
fiore@0
|
18 */
|
fiore@0
|
19 package uk.ac.qmul.eecs.ccmi.diagrammodel;
|
fiore@0
|
20
|
fiore@0
|
21 /**
|
fiore@3
|
22 * The {@code DiagramModeltreeNode} placed in an edge subtree representing a node connected
|
fiore@0
|
23 * by the edge itself.
|
fiore@0
|
24 */
|
fiore@0
|
25 @SuppressWarnings("serial")
|
fiore@3
|
26 public class NodeReferenceMutableTreeNode extends DiagramTreeNode {
|
fiore@3
|
27 NodeReferenceMutableTreeNode(DiagramNode node, DiagramEdge edge){
|
fiore@0
|
28 super();
|
fiore@0
|
29 this.node = node;
|
fiore@0
|
30 this.edge = edge;
|
fiore@0
|
31 }
|
fiore@0
|
32
|
fiore@0
|
33
|
fiore@0
|
34 @Override
|
fiore@0
|
35 public String toString(){
|
fiore@0
|
36 StringBuilder b = new StringBuilder();
|
fiore@0
|
37 if(edge.getEndDescription(node) != null){
|
fiore@0
|
38 b.append(' ');
|
fiore@0
|
39 b.append(edge.getEndDescription(node));
|
fiore@0
|
40 b.append(' ');
|
fiore@0
|
41 }
|
fiore@0
|
42 b.append(node.getName());
|
fiore@0
|
43 b.append(' ');
|
fiore@0
|
44 if(edge.getEndLabel(node) != null){
|
fiore@0
|
45 b.append(edge.getEndLabel(node));
|
fiore@0
|
46 }
|
fiore@0
|
47 /* set the user object so that superclass toString can be called, which
|
fiore@0
|
48 * decorates the string with notes and bookmarks
|
fiore@0
|
49 */
|
fiore@0
|
50 setUserObject(b.toString());
|
fiore@0
|
51 return super.toString();
|
fiore@0
|
52 }
|
fiore@0
|
53
|
fiore@0
|
54 /**
|
fiore@3
|
55 * Returns the tree node name "as it is", without any decoration such as notes, bookmarks or cardinality
|
fiore@3
|
56 * ,unlike the String returned by toString.
|
fiore@3
|
57 *
|
fiore@0
|
58 * @return the tree node name
|
fiore@0
|
59 */
|
fiore@0
|
60 @Override
|
fiore@0
|
61 public String getName(){
|
fiore@0
|
62 return node.getName();
|
fiore@0
|
63 }
|
fiore@0
|
64
|
fiore@0
|
65 /**
|
fiore@0
|
66 * Returns a String representing this object for this tree node in a way more suitable
|
fiore@0
|
67 * for a text to speech synthesizer to read, than toString().
|
fiore@3
|
68 *
|
fiore@0
|
69 * @return a String suitable for text to speech synthesis
|
fiore@0
|
70 */
|
fiore@0
|
71 @Override
|
fiore@0
|
72 public String spokenText(){
|
fiore@0
|
73 toString();
|
fiore@0
|
74 return super.spokenText();
|
fiore@0
|
75 }
|
fiore@0
|
76
|
fiore@0
|
77 /**
|
fiore@0
|
78 * Returns the diagram edge that has this node in its subtree. Note that diagram edges
|
fiore@0
|
79 * are DiagramModelTreeNodes as well.
|
fiore@3
|
80 *
|
fiore@0
|
81 * @return a reference to the diagram edge
|
fiore@0
|
82 */
|
fiore@0
|
83 public DiagramEdge getEdge(){
|
fiore@0
|
84 return edge;
|
fiore@0
|
85 }
|
fiore@0
|
86
|
fiore@0
|
87 /**
|
fiore@3
|
88 * Returns the diagram node that this tree node represents inside the edge subtree.
|
fiore@3
|
89 *
|
fiore@0
|
90 * @return a reference to the actual diagram node
|
fiore@0
|
91 */
|
fiore@0
|
92 public DiagramNode getNode(){
|
fiore@0
|
93 return node;
|
fiore@0
|
94 }
|
fiore@0
|
95
|
fiore@0
|
96 private DiagramNode node;
|
fiore@0
|
97 private DiagramEdge edge;
|
fiore@0
|
98 }
|