diff options
Diffstat (limited to 'libjava/classpath/javax/swing/tree')
13 files changed, 390 insertions, 339 deletions
diff --git a/libjava/classpath/javax/swing/tree/AbstractLayoutCache.java b/libjava/classpath/javax/swing/tree/AbstractLayoutCache.java index 8dbdd2f5e58..155343f5bcc 100644 --- a/libjava/classpath/javax/swing/tree/AbstractLayoutCache.java +++ b/libjava/classpath/javax/swing/tree/AbstractLayoutCache.java @@ -1,5 +1,5 @@ /* AbstractLayoutCache.java -- - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,13 +38,10 @@ exception statement from your version. */ package javax.swing.tree; -import gnu.classpath.NotImplementedException; - import java.awt.Rectangle; import java.util.Enumeration; import javax.swing.event.TreeModelEvent; -import javax.swing.tree.VariableHeightLayoutCache.NodeRecord; /** * class AbstractLayoutCache @@ -275,7 +272,7 @@ public abstract class AbstractLayoutCache for (int i = 0; i < n; i++) { TreePath path = getPathForRow(i); - r.setBounds(0,0,0,0); + r.setBounds(0, 0, 0, 0); r = getBounds(path, r); if (r.x + r.width > maximalWidth) maximalWidth = r.x + r.width; diff --git a/libjava/classpath/javax/swing/tree/DefaultMutableTreeNode.java b/libjava/classpath/javax/swing/tree/DefaultMutableTreeNode.java index be8317f975c..6951b960005 100644 --- a/libjava/classpath/javax/swing/tree/DefaultMutableTreeNode.java +++ b/libjava/classpath/javax/swing/tree/DefaultMutableTreeNode.java @@ -887,8 +887,7 @@ public class DefaultMutableTreeNode return false; if (node == this) return true; - return (node.getParent() == getParent() - && getParent() != null); + return node.getParent() == getParent() && getParent() != null; } /** @@ -1070,7 +1069,7 @@ public class DefaultMutableTreeNode public Object nextElement() { - if(queue.isEmpty()) + if (queue.isEmpty()) throw new NoSuchElementException("No more elements left."); TreeNode node = (TreeNode) queue.removeFirst(); @@ -1105,7 +1104,7 @@ public class DefaultMutableTreeNode public Object nextElement() { - if( next == null ) + if (next == null) throw new NoSuchElementException("No more elements left."); Object current = next; @@ -1121,7 +1120,7 @@ public class DefaultMutableTreeNode private TreeNode traverse(Enumeration children) { // If more children are available step down. - if( children.hasMoreElements() ) + if (children.hasMoreElements()) { TreeNode child = (TreeNode) children.nextElement(); childrenEnums.push(child.children()); @@ -1134,7 +1133,7 @@ public class DefaultMutableTreeNode // If there are no more levels left, there is no next // element to return. - if ( childrenEnums.isEmpty() ) + if (childrenEnums.isEmpty()) return null; else { @@ -1165,7 +1164,7 @@ public class DefaultMutableTreeNode public Object nextElement() { - if( nodes.isEmpty() ) + if (nodes.isEmpty()) throw new NoSuchElementException("No more elements left!"); Enumeration children = (Enumeration) childrenEnums.peek(); @@ -1175,7 +1174,7 @@ public class DefaultMutableTreeNode private Object traverse(Enumeration children) { - if ( children.hasMoreElements() ) + if (children.hasMoreElements()) { TreeNode node = (TreeNode) children.nextElement(); nodes.push(node); diff --git a/libjava/classpath/javax/swing/tree/DefaultTreeCellEditor.java b/libjava/classpath/javax/swing/tree/DefaultTreeCellEditor.java index cc19501d2b6..b0a4d8db823 100644 --- a/libjava/classpath/javax/swing/tree/DefaultTreeCellEditor.java +++ b/libjava/classpath/javax/swing/tree/DefaultTreeCellEditor.java @@ -382,7 +382,6 @@ public class DefaultTreeCellEditor editingContainer = createContainer(); setFont(UIManager.getFont("Tree.font")); setBorderSelectionColor(UIManager.getColor("Tree.selectionBorderColor")); - editingIcon = renderer.getIcon(); } /** diff --git a/libjava/classpath/javax/swing/tree/DefaultTreeCellRenderer.java b/libjava/classpath/javax/swing/tree/DefaultTreeCellRenderer.java index 5e93145ae5c..e120b71c167 100644 --- a/libjava/classpath/javax/swing/tree/DefaultTreeCellRenderer.java +++ b/libjava/classpath/javax/swing/tree/DefaultTreeCellRenderer.java @@ -1,5 +1,5 @@ /* DefaultTreeCellRenderer.java - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -47,16 +47,17 @@ import java.awt.Graphics; import java.awt.Insets; import java.awt.Rectangle; -import javax.swing.border.Border; import javax.swing.Icon; import javax.swing.JLabel; import javax.swing.JTree; -import javax.swing.UIManager; +import javax.swing.LookAndFeel; import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.border.Border; import javax.swing.plaf.UIResource; /** - * DefaultTreeCellRenderer + * A default implementation of the {@link TreeCellRenderer} interface. * * @author Andrew Selkirk */ @@ -64,71 +65,81 @@ public class DefaultTreeCellRenderer extends JLabel implements TreeCellRenderer { - // ------------------------------------------------------------- - // Variables -------------------------------------------------- - // ------------------------------------------------------------- /** - * selected + * A flag indicating the current selection status. */ protected boolean selected; /** - * hasFocus + * A flag indicating the current focus status. */ protected boolean hasFocus; /** - * drawsFocusBorderAroundIcon + * drawsFocusBorderAroundIcon // FIXME: is this used? */ private boolean drawsFocusBorderAroundIcon; /** - * closedIcon + * The icon used to represent non-leaf nodes that are closed. + * + * @see #setClosedIcon(Icon) */ protected transient Icon closedIcon; /** - * leafIcon + * The icon used to represent leaf nodes. + * + * @see #setLeafIcon(Icon) */ protected transient Icon leafIcon; /** - * openIcon + * The icon used to represent non-leaf nodes that are open. + * + * @see #setOpenIcon(Icon) */ protected transient Icon openIcon; /** - * textSelectionColor + * The color used for text in selected cells. + * + * @see #setTextSelectionColor(Color) */ protected Color textSelectionColor; /** - * textNonSelectionColor + * The color used for text in non-selected cells. + * + * @see #setTextNonSelectionColor(Color) */ protected Color textNonSelectionColor; /** - * backgroundSelectionColor + * The background color for selected cells. + * + * @see #setBackgroundSelectionColor(Color) */ protected Color backgroundSelectionColor; /** - * backgroundNonSelectionColor + * The background color for non-selected cells. + * + * @see #setBackgroundNonSelectionColor(Color) */ protected Color backgroundNonSelectionColor; /** - * borderSelectionColor + * The border color for selected tree cells. + * + * @see #setBorderSelectionColor(Color) */ protected Color borderSelectionColor; - // ------------------------------------------------------------- - // Initialization --------------------------------------------- - // ------------------------------------------------------------- - /** - * Constructor DefaultTreeCellRenderer + * Creates a new tree cell renderer with defaults appropriate for the + * current {@link LookAndFeel}. */ public DefaultTreeCellRenderer() { @@ -138,19 +149,17 @@ public class DefaultTreeCellRenderer setTextNonSelectionColor(UIManager.getColor("Tree.textForeground")); setTextSelectionColor(UIManager.getColor("Tree.selectionForeground")); - setBackgroundNonSelectionColor(UIManager.getColor("Tree.nonSelectionBackground")); + setBackgroundNonSelectionColor(UIManager.getColor("Tree.textBackground")); setBackgroundSelectionColor(UIManager.getColor("Tree.selectionBackground")); setBorderSelectionColor(UIManager.getColor("Tree.selectionBorderColor")); } - // ------------------------------------------------------------- - // Methods ---------------------------------------------------- - // ------------------------------------------------------------- - /** - * getDefaultOpenIcon + * Returns the default icon for non-leaf tree cells that are open (expanded). + * The icon is fetched from the defaults table for the current + * {@link LookAndFeel} using the key <code>Tree.openIcon</code>. * - * @returns Icon + * @return The default icon. */ public Icon getDefaultOpenIcon() { @@ -158,9 +167,11 @@ public class DefaultTreeCellRenderer } /** - * getDefaultClosedIcon + * Returns the default icon for non-leaf tree cells that are closed (not + * expanded). The icon is fetched from the defaults table for the current + * {@link LookAndFeel} using the key <code>Tree.closedIcon</code>. * - * @returns Icon + * @return The default icon. */ public Icon getDefaultClosedIcon() { @@ -168,9 +179,11 @@ public class DefaultTreeCellRenderer } /** - * getDefaultLeafIcon + * Returns the default icon for leaf tree cells. The icon is fetched from + * the defaults table for the current {@link LookAndFeel} using the key + * <code>Tree.leafIcon</code>. * - * @returns Icon + * @return The default icon. */ public Icon getDefaultLeafIcon() { @@ -178,20 +191,25 @@ public class DefaultTreeCellRenderer } /** - * setOpenIcon + * Sets the icon to be displayed for non-leaf nodes that are open (expanded). + * Set this to <code>null</code> if no icon is required. + * + * @param icon the icon (<code>null</code> permitted). * - * @param i - * the icon. + * @see #getOpenIcon() */ - public void setOpenIcon(Icon i) + public void setOpenIcon(Icon icon) { - openIcon = i; + openIcon = icon; } /** - * getOpenIcon + * Returns the icon displayed for non-leaf nodes that are open (expanded). + * The default value is initialised from the {@link LookAndFeel}. * - * @returns Icon + * @return The open icon (possibly <code>null</code>). + * + * @see #setOpenIcon(Icon) */ public Icon getOpenIcon() { @@ -199,20 +217,25 @@ public class DefaultTreeCellRenderer } /** - * setClosedIcon + * Sets the icon to be displayed for non-leaf nodes that are closed. Set + * this to <code>null</code> if no icon is required. + * + * @param icon the icon (<code>null</code> permitted). * - * @param i - * the icon. + * @see #getClosedIcon() */ - public void setClosedIcon(Icon i) + public void setClosedIcon(Icon icon) { - closedIcon = i; + closedIcon = icon; } /** - * getClosedIcon + * Returns the icon displayed for non-leaf nodes that are closed. The + * default value is initialised from the {@link LookAndFeel}. + * + * @return The closed icon (possibly <code>null</code>). * - * @returns Icon + * @see #setClosedIcon(Icon) */ public Icon getClosedIcon() { @@ -220,20 +243,25 @@ public class DefaultTreeCellRenderer } /** - * setLeafIcon + * Sets the icon to be displayed for leaf nodes. Set this to + * <code>null</code> if no icon is required. * - * @param i - * the icon. + * @param icon the icon (<code>null</code> permitted). + * + * @see #getLeafIcon() */ - public void setLeafIcon(Icon i) + public void setLeafIcon(Icon icon) { - leafIcon = i; + leafIcon = icon; } /** - * getLeafIcon + * Returns the icon displayed for leaf nodes. The default value is + * initialised from the {@link LookAndFeel}. + * + * @return The leaf icon (possibly <code>null</code>). * - * @returns Icon + * @see #setLeafIcon(Icon) */ public Icon getLeafIcon() { @@ -241,10 +269,11 @@ public class DefaultTreeCellRenderer } /** - * setTextSelectionColor + * Sets the text color for tree cells that are selected. * - * @param c - * the color. + * @param c the color (<code>null</code> permitted). + * + * @see #getTextSelectionColor() */ public void setTextSelectionColor(Color c) { @@ -252,9 +281,13 @@ public class DefaultTreeCellRenderer } /** - * getTextSelectionColor + * Returns the text color for tree cells that are selected. + * The default value is obtained from the {@link LookAndFeel} defaults + * table using the key <code>Tree.selectionForeground</code>. + * + * @return The text color for tree cells that are selected. * - * @returns Color + * @see #setTextSelectionColor(Color) */ public Color getTextSelectionColor() { @@ -262,10 +295,11 @@ public class DefaultTreeCellRenderer } /** - * setTextNonSelectionColor + * Sets the text color for tree cells that are not selected. + * + * @param c the color (<code>null</code> permitted). * - * @param c - * the color. + * @see #getTextNonSelectionColor() */ public void setTextNonSelectionColor(Color c) { @@ -273,9 +307,13 @@ public class DefaultTreeCellRenderer } /** - * getTextNonSelectionColor + * Returns the text color for tree cells that are not selected. + * The default value is obtained from the {@link LookAndFeel} defaults + * table using the key <code>Tree.selectionForeground</code>. * - * @returns Color + * @return The background color for tree cells that are not selected. + * + * @see #setTextgroundNonSelectionColor(Color) */ public Color getTextNonSelectionColor() { @@ -283,10 +321,11 @@ public class DefaultTreeCellRenderer } /** - * setBackgroundSelectionColor + * Sets the background color for tree cells that are selected. + * + * @param c the color (<code>null</code> permitted). * - * @param c - * the color. + * @see #getBackgroundSelectionColor() */ public void setBackgroundSelectionColor(Color c) { @@ -294,9 +333,13 @@ public class DefaultTreeCellRenderer } /** - * getBackgroundSelectionColor + * Returns the background color for tree cells that are selected. + * The default value is obtained from the {@link LookAndFeel} defaults + * table using the key <code>Tree.selectionBackground</code>. * - * @returns Color + * @return The background color for tree cells that are selected. + * + * @see #setBackgroundSelectionColor(Color) */ public Color getBackgroundSelectionColor() { @@ -304,10 +347,11 @@ public class DefaultTreeCellRenderer } /** - * setBackgroundNonSelectionColor + * Sets the background color for tree cells that are not selected. + * + * @param c the color (<code>null</code> permitted). * - * @param c - * the color. + * @see #getBackgroundNonSelectionColor() */ public void setBackgroundNonSelectionColor(Color c) { @@ -315,9 +359,13 @@ public class DefaultTreeCellRenderer } /** - * getBackgroundNonSelectionColor + * Returns the background color for tree cells that are not selected. + * The default value is obtained from the {@link LookAndFeel} defaults + * table using the key <code>Tree.textBackground</code>. + * + * @return The background color for tree cells that are not selected. * - * @returns Color + * @see #setBackgroundNonSelectionColor(Color) */ public Color getBackgroundNonSelectionColor() { @@ -325,10 +373,11 @@ public class DefaultTreeCellRenderer } /** - * setBorderSelectionColor + * Sets the border color for tree cells that are selected. * - * @param c - * the color. + * @param c the color (<code>null</code> permitted). + * + * @see #getBorderSelectionColor() */ public void setBorderSelectionColor(Color c) { @@ -336,9 +385,13 @@ public class DefaultTreeCellRenderer } /** - * getBorderSelectionColor + * Returns the border color for tree cells that are selected. + * The default value is obtained from the {@link LookAndFeel} defaults + * table using the key <code>Tree.selectionBorderColor</code>. + * + * @return The border color for tree cells that are selected. * - * @returns Color + * @see #setBorderSelectionColor(Color) */ public Color getBorderSelectionColor() { @@ -346,10 +399,11 @@ public class DefaultTreeCellRenderer } /** - * setFont + * Sets the font. * - * @param f - * the font. + * @param f the font. + * + * @see #getFont() */ public void setFont(Font f) { @@ -359,10 +413,9 @@ public class DefaultTreeCellRenderer } /** - * setBackground + * Sets the background color. * - * @param c - * the color. + * @param c the color. */ public void setBackground(Color c) { @@ -372,23 +425,18 @@ public class DefaultTreeCellRenderer } /** - * getTreeCellRendererComponent + * Returns a component (in fact <code>this</code>) that can be used to + * render a tree cell with the specified state. + * + * @param tree the tree that the cell belongs to. + * @param val the cell value. + * @param selected indicates whether or not the cell is selected. + * @param expanded indicates whether or not the cell is expanded. + * @param leaf indicates whether or not the cell is a leaf in the tree. + * @param row the row index. + * @param hasFocus indicates whether or not the cell has the focus. * - * @param tree - * TODO - * @param val - * TODO - * @param selected - * TODO - * @param expanded - * TODO - * @param leaf - * TODO - * @param row - * TODO - * @param hasFocus - * TODO - * @returns Component + * @return <code>this</code>. */ public Component getTreeCellRendererComponent(JTree tree, Object val, boolean selected, @@ -433,9 +481,11 @@ public class DefaultTreeCellRenderer } /** - * getFont + * Returns the current font. + * + * @return The current font. * - * @return the current Font + * @see #setFont(Font) */ public Font getFont() { @@ -460,7 +510,7 @@ public class DefaultTreeCellRenderer insets = border.getBorderInsets(this); FontMetrics fm = getToolkit().getFontMetrics(getFont()); - SwingUtilities.layoutCompoundLabel(((JLabel) this), fm, getText(), + SwingUtilities.layoutCompoundLabel((JLabel) this, fm, getText(), getIcon(), getVerticalAlignment(), getHorizontalAlignment(), getVerticalTextPosition(), @@ -471,7 +521,7 @@ public class DefaultTreeCellRenderer Rectangle bounds = getBounds(ir); bounds.x = tr.x - insets.left; - bounds.width = tr.width + insets.left+insets.right; + bounds.width = tr.width + insets.left + insets.right; g.setColor(super.getBackground()); g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height); @@ -491,9 +541,9 @@ public class DefaultTreeCellRenderer } /** - * returns the preferred size of the cell. + * Returns the preferred size of the cell. * - * @returns Dimension + * @return The preferred size of the cell. */ public Dimension getPreferredSize() { @@ -502,7 +552,7 @@ public class DefaultTreeCellRenderer Rectangle tr = new Rectangle(); FontMetrics fm = getToolkit().getFontMetrics(getFont()); - SwingUtilities.layoutCompoundLabel(((JLabel) this), fm, getText(), + SwingUtilities.layoutCompoundLabel((JLabel) this, fm, getText(), getIcon(), getVerticalAlignment(), getHorizontalAlignment(), getVerticalTextPosition(), @@ -510,182 +560,156 @@ public class DefaultTreeCellRenderer getIconTextGap()); Rectangle cr = ir.union(tr); return new Dimension(cr.width, cr.height); - } // getPreferredSize() + } /** - * validate + * For performance reasons, this method is overridden to do nothing. */ public void validate() { // Overridden for performance reasons. - } // validate() + } /** - * revalidate + * For performance reasons, this method is overridden to do nothing. */ public void revalidate() { // Overridden for performance reasons. - } // revalidate() + } /** - * repaint + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO - * @param value3 - * TODO - * @param value4 - * TODO + * @param tm ignored + * @param x coordinate of the region to mark as dirty + * @param y coordinate of the region to mark as dirty + * @param width dimension of the region to mark as dirty + * @param height dimension of the region to mark as dirty */ - public void repaint(long value0, int value1, int value2, int value3, - int value4) + public void repaint(long tm, int x, int y, int width, int height) { // Overridden for performance reasons. - } // repaint() + } /** - * repaint + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO + * @param area the area to repaint. */ - public void repaint(Rectangle value0) + public void repaint(Rectangle area) { // Overridden for performance reasons. - } // repaint() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - protected void firePropertyChange(String value0, Object value1, Object value2) + protected void firePropertyChange(String name, Object oldValue, + Object newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, byte value1, byte value2) + public void firePropertyChange(String name, byte oldValue, byte newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, char value1, char value2) + public void firePropertyChange(String name, char oldValue, char newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, short value1, short value2) + public void firePropertyChange(String name, short oldValue, short newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, int value1, int value2) + public void firePropertyChange(String name, int oldValue, int newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, long value1, long value2) + public void firePropertyChange(String name, long oldValue, long newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 - * TODO - * @param value1 - * TODO - * @param value2 - * TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, float value1, float value2) + public void firePropertyChange(String name, float oldValue, float newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param value0 TODO - * @param value1 TODO - * @param value2 TODO + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String value0, double value1, double value2) + public void firePropertyChange(String name, double oldValue, double newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } /** - * firePropertyChange + * For performance reasons, this method is overridden to do nothing. * - * @param name the property name. - * @param v1 the old value. - * @param v2 the new value. + * @param name the property name. + * @param oldValue the old value. + * @param newValue the new value. */ - public void firePropertyChange(String name, boolean v1, boolean v2) + public void firePropertyChange(String name, boolean oldValue, + boolean newValue) { // Overridden for performance reasons. - } // firePropertyChange() + } -} // DefaultTreeCellRenderer +} diff --git a/libjava/classpath/javax/swing/tree/DefaultTreeModel.java b/libjava/classpath/javax/swing/tree/DefaultTreeModel.java index c1ca679d006..5819d15b627 100644 --- a/libjava/classpath/javax/swing/tree/DefaultTreeModel.java +++ b/libjava/classpath/javax/swing/tree/DefaultTreeModel.java @@ -1,5 +1,5 @@ /* DefaultTreeModel.java -- - Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,8 +37,6 @@ exception statement from your version. */ package javax.swing.tree; -import gnu.classpath.NotImplementedException; - import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; @@ -62,7 +60,7 @@ public class DefaultTreeModel /** * root */ - protected TreeNode root = null; + protected TreeNode root; /** * listenerList diff --git a/libjava/classpath/javax/swing/tree/DefaultTreeSelectionModel.java b/libjava/classpath/javax/swing/tree/DefaultTreeSelectionModel.java index 0676f7ec8f4..0684ef76659 100644 --- a/libjava/classpath/javax/swing/tree/DefaultTreeSelectionModel.java +++ b/libjava/classpath/javax/swing/tree/DefaultTreeSelectionModel.java @@ -147,9 +147,9 @@ public class DefaultTreeSelectionModel // Clone the selection and the list selection model. cloned.selection = (TreePath[]) selection.clone(); - if (listSelectionModel!=null) - cloned.listSelectionModel = - (DefaultListSelectionModel) listSelectionModel.clone(); + if (listSelectionModel != null) + cloned.listSelectionModel + = (DefaultListSelectionModel) listSelectionModel.clone(); return cloned; } @@ -171,7 +171,7 @@ public class DefaultTreeSelectionModel b.append(getRow(selection[i])); b.append(' '); } - b.append(", lead "+getLeadSelectionRow()); + b.append(", lead " + getLeadSelectionRow()); return b.toString(); } } @@ -360,7 +360,7 @@ public class DefaultTreeSelectionModel } } - if (path!=leadPath) + if (path != leadPath) { TreePath oldLead = leadPath; leadPath = path; @@ -445,7 +445,7 @@ public class DefaultTreeSelectionModel // If the removed path was the lead path, set the lead path to null. TreePath oldLead = leadPath; - if (path!=null && leadPath!=null && path.equals(leadPath)) + if (path != null && leadPath != null && path.equals(leadPath)) leadPath = null; fireValueChanged(new TreeSelectionEvent(this, path, false, oldLead, @@ -564,7 +564,7 @@ public class DefaultTreeSelectionModel */ public boolean isSelectionEmpty() { - return ((selection == null) || (selection.length == 0)); + return (selection == null) || (selection.length == 0); } /** @@ -841,7 +841,7 @@ public class DefaultTreeSelectionModel if (leadIndex > 0 && leadIndex < selection.length) setSelectionPath(selection[leadIndex]); else - setSelectionPath(selection[selection.length -1]); + setSelectionPath(selection[selection.length - 1]); } /** @@ -882,7 +882,7 @@ public class DefaultTreeSelectionModel for (int i = 1; i < rows.length; i++) { - if (rows[i-1] != rows[i] - 1) + if (rows[i - 1] != rows[i] - 1) return false; } return true; diff --git a/libjava/classpath/javax/swing/tree/ExpandVetoException.java b/libjava/classpath/javax/swing/tree/ExpandVetoException.java index 1c8827c8a6c..57531d54200 100644 --- a/libjava/classpath/javax/swing/tree/ExpandVetoException.java +++ b/libjava/classpath/javax/swing/tree/ExpandVetoException.java @@ -1,5 +1,5 @@ /* ExpandVetoException.java -- - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,47 +37,40 @@ exception statement from your version. */ package javax.swing.tree; -// Imports import javax.swing.event.TreeExpansionEvent; /** * ExpandVetoException * @author Andrew Selkirk */ -public class ExpandVetoException extends Exception { - - //------------------------------------------------------------- - // Variables -------------------------------------------------- - //------------------------------------------------------------- - - /** - * event - */ - protected TreeExpansionEvent event = null; - - - //------------------------------------------------------------- - // Initialization --------------------------------------------- - //------------------------------------------------------------- - - /** - * Constructor ExpandVetoException - * @param event Tree Expansion Event - */ - public ExpandVetoException(TreeExpansionEvent event) { - super(); - this.event = event; - } // ExpandVetoException() - - /** - * Constructor ExpandVetoException - * @param event Tree Expansion Event - * @param message Message - */ - public ExpandVetoException(TreeExpansionEvent event, String message) { - super(message); - this.event = event; - } // ExpandVetoException() - - -} // ExpandVetoException +public class ExpandVetoException extends Exception +{ + + /** + * event + */ + protected TreeExpansionEvent event; + + + /** + * Constructor ExpandVetoException + * @param event Tree Expansion Event + */ + public ExpandVetoException(TreeExpansionEvent event) + { + super(); + this.event = event; + } + + /** + * Constructor ExpandVetoException + * @param event Tree Expansion Event + * @param message Message + */ + public ExpandVetoException(TreeExpansionEvent event, String message) + { + super(message); + this.event = event; + } + +} diff --git a/libjava/classpath/javax/swing/tree/FixedHeightLayoutCache.java b/libjava/classpath/javax/swing/tree/FixedHeightLayoutCache.java index 96655ce75fd..a699a6c9f21 100644 --- a/libjava/classpath/javax/swing/tree/FixedHeightLayoutCache.java +++ b/libjava/classpath/javax/swing/tree/FixedHeightLayoutCache.java @@ -163,7 +163,7 @@ public class FixedHeightLayoutCache { // This method may be called in the context when the tree rectangle is // not known. To work around this, it is assumed near infinitely large. - if (bounds==null) + if (bounds == null) bounds = getNodeDimensions(node, row, depth, isExpanded, new Rectangle()); return bounds; @@ -266,7 +266,7 @@ public class FixedHeightLayoutCache if (expanded.contains(node)) { int sc = treeModel.getChildCount(node); - int deeper = depth+1; + int deeper = depth + 1; for (int i = 0; i < sc; i++) { Object child = treeModel.getChild(node, i); @@ -283,7 +283,7 @@ public class FixedHeightLayoutCache public void invalidatePathBounds(TreePath path) { NodeRecord r = (NodeRecord) nodes.get(path.getLastPathComponent()); - if (r!=null) + if (r != null) r.bounds = null; } diff --git a/libjava/classpath/javax/swing/tree/RowMapper.java b/libjava/classpath/javax/swing/tree/RowMapper.java index 690efb77e32..59eb1e3a9fa 100644 --- a/libjava/classpath/javax/swing/tree/RowMapper.java +++ b/libjava/classpath/javax/swing/tree/RowMapper.java @@ -1,5 +1,5 @@ /* RowMapper.java -- - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -41,14 +41,14 @@ package javax.swing.tree; * RowMapper public interface * @author Andrew Selkirk */ -public interface RowMapper { +public interface RowMapper +{ - /** - * getRowsForPaths - * @param path TreePath - * @return TODO - */ - int[] getRowsForPaths(TreePath[] path); + /** + * getRowsForPaths + * @param path TreePath + * @return TODO + */ + int[] getRowsForPaths(TreePath[] path); - -} // RowMapper +}
\ No newline at end of file diff --git a/libjava/classpath/javax/swing/tree/TreeNode.java b/libjava/classpath/javax/swing/tree/TreeNode.java index 94f2c69f895..ae7380c703b 100644 --- a/libjava/classpath/javax/swing/tree/TreeNode.java +++ b/libjava/classpath/javax/swing/tree/TreeNode.java @@ -45,7 +45,8 @@ import java.util.Enumeration; * * @author Andrew Selkirk */ -public interface TreeNode { +public interface TreeNode +{ /** * Returns the parent node for this tree node, or <code>null</code> if this diff --git a/libjava/classpath/javax/swing/tree/TreePath.java b/libjava/classpath/javax/swing/tree/TreePath.java index 4671c4be54b..93b59b07edf 100644 --- a/libjava/classpath/javax/swing/tree/TreePath.java +++ b/libjava/classpath/javax/swing/tree/TreePath.java @@ -262,14 +262,16 @@ public class TreePath implements Serializable if (path == null) return false; int count = getPathCount(); - if (path.getPathCount() < count) + int otherPathLength = path.getPathCount(); + if (otherPathLength < count) return false; - for (int i = 0; i < count; i++) - { - if (!this.path[i].equals(path.getPathComponent(i))) - return false; - } - return true; + while (otherPathLength > count) + { + otherPathLength--; + path = path.getParentPath(); + } + + return equals(path); } /** diff --git a/libjava/classpath/javax/swing/tree/TreeSelectionModel.java b/libjava/classpath/javax/swing/tree/TreeSelectionModel.java index 4072ccc64c5..9bdc99be350 100644 --- a/libjava/classpath/javax/swing/tree/TreeSelectionModel.java +++ b/libjava/classpath/javax/swing/tree/TreeSelectionModel.java @@ -1,5 +1,5 @@ /* TreeSelectionModel.java -- - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -46,39 +46,67 @@ import javax.swing.event.TreeSelectionListener; * TreeSelectionModel public interface * @author Andrew Selkirk */ -public interface TreeSelectionModel { - - int SINGLE_TREE_SELECTION = 1; - int CONTIGUOUS_TREE_SELECTION = 2; - int DISCONTIGUOUS_TREE_SELECTION = 4; - - void setSelectionMode(int mode); - int getSelectionMode(); - void setSelectionPath(TreePath path); - void setSelectionPaths(TreePath[] paths); - void addSelectionPath(TreePath path); - void addSelectionPaths(TreePath[] paths); - void removeSelectionPath(TreePath path); - void removeSelectionPaths(TreePath[] paths); - TreePath getSelectionPath(); - TreePath[] getSelectionPaths(); - int getSelectionCount(); - boolean isPathSelected(TreePath path); - boolean isSelectionEmpty(); - void clearSelection(); - void setRowMapper(RowMapper newMapper); - RowMapper getRowMapper(); - int[] getSelectionRows(); - int getMinSelectionRow(); - int getMaxSelectionRow(); - boolean isRowSelected(int row); - void resetRowSelection(); - int getLeadSelectionRow(); - TreePath getLeadSelectionPath(); - void addPropertyChangeListener(PropertyChangeListener listener); - void removePropertyChangeListener(PropertyChangeListener listener); - void addTreeSelectionListener(TreeSelectionListener x); - void removeTreeSelectionListener(TreeSelectionListener x); - - -} // TreeSelectionModel +public interface TreeSelectionModel +{ + + int SINGLE_TREE_SELECTION = 1; + + int CONTIGUOUS_TREE_SELECTION = 2; + + int DISCONTIGUOUS_TREE_SELECTION = 4; + + void setSelectionMode(int mode); + + int getSelectionMode(); + + void setSelectionPath(TreePath path); + + void setSelectionPaths(TreePath[] paths); + + void addSelectionPath(TreePath path); + + void addSelectionPaths(TreePath[] paths); + + void removeSelectionPath(TreePath path); + + void removeSelectionPaths(TreePath[] paths); + + TreePath getSelectionPath(); + + TreePath[] getSelectionPaths(); + + int getSelectionCount(); + + boolean isPathSelected(TreePath path); + + boolean isSelectionEmpty(); + + void clearSelection(); + + void setRowMapper(RowMapper newMapper); + + RowMapper getRowMapper(); + + int[] getSelectionRows(); + + int getMinSelectionRow(); + + int getMaxSelectionRow(); + + boolean isRowSelected(int row); + + void resetRowSelection(); + + int getLeadSelectionRow(); + + TreePath getLeadSelectionPath(); + + void addPropertyChangeListener(PropertyChangeListener listener); + + void removePropertyChangeListener(PropertyChangeListener listener); + + void addTreeSelectionListener(TreeSelectionListener x); + + void removeTreeSelectionListener(TreeSelectionListener x); + +} diff --git a/libjava/classpath/javax/swing/tree/VariableHeightLayoutCache.java b/libjava/classpath/javax/swing/tree/VariableHeightLayoutCache.java index a9ed552e635..0a787f7ca8c 100644 --- a/libjava/classpath/javax/swing/tree/VariableHeightLayoutCache.java +++ b/libjava/classpath/javax/swing/tree/VariableHeightLayoutCache.java @@ -162,7 +162,7 @@ public class VariableHeightLayoutCache { // This method may be called in the context when the tree rectangle is // not known. To work around this, it is assumed near infinitely large. - if (bounds==null) + if (bounds == null) bounds = getNodeDimensions(node, row, depth, isExpanded, new Rectangle()); return bounds; @@ -232,6 +232,9 @@ public class VariableHeightLayoutCache totalHeight = maximalWidth = 0; + if (treeModel == null) + return; + Object root = treeModel.getRoot(); if (rootVisible) @@ -265,7 +268,7 @@ public class VariableHeightLayoutCache if (expanded.contains(node)) { int sc = treeModel.getChildCount(node); - int deeper = depth+1; + int deeper = depth + 1; for (int i = 0; i < sc; i++) { Object child = treeModel.getChild(node, i); @@ -282,7 +285,7 @@ public class VariableHeightLayoutCache public void invalidatePathBounds(TreePath path) { NodeRecord r = (NodeRecord) nodes.get(path.getLastPathComponent()); - if (r!=null) + if (r != null) r.bounds = null; } @@ -555,9 +558,16 @@ public class VariableHeightLayoutCache public void setModel(TreeModel newModel) { treeModel = newModel; - // The root node is expanded by default. - expanded.add(treeModel.getRoot()); - dirty = true; + // We need to clear the table and update the layout, + // so that we don't end up with wrong data in the tables. + expanded.clear(); + update(); + if (treeModel != null) + { + // The root node is expanded by default. + expanded.add(treeModel.getRoot()); + dirty = true; + } } /** |