home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / basic / BasicLargeTreeModelNode.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.3 KB  |  197 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.Icon;
  4. import com.sun.java.swing.JTree;
  5. import com.sun.java.swing.tree.DefaultMutableTreeNode;
  6. import com.sun.java.swing.tree.MutableTreeNode;
  7. import com.sun.java.swing.tree.TreeModel;
  8. import java.awt.Color;
  9. import java.awt.Component;
  10. import java.awt.Graphics;
  11. import java.awt.Point;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14.  
  15. class BasicLargeTreeModelNode extends LargeTreeModelNode {
  16.    public BasicLargeTreeModelNode(AbstractTreeUI var1, Object var2, int var3) {
  17.       super(var1, var2, var3);
  18.    }
  19.  
  20.    public void repaint() {
  21.       ((BasicTreeUI)super.treeUI).repaintNode(this);
  22.    }
  23.  
  24.    public void cancelEditing() {
  25.       ((BasicTreeUI)super.treeUI).completeEditing(false, true, false);
  26.    }
  27.  
  28.    public void modelChildCountChanged() {
  29.       if (((LargeTreeModelNode)this).getRow() != -1) {
  30.          this.repaint();
  31.       }
  32.  
  33.    }
  34.  
  35.    public void insert(MutableTreeNode var1, int var2) {
  36.       this.cancelEditing();
  37.       super.insert(var1, var2);
  38.       if (((DefaultMutableTreeNode)this).getChildCount() == 1 && ((LargeTreeModelNode)this).getRow() != -1) {
  39.          this.repaint();
  40.       }
  41.  
  42.    }
  43.  
  44.    public void remove(int var1) {
  45.       this.cancelEditing();
  46.       super.remove(var1);
  47.       if (super.treeUI.getModel().getChildCount(((DefaultMutableTreeNode)this).getUserObject()) == 0 && ((LargeTreeModelNode)this).getRow() != -1) {
  48.          this.repaint();
  49.       }
  50.  
  51.    }
  52.  
  53.    public void collapse(boolean var1) {
  54.       this.cancelEditing();
  55.       super.collapse(var1);
  56.       if (var1 && (super.children == null || super.children.size() == 0)) {
  57.          this.repaint();
  58.       }
  59.  
  60.    }
  61.  
  62.    public void expand(boolean var1) {
  63.       this.cancelEditing();
  64.       super.expand(var1);
  65.       if (var1 && (super.children == null || super.children.size() == 0)) {
  66.          this.repaint();
  67.       }
  68.  
  69.    }
  70.  
  71.    protected void paintNode(Hashtable var1, BasicTreeUI.BasicTreeUIPaintInfo var2, int var3, int var4, Object var5, boolean var6, boolean var7, LargeTreeModelNode var8, int var9, LargeTreeModelNode var10) {
  72.       int var11 = (var2.levelOffset + var4) * var2.totalIndent;
  73.       int var12 = var2.rowHeight * var3;
  74.       int var13 = var2.rChildIndent;
  75.       int var14 = var11 - (var13 - 1);
  76.       int var15 = var12 + var2.halfRowHeight;
  77.       Color var16 = var2.hashColor;
  78.       Graphics var17 = var2.g;
  79.       BasicTreeUI var18 = (BasicTreeUI)super.treeUI;
  80.       TreeModel var19 = var2.treeModel;
  81.       Component var20 = var2.renderer.getTreeCellRendererComponent(var2.tree, var5, ((AbstractTreeUI)var18).isRowSelected(var3), var7, var6, var3, var3 == var2.leadIndex);
  82.       if (var16 != null) {
  83.          var17.setColor(var16);
  84.          if (var3 != 0 || var2.levelOffset == 1) {
  85.             var18.drawHorizontalPartOfLeg(var17, var2.tree, var15, var14, var11);
  86.          }
  87.       }
  88.  
  89.       if (!var6 && (var10 == null || var19.getChildCount(var5) > 0)) {
  90.          if (var7) {
  91.             if (var2.expandedIcon != null) {
  92.                this.cacheIconPainting(var1, var2.expandedIcon, var14, var15);
  93.             }
  94.          } else if (var2.collapsedIcon != null) {
  95.             this.cacheIconPainting(var1, var2.collapsedIcon, var14, var15);
  96.          }
  97.       }
  98.  
  99.       var18.rendererPane.paintComponent(var17, var20, var2.tree, var11, var12, var20.getPreferredSize().width, var2.rowHeight, true);
  100.    }
  101.  
  102.    protected void cacheIconPainting(Hashtable var1, Icon var2, int var3, int var4) {
  103.       var1.put(new Point(var3, var4), var2);
  104.    }
  105.  
  106.    public static void paintCachedGraphics(Hashtable var0, Graphics var1, JTree var2, BasicTreeUI var3) {
  107.       Enumeration var4 = var0.keys();
  108.  
  109.       while(var4.hasMoreElements()) {
  110.          Point var5 = (Point)var4.nextElement();
  111.          Icon var6 = (Icon)var0.get(var5);
  112.          var3.drawCentered(var2, var1, var6, var5.x, var5.y);
  113.       }
  114.  
  115.    }
  116.  
  117.    protected void paintChildren(Hashtable var1, BasicTreeUI.BasicTreeUIPaintInfo var2, int var3, int var4, int var5, int var6, int var7, int var8) {
  118.       int var9 = Math.max(var5, var3);
  119.       int var10 = var9 - var3 + var8;
  120.  
  121.       for(int var11 = Math.min(var6, var4) - var3 + var8; var10 <= var11; ++var9) {
  122.          Object var12 = var2.treeModel.getChild(((DefaultMutableTreeNode)this).getUserObject(), var10);
  123.          this.paintNode(var1, var2, var9, var7, var12, var2.treeModel.isLeaf(var12), false, this, var10, (LargeTreeModelNode)null);
  124.          ++var10;
  125.       }
  126.  
  127.    }
  128.  
  129.    protected boolean paint(Hashtable var1, BasicTreeUI.BasicTreeUIPaintInfo var2, int[] var3, int var4, int var5, int var6) {
  130.       int var7 = var3[0];
  131.       if (var3[0] >= var4 && var3[0] <= var5) {
  132.          this.paintNode(var1, var2, var3[0], var6, ((DefaultMutableTreeNode)this).getUserObject(), false, ((LargeTreeModelNode)this).isExpanded(), (LargeTreeModelNode)((DefaultMutableTreeNode)this).getParent(), ((LargeTreeModelNode)this).getChildIndex(), this);
  133.       }
  134.  
  135.       int var10002 = var3[0]++;
  136.       if (var3[0] > var5) {
  137.          return true;
  138.       } else {
  139.          ++var6;
  140.          if (super.isExpanded) {
  141.             int var10 = 0;
  142.             int var11 = var3[0];
  143.             int var13 = var2.treeModel.getChildCount(((DefaultMutableTreeNode)this).getUserObject()) - 1;
  144.             int var14 = -1;
  145.             int var15 = 0;
  146.  
  147.             for(int var16 = ((DefaultMutableTreeNode)this).getChildCount(); var15 < var16; ++var15) {
  148.                BasicLargeTreeModelNode var8 = (BasicLargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var15);
  149.                int var9 = var8.childIndex;
  150.                if (var9 != var10) {
  151.                   int var12 = var9 - var10 + var11 - 1;
  152.                   if (var11 <= var5 && (var12 >= var4 || var12 <= var5)) {
  153.                      this.paintChildren(var1, var2, var11, var12, var4, var5, var6, var10);
  154.                   }
  155.                }
  156.  
  157.                var3[0] += var9 - var10;
  158.                if (var3[0] > var5) {
  159.                   ((BasicTreeUI)super.treeUI).drawVerticalPartOfLeg(var2.g, var2.tree, var6 - 1, var7 * var2.rowHeight, var5 * var2.rowHeight, var2.rowHeight, var2.rowHeight);
  160.                   return true;
  161.                }
  162.  
  163.                if (var9 == var13) {
  164.                   var14 = var3[0];
  165.                }
  166.  
  167.                var8.paint(var1, var2, var3, var4, var5, var6);
  168.                var11 = var3[0];
  169.                var10 = var9 + 1;
  170.             }
  171.  
  172.             int var18 = var2.treeModel.getChildCount(((DefaultMutableTreeNode)this).getUserObject()) - 1;
  173.             if (var18 >= var10) {
  174.                int var19 = var18 - var10 + var11;
  175.                if (var11 <= var5 && (var19 >= var4 || var19 <= var5)) {
  176.                   this.paintChildren(var1, var2, var11, var19, var4, var5, var6, var10);
  177.                }
  178.  
  179.                var3[0] += var18 - var10 + 1;
  180.             }
  181.  
  182.             if (var13 >= 0) {
  183.                ((BasicTreeUI)super.treeUI).drawVerticalPartOfLeg(var2.g, var2.tree, var6 - 1, var7 * var2.rowHeight, (var14 == -1 ? var3[0] - 1 : var14) * var2.rowHeight, var2.rowHeight, var2.rowHeight);
  184.             }
  185.          }
  186.  
  187.          return false;
  188.       }
  189.    }
  190.  
  191.    public void paintAll(BasicTreeUI.BasicTreeUIPaintInfo var1, int[] var2, int var3, int var4, int var5, BasicTreeUI var6) {
  192.       Hashtable var7 = new Hashtable();
  193.       this.paint(var7, var1, var2, var3, var4, var5);
  194.       paintCachedGraphics(var7, var1.g, var1.tree, var6);
  195.    }
  196. }
  197.