|
What this is
Other links
The source code/* * UML.java - UML * * Copyright (c) 1999 George Latkiewicz (georgel@arvotek.net) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import java.util.Vector; // required for UML.Operation.argList import javax.swing.ImageIcon; // icons public class UML { //========================================================================= public static class Type { public static final Type CLASS = new Type("class", new ImageIcon(UML.class.getResource("Class.gif"))); public static final Type INTERFACE = new Type("interface", new ImageIcon(UML.class.getResource("Interface.gif"))); public static final Type INNER_CLASS = new Type("inner-class", new ImageIcon(UML.class.getResource("InnerClass.gif"))); public static final Type METHOD = new Type("", new ImageIcon(UML.class.getResource("Operation.gif"))); public static final Type ATTRIBUTE = new Type("", new ImageIcon(UML.class.getResource("Attribute.gif"))); public static final Type EXTENDS = new Type("extends", new ImageIcon(UML.class.getResource("Extends.gif"))); public static final Type IMPLEMENTS = new Type("implements", new ImageIcon(UML.class.getResource("Implements.gif"))); public static final Type THROWS = new Type("throws", new ImageIcon(UML.class.getResource("Throws.gif"))); public static final Type ERROR = new Type("ERROR", new ImageIcon(UML.class.getResource("Error.gif"))); // use POSSIBLE_VALUES to build an iterator public static final Type[] POSSIBLE_VALUES = { CLASS, INTERFACE, INNER_CLASS, METHOD, ATTRIBUTE, ERROR }; protected String label = null; protected ImageIcon icon = null; //--------------------------------------------------------------------- private Type(String label, ImageIcon icon) { this.label = label; this.icon = icon; } public ImageIcon getIcon() { return icon; } public String toString() { return label.toString(); } } // class UML.Type //========================================================================= static class Element { // The class which all elements that are to be displayed in a UMLTree // must inherit from. protected String name = null; protected UML.Type type = null; protected int mod = 0; // protected int canonicalMod = 0; protected Element parent = null; protected int line = -1; Element(String name, UML.Type type, int mod, Element parent, int line) { this.name = name; this.type = type; this.mod = mod; this.parent = parent; this.line = line; // canonicalMod = } Element(String name) { this.name = name; } public final UML.Type getElementType() { return (UML.Type) type; } public final void setElementType(UML.Type type) { this.type = type; } public final Element getParentElement() { return (Element) parent; } public final void setParentElement(Element e) { this.parent = parent; } public final UML.Type getParentElementType() { if ( parent == null ) { return null; } else { return parent.getElementType(); } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString(Options.DisplayIro displayOpt) { return name; } public String toString() { return name; } public boolean isVisible(Options.FilterIro filterOpt) { return true; } // ??? later use canonical modifier public /*final*/ boolean isAbstract() { return ( RWModifier.isAbstract(mod) || RWModifier.isInterface(mod) ); } public final boolean isStatic() { return RWModifier.isStatic(mod); } public final boolean isInterface() { return RWModifier.isInterface(mod); } public final boolean isClass() { return RWModifier.isClass(mod); } } // class UML.Element //========================================================================= static class PackageMember extends Element { // A top-level package member (i.e. class/interface that is a // direct member of a package) PackageMember(String name, UML.Type type, int mod, int line) { super(name, type, mod, null, line); } public String toString(Options.DisplayIro displayOpt) { return ( (displayOpt.getShowLineNum()) ? ( (line + 1) + ":") : "" ) + RWModifier.toString(mod, displayOpt) + name; } // toString(Options.DisplayIro): String //--------------------------------------------------------------------- public boolean isVisible(Options.FilterIro filterOpt) { boolean rVal = false; if ( RWModifier.getTopLevelVisIndex(mod) >= filterOpt.getTopLevelVisIndex() ) { rVal = true; } return rVal; } // isVisible(Options.FilterIro): boolean } // class UML.PackageMember extends UML.Element //========================================================================= static class NestedMember extends Element { // A top-level package member (i.e. class/interface that is a // direct member of a package) NestedMember(String name, UML.Type type, int mod, Element parent, int line) { super(name, type, mod, parent, line); } public String toString(Options.DisplayIro displayOpt) { String myPath = ""; Element parent = getParentElement(); while (parent != null) { myPath = parent.getName() + " ." + myPath; parent = parent.getParentElement(); } return ( (displayOpt.getShowLineNum()) ? ( (line + 1) + ":") : "" ) + RWModifier.toString(mod, displayOpt) + ( displayOpt.getShowNestedName() ? (myPath + name) : name ); } // toString(Options.DisplayIro): String //--------------------------------------------------------------------- public boolean isVisible(Options.FilterIro filterOpt) { boolean rVal = false; if ( RWModifier.getVisLevelIndex(mod) >= filterOpt.getMemberVisIndex() ) { rVal = true; } return rVal; } // isVisible(Options.FilterIro): boolean } // class UML.NestedMember extends UML.Element //========================================================================= static class Generalization extends Element { // A top-level package member (i.e. class/interface that is a // direct member of a package) Generalization(String name, UML.Type type, Element parent, int line) { // (String name, UML.Type type, int mod, Element parent, int line) super(name, type, 0, parent, line); } public String toString(Options.DisplayIro displayOpt) { String generalizationOf = "interface"; if (parent.isClass() && type == Type.EXTENDS ) { generalizationOf = "class"; } return ( (displayOpt.getShowLineNum()) ? ( (line + 1) + ":") : "" ) + ( (displayOpt.getShowIconKeywords()) ? (type.toString() + " ") : "" ) + generalizationOf + " " + name; } // toString(Options.DisplayIro): String //--------------------------------------------------------------------- public boolean isVisible(Options.FilterIro filterOpt) { boolean rVal = false; if ( filterOpt.getShowGeneralizations() ) rVal = true; return rVal; } // isVisible(Options.FilterIro): boolean } // class UML.Generalization extends UML.Element //========================================================================= static class Message extends Element { Message(String name, UML.Type type, Element parent, int line) { super(name, type, 0, parent, line); } //--------------------------------------------------------------------- public boolean isVisible(Options.FilterIro filterOpt) { return true; } public String toString(Options.DisplayIro displayOpt) { return ( displayOpt.getShowLineNum() ? ( (line + 1) + ":") : "" ) + ( displayOpt.getShowIconKeywords() ? (type + ": " + name) : (name) ); } // toString(Options.DisplayIro): String } // class UML.Message extends UML.Element //========================================================================= static class Operation extends Element { private String returnType; private Vector argList = null; private boolean isConstructor = false; Operation(String name, String returnType, int mod, Element parent, int line) { super(name, UML.Type.METHOD, mod, parent, line); this.returnType = returnType; } public final void addArgument(String type, String name) { if (argList == null) { argList = new Vector(); } // for JDK 1.2 can use argList.add(Object) argList.addElement( new Argument(type, name) ); } public boolean isConstructor() { return isConstructor; } public void setConstructor(boolean isConstructor) { this.isConstructor = isConstructor; } public final boolean isAbstract() { return ( RWModifier.isAbstract(mod) || (getParentElementType() == UML.Type.INTERFACE) ); } public final boolean isBodyRequired() { return (!RWModifier.isNative(mod) && !isAbstract() ); } //--------------------------------------------------------------------- public boolean isVisible(Options.FilterIro filterOpt) { boolean rVal = false; if ( RWModifier.getMemberVisIndex(mod) >= filterOpt.getMemberVisIndex() ) { rVal = true; } return rVal; } // isVisible(Options.FilterIro): boolean //--------------------------------------------------------------------- public final String listArgs(Options.DisplayIro displayOpt) { String rVal = ""; if (argList != null && displayOpt.getShowArguments()) { for (int i = 0; i < argList.size(); i++) { if (i > 0) { // for JDK 1.2 can use argList.get(int) rVal += ", " + ( (Argument) argList.elementAt(i)).toString(displayOpt); } else { // for JDK 1.2 can use argList.get(int) rVal += ( (Argument) argList.elementAt(i)).toString(displayOpt); } } // for } return rVal; } // listArgs(Options.DisplayIro): String //--------------------------------------------------------------------- public String toString(Options.DisplayIro displayOpt) { if ( displayOpt.getTypeIsSuffixed() ) { return ( (displayOpt.getShowLineNum() ) ? (line + 1 + ":") : "" ) + RWModifier.toString(mod, displayOpt) + name + "(" + listArgs(displayOpt) + ")" + ( (isConstructor) ? ": |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.