[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath : swing fixes

Kaffe CVS cvs-commits at kaffe.org
Sun Aug 21 12:11:57 PDT 2005


PatchSet 6863 
Date: 2005/08/21 19:06:15
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath : swing fixes

Members: 
	ChangeLog:1.4385->1.4386 
	libraries/javalib/Makefile.am:1.384->1.385 
	libraries/javalib/Makefile.in:1.474->1.475 
	libraries/javalib/all.files:1.154->1.155 
	libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.19->1.20 
	libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java:1.5->1.6 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4385 kaffe/ChangeLog:1.4386
--- kaffe/ChangeLog:1.4385	Sun Aug 21 18:44:09 2005
+++ kaffe/ChangeLog	Sun Aug 21 19:06:15 2005
@@ -2,6 +2,56 @@
 
 	Resynced with GNU Classpath.
 
+	2005-08-19  Tom Tromey  <tromey at redhat.com>
+
+        * javax/swing/tree/DefaultTreeCellEditor.java: Removed erroneous
+        import.
+
+	2005-08-19  Tom Tromey  <tromey at redhat.com>
+
+        * javax/swing/text/AbstractWriter.java: New file.
+        * javax/swing/text/ElementIterator.java: New file.
+
+	2005-08-19  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/plaf/basic/BasicTreeUI.java
+        (getCellBounds): No need to call getFont twice. This
+        is fixed.
+        * javax/swing/tree/DefaultTreeCellEditor.java:
+        Added API documentation for all fields.
+        (getPreferredSize): Implemented.
+        (paint): Implemented.
+        (doLayout): Implemented.
+        (getFont): Implemented.
+        (getPreferredSize): Implemented.
+        (DefaultTreeCellEditor): Partially implemented.
+        (DefaultTreeCellEditor): Partially implemented.
+        (setBorderSelectionColor): Implemented.
+        (getBorderSelectionColor): Implemented.
+        (setFont): Implemented.
+        (getFont): Implemented.
+        (getTreeCellEditorComponent): Added API documentation.
+        (getCellEditorValue): Added API documentation.
+        (isCellEditable): Added API documentation.
+        (shouldSelectCell): Added API documentation.
+        (stopCellEditing): Added API documentation.
+        (cancelCellEditing): Added API documentation.
+        (valueChanged): Added API documentation.
+        (actionPerformed): Added API documentation.
+        (setTree): Implemented.
+        (shouldStartEditingTimer): Added API documentation.
+        (startEditingTimer): Added API documentation.
+        (canEditImmediately): Added API documentation.
+        (inHitRegion): Added API documentation.
+        (determineOffset): Added API documentation.
+        (prepareForEditing): Added API documentation.
+        (createContainer): Added API documentation.
+        (createTreeCellEditor): Added API documentation.
+
+2005-08-21  Dalibor Topic  <robilad at kaffe.org>
+
+	Resynced with GNU Classpath.
+
 	2005-08-20  Thomas Fitzsimmons  <fitzsim at redhat.com>
 
         * native/jni/gtk-peer/gtk_jawt.c
Index: kaffe/libraries/javalib/Makefile.am
diff -u kaffe/libraries/javalib/Makefile.am:1.384 kaffe/libraries/javalib/Makefile.am:1.385
--- kaffe/libraries/javalib/Makefile.am:1.384	Fri Aug 19 18:40:40 2005
+++ kaffe/libraries/javalib/Makefile.am	Sun Aug 21 19:06:18 2005
@@ -4012,6 +4012,7 @@
 	javax/swing/table/TableModel.java
 javax_swing_text_SRCS = \
 	javax/swing/text/AbstractDocument.java \
+	javax/swing/text/AbstractWriter.java \
 	javax/swing/text/AttributeSet.java \
 	javax/swing/text/BadLocationException.java \
 	javax/swing/text/BoxView.java \
@@ -4029,6 +4030,7 @@
 	javax/swing/text/DocumentFilter.java \
 	javax/swing/text/EditorKit.java \
 	javax/swing/text/Element.java \
+	javax/swing/text/ElementIterator.java \
 	javax/swing/text/FieldView.java \
 	javax/swing/text/FlowView.java \
 	javax/swing/text/GapContent.java \
Index: kaffe/libraries/javalib/Makefile.in
diff -u kaffe/libraries/javalib/Makefile.in:1.474 kaffe/libraries/javalib/Makefile.in:1.475
--- kaffe/libraries/javalib/Makefile.in:1.474	Fri Aug 19 18:40:42 2005
+++ kaffe/libraries/javalib/Makefile.in	Sun Aug 21 19:06:19 2005
@@ -4596,6 +4596,7 @@
 
 javax_swing_text_SRCS = \
 	javax/swing/text/AbstractDocument.java \
+	javax/swing/text/AbstractWriter.java \
 	javax/swing/text/AttributeSet.java \
 	javax/swing/text/BadLocationException.java \
 	javax/swing/text/BoxView.java \
@@ -4613,6 +4614,7 @@
 	javax/swing/text/DocumentFilter.java \
 	javax/swing/text/EditorKit.java \
 	javax/swing/text/Element.java \
+	javax/swing/text/ElementIterator.java \
 	javax/swing/text/FieldView.java \
 	javax/swing/text/FlowView.java \
 	javax/swing/text/GapContent.java \
Index: kaffe/libraries/javalib/all.files
diff -u kaffe/libraries/javalib/all.files:1.154 kaffe/libraries/javalib/all.files:1.155
--- kaffe/libraries/javalib/all.files:1.154	Fri Aug 19 01:27:57 2005
+++ kaffe/libraries/javalib/all.files	Sun Aug 21 19:06:20 2005
@@ -3413,6 +3413,7 @@
 javax/swing/table/TableColumnModel.java
 javax/swing/table/TableModel.java
 javax/swing/text/AbstractDocument.java
+javax/swing/text/AbstractWriter.java
 javax/swing/text/AttributeSet.java
 javax/swing/text/BadLocationException.java
 javax/swing/text/BoxView.java
@@ -3430,6 +3431,7 @@
 javax/swing/text/DocumentFilter.java
 javax/swing/text/EditorKit.java
 javax/swing/text/Element.java
+javax/swing/text/ElementIterator.java
 javax/swing/text/FieldView.java
 javax/swing/text/FlowView.java
 javax/swing/text/GapContent.java
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.19 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.20
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.19	Fri Aug 19 01:28:02 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java	Sun Aug 21 19:06:22 2005
@@ -2515,7 +2515,7 @@
       {
         String s = cell.toString();
         Font f = tree.getFont();
-        FontMetrics fm = tree.getToolkit().getFontMetrics(tree.getFont());
+        FontMetrics fm = tree.getToolkit().getFontMetrics(f);
 
         if (s != null)
           return new Rectangle(x, y,
Index: kaffe/libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java
diff -u kaffe/libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java:1.5 kaffe/libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java:1.6
--- kaffe/libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java:1.5	Sat Jul 30 16:39:35 2005
+++ kaffe/libraries/javalib/javax/swing/tree/DefaultTreeCellEditor.java	Sun Aug 21 19:06:23 2005
@@ -1,5 +1,5 @@
 /* DefaultTreeCellEditor.java --
-   Copyright (C) 2002, 2004  Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -43,7 +43,10 @@
 import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.FontMetrics;
 import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
@@ -52,8 +55,12 @@
 import java.util.EventObject;
 
 import javax.swing.Icon;
+import javax.swing.JComponent;
 import javax.swing.JTextField;
 import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.event.CellEditorListener;
 import javax.swing.event.EventListenerList;
@@ -90,29 +97,74 @@
     }
 
     /**
-     * getPreferredSize
-     * @return Dimension
+     * Returns the preferred size for the Container.
+     * 
+     * @return Dimension of EditorContainer
      */
     public Dimension getPreferredSize()
     {
-      return null; // TODO
+      Dimension containerSize = super.getPreferredSize();
+      containerSize.width += DefaultTreeCellEditor.this.offset;
+      return containerSize;
     }
 
     /**
-     * paint
-     * @param value0 TODO
+     * Overrides Container.paint to paint the node's icon and use 
+     * the selection color for the background.
+     * 
+     * @param g - the specified Graphics window
      */
-    public void paint(Graphics value0)
+    public void paint(Graphics g)
     {
-      // TODO
+      int textIconGap = 4; // default value
+      Rectangle vr = new Rectangle();
+      Rectangle ir = new Rectangle();
+      Rectangle tr = new Rectangle();
+
+      FontMetrics fm = editingComponent.getToolkit().getFontMetrics(getFont());
+      SwingUtilities.layoutCompoundLabel(((JComponent) editingComponent), fm,
+                                         ((JTextField) editingComponent).getText(),
+                                         editingIcon, (int) CENTER_ALIGNMENT,
+                                         (int) LEFT_ALIGNMENT, (int) CENTER_ALIGNMENT, 
+                                         (int) LEFT_ALIGNMENT, vr, ir, tr, 4);
+
+      Rectangle cr = tr.union(ir);
+      tr.width += offset;
+      // paint icon
+      DefaultTreeCellEditor.this.editingIcon.paintIcon(DefaultTreeCellEditor.this.editingComponent,
+                                                       g, cr.x, cr.y);
+
+      // paint background
+      Insets insets = new Insets(0, 0, 0, 0);
+      Border border = UIManager.getLookAndFeelDefaults().
+                        getBorder("Tree.editorBorder");
+      if (border != null)
+        insets = border.getBorderInsets(this);
+
+      g.setColor(UIManager.getLookAndFeelDefaults().
+                 getColor("Tree.selectionBackground"));
+      g.fillRect(cr.x, cr.y, cr.width, cr.height - insets.top - insets.bottom);
+
+      // paint border
+      if (borderSelectionColor != null)
+        {
+          g.setColor(borderSelectionColor);
+          g.drawRect(cr.x, cr.y, cr.width, cr.height - insets.top
+                                           - insets.bottom);
+        }
+
+      super.paint(g);
     }
 
     /**
-     * doLayout
+     * Lays out this Container. If editing, the editor will be placed 
+     * at offset in the x direction and 0 for y.
      */
     public void doLayout()
     {
-      // TODO
+      if (DefaultTreeCellEditor.this.tree.isEditing())
+        setLocation(offset, 0);
+      super.doLayout();
     }
   }
 
@@ -137,12 +189,22 @@
     }
 
     /**
-     * getFont
-     * @return Font
+     * Gets the font of this component.
+     * @return this component's font; if a font has not been set for 
+     * this component, the font of its parent is returned (if the parent
+     * is not null, otherwise null is returned). 
      */
     public Font getFont()
     {
-      return null; // TODO
+      Font font = super.getFont();
+      if (font == null)
+        {
+          Component parent = getParent();
+          if (parent != null)
+            return parent.getFont();
+          return null;
+        }
+      return font;
     }
 
     /**
@@ -156,102 +218,123 @@
     }
 
     /**
-     * getPreferredSize
-     * @return Dimension
+     * Overrides JTextField.getPreferredSize to return the preferred size 
+     * based on current font, if set, or else use renderer's font.
+     * 
+     * @return the Dimension of this textfield.
      */
     public Dimension getPreferredSize()
     {
-      return null; // TODO
+      String s = getText();
+
+      Font f = getFont();
+      FontMetrics fm = getToolkit().getFontMetrics(f);
+
+      return new Dimension(SwingUtilities.computeStringWidth(fm, s),
+                           fm.getHeight());
     }
   }
 
   private EventListenerList listenerList = new EventListenerList();
 
   /**
-   * realEditor
+   * Editor handling the editing.
    */
   protected TreeCellEditor realEditor;
 
   /**
-   * renderer
+   * Renderer, used to get border and offsets from.
    */
   protected DefaultTreeCellRenderer renderer;
 
   /**
-   * editingContainer
+   * Editing container, will contain the editorComponent.
    */
   protected Container editingContainer;
 
   /**
-   * editingComponent
+   * Component used in editing, obtained from the editingContainer.
    */
   protected transient Component editingComponent;
 
   /**
-   * canEdit
+   * As of Java 2 platform v1.4 this field should no longer be used. 
+   * If you wish to provide similar behavior you should directly 
+   * override isCellEditable.
    */
   protected boolean canEdit;
 
   /**
-   * offset
+   * Used in editing. Indicates x position to place editingComponent.
    */
   protected transient int offset;
 
   /**
-   * tree
+   * JTree instance listening too.
    */
   protected transient JTree tree;
 
   /**
-   * lastPath
+   * Last path that was selected.
    */
   protected transient TreePath lastPath;
 
   /**
-   * timer
+   * Used before starting the editing session.
    */
-  protected transient javax.swing.Timer timer; // TODO
+  protected transient javax.swing.Timer timer;
 
   /**
-   * lastRow
+   * Row that was last passed into getTreeCellEditorComponent.
    */
   protected transient int lastRow;
 
   /**
-   * borderSelectionColor
+   * True if the border selection color should be drawn.
    */
   protected Color borderSelectionColor;
 
   /**
-   * editingIcon
+   * Icon to use when editing.
    */
   protected transient Icon editingIcon;
 
   /**
-   * font
+   * Font to paint with, null indicates font of renderer is to be used.
    */
   protected Font font;
 
   /**
-   * Constructor DefaultTreeCellEditor
-   * @param value0 TODO
-   * @param value1 TODO
-   */
-  public DefaultTreeCellEditor(JTree value0, DefaultTreeCellRenderer value1)
-  {
-    // TODO
+   * Constructs a DefaultTreeCellEditor object for a JTree using the 
+   * specified renderer and a default editor. (Use this constructor 
+   * for normal editing.)
+   * 
+   * @param tree - a JTree object
+   * @param renderer - a DefaultTreeCellRenderer object
+   */
+  public DefaultTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer)
+  {
+    this.tree = tree;
+    this.renderer = renderer;
+    // FIXME: Not fully implemented.
   }
 
   /**
-   * Constructor DefaultTreeCellEditor
-   * @param value0 TODO
-   * @param value1 TODO
-   * @param value2 TODO
-   */
-  public DefaultTreeCellEditor(JTree value0, DefaultTreeCellRenderer value1,
-                               TreeCellEditor value2)
-  {
-    // TODO
+   * Constructs a DefaultTreeCellEditor  object for a JTree using the specified 
+   * renderer and the specified editor. (Use this constructor 
+   * for specialized editing.)
+   * 
+   * @param tree - a JTree object
+   * @param renderer - a DefaultTreeCellRenderer object
+   * @param editor - a TreeCellEditor object
+   */
+  public DefaultTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer,
+                               TreeCellEditor editor)
+  {
+    this.tree = tree;
+    this.renderer = renderer;
+    this.realEditor = editor;
+    // FIXME: Not fully implemented.
   }
 
   /**
@@ -277,61 +360,73 @@
   }
 
   /**
-   * setBorderSelectionColor
-   * @param value0 TODO
+   * Sets the color to use for the border.
+   * @param newColor - the new border color
    */
-  public void setBorderSelectionColor(Color value0)
+  public void setBorderSelectionColor(Color newColor)
   {
-    // TODO
+    this.borderSelectionColor = newColor;
   }
 
   /**
-   * getBorderSelectionColor
+   * Returns the color the border is drawn.
    * @return Color
    */
   public Color getBorderSelectionColor()
   {
-    return null; // TODO
+    return borderSelectionColor;
   }
 
   /**
-   * setFont
-   * @param value0 TODO
+   * Sets the font to edit with. null indicates the renderers 
+   * font should be used. This will NOT override any font you have 
+   * set in the editor the receiver was instantied with. If null for 
+   * an editor was passed in, a default editor will be created that 
+   * will pick up this font.
+   * 
+   * @param font - the editing Font
    */
-  public void setFont(Font value0)
+  public void setFont(Font font)
   {
-    // TODO
+    if (font != null)
+      this.font = font;
+    else
+      this.font = renderer.getFont();
   }
 
   /**
-   * getFont
-   * @return Font
+   * Gets the font used for editing.
+   * 
+   * @return the editing font
    */
   public Font getFont()
   {
-    return null; // TODO
+    return font;
   }
 
   /**
-   * getTreeCellEditorComponent
-   * @param value0 TODO
-   * @param value1 TODO
-   * @param value2 TODO
-   * @param value3 TODO
-   * @param value4 TODO
-   * @param value5 TODO
-   * @return Component
-   */
-  public Component getTreeCellEditorComponent(JTree value0, Object value1,
-                                              boolean value2, boolean value3,
-                                              boolean value4, int value5)
+   * Configures the editor. Passed onto the realEditor.
+   * 
+   * @param tree - the JTree that is asking the editor to edit; this parameter can be null
+   * @param value - the value of the cell to be edited
+   * @param isSelected - true is the cell is to be renderer with selection highlighting
+   * @param expanded - true if the node is expanded
+   * @param leaf - true if the node is a leaf node
+   * @param row - the row index of the node being edited
+   * 
+   * @return the component for editing
+   */
+  public Component getTreeCellEditorComponent(JTree tree, Object value,
+                                              boolean isSelected, boolean expanded,
+                                              boolean leaf, int row)
   {
     return null; // TODO
   }
 
   /**
-   * getCellEditorValue
-   * @return Object
+   * Returns the value currently being edited.
+   * 
+   * @return the value currently being edited
    */
   public Object getCellEditorValue()
   {
@@ -339,28 +434,33 @@
   }
 
   /**
-   * isCellEditable
-   * @param value0 TODO
-   * @return boolean
+   * If the realEditor returns true to this message, prepareForEditing  
+   * is messaged and true is returned.
+   * 
+   * @param event - the event the editor should use to consider whether to begin editing or not
+   * @return true if editing can be started
    */
-  public boolean isCellEditable(EventObject value0)
+  public boolean isCellEditable(EventObject event)
   {
     return false; // TODO
   }
 
   /**
-   * shouldSelectCell
-   * @param value0 TODO
-   * @return boolean
+   * Messages the realEditor for the return value.
+   * 
+   * @param event - the event the editor should use to start editing
+   * @return true if the editor would like the editing cell to be 
+   * selected; otherwise returns false
    */
-  public boolean shouldSelectCell(EventObject value0)
+  public boolean shouldSelectCell(EventObject event)
   {
     return false; // TODO
   }
 
   /**
-   * stopCellEditing
-   * @return boolean
+   * If the realEditor will allow editing to stop, the realEditor
+   * is removed and true is returned, otherwise false is returned.
+   * @return     true if editing was stopped; false otherwise
    */
   public boolean stopCellEditing()
   {
@@ -368,7 +468,8 @@
   }
 
   /**
-   * cancelCellEditing
+   * Messages cancelCellEditing to the realEditor and removes it
+   * from this instance.
    */
   public void cancelCellEditing()
   {
@@ -408,44 +509,49 @@
   }
 
   /**
-   * valueChanged
-   * @param value0 TODO
+   * Resets lastPath.
+   * 
+   * @param e - the event that characterizes the change.
    */
-  public void valueChanged(TreeSelectionEvent value0)
+  public void valueChanged(TreeSelectionEvent e)
   {
     // TODO
   }
 
   /**
-   * actionPerformed
-   * @param value0 TODO
+   * Messaged when the timer fires, this will start the editing session.
+   * 
+   * @param @param e - the event that characterizes the action.
    */
-  public void actionPerformed(ActionEvent value0)
+  public void actionPerformed(ActionEvent e)
   {
     // TODO
   }
 
   /**
-   * setTree
-   * @param value0 TODO
+   * Sets the tree currently editing for. This is needed to add a 
+   * selection listener.
+   * 
+   * @param newTree - the new tree to be edited
    */
-  protected void setTree(JTree value0)
+  protected void setTree(JTree newTree)
   {
-    // TODO
+    tree = newTree;
   }
 
   /**
-   * shouldStartEditingTimer
-   * @param value0 TODO
-   * @return boolean
+   * Returns true if event is a MouseEvent  and the click count is 1.
+   * 
+   * @param event - the event being studied
+   * @return true if editing should start
    */
-  protected boolean shouldStartEditingTimer(EventObject value0)
+  protected boolean shouldStartEditingTimer(EventObject event)
   {
     return false; // TODO
   }
 
   /**
-   * startEditingTimer
+   * Starts the editing timer.
    */
   protected void startEditingTimer()
   {
@@ -453,9 +559,12 @@
   }
 
   /**
-   * canEditImmediately
-   * @param value0 TODO
-   * @return boolean
+   * Returns true if event is null, or it is a MouseEvent with 
+   * a click count > 2 and inHitRegion returns true.
+   * 
+   * @param event - the event being studied
+   * @return true if event is null, or it is a MouseEvent with 
+   * a click count > 2 and inHitRegion returns true 
    */
   protected boolean canEditImmediately(EventObject value0)
   {
@@ -463,33 +572,41 @@
   }
 
   /**
-   * inHitRegion
-   * @param value0 TODO
-   * @param value1 TODO
-   * @return boolean
+   * Returns true if the passed in location is a valid mouse location 
+   * to start editing from. This is implemented to return false if x is
+   * less than or equal to the width of the icon and icon 
+   * gap displayed by the renderer. In other words this returns true if 
+   * the user clicks over the text part displayed by the renderer, and 
+   * false otherwise.
+   * 
+   * @param x - the x-coordinate of the point
+   * @param y - the y-coordinate of the point
+   * 
+   * @return true if the passed in location is a valid mouse location
    */
-  protected boolean inHitRegion(int value0, int value1)
+  protected boolean inHitRegion(int x, int y)
   {
     return false; // TODO
   }
 
   /**
    * determineOffset
-   * @param value0 TODO
-   * @param value1 TODO
-   * @param value2 TODO
-   * @param value3 TODO
-   * @param value4 TODO
-   * @param value5 TODO
+   * @param tree -
+   * @param value - 
+   * @param isSelected - 
+   * @param expanded - 
+   * @param leaf - 
+   * @param row - 
    */
-  protected void determineOffset(JTree value0, Object value1, boolean value2,
-                                 boolean value3, boolean value4, int value5)
+  protected void determineOffset(JTree tree, Object value, boolean isSelected,
+                                 boolean expanded, boolean leaf, int row)
   {
     // TODO
   }
 
   /**
-   * prepareForEditing
+   * Invoked just before editing is to start. Will add the 
+   * editingComponent to the editingContainer.
    */
   protected void prepareForEditing()
   {
@@ -497,8 +614,9 @@
   }
 
   /**
-   * createContainer
-   * @return Container
+   * Creates the container to manage placement of editingComponent.
+   * 
+   * @return the container to manage the placement of the editingComponent.
    */
   protected Container createContainer()
   {
@@ -506,8 +624,10 @@
   }
 
   /**
-   * createTreeCellEditor
-   * @return TreeCellEditor
+   * This is invoked if a TreeCellEditor is not supplied in the constructor. 
+   * It returns a TextField editor.
+   * 
+   * @return a new TextField editor
    */
   protected TreeCellEditor createTreeCellEditor()
   {




More information about the kaffe mailing list