001: /*
002: * Manage the GraphViz interface for node shapes
003: *
004: * (C) Copyright 2007 Diomidis Spinellis
005: *
006: * Permission to use, copy, and distribute this software and its
007: * documentation for any purpose and without fee is hereby granted,
008: * provided that the above copyright notice appear in all copies and that
009: * both that copyright notice and this permission notice appear in
010: * supporting documentation.
011: *
012: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
013: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
014: * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
015: *
016: * $Id: Shape.java,v 1.2 2007/12/03 14:19:08 dds Exp $
017: *
018: */
019:
020: package org.umlgraph.doclet;
021:
022: import java.io.IOException;
023: import java.io.PrintWriter;
024: import java.util.ArrayList;
025: import java.util.List;
026:
027: import com.sun.javadoc.ClassDoc;
028: import com.sun.javadoc.Doc;
029: import com.sun.javadoc.LanguageVersion;
030: import com.sun.javadoc.RootDoc;
031:
032: /**
033: * Properties of node shapes
034: *
035: * @version $Revision: 1.2 $
036: * @author <a href="http://www.spinellis.gr">Diomidis Spinellis</a>
037: */
038: public class Shape {
039:
040: /** Shape's UMLGraph name */
041: private String name;
042:
043: /** Construct a default (class) Shape */
044: public Shape() {
045: name = "class";
046: }
047:
048: /** Construct a Shape through the specified UMLGraph name */
049: public Shape(String n) {
050: name = n;
051: if (graphvizAttribute() == null) {
052: System.err.println("Ignoring invalid shape " + n);
053: name = "class";
054: }
055: }
056:
057: /**
058: * Return the GraphViz shape name corresponding to the shape
059: */
060: public String graphvizAttribute() {
061: if (name.equals("class"))
062: return ""; // Default; plaintext
063: else if (name.equals("note"))
064: return ", shape=note";
065: else if (name.equals("node"))
066: return ", shape=box3d";
067: else if (name.equals("component"))
068: return ", shape=component";
069: else if (name.equals("package"))
070: return ", shape=tab";
071: else if (name.equals("collaboration"))
072: return ", shape=ellipse, style=dashed";
073: else if (name.equals("usecase"))
074: return ", shape=ellipse";
075: else if (name.equals("activeclass"))
076: return ""; // Default; plaintext
077: else
078: return null;
079: }
080:
081: /** Return the shape's GraphViz landing port */
082: String landingPort() {
083: if (name.equals("class") || name.equals("activeclass"))
084: return ":p";
085: else
086: return "";
087: }
088:
089: /** Return the table border required for the shape */
090: String extraColumn(int nRows) {
091: return name.equals("activeclass") ? ("<td rowspan=\"" + nRows + "\"></td>")
092: : "";
093: }
094:
095: /** Return the cell border required for the shape */
096: String cellBorder() {
097: return (name.equals("class") || name.equals("activeclass")) ? "1"
098: : "0";
099: }
100: }
|