From 17449eac22d38e1878466b586c09b1b5ab5faea8 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Fri, 26 Jul 2002 16:07:22 +0000 Subject: [PATCH] Can hide methods and fields. Better comments in the dot graph. --- .../spinellis/umlgraph/doclet/ClassGraph.java | 19 +++++++++++++------ .../spinellis/umlgraph/doclet/ClassInfo.java | 19 +++++++++++++------ src/gr/spinellis/umlgraph/doclet/Options.java | 19 +++++++++++++------ .../spinellis/umlgraph/doclet/StringUtil.java | 19 +++++++++++++------ .../spinellis/umlgraph/doclet/UmlGraph.java | 19 +++++++++++++------ src/org/umlgraph/doclet/ClassGraph.java | 19 +++++++++++++------ src/org/umlgraph/doclet/ClassInfo.java | 19 +++++++++++++------ src/org/umlgraph/doclet/Options.java | 19 +++++++++++++------ src/org/umlgraph/doclet/StringUtil.java | 19 +++++++++++++------ src/org/umlgraph/doclet/UmlGraph.java | 19 +++++++++++++------ 10 files changed, 130 insertions(+), 60 deletions(-) diff --git a/src/gr/spinellis/umlgraph/doclet/ClassGraph.java b/src/gr/spinellis/umlgraph/doclet/ClassGraph.java index 4a08d7b..0956abc 100644 --- a/src/gr/spinellis/umlgraph/doclet/ClassGraph.java +++ b/src/gr/spinellis/umlgraph/doclet/ClassGraph.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java index 4a08d7b..0956abc 100644 --- a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java +++ b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/gr/spinellis/umlgraph/doclet/Options.java b/src/gr/spinellis/umlgraph/doclet/Options.java index 4a08d7b..0956abc 100644 --- a/src/gr/spinellis/umlgraph/doclet/Options.java +++ b/src/gr/spinellis/umlgraph/doclet/Options.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/gr/spinellis/umlgraph/doclet/StringUtil.java b/src/gr/spinellis/umlgraph/doclet/StringUtil.java index 4a08d7b..0956abc 100644 --- a/src/gr/spinellis/umlgraph/doclet/StringUtil.java +++ b/src/gr/spinellis/umlgraph/doclet/StringUtil.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java index 4a08d7b..0956abc 100644 --- a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java +++ b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/org/umlgraph/doclet/ClassGraph.java b/src/org/umlgraph/doclet/ClassGraph.java index 4a08d7b..0956abc 100644 --- a/src/org/umlgraph/doclet/ClassGraph.java +++ b/src/org/umlgraph/doclet/ClassGraph.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/org/umlgraph/doclet/ClassInfo.java b/src/org/umlgraph/doclet/ClassInfo.java index 4a08d7b..0956abc 100644 --- a/src/org/umlgraph/doclet/ClassInfo.java +++ b/src/org/umlgraph/doclet/ClassInfo.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/org/umlgraph/doclet/Options.java b/src/org/umlgraph/doclet/Options.java index 4a08d7b..0956abc 100644 --- a/src/org/umlgraph/doclet/Options.java +++ b/src/org/umlgraph/doclet/Options.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/org/umlgraph/doclet/StringUtil.java b/src/org/umlgraph/doclet/StringUtil.java index 4a08d7b..0956abc 100644 --- a/src/org/umlgraph/doclet/StringUtil.java +++ b/src/org/umlgraph/doclet/StringUtil.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;"); diff --git a/src/org/umlgraph/doclet/UmlGraph.java b/src/org/umlgraph/doclet/UmlGraph.java index 4a08d7b..0956abc 100644 --- a/src/org/umlgraph/doclet/UmlGraph.java +++ b/src/org/umlgraph/doclet/UmlGraph.java @@ -126,6 +126,8 @@ class ClassGraph { private void attributes(FieldDoc f[]) { for (int i = 0; i < f.length; i++) { + if (hidden(f[i])) + continue; visibility(f[i]); opt.w.print(f[i].name()); if (opt.showType) @@ -136,6 +138,8 @@ class ClassGraph { private void operations(MethodDoc m[]) { for (int i = 0; i < m.length; i++) { + if (hidden(m[i])) + continue; visibility(m[i]); opt.w.print(m[i].name()); if (opt.showType) { @@ -158,7 +162,7 @@ class ClassGraph { } /** Return true if c has a @hidden tag associated with it */ - private boolean hidden(ClassDoc c) { + private boolean hidden(Doc c) { Tag tags[] = c.tags("hidden"); return (tags.length > 0); } @@ -176,6 +180,7 @@ class ClassGraph { if (toPrint && !hidden(c)) { // Associate classnames alias String r = c.toString(); + opt.w.println("\t// " + r); if (!opt.showQualified) { // Create readable string by stripping leading path int dotpos = r.lastIndexOf('.'); @@ -201,6 +206,7 @@ class ClassGraph { operations(c.methods()); if (showMembers) opt.w.print("}\""); + // Use ariali for gif output if (c.isAbstract()) opt.w.print(", fontname=\"Helvetica-Oblique\""); opt.w.println("];"); @@ -264,7 +270,8 @@ class ClassGraph { Tag tags[] = from.tags(tagname); for (int i = 0; i < tags.length; i++) { String t[] = tokenize(tags[i].text()); // l-src label l-dst target - opt.w.println("\t" + name + " -> " + name(t[3]) + "[" + + opt.w.println("\t// " + from + " " + tagname + " " + t[3]); + opt.w.println("\t" + name + " -> " + name(t[3]) + " [" + "taillabel=\"" + t[0] + "\", " + "label=\"" + guillemize(t[1]) + "\", " + "headlabel=\"" + t[2] + "\", " + @@ -278,14 +285,14 @@ class ClassGraph { // Print generalization (through the Java superclass) ClassDoc s = c.superclass(); if (s != null && !s.toString().equals("java.lang.Object")) { - opt.w.print("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + s); + opt.w.println("\t" + name(s) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print generalization (through @extends tags) Tag tags[] = c.tags("extends"); for (int i = 0; i < tags.length; i++) { - opt.w.print("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); opt.w.println("\t//" + c + " extends " + tags[i].text()); + opt.w.println("\t" + name(tags[i].text()) + " -> " + cs + " [dir=back,arrowtail=empty];"); } // Print realizations (Java interfaces) ClassDoc ifs[] = c.interfaces(); @@ -359,9 +366,9 @@ public class UmlGraph { "# Generated by $Id$\n" + "#\n\n" + "digraph G {\n" + - "edge [fontname=\"Helvetica\",fontsize=8,labelfontname=\"Helvetica\",labelfontsize=8];\n" + + "\tedge [fontname=\"Helvetica\",fontsize=10,labelfontname=\"Helvetica\",labelfontsize=10];\n" + - "\tnode [fontname=\"Helvetica\",fontsize=8,shape=record];" + "\tnode [fontname=\"Helvetica\",fontsize=10,shape=record];" ); if (opt.horizontal) opt.w.println("\trankdir=LR;\n\tranksep=1;");