PatchSet 6812 
Date: 2005/08/11 01:18:40
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath: corba and swing fixes

Members: 
        ChangeLog:1.4337->1.4338 
        libraries/javalib/Makefile.am:1.379->1.380 
        libraries/javalib/Makefile.in:1.469->1.470 
        libraries/javalib/all.files:1.149->1.150 
        libraries/javalib/java/awt/Container.java:1.37->1.38 
        libraries/javalib/javax/swing/DefaultCellEditor.java:1.6->1.7 
        libraries/javalib/javax/swing/JTable.java:1.26->1.27 
        libraries/javalib/javax/swing/JTree.java:1.25->1.26 
        libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java:1.6->1.7 
        libraries/javalib/javax/swing/plaf/basic/BasicTableUI.java:1.11->1.12 
        libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.15->1.16 
        
libraries/javalib/javax/swing/plaf/metal/MetalLookAndFeel.java:1.17->1.18 
        
libraries/javalib/javax/swing/table/DefaultTableCellRenderer.java:1.7->1.8 
        
libraries/javalib/javax/swing/tree/DefaultTreeCellRenderer.java:1.9->1.10 
        libraries/javalib/javax/swing/tree/DefaultTreeModel.java:1.7->1.8 
        libraries/javalib/org/omg/CORBA/package.html:1.4->1.5 
        libraries/javalib/org/omg/DynamicAny/_DynAnyFactoryStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynAnyStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynArrayStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynEnumStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynFixedStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynSequenceStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynStructStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynUnionStub.java:1.1->1.2 
        libraries/javalib/org/omg/DynamicAny/_DynValueStub.java:1.1->1.2 
        
libraries/javalib/org/omg/PortableInterceptor/Interceptor.java:INITIAL->1.1 
        
libraries/javalib/org/omg/PortableInterceptor/InterceptorOperations.java:INITIAL->1.1
 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4337 kaffe/ChangeLog:1.4338
--- kaffe/ChangeLog:1.4337      Wed Aug 10 23:13:54 2005
+++ kaffe/ChangeLog     Thu Aug 11 01:18:40 2005
@@ -1,3 +1,169 @@
+2005-08-10  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       Resynced with GNU Classpath.
+
+       2005-08-10  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/JTree.java
+       (doExpandParents): Took out call to checkExpandParents.
+       (checkExpandParents): Helper method not needed. Caused problems since
+       fireTreeWillExpand was being called too many times. fireTreeWillExpand 
is
+       called from BasicTreeUI whenever a node is expanded.
+
+       2005-08-10  Audrius Meskauskas  <[EMAIL PROTECTED]>
+
+        * org/omg/PortableInterceptor/Interceptor.java,
+        org/omg/PortableInterceptor/InterceptorOperations.java: New files.
+        * org/omg/DynamicAny/_DynAnyFactoryStub.java,
+        org/omg/DynamicAny/_DynAnyStub.java,
+        org/omg/DynamicAny/_DynArrayStub.java,
+        org/omg/DynamicAny/_DynEnumStub.java,
+        org/omg/DynamicAny/_DynFixedStub.java,
+        org/omg/DynamicAny/_DynStructStub.java,
+        org/omg/DynamicAny/_DynUnionStub.java,
+        org/omg/DynamicAny/_DynValueStub.java,
+        org/omg/DynamicAny/_DynSequenceStub.java: Added _opsClass field.
+
+       2005-08-10  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/plaf/basic/BasicTreeUI.java:
+       Formatted entire class.
+
+       2005-08-10  Lillian Angel  <[EMAIL PROTECTED]>
+       
+       * javax/swing/plaf/basic/BasicTreeUI.java
+       (mouseClicked): Called fireTreeWillExpand and fireTreeWillCollapse when
+       appropriate.
+       (keyPressed): Likewise.
+
+       2005-08-10  Roman Kennke  <[EMAIL PROTECTED]>
+
+       * java/awt/Container.java
+       (paint): Call visitChildren with lightweightOnly == true.
+       (update): Only call paint if we are not in a toplevel container.
+
+       2005-08-09  Anthony Balkissoon  <[EMAIL PROTECTED]>
+
+       * javax/swing/JTable.java:
+       (editingCancelled): Implemented.
+       (editCellAt): Added a KeyListener to our editor to listen for
+       the ESCAPE key and cancel editing upon receiving it.
+
+       2005-08-09  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/JTable.java
+       (setRowHeight): Fixed condition on when to throw exception.
+       (setRowHeight): Parameters were mixed up.
+
+       2005-08-09  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/plaf/basic/BasicLabelUI.java
+       (paint): Added in painting code for label border.
+       * javax/swing/plaf/basic/BasicTreeUI.java
+       (paintControlIcons): Fixed location for control icons.
+       * javax/swing/plaf/metal/MetalLookAndFeel.java:
+       Added defaults for selection and non-selection border for
+       tree cells.
+       * javax/swing/tree/DefaultTreeCellRenderer.java
+       (getTreeCellRendererComponent): Set borders for node. Also,
+       made node transparent (not opaque), So JLabel draws icon,
+       text and border appropriately.
+
+       2005-08-09  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/plaf/basic/BasicLabelUI.java
+       (paint): Added in code to paint background rect according to
+       API. Also, formatting changes.
+       * javax/swing/plaf/basic/BasicTreeUI.java
+       (setCellRenderer): Fixed to changed renderer in JTree.
+       (uninstallDefaults): Line taken out because not needed.
+       (paintNode): Took out unneeded code because BasicLabelUI was fixed.
+       (paintRecursive): Fixed so lines are only drawn when parents have
+       children.       
+
+       2005-08-09  Anthony Balkissoon  <[EMAIL PROTECTED]>
+
+       * javax/swing/DefaultCellEditor.java:
+       (EditorDelegate.setValue): Implemented.
+       (EditorDelegate.getCellEditorValue): Implemented.
+       (EditorDelegate.isCellEditable): Implemented.
+       (EditorDelegate.shouldSelectCell): Implemented.
+       (EditorDelegate.stopCellEditing): Implemented.
+       (EditorDelegate.cancelCellEditing): Implemented.
+       (EditorDelegate.startCellEditing): Implemented.
+       (EditorDelegate.actionPerformed): Implemented.
+       (EditorDelegate.itemStateChanged): Implemented.
+       (EditorDelegate.fireEditingStopped): New implementation method.
+       (EditorDelegate.fireEditingCancelled): New implementation method.
+       (DefaultCellEditor): Implemented 3 constructors.
+       (getComponent): Implemented.
+       (getClickCountToStart): Implemented.
+       (setClickCountToStart): Implemented.
+       (getCellEditorValue): Implemented.
+       (isCellEditable): Implemented.
+       (shouldSelectCell): Implemented.
+       (cancelCellEditing): Implemented.
+       (getTableCellEditorComponent): Implemented.
+       * javax/swing/JTable.java:
+       (EditorUpdateTimer): New private class.
+       (editingStopped): Implemented.
+       (setValueAt): If the Object value is a Component, add it to the JTable
+       so it can obtain focus.
+       (editCellAt): Implemented.
+       (removeEditor): Implemented.
+       (prepareEditor): Implemented.
+       * javax/swing/plaf/basic/BasicTableUI.java:
+       (KeyHandler.keyPressed): Added F2 "start editing" key action.
+       (MouseHandler.mousePressed): Added check to see if a new cell was
+       selected and we need to stop editing.
+       (paint): If the cell is a JTextField, paint its Caret as well.
+       * javax/swing/table/DefaultTableCellRenderer.java:
+       (getTableCellRendererComponent): If a JTextField is passed in, return
+       one.  This is used for editing JTable cells.
+
+       2005-08-09  Mark Wielaard  <[EMAIL PROTECTED]>
+
+       * javax/swing/tree/DefaultTreeModel.java: Fix copyright
+       boilerplate formatting.
+
+       2005-08-09  Lillian Angel  <[EMAIL PROTECTED]>
+
+       * javax/swing/tree/DefaultTreeModel.java:
+       Fixed formatting of class.
+
+       2005-08-09  Lillian Angel  <[EMAIL PROTECTED]>
+
+       Fixes Bug #23255
+       * javax/swing/plaf/basic/BasicTreeUI.java:
+       Fixed entire class to use Objects as opposed to TreeNodes.
+       (getPathBounds): Changed root to Object
+       (getPathForRow): Likewise.
+       (getRowCount): Likewise.
+       (getPreferredSize): Changed root and nextNode to be of type
+       Object.
+       (isLeaf): Took out unnecessary code. 
+       (keyPressed): Changed all TreeNodes to be of type Object.
+       (getCellLocation): Likewise.
+       (paintNode): Likewise.
+       (paintRecursive): Likewise.
+       (getParent): Implemented.
+       (findNode): Helper Implemented.
+       (getNextVisibleNode): Changed return and parameter type to Object.
+       (getPreviousVisibleNode): Likewise.
+       (getNextNode): Likewise.
+       (getPreviousNode): Likewise.
+       (getNextSibling): Likewise.
+       (getPreviousSibling): Likewise.
+       (getPathToRoot): Likewise.
+       (getLevel): Likewise.
+       * javax/swing/tree/DefaultTreeModel.java
+       (getIndexOfChild): Implemented.
+
+       2005-08-09  Audrius Meskauskas  <[EMAIL PROTECTED]>
+
+        * org/omg/CORBA/package.html: Documentation update.
+        * org/omg/DynamicAny/package.html: New file.
+
 2005-08-10  Andreas Tobler  <[EMAIL PROTECTED]>
 
        * config/powerpc/ppc_stack_frame.h (FPFRAME): Return an address and
Index: kaffe/libraries/javalib/Makefile.am
diff -u kaffe/libraries/javalib/Makefile.am:1.379 
kaffe/libraries/javalib/Makefile.am:1.380
--- kaffe/libraries/javalib/Makefile.am:1.379   Wed Aug 10 11:37:47 2005
+++ kaffe/libraries/javalib/Makefile.am Thu Aug 11 01:18:44 2005
@@ -4745,6 +4745,8 @@
        org/omg/Messaging/SYNC_WITH_TRANSPORT.java \
        org/omg/Messaging/SyncScopeHelper.java
 org_omg_PortableInterceptor_SRCS = \
+       org/omg/PortableInterceptor/Interceptor.java \
+       org/omg/PortableInterceptor/InterceptorOperations.java \
        org/omg/PortableInterceptor/LOCATION_FORWARD.java \
        org/omg/PortableInterceptor/SUCCESSFUL.java \
        org/omg/PortableInterceptor/SYSTEM_EXCEPTION.java \
Index: kaffe/libraries/javalib/Makefile.in
diff -u kaffe/libraries/javalib/Makefile.in:1.469 
kaffe/libraries/javalib/Makefile.in:1.470
--- kaffe/libraries/javalib/Makefile.in:1.469   Wed Aug 10 11:37:48 2005
+++ kaffe/libraries/javalib/Makefile.in Thu Aug 11 01:18:45 2005
@@ -5380,6 +5380,8 @@
        org/omg/Messaging/SyncScopeHelper.java
 
 org_omg_PortableInterceptor_SRCS = \
+       org/omg/PortableInterceptor/Interceptor.java \
+       org/omg/PortableInterceptor/InterceptorOperations.java \
        org/omg/PortableInterceptor/LOCATION_FORWARD.java \
        org/omg/PortableInterceptor/SUCCESSFUL.java \
        org/omg/PortableInterceptor/SYSTEM_EXCEPTION.java \
Index: kaffe/libraries/javalib/all.files
diff -u kaffe/libraries/javalib/all.files:1.149 
kaffe/libraries/javalib/all.files:1.150
--- kaffe/libraries/javalib/all.files:1.149     Wed Aug 10 11:37:51 2005
+++ kaffe/libraries/javalib/all.files   Thu Aug 11 01:18:46 2005
@@ -4093,6 +4093,8 @@
 org/omg/IOP/TransactionService.java
 org/omg/Messaging/SYNC_WITH_TRANSPORT.java
 org/omg/Messaging/SyncScopeHelper.java
+org/omg/PortableInterceptor/Interceptor.java
+org/omg/PortableInterceptor/InterceptorOperations.java
 org/omg/PortableInterceptor/LOCATION_FORWARD.java
 org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateName.java
 org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateNameHelper.java
Index: kaffe/libraries/javalib/java/awt/Container.java
diff -u kaffe/libraries/javalib/java/awt/Container.java:1.37 
kaffe/libraries/javalib/java/awt/Container.java:1.38
--- kaffe/libraries/javalib/java/awt/Container.java:1.37        Mon Aug  8 
02:52:23 2005
+++ kaffe/libraries/javalib/java/awt/Container.java     Thu Aug 11 01:18:49 2005
@@ -761,7 +761,7 @@
     super.paint(g);
     // Visit heavyweights as well, in case they were
     // erased when we cleared the background for this container.
-    visitChildren(g, GfxPaintVisitor.INSTANCE, false);
+    visitChildren(g, GfxPaintVisitor.INSTANCE, true);
   }
 
   /**
@@ -785,8 +785,8 @@
   {
     if (getParent() == null)
       super.update(g);
-    
-    paint(g);
+    else
+      paint(g);
   }
 
   /**
Index: kaffe/libraries/javalib/javax/swing/DefaultCellEditor.java
diff -u kaffe/libraries/javalib/javax/swing/DefaultCellEditor.java:1.6 
kaffe/libraries/javalib/javax/swing/DefaultCellEditor.java:1.7
--- kaffe/libraries/javalib/javax/swing/DefaultCellEditor.java:1.6      Sat Jul 
30 16:39:24 2005
+++ kaffe/libraries/javalib/javax/swing/DefaultCellEditor.java  Thu Aug 11 
01:18:49 2005
@@ -43,9 +43,13 @@
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
+import java.awt.event.MouseEvent;
 import java.io.Serializable;
 import java.util.EventObject;
 
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.event.CellEditorListener;
 import javax.swing.table.TableCellEditor;
 import javax.swing.tree.TreeCellEditor;
 
@@ -91,8 +95,10 @@
      *
      * @param event TODO
      */
-    public void setValue(Object event)
+    public void setValue(Object value)
     {
+      // TODO: should be setting the value in the editorComp
+      this.value = value;
     }
 
    /**
@@ -102,7 +108,8 @@
      */
     public Object getCellEditorValue()
     {
-      return null; // TODO
+      // TODO: should be getting the updated value from the editorComp
+      return value;
     } // getCellEditorValue()
 
     /**
@@ -114,7 +121,11 @@
      */
     public boolean isCellEditable(EventObject event)
     {
-      return false; // TODO
+      if (!(event instanceof MouseEvent))
+        return true;
+
+      //Todo: if the right number of clicks has occured, return true;
+      return false;
     } // isCellEditable()
 
     /**
@@ -126,7 +137,8 @@
      */
     public boolean shouldSelectCell(EventObject event)
     {
-      return false; // TODO
+      // return true to indicate that the editing cell may be selected
+      return true;
     } // shouldSelectCell()
 
     /**
@@ -136,7 +148,8 @@
      */
     public boolean stopCellEditing()
     {
-      return false; // TODO
+      fireEditingStopped();
+      return true;
     } // stopCellEditing()
 
     /**
@@ -144,7 +157,7 @@
      */
     public void cancelCellEditing()
     {
-      // TODO
+      fireEditingCanceled();
     } // cancelCellEditing()
 
     /**
@@ -156,7 +169,8 @@
      */
     public boolean startCellEditing(EventObject event)
     {
-      return false; // TODO
+      // return true to indicate that editing has begun
+      return true;
     } // startCellEditing()
 
     /**
@@ -166,7 +180,7 @@
      */
     public void actionPerformed(ActionEvent event)
     {
-      // TODO
+      stopCellEditing();
     } // actionPerformed()
 
     /**
@@ -176,9 +190,23 @@
      */
     public void itemStateChanged(ItemEvent event)
     {
-      // TODO
+      stopCellEditing();
     } // itemStateChanged()
 
+    void fireEditingStopped()
+    {
+      CellEditorListener[] listeners = getCellEditorListeners();
+      for (int index = 0; index < listeners.length; index++)
+        listeners[index].editingStopped(changeEvent);
+      
+    }
+    
+    void fireEditingCanceled()
+    {
+      CellEditorListener[] listeners = getCellEditorListeners();
+      for (int index = 0; index < listeners.length; index++)
+        listeners[index].editingCanceled(changeEvent);
+    }
   } // EditorDelegate
 
        /**
@@ -203,7 +231,8 @@
    */
   public DefaultCellEditor(JTextField textfield)
   {
-    // TODO
+    editorComponent = textfield;
+    clickCountToStart = 2;
   } // DefaultCellEditor()
 
   /**
@@ -213,7 +242,8 @@
    */
   public DefaultCellEditor(JCheckBox checkbox)
   {
-    // TODO
+    editorComponent = checkbox;
+    clickCountToStart = 1;
   } // DefaultCellEditor()
 
   /**
@@ -223,7 +253,8 @@
    */
   public DefaultCellEditor(JComboBox combobox)
   {
-    // TODO
+    editorComponent = combobox;
+    clickCountToStart = 1;
   } // DefaultCellEditor()
 
   /**
@@ -233,7 +264,7 @@
    */
   public Component getComponent()
   {
-    return null; // TODO
+    return editorComponent; 
   } // getComponent()
 
   /**
@@ -243,7 +274,7 @@
    */
   public int getClickCountToStart()
   {
-    return 0; // TODO
+    return clickCountToStart;
   } // getClickCountToStart()
 
   /**
@@ -253,7 +284,7 @@
    */
   public void setClickCountToStart(int count)
   {
-    // TODO
+    clickCountToStart = count;
   } // setClickCountToStart()
 
   /**
@@ -263,7 +294,7 @@
    */
   public Object getCellEditorValue()
   {
-    return null; // TODO
+    return delegate.getCellEditorValue();
   } // getCellEditorValue()
 
   /**
@@ -275,7 +306,7 @@
    */
   public boolean isCellEditable(EventObject event)
   {
-    return false; // TODO
+    return delegate.isCellEditable(event);
   } // isCellEditable()
 
   /**
@@ -287,7 +318,7 @@
    */
   public boolean shouldSelectCell(EventObject event)
   {
-    return false; // TODO
+    return delegate.shouldSelectCell(event);
   } // shouldSelectCell()
 
   /**
@@ -297,7 +328,7 @@
    */
   public boolean stopCellEditing()
   {
-    return false; // TODO
+    return delegate.stopCellEditing();
   } // stopCellEditing()
 
   /**
@@ -305,7 +336,7 @@
    */
   public void cancelCellEditing()
   {
-    // TODO
+    delegate.cancelCellEditing();
   } // cancelCellEditing()
 
   /**
@@ -339,10 +370,30 @@
    *
    * @returns Component
    */
-  public Component getTableCellEditorComponent(JTable tree, Object value,
+  public Component getTableCellEditorComponent(JTable table, Object value,
                                                boolean isSelected, int row,
                                                int column)
   {
-    return null; // TODO
+    // NOTE: as specified by Sun, we don't call new() everytime, we return 
+    // editorComponent on each call to getTableCellEditorComponent or
+    // getTreeCellEditorComponent.  However, currently JTextFields have a
+    // problem with getting rid of old text, so without calling new() there
+    // are some strange results.  If you edit more than one cell in the table
+    // text from previously edited cells may unexpectedly show up in the 
+    // cell you are currently editing.  This will be fixed automatically
+    // when JTextField is fixed.
+    if (editorComponent instanceof JTextField)
+      {
+        ((JTextField)editorComponent).setText(value.toString());
+        delegate = new EditorDelegate();
+        ((JTextField)editorComponent).addActionListener(delegate);
+      }
+    else
+      {
+        // TODO
+      }
+    return editorComponent;
   } // getTableCellEditorComponent()
+
+
 }
Index: kaffe/libraries/javalib/javax/swing/JTable.java
diff -u kaffe/libraries/javalib/javax/swing/JTable.java:1.26 
kaffe/libraries/javalib/javax/swing/JTable.java:1.27
--- kaffe/libraries/javalib/javax/swing/JTable.java:1.26        Mon Aug  8 
02:52:26 2005
+++ kaffe/libraries/javalib/javax/swing/JTable.java     Thu Aug 11 01:18:49 2005
@@ -43,9 +43,14 @@
 import java.awt.Dimension;
 import java.awt.Point;
 import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.text.DateFormat;
 import java.text.NumberFormat;
 import java.util.Date;
+import java.util.EventObject;
 import java.util.Hashtable;
 import java.util.Vector;
 
@@ -69,6 +74,7 @@
 import javax.swing.table.TableColumn;
 import javax.swing.table.TableColumnModel;
 import javax.swing.table.TableModel;
+import javax.swing.text.Caret;
 
 public class JTable extends JComponent
   implements TableModelListener, Scrollable, TableColumnModelListener,
@@ -351,6 +357,7 @@
    */
   protected transient Component editorComp;
 
+
   /**
    * Whether or not the table should automatically compute a matching
    * [EMAIL PROTECTED] TableColumnModel} and assign it to the [EMAIL 
PROTECTED] #columnModel}
@@ -555,7 +562,27 @@
    */
   protected JTableHeader tableHeader;
 
-  
+  /**
+   * The row of the cell being edited.
+   */
+  int rowBeingEdited = -1;
+
+  /**
+   * The column of the cell being edited.
+   */
+  int columnBeingEdited = -1;
+
+  /**
+   * The action listener for the editor's Timer.
+   */
+  Timer editorTimer = new EditorUpdateTimer();
+
+  /**
+   * Stores the old value of a cell before it was edited, in case
+   * editing is cancelled
+   */
+  Object oldCellValue;
+
   /**
    * Creates a new <code>JTable</code> instance.
    */
@@ -673,6 +700,51 @@
     this(new DefaultTableModel(data, columnNames));
   }
 
+  /**
+   * The timer that updates the editor component.
+   */
+  private class EditorUpdateTimer
+    extends Timer
+    implements ActionListener
+  {
+    /**
+     * Creates a new EditorUpdateTimer object with a default delay of 0.5 
seconds.
+     */
+    public EditorUpdateTimer()
+    {
+      super(500, null);
+      addActionListener(this);
+    }
+
+    /**
+     * Lets the caret blink and repaints the table.
+     */
+    public void actionPerformed(ActionEvent ev)
+    {
+      Caret c = ((JTextField)JTable.this.editorComp).getCaret();
+      if (c != null)
+        c.setVisible(!c.isVisible());
+      JTable.this.repaint();
+    }
+
+    /**
+     * Updates the blink delay according to the current caret.
+     */
+    public void update()
+    {
+      stop();
+      Caret c = ((JTextField)JTable.this.editorComp).getCaret();
+      if (c != null)
+       {
+         setDelay(c.getBlinkRate());
+         if (((JTextField)JTable.this.editorComp).isEditable())
+           start();
+         else
+           c.setVisible(false);
+       }
+    }
+  }
+
   public void addColumn(TableColumn column)
   {
     if (column.getHeaderValue() == null)
@@ -774,11 +846,40 @@
 
   public void editingCanceled (ChangeEvent event)
   {
+    if (rowBeingEdited > -1 && columnBeingEdited > -1)
+      {
+        if (getValueAt(rowBeingEdited, columnBeingEdited) instanceof 
JTextField)
+          {
+            remove ((Component)getValueAt(rowBeingEdited, columnBeingEdited));
+            setValueAt(oldCellValue, rowBeingEdited, columnBeingEdited);
+          }
+        rowBeingEdited = -1;
+        columnBeingEdited = -1;
+      }
+    editorTimer.stop();
+    editorComp = null;
+    cellEditor = null;
+    requestFocusInWindow(false);
     repaint();
   }
 
   public void editingStopped (ChangeEvent event)
   {
+    if (rowBeingEdited > -1 && columnBeingEdited > -1)
+      {
+        if (getValueAt(rowBeingEdited, columnBeingEdited) instanceof 
JTextField)
+          {
+            remove((Component)getValueAt(rowBeingEdited, columnBeingEdited));
+            setValueAt(((JTextField)editorComp).getText(), 
+                       rowBeingEdited, columnBeingEdited);
+          }
+        rowBeingEdited = -1;
+        columnBeingEdited = -1;
+      }
+    editorTimer.stop();
+    editorComp = null;
+    cellEditor = null;
+    requestFocusInWindow(false);
     repaint();
   }
 
@@ -980,7 +1081,7 @@
 
     if (editor == null)
       editor = getDefaultEditor(dataModel.getColumnClass(column));
-
+    
     return editor;
   }
 
@@ -1475,7 +1576,7 @@
    */ 
   public void setRowHeight(int r)
   {
-    if (rowHeight < 1)
+    if (r < 1)
       throw new IllegalArgumentException();
     
     rowHeight = r;
@@ -1490,7 +1591,7 @@
    * @param rh is the new rowHeight
    * @param row is the row to change the rowHeight of
    */
-  public void setRowHeight(int rh, int row)
+  public void setRowHeight(int row, int rh)
   {
      setRowHeight(rh);
      // FIXME: not implemented
@@ -2116,6 +2217,8 @@
 
   public void setValueAt(Object value, int row, int column)
   {
+    if (value instanceof Component)
+      add((Component)value);
     dataModel.setValueAt(value, row, convertColumnIndexToModel(column));
   }
 
@@ -2206,5 +2309,67 @@
         
         
       }
+  }
+
+  /**
+   * Programmatically starts editing the specified cell.
+   *
+   * @param row the row of the cell to edit.
+   * @param column the column of the cell to edit.
+   */
+  public boolean editCellAt (int row, int column)
+  {
+    oldCellValue = getValueAt(row, column);
+    setCellEditor(getCellEditor(row, column));
+    editorComp = prepareEditor(cellEditor, row, column);
+    editorComp.addKeyListener(new KeyAdapter() {
+        public void keyPressed(KeyEvent e) {
+          if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+            if (JTable.this.cellEditor != null)
+              JTable.this.cellEditor.cancelCellEditing();
+          }
+        }
+      });
+    cellEditor.addCellEditorListener(this);
+    rowBeingEdited = row;
+    columnBeingEdited = column;
+    setValueAt(editorComp, row, column);
+    ((JTextField)editorComp).requestFocusInWindow(false);
+    editorTimer.start();
+    return true;
+  }
+
+  /**
+   * Programmatically starts editing the specified cell.
+   *
+   * @param row the row of the cell to edit.
+   * @param column the column of the cell to edit.
+   */
+  public boolean editCellAt (int row, int column, EventObject e)
+  {
+    return editCellAt(row, column);
+  }
+
+  /**
+   * Discards the editor object.
+   */
+  public void removeEditor()
+  {
+    editingStopped(new ChangeEvent(this));
+  }
+
+  /**
+   * Prepares the editor by querying for the value and selection state of the
+   * cell at (row, column).
+   *
+   * @param editor the TableCellEditor to set up
+   * @param row the row of the cell to edit
+   * @param column the column of the cell to edit
+   * @return the Component being edited
+   */
+  public Component prepareEditor (TableCellEditor editor, int row, int column)
+  {
+    return editor.getTableCellEditorComponent
+      (this, getValueAt(row, column), isCellSelected(row, column), row, 
column);
   }
 }
Index: kaffe/libraries/javalib/javax/swing/JTree.java
diff -u kaffe/libraries/javalib/javax/swing/JTree.java:1.25 
kaffe/libraries/javalib/javax/swing/JTree.java:1.26
--- kaffe/libraries/javalib/javax/swing/JTree.java:1.25 Wed Aug 10 11:37:53 2005
+++ kaffe/libraries/javalib/javax/swing/JTree.java      Thu Aug 11 01:18:49 2005
@@ -1297,7 +1297,7 @@
                // Don't expand if last path component is a leaf node.
                if ((path == null) || 
(treeModel.isLeaf(path.getLastPathComponent())))
                        return;
-               
+
                setExpandedState(path, true);
        }
 
@@ -1503,21 +1503,9 @@
                return null;
        }
 
-       private void checkExpandParents(TreePath path) throws 
ExpandVetoException
-       {
-
-               TreePath parent = path.getParentPath();
-
-               if (parent != null)
-                       checkExpandParents(parent);
-
-               fireTreeWillExpand(path);
-       }
-
        private void doExpandParents(TreePath path, boolean state)
        {
-               TreePath parent = path.getParentPath();
-               
+               TreePath parent = path.getParentPath();         
                if (isExpanded(parent))
                {
                        nodeStates.put(path, state ? EXPANDED : COLLAPSED);
@@ -1536,17 +1524,6 @@
                        return;
 
                TreePath parent = path.getParentPath();
-
-               try
-               {
-                       if (parent != null)
-                               checkExpandParents(parent);
-               } 
-               catch (ExpandVetoException e)
-               {
-                       // Expansion vetoed.
-                       return;
-               }
 
                doExpandParents(path, state);
        }
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java:1.6 
kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java:1.7
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java:1.6        
Sun Jul 10 02:11:42 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java    Thu Aug 
11 01:18:50 2005
@@ -1,39 +1,39 @@
 /* BasicLabelUI.java
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
 
-This file is part of GNU Classpath.
+ This file is part of GNU Classpath.
 
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
+ GNU Classpath is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ GNU Classpath is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Classpath; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ Linking this library statically or dynamically with other modules is
+ making a combined work based on this library.  Thus, the terms and
+ conditions of the GNU General Public License cover the whole
+ combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent
+ modules, and to copy and distribute the resulting executable under
+ terms of your choice, provided that you also meet, for each linked
+ independent module, the terms and conditions of the license of that
+ module.  An independent module is a module which is not derived from
+ or based on this library.  If you modify this library, you may extend
+ this exception to your version of the library, but you are not
+ obligated to do so.  If you do not wish to do so, delete this
+ exception statement from your version. */
 
 package javax.swing.plaf.basic;
 
@@ -56,12 +56,13 @@
 import javax.swing.plaf.ComponentUI;
 import javax.swing.plaf.LabelUI;
 
-
 /**
  * This is the Basic Look and Feel class for the JLabel.  One BasicLabelUI
  * object is used to paint all JLabels that utilize the Basic Look and Feel.
  */
-public class BasicLabelUI extends LabelUI implements PropertyChangeListener
+public class BasicLabelUI
+    extends LabelUI
+    implements PropertyChangeListener
 {
   /** The labelUI that is shared by all labels. */
   protected static BasicLabelUI labelUI;
@@ -99,20 +100,20 @@
    *
    * @return The preferred size.
    */
-  public Dimension getPreferredSize(JComponent c) 
+  public Dimension getPreferredSize(JComponent c)
   {
-    JLabel lab = (JLabel)c;
+    JLabel lab = (JLabel) c;
     Rectangle vr = new Rectangle();
     Rectangle ir = new Rectangle();
     Rectangle tr = new Rectangle();
-    Insets insets = lab.getInsets();      
+    Insets insets = lab.getInsets();
     FontMetrics fm = lab.getToolkit().getFontMetrics(lab.getFont());
     layoutCL(lab, fm, lab.getText(), lab.getIcon(), vr, ir, tr);
     Rectangle cr = tr.union(ir);
-    return new Dimension(insets.left + cr.width + insets.right,
-                         insets.top + cr.height + insets.bottom);
-    
-  }  
+    return new Dimension(insets.left + cr.width + insets.right, insets.top
+        + cr.height + insets.bottom);
+
+  }
 
   /**
    * This method returns the minimum size of the [EMAIL PROTECTED] JComponent} 
given. If
@@ -144,7 +145,7 @@
 
   /**
    * The method that paints the label according to its current state.
-   *
+   * 
    * @param g The [EMAIL PROTECTED] Graphics} object to paint with.
    * @param c The [EMAIL PROTECTED] JComponent} to paint.
    */
@@ -169,26 +170,39 @@
       vr.width = 0;
     if (vr.height < 0)
       vr.height = 0;
-      
+
     Icon icon = (b.isEnabled()) ? b.getIcon() : b.getDisabledIcon();
 
     String text = layoutCL(b, fm, b.getText(), icon, vr, ir, tr);
-    
+
     if (icon != null)
-      icon.paintIcon(b, g, ir.x, ir.y);
-    if (text != null && ! text.equals(""))
+      icon.paintIcon(b, g, ir.x, ir.y);        
+    if (text != null && !text.equals(""))
+    {
+      g.setColor(b.getBackground());
+
+      if (b.isOpaque())

*** Patch too long, truncated ***

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to