home *** CD-ROM | disk | FTP | other *** search
- package allaire.controls;
-
- import java.applet.Applet;
- import java.applet.AppletContext;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLEncoder;
- import netscape.application.AWTCompatibility;
- import netscape.application.Application;
- import netscape.application.Bitmap;
- import netscape.application.Color;
- import netscape.application.FontMetrics;
- import netscape.application.Graphics;
- import netscape.application.MouseEvent;
- import netscape.application.Rect;
- import netscape.util.Enumeration;
- import netscape.util.Vector;
-
- public class CFTreeItem {
- public static final int NOTCLICKED = 0;
- public static final int HOTBOXCLICKED = 1;
- public static final int IMAGECLICKED = 2;
- public static final int TEXTCLICKED = 3;
- public boolean m_exploded = true;
- public boolean m_selected;
- public CFTreeItem m_parent;
- public int m_imageIndex;
- public String m_caption = "";
- public String m_internalCaption = "";
- private boolean m_hasChildren;
- private boolean m_hasSibling;
- private boolean m_URLfromCodeBase;
- private CFTree m_parentControl;
- private int m_clickedState;
- private int m_textWidth = -1;
- private int m_xOffset = -1;
- private int m_yOffset = -1;
- private String m_URL = "";
- private String m_URLDestination = "";
- private Vector m_childItems;
-
- public void drawHotBox(Graphics var1, FontMetrics var2) {
- var1.setColor(Color.white);
- var1.fillRect(this.m_xOffset + 4, this.m_yOffset + 4, 9, 9);
- var1.setColor(Color.gray);
- var1.drawRect(this.m_xOffset + 4, this.m_yOffset + 4, 9, 9);
- var1.setColor(Color.black);
- var1.drawLine(this.m_xOffset + 6, this.m_yOffset + 8, this.m_xOffset + 10, this.m_yOffset + 8);
- if (!this.m_exploded) {
- var1.drawLine(this.m_xOffset + 8, this.m_yOffset + 6, this.m_xOffset + 8, this.m_yOffset + 10);
- }
-
- }
-
- public CFTreeItem(CFTree var1, String var2) {
- this.init();
- this.m_caption = var2;
- this.m_internalCaption = var2;
- this.m_parentControl = var1;
- }
-
- public CFTreeItem(CFTree var1, String var2, String var3) {
- this.init();
- this.m_caption = var2;
- this.m_internalCaption = var3;
- this.m_parentControl = var1;
- }
-
- public int clickedState() {
- return this.m_clickedState;
- }
-
- public void draw(Graphics var1, FontMetrics var2, int var3, int var4, Vector var5, boolean var6) {
- int var9 = 0;
- this.m_yOffset = var3;
- if (this.m_textWidth == -1) {
- this.m_textWidth = var2.stringWidth(this.m_caption) + 2;
- }
-
- if (this.m_parent != null) {
- var9 += (var4 - 1) * 19;
- var1.setColor(Color.gray);
- var1.drawLine(var9 + 19, var3 + 8, var9 + 8, var3 + 8);
- var1.drawLine(var9 + 8, var3 + 8, var9 + 8, this.m_parent.m_yOffset + 16);
- var1.setColor(Color.black);
- this.m_xOffset = var9;
- if (this.m_hasChildren && !var6) {
- var5.addElement(this);
- }
-
- var9 += 19;
- } else {
- this.m_xOffset = 0;
- }
-
- if (!var6) {
- int var8 = this.m_exploded && this.m_hasChildren ? this.m_imageIndex + 1 : this.m_imageIndex;
- Bitmap var7 = this.m_parentControl.bitmap(var8);
- if (var7 != null && var7.isValid()) {
- var1.drawBitmapAt(var7, var9, var3);
- }
-
- var9 += 22;
- if (this.m_selected) {
- var1.setColor(new Color(0, 0, 128));
- var1.fillRect(var9, var3 + 2, this.m_textWidth, 14);
- var1.setColor(Color.white);
- }
-
- if (this.m_URL.length() > 0 && this.m_parentControl.m_showURLs) {
- if (!this.m_selected) {
- var1.setColor(new Color(0, 0, 255));
- }
-
- var1.drawLine(var9 + 1, var3 + 14, var9 + 1 + this.m_textWidth, var3 + 14);
- }
-
- var1.drawString(this.m_caption, var9 + 1, var3 + 13);
- this.m_parentControl.setExtents(var9 + 1 + this.m_textWidth, var3 + 16);
- var1.setColor(Color.black);
- }
- }
-
- public String getCompletePath(String var1) {
- String var3 = this.m_internalCaption;
-
- for(CFTreeItem var2 = this.m_parent; var2 != null; var2 = var2.m_parent) {
- var3 = var2.m_internalCaption + var1 + var3;
- }
-
- if (var3.endsWith(":")) {
- var3 = var3 + "\\";
- }
-
- return var3;
- }
-
- public void setParent(CFTreeItem var1) {
- this.m_parent = var1;
- }
-
- public void select(boolean var1) {
- if (this.m_URL.length() > 0) {
- Applet var4 = AWTCompatibility.awtApplet();
- AppletContext var5 = var4.getAppletContext();
-
- try {
- String var6 = URLEncoder.encode(this.m_internalCaption);
- String var7;
- if (this.m_parentControl.m_appendKeys) {
- if (this.m_URL.indexOf("?") > 0) {
- var7 = this.m_URL + "&CFTREEITEMKEY=" + var6;
- } else {
- var7 = this.m_URL + "?CFTREEITEMKEY=" + var6;
- }
- } else {
- var7 = this.m_URL;
- }
-
- URL var3;
- if (this.m_URLfromCodeBase) {
- URL var8 = Application.application().codeBase();
- String var9 = var8.getHost();
- var3 = new URL(var8.getProtocol(), var9, var7);
- } else {
- URL var11 = var4.getDocumentBase();
- if (var7.toLowerCase().startsWith("http://")) {
- var3 = new URL(var7);
- } else {
- var3 = new URL(var11, var7);
- }
- }
-
- if (this.m_URLDestination.length() > 0) {
- var5.showDocument(var3, this.m_URLDestination);
- } else {
- var5.showDocument(var3);
- }
- } catch (MalformedURLException var10) {
- }
- } else {
- this.m_selected = var1;
- Rect var2 = new Rect(this.m_xOffset, this.m_yOffset + 2, this.m_textWidth + 41, 14);
- this.m_parentControl.addDirtyRect(var2);
- this.m_parentControl.rootView().drawDirtyViews();
- }
- }
-
- public Enumeration children() {
- return this.m_childItems.elements();
- }
-
- public void setHasChildren() {
- if (!this.m_hasChildren) {
- this.m_exploded = false;
- this.m_hasChildren = true;
- }
-
- }
-
- public boolean wasClicked(MouseEvent var1) {
- boolean var2 = false;
- this.m_clickedState = 0;
- if (var1.y >= this.m_yOffset && var1.y <= this.m_yOffset + 16) {
- if (this.m_parent != null) {
- if (this.m_hasChildren && var1.x >= this.m_xOffset && var1.x <= this.m_xOffset + 19) {
- var2 = true;
- this.m_clickedState = 1;
- }
-
- if (!var2) {
- if (var1.x >= this.m_xOffset + 19 && var1.x <= this.m_xOffset + 19 + 21) {
- var2 = true;
- this.m_clickedState = 2;
- } else if (var1.x >= this.m_xOffset + 19 + 22 && var1.x <= this.m_xOffset + 19 + 22 + this.m_textWidth) {
- var2 = true;
- this.m_clickedState = 3;
- }
- }
- } else if (var1.x >= this.m_xOffset && var1.x <= this.m_xOffset + 21) {
- var2 = true;
- this.m_clickedState = 2;
- } else if (var1.x >= this.m_xOffset + 22 && var1.x <= this.m_xOffset + 22 + this.m_textWidth) {
- var2 = true;
- this.m_clickedState = 3;
- }
- }
-
- return var2;
- }
-
- public String getPath(String var1) {
- String var3 = this.m_internalCaption;
-
- for(CFTreeItem var2 = this.m_parent; var2 != null; var2 = var2.m_parent) {
- if (var2.m_parent != null) {
- var3 = var2.m_internalCaption + var1 + var3;
- }
- }
-
- if (var3.endsWith(":")) {
- var3 = var3 + "\\";
- }
-
- return var3;
- }
-
- public void setDefaultPath(String var1, String var2) {
- CFTreeItem var4 = this;
-
- while(var1.length() > 0) {
- int var5 = var1.indexOf(var2);
- String var3;
- if (var5 == -1) {
- var5 = var1.length() - 1;
- var3 = var1;
- } else {
- var3 = var1.substring(0, var5);
- }
-
- boolean var6 = false;
- Enumeration var7 = var4.children();
-
- while(!var6 && var7.hasMoreElements()) {
- CFTreeItem var8 = (CFTreeItem)var7.nextElement();
- if (var3.equalsIgnoreCase(var8.m_internalCaption)) {
- this.m_parentControl.selectItem(var8);
- if (var5 != var1.length() - 1) {
- var8.explode();
- }
-
- var6 = true;
- var1 = var1.substring(var5 + 1);
- var4 = var8;
- }
- }
-
- if (!var6) {
- var1 = "";
- }
- }
-
- this.m_parentControl.resetScrollBars();
- }
-
- public void addChild(CFTreeItem var1) {
- this.m_childItems.addElement(var1);
- this.m_hasChildren = true;
- }
-
- public void setURL(String var1, String var2, boolean var3) {
- this.m_URLfromCodeBase = var3;
- this.m_URL = var1;
- this.m_URLDestination = var2;
- }
-
- public void setExtents(FontMetrics var1, int var2, int var3) {
- int var4 = 0;
- int var5 = var1.stringWidth(this.m_caption) + 2;
- if (this.m_parent != null) {
- var4 += (var3 - 1) * 19;
- var4 += 19;
- }
-
- var4 += 22;
- this.m_parentControl.setExtents(var4 + 1 + var5, var2 + 16);
- }
-
- private void init() {
- this.m_childItems = new Vector();
- this.m_imageIndex = 0;
- }
-
- public void explode() {
- Rect var1 = null;
- if (!this.m_hasChildren) {
- this.m_parentControl.doubleClicked(this);
- }
-
- if (this.m_exploded) {
- var1 = this.m_parentControl.extents(this.m_yOffset);
- }
-
- this.m_exploded = !this.m_exploded;
- if (this.m_exploded) {
- if (this.m_hasChildren && this.m_childItems.size() == 0) {
- this.m_parentControl.populateChildren(this);
- if (this.m_childItems.size() == 0) {
- this.m_hasChildren = false;
- }
- }
-
- var1 = this.m_parentControl.extents(this.m_yOffset);
- }
-
- this.m_parentControl.addDirtyRect(var1);
- this.m_parentControl.rootView().drawDirtyViews();
- }
- }
-