home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.ivb.dgraph;
-
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Point;
- import java.awt.Polygon;
- import java.awt.Rectangle;
- import java.util.Vector;
- import javax.swing.Icon;
-
- public class GraphNode extends GraphObject {
- private static final String kCBIBMCopyright = "(c) Copyright IBM Corporation 1998";
- public static final int EXPANSION_ALWAYS = 1;
- public static final int EXPANSION_NONEMPTY = 2;
- private Rectangle expRect;
- private static int defaultLineType;
- private static int defaultFill;
- private static Color defaultColor;
- private static Color defaultHilightColor;
- private static Color defaultBorderColor;
- private static Color defaultSelectedBorderColor;
- private static boolean defaultBorderVisible;
- private static Color defaultLabelColor;
- private static Color defaultSelectedLabelColor;
- private static Color defaultExpansionColor;
- private static int defaultVgap;
- private static int defaultHgap;
- private static boolean defaultExpandable;
- private static Dimension defaultMinimumSize;
- Vector inLinks;
- Vector outLinks;
- private GraphLabel label;
- private Color borderColor;
- private Color hBorderColor;
- private Color labelColor;
- private Color selectedLabelColor;
- private Color expansionColor;
- private int hgap;
- private int vgap;
- private int expansionHeight;
- private boolean expandable;
- private boolean childrenVisible;
- private boolean parentsVisible;
- private boolean fchildrenVisible;
- private boolean fparentsVisible;
- private Dimension minimumSize;
- private boolean borderVisible;
- private int parentExpmode;
- private int childrenExpmode;
- int level;
- int mark;
- // $FF: renamed from: x double
- double field_0;
- // $FF: renamed from: y double
- double field_1;
- boolean fixedY;
- boolean fixed;
- // $FF: renamed from: dx double
- double field_2;
- // $FF: renamed from: dy double
- double field_3;
-
- public GraphNode() {
- this.expRect = new Rectangle();
- this.borderColor = defaultBorderColor;
- this.hBorderColor = defaultSelectedBorderColor;
- this.labelColor = defaultLabelColor;
- this.selectedLabelColor = defaultSelectedLabelColor;
- this.expansionColor = defaultExpansionColor;
- this.hgap = defaultHgap;
- this.vgap = defaultVgap;
- this.expandable = defaultExpandable;
- this.childrenVisible = true;
- this.parentsVisible = true;
- this.fchildrenVisible = false;
- this.fparentsVisible = false;
- this.minimumSize = defaultMinimumSize;
- this.borderVisible = defaultBorderVisible;
- this.parentExpmode = 2;
- this.childrenExpmode = 2;
- this.fixedY = false;
- this.fixed = false;
- this.inLinks = new Vector();
- this.outLinks = new Vector();
- ((GraphObject)this).setFillType(defaultFill);
- ((GraphObject)this).setLineType(defaultLineType);
- ((GraphObject)this).setColor(defaultColor);
- ((GraphObject)this).setHilightColor(defaultHilightColor);
- }
-
- public GraphNode(String var1) {
- this();
- this.label = new GraphLabel(var1);
- this.label.setColor(this.labelColor);
- this.label.setHilightColor(this.selectedLabelColor);
- }
-
- /** @deprecated */
- public GraphNode(String var1, Image var2) {
- this();
- this.label = new GraphLabel(var1, var2);
- this.label.setColor(this.labelColor);
- this.label.setHilightColor(this.selectedLabelColor);
- }
-
- public GraphNode(String var1, Icon var2) {
- this();
- this.label = new GraphLabel(var1, var2);
- this.label.setColor(this.labelColor);
- this.label.setHilightColor(this.selectedLabelColor);
- }
-
- void addInLink(GraphLink var1) {
- this.inLinks.addElement(var1);
- }
-
- void addOutLink(GraphLink var1) {
- this.outLinks.addElement(var1);
- }
-
- public int areParentsLevelled() {
- int var1 = -1;
- if (this.inLinks.size() == 0) {
- return 0;
- } else {
- for(int var2 = 0; var2 < this.inLinks.size(); ++var2) {
- GraphLink var3 = (GraphLink)this.inLinks.elementAt(var2);
- int var4 = var3.getSourceNode().level;
- if (var4 == -1) {
- return -1;
- }
-
- var1 = Math.max(var1, var3.getSourceNode().level);
- }
-
- return var1;
- }
- }
-
- public void calculateSize(FontMetrics var1, double var2) {
- int var4 = (int)((double)this.hgap * var2);
- int var5 = (int)((double)this.vgap * var2);
- int var6 = (int)((double)this.minimumSize.width * var2);
- int var7 = (int)((double)this.minimumSize.height * var2);
- if (this.label == null) {
- super.rect.width = var4 + var4;
- super.rect.height = var5 + var5;
- } else {
- this.label.calculateSize(var1, var2);
- super.rect.width = var4 + this.label.getSize().width + var4;
- super.rect.height = var5 + this.label.getSize().height + var5;
- }
-
- if (super.rect.width < var6) {
- super.rect.width = var6;
- }
-
- if (super.rect.height < var7) {
- super.rect.height = var7;
- }
-
- if (this.expandable) {
- this.expansionHeight = 2 * var1.getHeight() / 3;
- Rectangle var10000 = super.rect;
- var10000.height += this.expansionHeight + this.expansionHeight;
- }
-
- }
-
- public final boolean findCycle(int var1, Vector var2) {
- if (this.outLinks.size() == 0) {
- return false;
- } else {
- for(int var3 = 0; var3 < this.outLinks.size(); ++var3) {
- GraphLink var4 = (GraphLink)this.outLinks.elementAt(var3);
- GraphNode var5 = var4.getTargetNode();
- if (var5.level == -1) {
- if (var5.mark == var1) {
- var4.reverse();
- var2.addElement(var4);
- return true;
- }
-
- var5.mark = var1;
- return var5.findCycle(var1, var2);
- }
- }
-
- return false;
- }
- }
-
- public Color getBorderColor() {
- return this.borderColor;
- }
-
- public int getChildCount() {
- if (!this.childrenVisible) {
- return 0;
- } else {
- int var1 = 0;
-
- for(int var2 = 0; var2 < this.outLinks.size(); ++var2) {
- GraphLink var3 = (GraphLink)this.outLinks.elementAt(var2);
- GraphNode var4 = var3.getTargetNode();
- if (((GraphObject)var4).isVisible()) {
- ++var1;
- }
- }
-
- return var1;
- }
- }
-
- public Vector getChildLinks() {
- return this.outLinks;
- }
-
- public boolean getChildrenVisible() {
- return this.childrenVisible;
- }
-
- public static Color getDefaultBorderColor() {
- return defaultBorderColor;
- }
-
- public static Color getDefaultColor() {
- return defaultColor;
- }
-
- public static Color getDefaultExpansionColor() {
- return defaultExpansionColor;
- }
-
- public static int getDefaultFillType() {
- return defaultFill;
- }
-
- public static int getDefaultHgap() {
- return defaultHgap;
- }
-
- public static Color getDefaultHilightColor() {
- return defaultHilightColor;
- }
-
- public static Color getDefaultLabelColor() {
- return defaultLabelColor;
- }
-
- public static int getDefaultLineType() {
- return defaultLineType;
- }
-
- public static Dimension getDefaultMinimumSize() {
- return defaultMinimumSize;
- }
-
- public static Color getDefaultSelectedBorderColor() {
- return defaultSelectedBorderColor;
- }
-
- public static Color getDefaultSelectedLabelColor() {
- return defaultSelectedLabelColor;
- }
-
- public static int getDefaultVgap() {
- return defaultVgap;
- }
-
- public Color getExpansionColor() {
- return this.expansionColor;
- }
-
- public int getHgap() {
- return this.hgap;
- }
-
- public GraphLabel getLabel() {
- return this.label;
- }
-
- public Color getLabelColor() {
- return this.labelColor;
- }
-
- public Dimension getMinimumSize() {
- return this.minimumSize;
- }
-
- public int getParentCount() {
- if (!this.parentsVisible) {
- return 0;
- } else {
- int var1 = 0;
-
- for(int var2 = 0; var2 < this.inLinks.size(); ++var2) {
- GraphLink var3 = (GraphLink)this.inLinks.elementAt(var2);
- GraphNode var4 = var3.getSourceNode();
- if (((GraphObject)var4).isVisible()) {
- ++var1;
- }
- }
-
- return var1;
- }
- }
-
- public Vector getParentLinks() {
- return this.inLinks;
- }
-
- public boolean getParentsVisible() {
- return this.parentsVisible;
- }
-
- public Color getSelectedBorderColor() {
- return this.hBorderColor;
- }
-
- public Color getSelectedLabelColor() {
- return this.selectedLabelColor;
- }
-
- public int getVgap() {
- return this.vgap;
- }
-
- protected void handleChildrenExpanded(boolean var1) {
- }
-
- protected void handleParentsExpanded(boolean var1) {
- }
-
- public boolean isBorderVisible() {
- return this.borderVisible;
- }
-
- public static boolean isDefaultBorderVisible() {
- return defaultBorderVisible;
- }
-
- public static boolean isDefaultExpandable() {
- return defaultExpandable;
- }
-
- public boolean isExpandable() {
- return this.expandable;
- }
-
- public boolean isExpansion(int var1, int var2) {
- if (!this.expandable) {
- return false;
- } else if (this.expansionHeight < 6) {
- return false;
- } else {
- int var3 = super.rect.x + super.rect.width / 2;
- int var4 = var3 - 7;
- int var5 = var3 + 7;
- if (var1 >= var4 && var1 <= var5) {
- int var6 = super.rect.y + this.expansionHeight / 2;
- int var7 = var6 - 2;
- int var8 = var6 + 2;
- if (var2 >= var7 && var2 <= var8) {
- boolean var13 = !this.parentsVisible;
- this.handleParentsExpanded(var13);
- this.setParentsVisible(var13);
- return true;
- } else {
- var6 = super.rect.y + super.rect.height - this.expansionHeight / 2;
- var7 = var6 - 2;
- var8 = var6 + 2;
- if (var2 >= var7 && var2 <= var8) {
- boolean var9 = !this.childrenVisible;
- this.handleChildrenExpanded(var9);
- this.setChildrenVisible(var9);
- return true;
- } else {
- return false;
- }
- }
- } else {
- return false;
- }
- }
- }
-
- public boolean isExpansion(Point var1) {
- return this.isExpansion(var1.x, var1.y);
- }
-
- public void paint(Graphics var1, FontMetrics var2, double var3) {
- int var5 = super.rect.width;
- int var6 = super.rect.height;
- int var7 = var6;
- int var8 = super.rect.x;
- int var9 = super.rect.y;
- int var10 = super.rect.y + super.rect.height;
- int var11 = var9;
- int var12 = var10;
- if (this.expandable) {
- var7 = var6 - (this.expansionHeight + this.expansionHeight);
- var11 = var9 + this.expansionHeight;
- var12 = var10 - this.expansionHeight;
- }
-
- if (!((GraphObject)this).isSelected()) {
- var1.setColor(super.color);
- } else {
- var1.setColor(super.hcolor);
- }
-
- if (((GraphObject)this).getFillType() == 0) {
- var1.fillRect(var8, var11, var5 - 1, var7 - 1);
- } else if (((GraphObject)this).getFillType() == 1) {
- var1.fill3DRect(var8, var11, var5 - 1, var7 - 1, true);
- }
-
- if (this.borderVisible) {
- if (!((GraphObject)this).isSelected()) {
- var1.setColor(this.borderColor);
- } else {
- var1.setColor(this.hBorderColor);
- }
-
- var1.drawRect(var8, var11, var5 - 1, var7 - 1);
- }
-
- this.label.paint(var1, var2, var3);
- if (this.expandable) {
- this.expRect.width = var5;
- this.expRect.height = this.expansionHeight;
- boolean var13 = !this.parentsVisible;
- boolean var14 = this.parentsVisible;
- if (this.inLinks.size() == 0 && this.parentExpmode == 2) {
- var13 = false;
- var14 = false;
- }
-
- this.expRect.x = var8;
- this.expRect.y = var9;
- this.paintExpansionSlot(var1, this.expRect, true, var13, var14);
- var13 = !this.childrenVisible;
- var14 = this.childrenVisible;
- if (this.outLinks.size() == 0 && this.childrenExpmode == 2) {
- var13 = false;
- var14 = false;
- }
-
- this.expRect.x = var8;
- this.expRect.y = var12;
- this.paintExpansionSlot(var1, this.expRect, false, var13, var14);
- }
-
- }
-
- private void paintExpansionSlot(Graphics var1, Rectangle var2, boolean var3, boolean var4, boolean var5) {
- Polygon var6 = new Polygon();
- if (var3) {
- var6.addPoint(var2.x, var2.y + var2.height);
- var6.addPoint(var2.x + var2.height, var2.y);
- var6.addPoint(var2.x + var2.width - var2.height, var2.y);
- var6.addPoint(var2.x + var2.width, var2.y + var2.height);
- } else {
- var6.addPoint(var2.x, var2.y);
- var6.addPoint(var2.x + var2.width, var2.y);
- var6.addPoint(var2.x + var2.width - var2.height, var2.y + var2.height);
- var6.addPoint(var2.x + var2.height, var2.y + var2.height);
- }
-
- var1.setColor(this.expansionColor);
- var1.fillPolygon(var6);
- var1.setColor(Color.black);
- if (this.expansionHeight >= 6) {
- int var7 = var2.x + var2.width / 2 + 1;
- int var8 = var2.y + this.expansionHeight / 2 + 1;
- var1.setColor(Color.white);
- if (var4) {
- var1.drawLine(var7 - 7, var8, var7 - 3, var8);
- var1.drawLine(var7 - 5, var8 + 2, var7 - 5, var8 - 2);
- }
-
- if (var5) {
- var1.drawLine(var7 + 3, var8, var7 + 7, var8);
- }
-
- --var7;
- --var8;
- var1.setColor(Color.black);
- if (var4) {
- var1.drawLine(var7 - 7, var8, var7 - 3, var8);
- var1.drawLine(var7 - 5, var8 + 2, var7 - 5, var8 - 2);
- }
-
- if (var5) {
- var1.drawLine(var7 + 3, var8, var7 + 7, var8);
- }
- }
-
- }
-
- void removeInLink(GraphLink var1) {
- this.inLinks.removeElement(var1);
- }
-
- void removeOutLink(GraphLink var1) {
- this.outLinks.removeElement(var1);
- }
-
- public void setBorderColor(Color var1) {
- this.borderColor = var1;
- }
-
- public void setBorderVisible(boolean var1) {
- this.borderVisible = var1;
- }
-
- public void setChildrenExpansionMode(int var1) {
- this.childrenExpmode = var1;
- this.childrenVisible = false;
- }
-
- public void setChildrenVisible(boolean var1) {
- for(int var2 = 0; var2 < this.outLinks.size(); ++var2) {
- GraphLink var3 = (GraphLink)this.outLinks.elementAt(var2);
- GraphNode var4 = var3.getTargetNode();
- ((GraphObject)var4).setVisible(var1);
- if (!var1) {
- var4.setChildrenVisible(var1);
- }
- }
-
- this.childrenVisible = var1;
- }
-
- void setChildrenVisibleFlag(boolean var1) {
- this.childrenVisible = var1;
- }
-
- public static void setDefaultBorderColor(Color var0) {
- defaultBorderColor = var0;
- }
-
- public static void setDefaultBorderVisible(boolean var0) {
- defaultBorderVisible = var0;
- }
-
- public static void setDefaultColor(Color var0) {
- defaultColor = var0;
- }
-
- public static void setDefaultExpandable(boolean var0) {
- defaultExpandable = var0;
- }
-
- public static void setDefaultExpansionColor(Color var0) {
- defaultExpansionColor = var0;
- }
-
- public static void setDefaultFillType(int var0) {
- defaultFill = var0;
- }
-
- public static void setDefaultHgap(int var0) {
- defaultHgap = var0;
- }
-
- public static void setDefaultHilightColor(Color var0) {
- defaultHilightColor = var0;
- }
-
- public static void setDefaultLabelColor(Color var0) {
- defaultLabelColor = var0;
- }
-
- public static void setDefaultLineType(int var0) {
- defaultLineType = var0;
- }
-
- public static void setDefaultMinimumSize(Dimension var0) {
- defaultMinimumSize = var0;
- }
-
- public static void setDefaultSelectedBorderColor(Color var0) {
- defaultSelectedBorderColor = var0;
- }
-
- public static void setDefaultSelectedLabelColor(Color var0) {
- defaultSelectedLabelColor = var0;
- }
-
- public static void setDefaultVgap(int var0) {
- defaultVgap = var0;
- }
-
- public void setExpandable(boolean var1) {
- this.expandable = var1;
- }
-
- public void setExpansionColor(Color var1) {
- this.expansionColor = var1;
- }
-
- public void setHgap(int var1) {
- this.hgap = var1;
- }
-
- public void setImage(Image var1) {
- if (this.label == null) {
- this.setLabel("");
- }
-
- this.label.setImage(var1);
- }
-
- public void setLabel(GraphLabel var1) {
- this.label = var1;
- }
-
- public void setLabel(String var1) {
- this.label = new GraphLabel(var1);
- this.label.setColor(this.labelColor);
- }
-
- public void setLabelColor(Color var1) {
- this.labelColor = var1;
- if (this.label != null) {
- this.label.setColor(var1);
- }
-
- }
-
- void setLocation() {
- int var1 = (int)this.field_0 - super.rect.width / 2;
- int var2 = (int)this.field_1 - super.rect.height / 2;
- this.setLocation(var1, var2);
- }
-
- public void setLocation(int var1, int var2) {
- super.setLocation(var1, var2);
- if (this.label != null) {
- Dimension var3 = this.label.getSize();
- int var4 = super.rect.x + super.rect.width / 2;
- int var5 = super.rect.y + super.rect.height / 2;
- this.label.setLocation(var4 - var3.width / 2, var5 - var3.height / 2);
- }
-
- }
-
- public void setMinimumSize(Dimension var1) {
- this.minimumSize = var1;
- }
-
- public void setParentExpansionMode(int var1) {
- this.parentExpmode = var1;
- this.parentsVisible = false;
- }
-
- public void setParentsVisible(boolean var1) {
- for(int var2 = 0; var2 < this.inLinks.size(); ++var2) {
- GraphLink var3 = (GraphLink)this.inLinks.elementAt(var2);
- GraphNode var4 = var3.getSourceNode();
- ((GraphObject)var4).setVisible(var1);
- if (!var1) {
- var4.setParentsVisible(var1);
- }
- }
-
- this.parentsVisible = var1;
- }
-
- void setParentsVisibleFlag(boolean var1) {
- this.parentsVisible = var1;
- }
-
- public void setSelected(boolean var1) {
- if (this.label != null) {
- this.label.setSelected(var1);
- }
-
- super.setSelected(var1);
- }
-
- public void setSelectedBorderColor(Color var1) {
- this.hBorderColor = var1;
- }
-
- public void setSelectedLabelColor(Color var1) {
- this.selectedLabelColor = var1;
- if (this.label != null) {
- this.label.setHilightColor(var1);
- }
-
- }
-
- public void setVgap(int var1) {
- this.vgap = var1;
- }
-
- static {
- defaultColor = Color.white;
- defaultHilightColor = Color.lightGray;
- defaultBorderColor = Color.gray;
- defaultSelectedBorderColor = defaultHilightColor;
- defaultBorderVisible = true;
- defaultLabelColor = Color.magenta.darker();
- defaultSelectedLabelColor = defaultLabelColor;
- defaultExpansionColor = new Color(225, 225, 225);
- defaultVgap = 4;
- defaultHgap = 4;
- defaultExpandable = true;
- defaultMinimumSize = new Dimension(0, 0);
- }
- }
-