[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