home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.event.TreeModelEvent;
- import com.sun.java.swing.event.TreeModelListener;
- import com.sun.java.swing.event.TreeSelectionEvent;
- import com.sun.java.swing.event.TreeSelectionListener;
- import com.sun.java.swing.plaf.TreeUI;
- import com.sun.java.swing.tree.DefaultMutableTreeNode;
- import com.sun.java.swing.tree.RowMapper;
- import com.sun.java.swing.tree.TreeModel;
- import com.sun.java.swing.tree.TreeNode;
- import com.sun.java.swing.tree.TreePath;
- import com.sun.java.swing.tree.TreeSelectionModel;
- import java.awt.Dimension;
- import java.awt.Rectangle;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.Enumeration;
- import java.util.Vector;
-
- public abstract class AbstractTreeUI extends TreeUI implements Serializable, TreeModelListener, RowMapper, TreeSelectionListener {
- protected transient TreeModel treeModel;
- protected boolean rootVisible;
- protected VisibleTreeNode treeCacheRoot;
- protected Vector visibleNodes = new Vector();
- protected boolean updateNodeSizes;
- protected int rowHeight = 16;
- protected boolean showsRootHandles;
- protected TreeSelectionModel treeSelectionModel;
- protected LargeTreeModelNode largeRoot;
- protected boolean largeModel;
- protected int largeRowCount;
-
- public void setModel(TreeModel var1) {
- TreeModel var2 = this.treeModel;
- if (var1 != var2) {
- if (var2 != null) {
- var2.removeTreeModelListener(this);
- }
-
- this.treeModel = var1;
- if (this.treeModel != null) {
- this.treeModel.addTreeModelListener(this);
- }
-
- this.rebuild();
- }
-
- }
-
- public TreeModel getModel() {
- return this.treeModel;
- }
-
- public void setLargeModel(boolean var1) {
- if (this.largeModel != var1) {
- this.largeModel = var1;
- if (var1 && this.rowHeight <= 0) {
- this.rowHeight = 16;
- }
-
- this.rebuild();
- }
-
- }
-
- public boolean isLargeModel() {
- return this.largeModel;
- }
-
- public void setRootVisible(boolean var1) {
- if (var1 != this.rootVisible) {
- this.rootVisible = var1;
- if (this.treeModel != null) {
- if (!this.largeModel) {
- if (this.rootVisible) {
- this.treeCacheRoot.updatePreferredSize(0);
- this.visibleNodes.insertElementAt(this.treeCacheRoot, 0);
- } else if (this.visibleNodes.size() > 0) {
- this.visibleNodes.removeElementAt(0);
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.removeSelectionPath(this.treeCacheRoot.getTreePath());
- }
- }
-
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- if (this.getRowCount() > 0) {
- this.getNode(0).setYOrigin(0);
- }
-
- this.updateYLocationsFrom(0);
- this.visibleNodesChanged();
- return;
- }
-
- if (this.rootVisible) {
- ++this.largeRowCount;
- } else {
- --this.largeRowCount;
- }
-
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.clearSelection();
- }
-
- this.visibleNodesChanged();
- }
- }
-
- }
-
- public boolean isRootVisible() {
- return this.rootVisible;
- }
-
- public void setShowsRootHandles(boolean var1) {
- if (this.showsRootHandles != var1) {
- this.showsRootHandles = var1;
- this.visibleNodesChanged();
- }
-
- }
-
- public boolean getShowsRootHandles() {
- return this.showsRootHandles;
- }
-
- public void setRowHeight(int var1) {
- if (var1 != this.rowHeight) {
- if (!this.largeModel) {
- this.rowHeight = var1;
- if (!this.isFixedRowHeight() && this.visibleNodes.size() > 0) {
- this.updateNodeSizes(true);
- } else if (this.isFixedRowHeight()) {
- for(int var2 = this.getRowCount() - 1; var2 >= 0; --var2) {
- this.getNode(var2).getPreferredSize().height = var1;
- }
- }
-
- this.visibleNodesChanged();
- return;
- }
-
- if (var1 <= 0) {
- throw new IllegalArgumentException("AbstractTreeUI.setRowHeight() row height must be > 0 for large models");
- }
-
- this.rowHeight = var1;
- this.visibleNodesChanged();
- }
-
- }
-
- public int getRowHeight() {
- return this.rowHeight;
- }
-
- public boolean isFixedRowHeight() {
- return this.rowHeight > 0;
- }
-
- public abstract int getXOriginOfNode(VisibleTreeNode var1);
-
- public abstract Dimension getSizeOfNode(VisibleTreeNode var1, int var2);
-
- protected abstract Rectangle getLargeBoundsOf(LargeTreeModelNode var1, int var2, Object var3);
-
- public abstract void visibleNodesChanged();
-
- protected abstract void pathWasExpanded(TreePath var1);
-
- protected abstract void pathWasCollapsed(TreePath var1);
-
- protected boolean isAbstractTreePath(TreePath var1, boolean var2, boolean var3) {
- if (var1 != null && var1 instanceof AbstractTreePath) {
- AbstractTreePath var4 = (AbstractTreePath)var1;
- if (var4.node == null || var4.getUI() == this) {
- if (var4.node == null || !var4.node.isValid) {
- var4.node = this.getNodeForPath(var1.getPath(), false, var3);
- if (var4.node == null) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- return false;
- }
-
- protected VisibleTreeNode getNodeForTreePath(TreePath var1, boolean var2, boolean var3) {
- if (this.isAbstractTreePath(var1, var2, var3)) {
- VisibleTreeNode var4 = ((AbstractTreePath)var1).node;
- if (var4 == null) {
- return null;
- } else {
- return var2 && !var4.isVisible() ? null : var4;
- }
- } else {
- return var1 != null ? this.getNodeForPath(var1.getPath(), var2, var3) : null;
- }
- }
-
- protected VisibleTreeNode[] getNodesForTreePath(TreePath var1, boolean var2, boolean var3) {
- if (this.isAbstractTreePath(var1, var2, var3)) {
- VisibleTreeNode var4 = ((AbstractTreePath)var1).node;
- if (var4 == null) {
- return null;
- } else if (var2 && !var4.isVisible()) {
- return null;
- } else {
- TreeNode[] var5 = ((DefaultMutableTreeNode)var4).getPath();
- VisibleTreeNode[] var6 = new VisibleTreeNode[var5.length];
- System.arraycopy(var5, 0, var6, 0, var5.length);
- return var6;
- }
- } else {
- return var1 != null ? this.getNodesForPath(var1.getPath(), var2, var3) : null;
- }
- }
-
- protected TreePath ensurePathIsAbstract(TreePath var1, VisibleTreeNode var2) {
- return (TreePath)(var1 != null && !(var1 instanceof AbstractTreePath) ? new AbstractTreePath(var1.getPath(), var2) : var1);
- }
-
- public VisibleTreeNode getNodeForPath(Object[] var1, boolean var2, boolean var3) {
- VisibleTreeNode[] var4 = this.getNodesForPath(var1, var2, var3);
- return var4 != null && var4.length > 0 ? var4[var4.length - 1] : null;
- }
-
- public VisibleTreeNode[] getNodesForPath(Object[] var1, boolean var2, boolean var3) {
- if (var1 != null && var1.length > 0 && this.treeModel != null) {
- if (!this.treeCacheRoot.getValue().equals(var1[0])) {
- return null;
- } else {
- VisibleTreeNode var5 = this.treeCacheRoot;
- int var4 = 1;
- if (var2 && var1.length > 1 && !var5.isExpanded()) {
- return null;
- } else {
- VisibleTreeNode[] var6 = new VisibleTreeNode[var1.length];
- var6[0] = var5;
-
- while(var5 != null && var4 < var1.length) {
- VisibleTreeNode var8 = null;
- Enumeration var7 = var5.getLoadedChildren(var3);
-
- while(var7.hasMoreElements() && var8 == null) {
- var8 = (VisibleTreeNode)var7.nextElement();
- if (!var8.getValue().equals(var1[var4])) {
- var8 = null;
- }
- }
-
- var5 = var8;
- var6[var4] = var8;
- ++var4;
- if (var8 != null && var2 && var4 < var1.length && !var8.isExpanded()) {
- var5 = null;
- }
- }
-
- return var5 != null ? var6 : null;
- }
- }
- } else {
- return null;
- }
- }
-
- protected void updateYLocationsFrom(int var1) {
- if (var1 >= 0 && var1 < this.getRowCount()) {
- VisibleTreeNode var5 = this.getNode(var1);
- int var4 = var5.getYOrigin() + var5.getPreferredSize().height;
- int var2 = var1 + 1;
-
- for(int var3 = this.visibleNodes.size(); var2 < var3; ++var2) {
- var5 = (VisibleTreeNode)this.visibleNodes.elementAt(var2);
- var5.setYOrigin(var4);
- var4 += var5.getPreferredSize().height;
- }
- }
-
- }
-
- public synchronized void treeNodesChanged(TreeModelEvent var1) {
- if (var1 != null) {
- if (this.largeModel) {
- this.visibleNodesChanged();
- return;
- }
-
- int[] var2 = var1.getChildIndices();
- VisibleTreeNode var3 = this.getNodeForPath(var1.getPath(), false, false);
- if (var3 != null) {
- Object var4 = var3.getValue();
- var3.updatePreferredSize();
- if (var2 != null) {
- for(int var5 = 0; var5 < var2.length; ++var5) {
- try {
- VisibleTreeNode var6 = (VisibleTreeNode)((DefaultMutableTreeNode)var3).getChildAt(var2[var5]);
- ((DefaultMutableTreeNode)var6).setUserObject(this.treeModel.getChild(var4, var2[var5]));
- var6.updatePreferredSize();
- } catch (Exception var7) {
- }
- }
- }
-
- if (!this.isFixedRowHeight()) {
- int var8 = var3.getRow();
- if (var8 != -1) {
- this.updateYLocationsFrom(var8);
- }
- }
-
- this.visibleNodesChanged();
- }
- }
-
- }
-
- protected VisibleTreeNode createNodeAt(VisibleTreeNode var1, int var2) {
- VisibleTreeNode var5;
- try {
- Object var4 = this.treeModel.getChild(var1.getValue(), var2);
- var5 = this.createNodeForValue(var4, -1);
- ((DefaultMutableTreeNode)var1).insert(var5, var2);
- } catch (Exception var8) {
- var5 = null;
- }
-
- boolean var3 = var1 == this.treeCacheRoot;
- if (var5 != null && var1.isExpanded() && (var1.getRow() != -1 || var3)) {
- int var6;
- if (var2 == 0) {
- if (var3 && !this.isRootVisible()) {
- var6 = 0;
- } else {
- var6 = var1.getRow() + 1;
- }
- } else if (var2 == ((DefaultMutableTreeNode)var1).getChildCount()) {
- var6 = var1.getLastVisibleNode().getRow() + 1;
- } else {
- VisibleTreeNode var7 = (VisibleTreeNode)((DefaultMutableTreeNode)var1).getChildAt(var2 - 1);
- var6 = var7.getLastVisibleNode().getRow() + 1;
- }
-
- this.visibleNodes.insertElementAt(var5, var6);
- }
-
- return var5;
- }
-
- public synchronized void treeNodesInserted(TreeModelEvent var1) {
- if (var1 != null && !this.largeModel) {
- int[] var8 = var1.getChildIndices();
- VisibleTreeNode var9 = this.getNodeForPath(var1.getPath(), false, false);
- if (var9 != null && var8 != null && var8.length > 0) {
- if (var9.hasBeenExpanded()) {
- Object var12 = var9.getValue();
- boolean var10 = var9 == this.treeCacheRoot && !this.rootVisible || var9.getRow() != -1 && var9.isExpanded();
-
- for(int var11 = 0; var11 < var8.length; ++var11) {
- this.createNodeAt(var9, var8[var11]);
- }
-
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- if (!this.isFixedRowHeight() && var10) {
- if (var9 == this.treeCacheRoot) {
- this.updateYLocationsFrom(0);
- } else {
- this.updateYLocationsFrom(var9.getRow());
- }
-
- this.visibleNodesChanged();
- return;
- }
-
- if (var10) {
- this.visibleNodesChanged();
- return;
- }
- } else {
- var9.modelChildCountChanged();
- }
-
- return;
- }
- } else if (var1 != null) {
- LargeTreeModelNode var3 = this.getLargeTreeModelNodeForPath(var1.getPath(), false, false);
- int[] var2 = var1.getChildIndices();
- int var4;
- if (var3 != null && var2 != null && (var4 = var2.length) > 0) {
- boolean var5 = var3.isVisible() && var3.isExpanded();
-
- for(int var6 = 0; var6 < var4; ++var6) {
- var3.childInsertedAtModelIndex(var2[var6]);
- if (var5) {
- ++this.largeRowCount;
- }
- }
-
- if (var5 && this.treeSelectionModel != null) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- if (var5) {
- this.visibleNodesChanged();
- return;
- }
-
- var3.modelChildCountChanged();
- }
- }
-
- }
-
- public synchronized void treeNodesRemoved(TreeModelEvent var1) {
- if (var1 != null && !this.largeModel) {
- int[] var13 = var1.getChildIndices();
- VisibleTreeNode var14 = this.getNodeForPath(var1.getPath(), false, false);
- if (var14 != null && var13 != null && var13.length > 0) {
- if (var14.hasBeenExpanded()) {
- boolean var15 = var14 == this.treeCacheRoot && !this.rootVisible || var14.getRow() != -1 && var14.isExpanded();
-
- for(int var16 = var13.length - 1; var16 >= 0; --var16) {
- try {
- VisibleTreeNode var18 = (VisibleTreeNode)((DefaultMutableTreeNode)var14).getChildAt(var13[var16]);
- if (var18.isExpanded()) {
- var18.collapse(false);
- }
-
- if (var15) {
- int var17 = var18.getRow();
- if (var17 != -1) {
- this.visibleNodes.removeElementAt(var17);
- if (this.treeSelectionModel != null) {
- TreePath var19 = var18.getTreePath();
- this.treeSelectionModel.removeSelectionPath(var19);
- }
- }
- }
-
- ((DefaultMutableTreeNode)var14).remove(var18);
- } catch (Exception var12) {
- System.out.println("Exception removing node" + var12);
- }
- }
-
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- if (!this.isFixedRowHeight() && var15) {
- if (var14 == this.treeCacheRoot) {
- if (this.getRowCount() > 0) {
- this.getNode(0).setYOrigin(0);
- }
-
- this.updateYLocationsFrom(0);
- } else {
- this.updateYLocationsFrom(var14.getRow());
- }
-
- this.visibleNodesChanged();
- return;
- }
-
- if (var15) {
- this.visibleNodesChanged();
- return;
- }
- } else {
- var14.modelChildCountChanged();
- }
-
- return;
- }
- } else if (var1 != null) {
- Object[] var4 = var1.getPath();
- LargeTreeModelNode var5 = this.getLargeTreeModelNodeForPath(var4, false, false);
- int[] var2 = var1.getChildIndices();
- int var3;
- if (var5 != null && var2 != null && (var3 = var2.length) > 0) {
- Object[] var7 = var1.getChildren();
- int var8 = var4.length;
- boolean var9 = var5.isVisible() && var5.isExpanded();
-
- for(int var11 = 0; var11 < var3; ++var11) {
- LargeTreeModelNode var10 = var5.childAtModelIndex(var2[var11]);
- if (var10 != null) {
- var10.collapse(false);
- ((DefaultMutableTreeNode)var5).remove(var10);
- }
-
- if (var9) {
- --this.largeRowCount;
- }
-
- var5.childRemovedAtModelIndex(var2[var11]);
- if (this.treeSelectionModel != null && var7 != null && var7[var11] != null) {
- Object[] var6 = new Object[var8 + 1];
- System.arraycopy(var4, 0, var6, 0, var8);
- var6[var8] = var7[var11];
- this.treeSelectionModel.removeSelectionPath(new TreePath(var6));
- }
- }
-
- if (var9) {
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- this.visibleNodesChanged();
- return;
- }
-
- var5.modelChildCountChanged();
- }
- }
-
- }
-
- public synchronized void treeStructureChanged(TreeModelEvent var1) {
- if (var1 != null && !this.largeModel) {
- Object[] var10 = var1.getPath();
- VisibleTreeNode var12 = this.getNodeForPath(var10, false, false);
- if (var12 == null && var10 != null && var10.length == 1) {
- var12 = this.treeCacheRoot;
- }
-
- if (var12 != null) {
- boolean var13 = var12.isExpanded();
- boolean var14 = var12.getRow() != -1;
- if (var12 == this.treeCacheRoot) {
- this.rebuild();
- return;
- }
-
- VisibleTreeNode var9 = (VisibleTreeNode)((DefaultMutableTreeNode)var12).getParent();
- int var7 = ((DefaultMutableTreeNode)var9).getIndex(var12);
- if (var14 && var13) {
- var12.collapse(false);
- }
-
- if (var14) {
- this.visibleNodes.removeElement(var12);
- }
-
- ((DefaultMutableTreeNode)var12).removeFromParent();
- this.createNodeAt(var9, var7);
- VisibleTreeNode var8 = (VisibleTreeNode)((DefaultMutableTreeNode)var9).getChildAt(var7);
- if (var14 && var13) {
- var8.expand(false);
- }
-
- int var15 = var8.getRow();
- if (!this.isFixedRowHeight() && var14) {
- if (var15 == 0) {
- this.updateYLocationsFrom(var15);
- } else {
- this.updateYLocationsFrom(var15 - 1);
- }
-
- this.visibleNodesChanged();
- return;
- }
-
- if (var14) {
- this.visibleNodesChanged();
- return;
- }
- }
- } else if (var1 != null) {
- Object[] var2 = var1.getPath();
- if (var2 != null && var2.length > 0) {
- if (var2.length == 1) {
- this.rebuild();
- return;
- }
-
- LargeTreeModelNode var3 = this.getLargeTreeModelNodeForPath(var2, false, false);
- if (var3 != null) {
- LargeTreeModelNode var6 = (LargeTreeModelNode)((DefaultMutableTreeNode)var3).getParent();
- boolean var4 = var3.isExpanded();
- boolean var5 = var3.isVisible();
- if (var5 && var4) {
- var3.collapse(false);
- ((DefaultMutableTreeNode)var3).removeFromParent();
- var3 = this.getLargeTreeModelNodeForPath(var2, false, true);
- var3.expand(false);
- } else {
- ((DefaultMutableTreeNode)var3).removeFromParent();
- }
-
- if (this.treeSelectionModel != null && var5 && var4) {
- this.treeSelectionModel.resetRowSelection();
- }
-
- if (var5) {
- this.visibleNodesChanged();
- return;
- }
-
- var6.modelChildCountChanged();
- }
- }
- }
-
- }
-
- public void rebuild() {
- if (!this.largeModel && this.treeCacheRoot != null) {
- this.treeCacheRoot.markInvalid();
- }
-
- if (this.treeModel != null) {
- if (!this.largeModel) {
- this.largeRoot = null;
- this.treeCacheRoot = this.createNodeForValue(this.treeModel.getRoot(), 0);
- this.visibleNodes.removeAllElements();
- if (this.isRootVisible()) {
- this.visibleNodes.addElement(this.treeCacheRoot);
- }
-
- if (!this.treeCacheRoot.isExpanded()) {
- this.treeCacheRoot.expand();
- } else {
- Enumeration var1 = this.treeCacheRoot.children();
-
- while(var1.hasMoreElements()) {
- this.visibleNodes.addElement(var1.nextElement());
- }
-
- if (!this.isFixedRowHeight()) {
- this.updateYLocationsFrom(0);
- }
- }
- } else {
- this.treeCacheRoot = null;
- this.visibleNodes.removeAllElements();
- this.largeRoot = this.createLargeTreeModelNodeForValue(this.treeModel.getRoot(), 0);
- if (this.isRootVisible()) {
- this.largeRowCount = 1;
- } else {
- this.largeRowCount = 0;
- }
-
- this.largeRoot.expand(true);
- }
- } else {
- this.visibleNodes.removeAllElements();
- this.treeCacheRoot = null;
- this.largeRoot = null;
- this.largeRowCount = 0;
- }
-
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.clearSelection();
- }
-
- this.visibleNodesChanged();
- }
-
- public void updateNodeSizes(boolean var1) {
- this.updateNodeSizes = false;
- int var3 = 0;
- int var2 = 0;
-
- for(int var4 = this.visibleNodes.size(); var3 < var4; ++var3) {
- VisibleTreeNode var5 = (VisibleTreeNode)this.visibleNodes.elementAt(var3);
- var5.setYOrigin(var2);
- if (var1 || !var5.hasValidSize()) {
- var5.updatePreferredSize(var3);
- }
-
- var2 += var5.getPreferredSize().height;
- }
-
- }
-
- public int getYOriginOfRow(int var1) {
- if (var1 < 0) {
- return -1;
- } else if (var1 >= this.getRowCount()) {
- return -1;
- } else {
- return this.isFixedRowHeight() ? var1 * this.getRowHeight() : this.getNode(var1).getYOrigin();
- }
- }
-
- public int getRowContainingYLocation(int var1) {
- if (this.isFixedRowHeight()) {
- return this.getRowCount() == 0 ? -1 : Math.max(0, Math.min(this.getRowCount() - 1, var1 / this.getRowHeight()));
- } else {
- int var2;
- if ((var2 = this.getRowCount()) <= 0) {
- return -1;
- } else {
- int var5 = 0;
- int var4 = 0;
-
- while(var5 < var2) {
- var4 = (var2 - var5) / 2 + var5;
- VisibleTreeNode var7 = (VisibleTreeNode)this.visibleNodes.elementAt(var4);
- int var6 = var7.getYOrigin();
- int var3 = var6 + var7.getPreferredSize().height;
- if (var1 < var6) {
- var2 = var4 - 1;
- } else {
- if (var1 < var3) {
- break;
- }
-
- var5 = var4 + 1;
- }
- }
-
- if (var5 == var2) {
- var4 = var5;
- if (var5 >= this.getRowCount()) {
- var4 = this.getRowCount() - 1;
- }
- }
-
- return var4;
- }
- }
- }
-
- protected boolean ensureLargePathIsExpanded(TreePath var1, boolean var2) {
- Object[] var3 = var1.getPath();
- if (var3 != null) {
- int var4 = var3.length;
- if (this.treeModel.isLeaf(var3[var4 - 1])) {
- if (var4 == 1) {
- var3 = null;
- } else {
- Object[] var5 = new Object[var4 - 1];
- System.arraycopy(var3, 0, var5, 0, var4 - 1);
- var3 = var5;
- var2 = true;
- }
- }
-
- if (var3 != null) {
- LargeTreeModelNode var9 = this.getLargeTreeModelNodeForPath(var3, false, true);
- if (var9 != null) {
- TreeNode[] var6 = ((DefaultMutableTreeNode)var9).getPath();
- int var7 = var6.length - 1;
-
- for(int var8 = 0; var8 < var7; ++var8) {
- ((LargeTreeModelNode)var6[var8]).expand(true);
- }
-
- if (var2) {
- ((LargeTreeModelNode)var6[var7]).expand(true);
- }
-
- return true;
- }
- }
- }
-
- return false;
- }
-
- protected VisibleTreeNode[] ensurePathIsExpanded(TreePath var1, boolean var2) {
- VisibleTreeNode[] var3 = this.getNodesForTreePath(var1, false, true);
- if (var3 != null) {
- int var4 = 0;
-
- for(int var5 = var2 ? var3.length : var3.length - 1; var4 < var5; ++var4) {
- if (!var3[var4].isExpanded()) {
- var3[var4].expand();
- }
- }
- }
-
- return var3;
- }
-
- public TreePath getSelectionPath() {
- return this.treeSelectionModel != null ? this.treeSelectionModel.getSelectionPath() : null;
- }
-
- public TreePath[] getSelectionPaths() {
- return this.treeSelectionModel != null ? this.treeSelectionModel.getSelectionPaths() : null;
- }
-
- public int[] getSelectionRows() {
- return this.treeSelectionModel != null ? this.treeSelectionModel.getSelectionRows() : null;
- }
-
- public int getMinSelectionRow() {
- return this.treeSelectionModel != null ? this.treeSelectionModel.getMinSelectionRow() : -1;
- }
-
- public int getMaxSelectionRow() {
- return this.treeSelectionModel != null ? this.treeSelectionModel.getMaxSelectionRow() : -1;
- }
-
- public boolean isPathSelected(TreePath var1) {
- return this.treeSelectionModel != null ? this.treeSelectionModel.isPathSelected(var1) : false;
- }
-
- public boolean isRowSelected(int var1) {
- return this.treeSelectionModel != null ? this.treeSelectionModel.isRowSelected(var1) : false;
- }
-
- public boolean isExpanded(TreePath var1) {
- if (!this.largeModel) {
- VisibleTreeNode var2 = this.getNodeForTreePath(var1, true, false);
- if (var2 != null) {
- return var2.isExpanded();
- }
- } else if (var1 != null) {
- LargeTreeModelNode var3 = this.getLargeTreeModelNodeForPath(var1.getPath(), true, false);
- if (var3 != null && var3.isExpanded()) {
- return true;
- }
-
- return false;
- }
-
- return false;
- }
-
- public boolean isExpanded(int var1) {
- if (!this.largeModel) {
- return this.getNode(var1).isExpanded();
- } else {
- LargeTreeModelNode var2 = this.getLargeTreeModelNodeForRow(var1, false);
- return var2 != null ? var2.isExpanded() : false;
- }
- }
-
- public boolean isCollapsed(TreePath var1) {
- return !this.isExpanded(var1);
- }
-
- public boolean isCollapsed(int var1) {
- return !this.isExpanded(var1);
- }
-
- public boolean isLeaf(int var1) {
- if (!this.largeModel) {
- VisibleTreeNode var2 = this.getNode(var1);
- if (var2 != null) {
- return var2.isLeaf();
- }
- } else {
- if (var1 == 0 && this.isRootVisible()) {
- return this.treeModel.isLeaf(this.treeModel.getRoot());
- }
-
- int[] var4 = new int[1];
- LargeTreeModelNode var3 = this.getLargeParentAndChildIndexOfRow(var1, var4);
- if (var3 != null) {
- return this.treeModel.isLeaf(this.treeModel.getChild(((DefaultMutableTreeNode)var3).getUserObject(), var4[0]));
- }
- }
-
- return true;
- }
-
- public void makeVisible(TreePath var1) {
- if (!this.largeModel) {
- this.ensurePathIsExpanded(var1, false);
- } else {
- this.ensureLargePathIsExpanded(var1, false);
- }
- }
-
- public boolean isVisible(TreePath var1) {
- if (!this.largeModel) {
- VisibleTreeNode var2 = this.getNodeForTreePath(var1, true, false);
- if (var2 != null) {
- return true;
- }
- } else if (var1 != null) {
- Object[] var6 = var1.getPath();
- if (var6 != null) {
- int var3 = var6.length;
- if (var3 > 0) {
- if (this.treeModel.isLeaf(var6[var3 - 1]) && var3 > 1) {
- Object[] var5 = new Object[var3 - 1];
- System.arraycopy(var6, 0, var5, 0, var3 - 1);
- LargeTreeModelNode var7 = this.getLargeTreeModelNodeForPath(var5, true, false);
- if (var7 != null && var7.isVisible() && var7.isExpanded()) {
- return true;
- }
-
- return false;
- }
-
- LargeTreeModelNode var4 = this.getLargeTreeModelNodeForPath(var6, true, false);
- return var4.isVisible();
- }
- }
- }
-
- return false;
- }
-
- public int getRowCount() {
- return !this.largeModel ? this.visibleNodes.size() : this.largeRowCount;
- }
-
- public Rectangle getPathBounds(TreePath var1) {
- if (!this.largeModel) {
- VisibleTreeNode var2 = this.getNodeForTreePath(var1, true, false);
- if (var2 != null) {
- return var2.getNodeBounds();
- }
- } else if (var1 != null) {
- return this.getRowBounds(this.getRowForPath(var1));
- }
-
- return null;
- }
-
- public Rectangle getRowBounds(int var1) {
- if (var1 >= 0 && var1 < this.getRowCount()) {
- if (!this.largeModel) {
- return this.getNode(var1).getNodeBounds();
- }
-
- if (var1 == 0 && this.isRootVisible()) {
- return this.getLargeBoundsOf((LargeTreeModelNode)null, 0, this.largeRoot.getUserObject());
- }
-
- int[] var2 = new int[1];
- LargeTreeModelNode var3 = this.getLargeParentAndChildIndexOfRow(var1, var2);
- if (var3 != null) {
- return this.getLargeBoundsOf(var3, var1, this.treeModel.getChild(((DefaultMutableTreeNode)var3).getUserObject(), var2[0]));
- }
- }
-
- return null;
- }
-
- public TreePath getPathForRow(int var1) {
- if (var1 >= 0 && var1 < this.getRowCount()) {
- return !this.largeModel ? this.getNode(var1).getTreePath() : this.getLargePathForRow(var1);
- } else {
- return null;
- }
- }
-
- public int getRowForPath(TreePath var1) {
- if (var1 == null) {
- return -1;
- } else if (!this.largeModel) {
- VisibleTreeNode var2 = this.getNodeForTreePath(var1, true, false);
- return var2 != null ? var2.getRow() : -1;
- } else {
- return this.getLargeRowForPath(var1.getPath());
- }
- }
-
- public int[] getRowsForPaths(TreePath[] var1) {
- if (var1 == null) {
- return null;
- } else {
- int var2 = var1.length;
- int[] var3 = new int[var2];
-
- for(int var4 = 0; var4 < var2; ++var4) {
- var3[var4] = this.getRowForPath(var1[var4]);
- }
-
- return var3;
- }
- }
-
- public TreePath[] getPathsForRows(int[] var1) {
- if (var1 == null) {
- return null;
- } else {
- int var2 = var1.length;
- TreePath[] var3 = new TreePath[var2];
-
- for(int var4 = 0; var4 < var2; ++var4) {
- var3[var4] = this.getPathForRow(var1[var4]);
- }
-
- return var3;
- }
- }
-
- public void expandPath(TreePath var1) {
- if (var1 != null) {
- if (!this.largeModel) {
- this.ensurePathIsExpanded(var1, true);
- return;
- }
-
- this.ensureLargePathIsExpanded(var1, true);
- }
-
- }
-
- public void expandRow(int var1) {
- if (var1 >= 0 && var1 < this.getRowCount()) {
- if (!this.largeModel) {
- this.getNode(var1).expand();
- return;
- }
-
- LargeTreeModelNode var2 = this.getLargeTreeModelNodeForRow(var1, true);
- if (var2 != null) {
- var2.expand(true);
- }
- }
-
- }
-
- public void collapsePath(TreePath var1) {
- if (!this.largeModel) {
- VisibleTreeNode[] var2 = this.getNodesForTreePath(var1, false, true);
- if (var2 != null) {
- int var3 = 0;
-
- for(int var4 = var2.length - 1; var3 < var4; ++var3) {
- if (!var2[var3].isExpanded()) {
- var2[var3].expand();
- }
- }
-
- if (var2.length > 0) {
- var2[var3].collapse();
- return;
- }
- }
- } else if (var1 != null) {
- LargeTreeModelNode var5 = this.getLargeTreeModelNodeForPath(var1.getPath(), false, true);
- if (var5 != null) {
- var5.collapse(true);
- }
- }
-
- }
-
- public void collapseRow(int var1) {
- if (var1 >= 0 && var1 < this.getRowCount()) {
- if (!this.largeModel) {
- this.getNode(var1).collapse();
- return;
- }
-
- LargeTreeModelNode var2 = this.getLargeTreeModelNodeForRow(var1, false);
- if (var2 != null) {
- var2.collapse(true);
- }
- }
-
- }
-
- public TreePath getClosestPathForLocation(int var1, int var2) {
- if (this.getRowCount() == 0) {
- return null;
- } else {
- int var3 = this.getRowContainingYLocation(var2);
- return !this.largeModel ? this.getNode(var3).getTreePath() : this.getLargePathForRow(var3);
- }
- }
-
- public int getClosestRowForLocation(int var1, int var2) {
- return this.getRowCount() == 0 ? -1 : this.getRowContainingYLocation(var2);
- }
-
- public Object getValue(int var1) {
- if (!this.largeModel) {
- return this.getNode(var1).getValue();
- } else {
- int[] var2 = new int[1];
- LargeTreeModelNode var3 = this.getLargeParentAndChildIndexOfRow(var1, var2);
- if (var1 == 0 && this.isRootVisible()) {
- return this.treeModel.getRoot();
- } else {
- return var3 != null ? this.treeModel.getChild(((DefaultMutableTreeNode)var3).getUserObject(), var2[0]) : null;
- }
- }
- }
-
- public VisibleTreeNode getNode(int var1) {
- return (VisibleTreeNode)this.visibleNodes.elementAt(var1);
- }
-
- public Enumeration visibleNodes() {
- return this.visibleNodes.elements();
- }
-
- public int getMaxNodeWidth() {
- int var1 = 0;
- if (!this.largeModel) {
- for(int var2 = this.getRowCount() - 1; var2 >= 0; --var2) {
- VisibleTreeNode var4 = this.getNode(var2);
- int var3;
- if ((var3 = var4.getPreferredSize().width + this.getXOriginOfNode(var4)) > var1) {
- var1 = var3;
- }
- }
- } else {
- for(int var6 = this.getRowCount() - 1; var6 >= 0; --var6) {
- Rectangle var5 = this.getRowBounds(var6);
- var1 = Math.max(var1, var5.x + var5.width);
- }
- }
-
- return var1;
- }
-
- public void setSelectionModel(TreeSelectionModel var1) {
- if (this.treeSelectionModel != var1) {
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.removeTreeSelectionListener(this);
- this.treeSelectionModel.setRowMapper((RowMapper)null);
- }
-
- this.treeSelectionModel = var1;
- if (this.treeSelectionModel != null) {
- this.treeSelectionModel.addTreeSelectionListener(this);
- this.treeSelectionModel.setRowMapper(this);
- this.treeSelectionModel.resetRowSelection();
- }
- }
-
- }
-
- public TreeSelectionModel getSelectionModel() {
- return this.treeSelectionModel;
- }
-
- public boolean isSelectedIndex(int var1) {
- return this.treeSelectionModel != null ? this.treeSelectionModel.isRowSelected(var1) : false;
- }
-
- public void valueChanged(TreeSelectionEvent var1) {
- if (this.treeSelectionModel != null) {
- TreePath[] var2 = this.treeSelectionModel.getSelectionPaths();
- if (var2 != null) {
- for(int var3 = var2.length - 1; var3 >= 0; --var3) {
- this.makeVisible(var2[var3]);
- }
- }
- }
-
- }
-
- protected VisibleTreeNode createNodeForValue(Object var1, int var2) {
- return new VisibleTreeNode(this, var1, var2);
- }
-
- protected LargeTreeModelNode createLargeTreeModelNodeForValue(Object var1, int var2) {
- return new LargeTreeModelNode(this, var1, var2);
- }
-
- protected LargeTreeModelNode getLargeParentAndChildIndexOfRow(int var1, int[] var2) {
- int[] var3 = new int[1];
- LargeTreeModelNode[] var4 = new LargeTreeModelNode[1];
- boolean[] var5 = new boolean[1];
- if (this.isRootVisible()) {
- var3[0] = 0;
- } else {
- var3[0] = -1;
- }
-
- if (this.largeRoot.getPathForRow(var1, var3, (TreePath[])null, var4, var5, var2)) {
- if (var5[0]) {
- return var4[0];
- } else {
- var2[0] = var4[0].getChildIndex();
- return (LargeTreeModelNode)var4[0].getParent();
- }
- } else {
- return null;
- }
- }
-
- protected LargeTreeModelNode getLargeTreeModelNodeForRow(int var1, boolean var2) {
- int[] var3 = new int[1];
- int[] var4 = new int[1];
- LargeTreeModelNode[] var5 = new LargeTreeModelNode[1];
- boolean[] var6 = new boolean[1];
- if (this.isRootVisible()) {
- var3[0] = 0;
- } else {
- var3[0] = -1;
- }
-
- if (this.largeRoot.getPathForRow(var1, var3, (TreePath[])null, var5, var6, var4)) {
- if (var6[0]) {
- if (var2) {
- Object var7 = this.treeModel.getChild(var5[0].getUserObject(), var4[0]);
- if (this.treeModel.isLeaf(var7)) {
- return null;
- } else {
- LargeTreeModelNode var8 = this.createLargeTreeModelNodeForValue(var7, var4[0]);
- var5[0].addLargeTreeModelNode(var8);
- return var8;
- }
- } else {
- return null;
- }
- } else {
- return var5[0];
- }
- } else {
- return null;
- }
- }
-
- protected TreePath getLargePathForRow(int var1) {
- int[] var2 = new int[1];
- TreePath[] var3 = new TreePath[1];
- if (this.isRootVisible()) {
- var2[0] = 0;
- } else {
- var2[0] = -1;
- }
-
- return this.largeRoot.getPathForRow(var1, var2, var3, (LargeTreeModelNode[])null, (boolean[])null, (int[])null) ? var3[0] : null;
- }
-
- protected int getLargeRowForPath(Object[] var1) {
- int[] var2 = new int[1];
- if (this.isRootVisible()) {
- var2[0] = 0;
- } else {
- var2[0] = -1;
- }
-
- return var1 != null && this.largeRoot.getRow(var1, 0, var1.length, true, var2) ? var2[0] : -1;
- }
-
- protected LargeTreeModelNode getLargeTreeModelNodeForPath(Object[] var1, boolean var2, boolean var3) {
- if (var1 != null) {
- int var4 = var1.length;
- if (var4 > 0) {
- return this.getLargeTreeModelNodeForPath(var1, var2, var3, var4);
- }
- }
-
- return null;
- }
-
- protected LargeTreeModelNode getLargeTreeModelNodeForPath(Object[] var1, boolean var2, boolean var3, int var4) {
- if (!var1[0].equals(this.largeRoot.getUserObject())) {
- return null;
- } else {
- LargeTreeModelNode var7 = this.largeRoot;
-
- for(int var11 = 1; var11 < var4; ++var11) {
- if (var2 && !var7.isExpanded) {
- return null;
- }
-
- int var10 = this.treeModel.getIndexOfChild(((DefaultMutableTreeNode)var7).getUserObject(), var1[var11]);
- if (var10 < 0) {
- throw new RuntimeException("invalid index " + var10 + " for path " + var1[var11]);
- }
-
- int var9 = ((DefaultMutableTreeNode)var7).getChildCount();
- LargeTreeModelNode var6 = var7;
-
- for(int var8 = 0; var8 < var9; ++var8) {
- LargeTreeModelNode var5 = (LargeTreeModelNode)((DefaultMutableTreeNode)var7).getChildAt(var8);
- if (var5.childIndex == var10) {
- var7 = var5;
- var8 = var9;
- } else if (var5.childIndex > var10) {
- if (!var3) {
- return null;
- }
-
- LargeTreeModelNode var12 = this.createLargeTreeModelNodeForValue(var1[var11], var10);
- ((DefaultMutableTreeNode)var7).insert(var12, var8);
- var7 = var12;
- var8 = var9;
- }
- }
-
- if (var6 == var7) {
- if (!var3) {
- return null;
- }
-
- LargeTreeModelNode var13 = this.createLargeTreeModelNodeForValue(var1[var11], var10);
- ((DefaultMutableTreeNode)var7).add(var13);
- var7 = var13;
- }
- }
-
- return var7;
- }
- }
-
- protected AbstractTreePath createTreePathFor(VisibleTreeNode var1) {
- return new AbstractTreePath(((DefaultMutableTreeNode)var1).getUserObjectPath(), var1);
- }
-
- private void writeObject(ObjectOutputStream var1) throws IOException {
- Vector var2 = new Vector();
- var1.defaultWriteObject();
- if (this.treeModel != null && this.treeModel instanceof Serializable) {
- var2.addElement("treeModel");
- var2.addElement(this.treeModel);
- }
-
- if (this.treeSelectionModel != null && this.treeSelectionModel instanceof Serializable) {
- var2.addElement("treeSelectionModel");
- var2.addElement(this.treeSelectionModel);
- }
-
- var1.writeObject(var2);
- }
-
- private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
- var1.defaultReadObject();
- Vector var2 = (Vector)var1.readObject();
- int var3 = 0;
- int var4 = var2.size();
- if (var3 < var4 && var2.elementAt(var3).equals("treeModel")) {
- ++var3;
- this.treeModel = (TreeModel)var2.elementAt(var3);
- ++var3;
- }
-
- if (var3 < var4 && var2.elementAt(var3).equals("treeSelectionModel")) {
- ++var3;
- this.treeSelectionModel = (TreeSelectionModel)var2.elementAt(var3);
- ++var3;
- }
-
- }
- }
-