home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.tree.DefaultMutableTreeNode;
- import com.sun.java.swing.tree.TreeModel;
- import com.sun.java.swing.tree.TreePath;
- import com.sun.java.swing.tree.TreeSelectionModel;
-
- public class LargeTreeModelNode extends DefaultMutableTreeNode {
- protected AbstractTreeUI treeUI;
- protected boolean isExpanded;
- protected int childIndex;
-
- public LargeTreeModelNode(AbstractTreeUI var1, Object var2, int var3) {
- super(var2);
- this.treeUI = var1;
- this.childIndex = var3;
- }
-
- public TreeModel getModel() {
- return this.treeUI.getModel();
- }
-
- public int getChildIndex() {
- return this.childIndex;
- }
-
- public LargeTreeModelNode childAtModelIndex(int var1) {
- for(int var2 = ((DefaultMutableTreeNode)this).getChildCount() - 1; var2 >= 0; --var2) {
- if (((LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var2)).childIndex == var1) {
- return (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var2);
- }
- }
-
- return null;
- }
-
- public boolean isVisible() {
- LargeTreeModelNode var1 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getParent();
- if (var1 == null) {
- return true;
- } else {
- return var1.isExpanded() && var1.isVisible();
- }
- }
-
- public int getRow() {
- LargeTreeModelNode var1 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getParent();
- if (var1 == null) {
- return this.treeUI.isRootVisible() ? 0 : -1;
- } else {
- return var1.getCountTo(this.childIndex);
- }
- }
-
- public void expand(boolean var1) {
- if (!this.isExpanded) {
- boolean var2 = this.isVisible();
- this.isExpanded = true;
- if (var2) {
- this.adjustLargeRowCountBy(this.getTotalChildCount());
- }
-
- if (var1) {
- this.didAdjustTree();
- this.treeUI.visibleNodesChanged();
- }
-
- this.treeUI.pathWasExpanded(new TreePath(((DefaultMutableTreeNode)this).getUserObjectPath()));
- if (this.treeUI != null && var2) {
- int var4 = this.getRow();
- TreeSelectionModel var5 = this.treeUI.getSelectionModel();
- int var3;
- if (var5 != null && (var3 = this.getTotalChildCount()) > 0 && var5.isRowSelected(var4) && var5.isRowSelected(var4 + 1)) {
- TreePath[] var6 = new TreePath[var3];
-
- for(int var7 = 0; var7 < var3; ++var7) {
- var6[var7] = this.treeUI.getPathForRow(var7 + var4 + 1);
- }
-
- var5.addSelectionPaths(var6);
- return;
- }
-
- if (var5 != null) {
- var5.resetRowSelection();
- }
- }
- }
-
- }
-
- public void collapse(boolean var1) {
- if (this.isExpanded) {
- TreeSelectionModel var3 = null;
- TreePath[] var2;
- if (this.treeUI != null && (var3 = this.treeUI.getSelectionModel()) != null) {
- var2 = var3.getSelectionPaths();
- } else {
- var2 = null;
- }
-
- if (this.isVisible()) {
- this.adjustLargeRowCountBy(-this.getTotalChildCount());
- }
-
- this.isExpanded = false;
- if (var1) {
- this.didAdjustTree();
- this.treeUI.visibleNodesChanged();
- }
-
- this.treeUI.pathWasCollapsed(new TreePath(((DefaultMutableTreeNode)this).getUserObjectPath()));
- if (var2 != null) {
- boolean var4 = false;
- TreePath var5 = new TreePath(((DefaultMutableTreeNode)this).getUserObjectPath());
-
- for(int var6 = var2.length - 1; var6 >= 0; --var6) {
- if (var2[var6] != null && var5.isDescendant(var2[var6]) && !var5.equals(var2[var6])) {
- var4 = true;
- } else {
- var2[var6] = null;
- }
- }
-
- if (var4) {
- var3.removeSelectionPaths(var2);
- }
- }
- }
-
- }
-
- public int getTotalChildCount() {
- if (!this.isExpanded()) {
- return 0;
- } else {
- int var1 = this.getModel().getChildCount(((DefaultMutableTreeNode)this).getUserObject());
-
- for(int var2 = ((DefaultMutableTreeNode)this).getChildCount() - 1; var2 >= 0; --var2) {
- var1 += ((LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var2)).getTotalChildCount();
- }
-
- return var1;
- }
- }
-
- public boolean isExpanded() {
- return this.isExpanded;
- }
-
- public void modelChildCountChanged() {
- }
-
- public int getVisibleLevel() {
- return this.treeUI.isRootVisible() ? ((DefaultMutableTreeNode)this).getLevel() : ((DefaultMutableTreeNode)this).getLevel() - 1;
- }
-
- public void toggleExpanded() {
- if (this.isExpanded()) {
- this.collapse(true);
- } else {
- this.expand(true);
- }
- }
-
- protected void adjustLargeRowCountBy(int var1) {
- AbstractTreeUI var10000 = this.treeUI;
- var10000.largeRowCount += var1;
- }
-
- protected void addLargeTreeModelNode(LargeTreeModelNode var1) {
- boolean var2 = false;
- int var3 = var1.getChildIndex();
- int var4 = 0;
-
- for(int var5 = ((DefaultMutableTreeNode)this).getChildCount(); var4 < var5; ++var4) {
- if (((LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var4)).getChildIndex() > var3) {
- var2 = true;
- ((DefaultMutableTreeNode)this).insert(var1, var4);
- var4 = var5;
- }
- }
-
- if (!var2) {
- ((DefaultMutableTreeNode)this).add(var1);
- }
-
- }
-
- protected void childRemovedAtModelIndex(int var1) {
- int var3 = 0;
-
- for(int var4 = ((DefaultMutableTreeNode)this).getChildCount(); var3 < var4; ++var3) {
- LargeTreeModelNode var2 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var3);
- if (var2.childIndex >= var1) {
- while(var3 < var4) {
- --((LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var3)).childIndex;
- ++var3;
- }
- }
- }
-
- }
-
- protected void childInsertedAtModelIndex(int var1) {
- int var3 = 0;
-
- for(int var4 = ((DefaultMutableTreeNode)this).getChildCount(); var3 < var4; ++var3) {
- LargeTreeModelNode var2 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var3);
- if (var2.childIndex >= var1) {
- while(var3 < var4) {
- ++((LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var3)).childIndex;
- ++var3;
- }
- }
- }
-
- }
-
- protected boolean getPathForRow(int var1, int[] var2, TreePath[] var3, LargeTreeModelNode[] var4, boolean[] var5, int[] var6) {
- if (var1 == var2[0]) {
- if (var6 != null) {
- var6[0] = this.getChildIndex();
- }
-
- if (var4 != null) {
- var4[0] = this;
- var5[0] = false;
- }
-
- if (var3 != null) {
- var3[0] = new TreePath(((DefaultMutableTreeNode)this).getUserObjectPath());
- }
-
- return true;
- } else {
- int var10002 = var2[0]++;
- if (this.isExpanded) {
- int var8 = 0;
- TreeModel var10 = this.getModel();
- int var11 = 0;
-
- for(int var12 = ((DefaultMutableTreeNode)this).getChildCount(); var11 < var12; ++var11) {
- LargeTreeModelNode var7 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var11);
- int var9 = var7.childIndex;
- if (var2[0] + (var9 - var8) > var1) {
- if (var6 != null) {
- var6[0] = var1 - var2[0] + var8;
- }
-
- if (var3 != null) {
- Object[] var14 = ((DefaultMutableTreeNode)this).getUserObjectPath();
- int var15 = var14.length;
- Object[] var16 = new Object[var15 + 1];
- Object var13 = var10.getChild(super.userObject, var1 - var2[0] + var8);
- System.arraycopy(var14, 0, var16, 0, var15);
- var16[var15] = var13;
- var3[0] = new TreePath(var16);
- }
-
- if (var4 != null) {
- var4[0] = this;
- var5[0] = true;
- }
-
- return true;
- }
-
- var2[0] += var9 - var8;
- var8 = var9 + 1;
- if (var7.getPathForRow(var1, var2, var3, var4, var5, var6)) {
- return true;
- }
- }
-
- int var17 = var10.getChildCount(super.userObject) - 1;
- if (var17 - var8 >= 0) {
- if (var2[0] + (var17 - var8) >= var1) {
- if (var6 != null) {
- var6[0] = var1 - var2[0] + var8;
- }
-
- if (var3 != null) {
- Object[] var19 = ((DefaultMutableTreeNode)this).getUserObjectPath();
- int var20 = var19.length;
- Object[] var21 = new Object[var20 + 1];
- Object var18 = var10.getChild(super.userObject, var1 - var2[0] + var8);
- System.arraycopy(var19, 0, var21, 0, var20);
- var21[var20] = var18;
- var3[0] = new TreePath(var21);
- }
-
- if (var4 != null) {
- var4[0] = this;
- var5[0] = true;
- }
-
- return true;
- }
-
- var2[0] += var17 - var8 + 1;
- }
- }
-
- return false;
- }
- }
-
- protected int getCountTo(int var1) {
- int var3 = var1 + 1;
- int var4 = 0;
-
- for(int var5 = ((DefaultMutableTreeNode)this).getChildCount(); var4 < var5; ++var4) {
- LargeTreeModelNode var2 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var4);
- if (var2.childIndex >= var1) {
- var4 = var5;
- } else {
- var3 += var2.getTotalChildCount();
- }
- }
-
- if (super.parent != null) {
- return var3 + ((LargeTreeModelNode)((DefaultMutableTreeNode)this).getParent()).getCountTo(this.childIndex);
- } else if (!this.treeUI.isRootVisible()) {
- return var3 - 1;
- } else {
- return var3;
- }
- }
-
- protected boolean getRow(Object[] var1, int var2, int var3, boolean var4, int[] var5) {
- var4 = var4 && var1[var2].equals(super.userObject);
- if (var4) {
- ++var2;
- if (var2 == var3) {
- return true;
- }
- }
-
- int var10002 = var5[0]++;
- if (this.isExpanded) {
- TreeModel var11 = this.getModel();
- int var7;
- if (var4 && var2 + 1 == var3) {
- var7 = var11.getIndexOfChild(super.userObject, var1[var3 - 1]);
- } else {
- var7 = Integer.MAX_VALUE;
- }
-
- int var8 = 0;
- int var10 = var5[0];
- int var12 = 0;
-
- for(int var13 = ((DefaultMutableTreeNode)this).getChildCount(); var12 < var13; ++var12) {
- LargeTreeModelNode var6 = (LargeTreeModelNode)((DefaultMutableTreeNode)this).getChildAt(var12);
- int var9 = var6.childIndex;
- if (var9 >= var7) {
- var5[0] = var10 + (var7 - var8);
- return true;
- }
-
- var10 += var9 - var8;
- var8 = var9 + 1;
- var5[0] = var10;
- if (var6.getRow(var1, var2, var3, var4, var5)) {
- return true;
- }
-
- var10 = var5[0];
- }
-
- int var15 = var11.getChildCount(super.userObject) - 1;
- if (var15 >= 0) {
- if (var15 >= var7) {
- var5[0] = var10 + (var7 - var8);
- return true;
- }
-
- var5[0] += var15 - var8 + 1;
- }
- }
-
- return false;
- }
-
- protected void didAdjustTree() {
- }
- }
-