File: DotCluster.java

package info (click to toggle)
graphviz 14.0.5-1
  • links: PTS
  • area: main
  • in suites: experimental
  • size: 139,388 kB
  • sloc: ansic: 141,938; cpp: 11,957; python: 7,766; makefile: 4,043; yacc: 3,030; xml: 2,972; tcl: 2,495; sh: 1,388; objc: 1,159; java: 560; lex: 423; perl: 243; awk: 156; pascal: 139; php: 58; ruby: 49; cs: 31; sed: 1
file content (127 lines) | stat: -rw-r--r-- 3,021 bytes parent folder | download | duplicates (6)
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>&lt;liekweg@ipd.info.uni-karlsruhe.de&gt;</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;
}