1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
//
// Time-stamp: <30.10.2003 14:33:31h liekweg>
//
// This library is distributed under the BSD license.
// See license.txt for more information.
//
// $Id$
//
package dot;
import java.io.PrintWriter;
/**
<P>Dot gets Clusters!</P>
@since Sun Oct 26 21:56:01 2003
@author Florian Liekweg <TT><liekweg@ipd.info.uni-karlsruhe.de></TT>, Universitt Karlsruhe (TH), Germany
*/
public class DotCluster
{
/**
<P>Build a new cluster.</P>
*/
protected DotCluster (DotNodeAttr [] node_defaults,
String name, String label)
{
_name = name;
_label = label;
_nodes = new java.util.Vector ();
_node_defaults = node_defaults;
}
/**
<P>Build a new cluster.</P>
*/
protected DotCluster (DotNodeAttr [] node_defaults,
String name)
{
this (node_defaults, name, null);
}
protected DotCluster (DotNodeAttr [] node_defaults)
{
this (node_defaults, "anonymous");
}
/**
<P>Add a node with the given name (identifier for dot), the
label (text in the node).</P>
@param name The identifier (for dot).
@param label The text in the node.
*/
public void add_node (String name, String label)
{
_nodes.addElement (new DotNode (name, label, _node_defaults));
}
/**
<P>Add a node with the given name (identifier for dot), the
label (text in the node) and some more attributes.</P>
@param name The identifier (for dot).
@param label The text in the node.
@param attrs Further attributes.
*/
public void add_node (String name, String label, DotNodeAttr [] attrs)
{
_nodes.addElement (new DotNode (name, label, attrs));
}
/**
<P>Add a node with the given name (identifier for dot) and some more attributes.</P>
<P>If this node must have a label string, it must be given in the attributes.</P>
@param name The identifier (for dot).
@param attrs Further attributes.
*/
public void add_node (String name, DotNodeAttr [] attrs)
{
_nodes.addElement (new DotNode (name, attrs));
}
public void write (java.io.PrintWriter out)
{
StringBuffer buf = new StringBuffer ();
buf.append ("\tsubgraph \"cluster_" + _name + "\"\n");
buf.append ("\t{\n");
if (null != _label) {
new DotLabelAttr (_label).write (buf);
buf.append (";\n");
}
int n_nodes = _nodes.size ();
for (int i = 0; i < n_nodes; i ++) {
DotNode node = (DotNode) _nodes.elementAt (i);
node.write (buf);
}
buf.append ("\t}\n");
out.print (buf);
}
protected void write_nodes (PrintWriter out)
{
StringBuffer buf = new StringBuffer ();
int n_nodes = _nodes.size ();
for (int i = 0; i < n_nodes; i ++) {
DotNode node = (DotNode) _nodes.elementAt (i);
node.write (buf);
}
out.print (buf);
}
private final String _name;
private final String _label;
java.util.Vector _nodes;
protected final DotNodeAttr [] _node_defaults;
}
|