fiore@0: /* fiore@0: CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool fiore@0: fiore@0: Copyright (C) 2011 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/) fiore@0: fiore@0: This program is free software: you can redistribute it and/or modify fiore@0: it under the terms of the GNU General Public License as published by fiore@0: the Free Software Foundation, either version 3 of the License, or fiore@0: (at your option) any later version. fiore@0: fiore@0: This program is distributed in the hope that it will be useful, fiore@0: but WITHOUT ANY WARRANTY; without even the implied warranty of fiore@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the fiore@0: GNU General Public License for more details. fiore@0: fiore@0: You should have received a copy of the GNU General Public License fiore@0: along with this program. If not, see . fiore@0: */ fiore@0: package uk.ac.qmul.eecs.ccmi.diagrammodel; fiore@0: fiore@0: /** fiore@3: * The {@code DiagramModeltreeNode} placed in an edge subtree representing a node connected fiore@0: * by the edge itself. fiore@0: */ fiore@0: @SuppressWarnings("serial") fiore@3: public class NodeReferenceMutableTreeNode extends DiagramTreeNode { fiore@3: NodeReferenceMutableTreeNode(DiagramNode node, DiagramEdge edge){ fiore@0: super(); fiore@0: this.node = node; fiore@0: this.edge = edge; fiore@0: } fiore@0: fiore@0: fiore@0: @Override fiore@0: public String toString(){ fiore@0: StringBuilder b = new StringBuilder(); fiore@0: if(edge.getEndDescription(node) != null){ fiore@0: b.append(' '); fiore@0: b.append(edge.getEndDescription(node)); fiore@0: b.append(' '); fiore@0: } fiore@0: b.append(node.getName()); fiore@0: b.append(' '); fiore@0: if(edge.getEndLabel(node) != null){ fiore@0: b.append(edge.getEndLabel(node)); fiore@0: } fiore@0: /* set the user object so that superclass toString can be called, which fiore@0: * decorates the string with notes and bookmarks fiore@0: */ fiore@0: setUserObject(b.toString()); fiore@0: return super.toString(); fiore@0: } fiore@0: fiore@0: /** fiore@3: * Returns the tree node name "as it is", without any decoration such as notes, bookmarks or cardinality fiore@3: * ,unlike the String returned by toString. fiore@3: * fiore@0: * @return the tree node name fiore@0: */ fiore@0: @Override fiore@0: public String getName(){ fiore@0: return node.getName(); fiore@0: } fiore@0: fiore@0: /** fiore@0: * Returns a String representing this object for this tree node in a way more suitable fiore@0: * for a text to speech synthesizer to read, than toString(). fiore@3: * fiore@0: * @return a String suitable for text to speech synthesis fiore@0: */ fiore@0: @Override fiore@0: public String spokenText(){ fiore@0: toString(); fiore@0: return super.spokenText(); fiore@0: } fiore@0: fiore@0: /** fiore@0: * Returns the diagram edge that has this node in its subtree. Note that diagram edges fiore@0: * are DiagramModelTreeNodes as well. fiore@3: * fiore@0: * @return a reference to the diagram edge fiore@0: */ fiore@0: public DiagramEdge getEdge(){ fiore@0: return edge; fiore@0: } fiore@0: fiore@0: /** fiore@3: * Returns the diagram node that this tree node represents inside the edge subtree. fiore@3: * fiore@0: * @return a reference to the actual diagram node fiore@0: */ fiore@0: public DiagramNode getNode(){ fiore@0: return node; fiore@0: } fiore@0: fiore@0: private DiagramNode node; fiore@0: private DiagramEdge edge; fiore@0: }