home *** CD-ROM | disk | FTP | other *** search
- package allaire.controls;
-
- import java.applet.Applet;
- import java.net.MalformedURLException;
- import java.net.URL;
- import netscape.application.AWTCompatibility;
- import netscape.application.Application;
- import netscape.application.BezelBorder;
- import netscape.application.Bitmap;
- import netscape.application.Color;
- import netscape.application.EmptyBorder;
- import netscape.application.Font;
- import netscape.application.FontMetrics;
- import netscape.application.Graphics;
- import netscape.application.MouseEvent;
- import netscape.application.Rect;
- import netscape.application.ScrollGroup;
- import netscape.application.ScrollView;
- import netscape.application.Target;
- import netscape.application.View;
- import netscape.util.Enumeration;
- import netscape.util.Hashtable;
- import netscape.util.Vector;
-
- public class CFTree extends View implements Target {
- public static final String COMMAND_ITEM_WAS_SELECTED = "ItemWasSelected";
- private boolean m_firstDraw = true;
- public boolean m_showURLs = true;
- public boolean m_appendKeys = true;
- private Hashtable m_bitmapHash;
- private int m_xExtent;
- private int m_yExtent;
- private int m_yIncrement;
- private Vector m_bitmaps;
- private Font m_font;
- protected CFTreeItem m_selectedItem;
- protected CFTreeItem m_rootItem;
- protected Vector m_allItems;
- public ScrollGroup m_scrollGroup;
- public Target m_Target;
- public static final int folderImage = 0;
- public static final int computerImage = 2;
- public static final int floppyImage = 4;
- public static final int fixedImage = 6;
- public static final int remoteImage = 8;
- public static final int cdImage = 10;
- public static final int documentImage = 12;
- public static final int elementsImage = 14;
-
- public int extentsRecurse(FontMetrics var1, CFTreeItem var2, int var3, int var4) {
- boolean var5;
- if (var2 != this.m_rootItem) {
- var2.setExtents(var1, var3, var4);
- var3 += this.m_yIncrement;
- var5 = var2.m_exploded;
- } else {
- var5 = true;
- }
-
- CFTreeItem var6;
- if (var5) {
- for(Enumeration var7 = var2.children(); var7.hasMoreElements(); var3 = this.extentsRecurse(var1, var6, var3, var4 + 1)) {
- var6 = (CFTreeItem)var7.nextElement();
- }
- }
-
- return var3;
- }
-
- public void setBorder(boolean var1) {
- if (var1) {
- this.m_scrollGroup.setBorder(new BezelBorder(1, Color.lightGray));
- } else {
- this.m_scrollGroup.setBorder(new EmptyBorder());
- }
- }
-
- public void setItemURL(int var1, String var2, String var3, boolean var4) {
- CFTreeItem var5 = this.itemAt(var1);
- if (var5 != null) {
- var5.setURL(var2, var3, var4);
- }
-
- }
-
- public int yExtent() {
- return this.m_yExtent;
- }
-
- public void performCommand(String var1, Object var2) {
- if (var1.equalsIgnoreCase("RESET_SCROLLBARS")) {
- this.resetScrollBars();
- }
-
- }
-
- public void itemSelected(CFTreeItem var1) {
- if (this.m_Target != null) {
- this.m_Target.performCommand("ItemWasSelected", var1);
- }
-
- }
-
- public Rect extents(int var1) {
- Font var2 = this.m_font == null ? Font.defaultFont() : this.m_font;
- FontMetrics var3 = var2.fontMetrics();
- this.extentsRecurse(var3, this.m_rootItem, 0, -1);
- Rect var4 = new Rect(0, var1, this.m_xExtent, this.m_yExtent - var1);
- return var4;
- }
-
- public void setExtents(int var1, int var2) {
- if (var1 > this.m_xExtent) {
- this.m_xExtent = var1;
- }
-
- if (var2 > this.m_yExtent) {
- this.m_yExtent = var2;
- }
-
- }
-
- public void setItemImageURL(int var1, String var2, String var3) {
- Object var4 = null;
- Object var5 = null;
- boolean var6 = true;
- boolean var7 = true;
- CFTreeItem var8 = this.itemAt(var1);
- if (var8 != null) {
- if (var2.length() > 0) {
- Applet var9 = AWTCompatibility.awtApplet();
- URL var10 = var9.getDocumentBase();
- Bitmap var14 = (Bitmap)this.m_bitmapHash.get(var2);
- if (var14 == null) {
- try {
- URL var11;
- if (var2.toLowerCase().startsWith("http://")) {
- var11 = new URL(var2);
- } else {
- var11 = new URL(var10, var2);
- }
-
- var14 = Bitmap.bitmapFromURL(var11);
- var6 = false;
- } catch (MalformedURLException var13) {
- System.out.println("CFTree: Malformed URL on default image");
- }
- }
-
- Bitmap var15;
- if (var3.length() > 0) {
- if (var3.compareTo(var2) != 0) {
- var15 = (Bitmap)this.m_bitmapHash.get(var3);
- if (var15 == null) {
- try {
- URL var16;
- if (var3.toLowerCase().startsWith("http://")) {
- var16 = new URL(var3);
- } else {
- var16 = new URL(var10, var3);
- }
-
- var15 = Bitmap.bitmapFromURL(var16);
- var7 = false;
- } catch (MalformedURLException var12) {
- System.out.println("CFTree: Malformed URL on open image");
- }
- }
- } else {
- var15 = var14;
- }
- } else {
- var15 = var14;
- }
-
- if (var14 != null && var15 != null) {
- var8.m_imageIndex = this.m_bitmaps.size();
- this.m_bitmaps.addElement(var14);
- this.m_bitmaps.addElement(var15);
- if (!var6) {
- this.m_bitmapHash.put(var2, var14);
- }
-
- if (!var7) {
- this.m_bitmapHash.put(var3, var15);
- }
- }
-
- }
- }
- }
-
- public String currentItem() {
- String var1 = "";
- if (this.m_selectedItem != null) {
- var1 = this.m_selectedItem.m_internalCaption;
- }
-
- return var1;
- }
-
- public CFTreeItem getItemForCaption(String var1) {
- for(int var3 = 0; var3 < this.m_allItems.count(); ++var3) {
- CFTreeItem var2 = (CFTreeItem)this.m_allItems.elementAt(var3);
- if (var2.m_caption.equalsIgnoreCase(var1)) {
- System.out.println("Found Item : " + var2.m_caption);
- return var2;
- }
- }
-
- return null;
- }
-
- public void setTarget(Target var1) {
- this.m_Target = var1;
- }
-
- public CFTree(View var1) {
- this.init(0, 0);
- var1.addSubview(this.m_scrollGroup);
- }
-
- public CFTree(int var1, int var2, int var3, int var4, View var5) {
- super(0, 0, var3, var4);
- this.init(var1, var2);
- var5.addSubview(this.m_scrollGroup);
- }
-
- public void doubleClicked(CFTreeItem var1) {
- }
-
- public int drawItem(Graphics var1, FontMetrics var2, CFTreeItem var3, int var4, int var5, Vector var6, Rect var7) {
- boolean var8;
- if (var3 != this.m_rootItem) {
- if (var4 >= var7.y - this.m_yIncrement) {
- boolean var11 = var4 > var7.y + var7.height + this.m_yIncrement;
- var3.draw(var1, var2, var4, var5, var6, var11);
- }
-
- var4 += this.m_yIncrement;
- var8 = var3.m_exploded;
- } else {
- var8 = true;
- }
-
- CFTreeItem var9;
- if (var8) {
- for(Enumeration var10 = var3.children(); var10.hasMoreElements(); var4 = this.drawItem(var1, var2, var9, var4, var5 + 1, var6, var7)) {
- var9 = (CFTreeItem)var10.nextElement();
- }
- }
-
- return var4;
- }
-
- public CFTreeItem itemAt(int var1) {
- CFTreeItem var2;
- if (var1 < this.m_allItems.size()) {
- var2 = (CFTreeItem)this.m_allItems.elementAt(var1);
- } else {
- var2 = null;
- }
-
- return var2;
- }
-
- public void selectItem(CFTreeItem var1) {
- if (this.m_selectedItem != var1) {
- if (this.m_selectedItem != null) {
- this.m_selectedItem.select(false);
- }
-
- var1.select(true);
- if (var1.m_selected) {
- this.m_selectedItem = var1;
- this.itemSelected(var1);
- }
-
- }
- }
-
- public int xExtent() {
- return this.m_xExtent;
- }
-
- public void setHScroll(boolean var1) {
- this.m_scrollGroup.setHasHorizScrollBar(var1);
- }
-
- public void setVScroll(boolean var1) {
- this.m_scrollGroup.setHasVertScrollBar(var1);
- }
-
- private CFTreeItem hitTest(CFTreeItem var1, MouseEvent var2) {
- Object var4 = null;
- CFTreeItem var5 = null;
- boolean var3;
- if (var1 != this.m_rootItem) {
- if (var1.wasClicked(var2)) {
- return var1;
- }
-
- var3 = var1.m_exploded;
- } else {
- var3 = true;
- }
-
- CFTreeItem var7;
- if (var3 && var5 == null) {
- for(Enumeration var6 = var1.children(); var6.hasMoreElements() && var5 == null; var5 = this.hitTest(var7, var2)) {
- var7 = (CFTreeItem)var6.nextElement();
- }
- }
-
- return var5;
- }
-
- public void setFont(Font var1) {
- this.m_font = var1;
- }
-
- public int addItem(String var1, int var2) {
- return this.addItem(var1, var1, var2);
- }
-
- public int addItem(String var1, String var2, int var3) {
- CFTreeItem var5;
- if (var3 >= 0) {
- var5 = this.itemAt(var3);
- } else {
- var5 = null;
- }
-
- CFTreeItem var4 = new CFTreeItem(this, var1, var2);
- if (var5 == null) {
- this.m_rootItem.addChild(var4);
- } else {
- var5.addChild(var4);
- var4.setParent(var5);
- }
-
- int var6 = this.m_allItems.size();
- this.m_allItems.addElement(var4);
- return var6;
- }
-
- public int addItem(String var1, int var2, int var3) {
- int var5 = this.addItem(var1, var1, var2);
- CFTreeItem var4 = this.itemAt(var5);
- if (var3 >= 0 && var3 < this.m_bitmaps.size()) {
- var4.m_imageIndex = var3;
- }
-
- return var5;
- }
-
- public int addItem(String var1, String var2, int var3, int var4) {
- int var6 = this.addItem(var1, var2, var3);
- CFTreeItem var5 = this.itemAt(var6);
- if (var4 >= 0 && var4 < this.m_bitmaps.size()) {
- var5.m_imageIndex = var4;
- }
-
- return var6;
- }
-
- public String currentPath(String var1) {
- String var2 = "";
- if (this.m_selectedItem != null) {
- var2 = this.m_selectedItem.getPath(var1);
- }
-
- return var2;
- }
-
- public void drawView(Graphics var1) {
- Font var4 = this.m_font == null ? Font.defaultFont() : this.m_font;
- FontMetrics var5 = var4.fontMetrics();
- var1.setFont(var4);
- Rect var6 = var1.clipRect();
- var1.setColor(Color.white);
- var1.fillRect(var6);
- var1.setColor(Color.black);
- Vector var7 = new Vector();
- this.m_xExtent = 0;
- this.m_yExtent = 0;
- this.drawItem(var1, var5, this.m_rootItem, 0, -1, var7, var6);
- Enumeration var3 = var7.elements();
-
- while(var3.hasMoreElements()) {
- CFTreeItem var2 = (CFTreeItem)var3.nextElement();
- var2.drawHotBox(var1, var5);
- }
-
- if (this.m_firstDraw) {
- this.m_firstDraw = false;
- Application.application().performCommandLater(this, "RESET_SCROLLBARS", (Object)null);
- }
-
- }
-
- public void resetScrollBars() {
- if (this.m_scrollGroup.hasHorizScrollBar() || this.m_scrollGroup.hasVertScrollBar()) {
- Rect var1 = this.extents(0);
- int var2 = Math.max(this.m_scrollGroup.width(), var1.width);
- int var3 = Math.max(this.m_scrollGroup.height(), var1.height);
- Rect var4 = ((View)this).bounds();
- ((View)this).setBounds(var4.x, var4.y, var2, var3);
- }
-
- }
-
- public void showURLs(boolean var1) {
- this.m_showURLs = var1;
- }
-
- public boolean mouseDown(MouseEvent var1) {
- CFTreeItem var2 = this.hitTest(this.m_rootItem, var1);
- if (var2 == null) {
- return true;
- } else {
- if (var1.clickCount() > 1) {
- switch (var2.clickedState()) {
- case 2:
- case 3:
- this.selectItem(var2);
- default:
- var2.explode();
- this.resetScrollBars();
- }
- } else {
- switch (var2.clickedState()) {
- case 1:
- var2.explode();
- this.resetScrollBars();
- break;
- case 2:
- case 3:
- this.selectItem(var2);
- }
- }
-
- return true;
- }
- }
-
- public void selectItemWithCaption(String var1) {
- CFTreeItem var2 = this.getItemForCaption(var1);
- if (var2 != null) {
- System.out.println("Selecting Item : " + var2.toString());
- this.selectItem(var2);
- }
-
- }
-
- public Bitmap bitmap(int var1) {
- Bitmap var2 = (Bitmap)this.m_bitmaps.elementAt(var1);
- return var2;
- }
-
- public void appendKeys(boolean var1) {
- this.m_appendKeys = var1;
- }
-
- public void hideChildren(CFTreeItem var1) {
- if (var1.m_exploded) {
- var1.m_exploded = false;
- Enumeration var3 = var1.children();
-
- while(var3.hasMoreElements()) {
- CFTreeItem var2 = (CFTreeItem)var3.nextElement();
- this.hideChildren(var2);
- }
- }
-
- }
-
- private void init(int var1, int var2) {
- this.m_scrollGroup = new ScrollGroup(var1, var2, ((View)this).width(), ((View)this).height());
- this.m_scrollGroup.setContentView(this);
- this.m_scrollGroup.setBackgroundColor(Color.white);
- this.m_allItems = new Vector();
- this.m_bitmapHash = new Hashtable();
- this.m_rootItem = new CFTreeItem(this, "");
- this.m_scrollGroup.setBorder(new EmptyBorder());
- this.m_yIncrement = 16;
- Application var3 = Application.application();
- this.m_bitmaps = new Vector();
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("FolderClosed.gif"));
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("FolderOpen.gif"));
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("Computer.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("Floppy.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("HardDrive.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("NetworkDrive.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("CDDrive.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("Document.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- this.m_bitmaps.addElement(Bitmap.bitmapNamed("Elements.gif", false));
- this.m_bitmaps.addElement(this.m_bitmaps.lastElement());
- ScrollView var4 = this.m_scrollGroup.scrollView();
- this.m_font = null;
- Font.defaultFont();
- ((View)var4).setBuffered(true);
- }
-
- public void populateChildren(CFTreeItem var1) {
- }
-
- public String currentCompletePath(String var1) {
- String var2 = "";
- if (this.m_selectedItem != null) {
- var2 = this.m_selectedItem.getCompletePath(var1);
- }
-
- return var2;
- }
- }
-