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

Kaffe CVS cvs-commits at kaffe.org
Sat Jun 11 14:47:37 PDT 2005


PatchSet 6633 
Date: 2005/06/11 21:43:13
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath: awt and swing fixes

Members: 
	ChangeLog:1.4159->1.4160 
	libraries/javalib/java/awt/image/BandedSampleModel.java:1.3->1.4 
	libraries/javalib/javax/swing/JComponent.java:1.20->1.21 
	libraries/javalib/javax/swing/JFormattedTextField.java:1.9->1.10 
	libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.6->1.7 
	libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.14->1.15 
	libraries/javalib/javax/swing/text/DefaultEditorKit.java:1.10->1.11 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4159 kaffe/ChangeLog:1.4160
--- kaffe/ChangeLog:1.4159	Sat Jun 11 21:37:10 2005
+++ kaffe/ChangeLog	Sat Jun 11 21:43:13 2005
@@ -2,6 +2,71 @@
 
 	Resynced with GNU Classpath.
 
+	2005-06-08  David Gilbert  <david.gilbert at object-refinery.com>
+
+	* java/awt/image/BandedSampleModel.java
+	(createBankArray): New method.
+	(BandedSampleModel(int, int, int, int)): reimplemented.
+	(BandedSampleModel(int, int, int, int, int[], int[]): 
+	RasterFormatException nearer to start of constructor.
+	(getPixel): Use band index, not zero.
+	(getPixels): Fixed loop indices.
+	(getSamples): Fixed loop indices.
+	(setDataElements): Use band index, not zero.
+	
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/text/DefaultFormatter.java
+	(FormatterDocumentFilter.remove): Added check for valid input.
+	(FormatterDocumentFilter.insertString): Added check for valid input.
+	Added support for overwriteMode property.
+	(FormatterDocumentFilter.replace): Added check for valid input.
+	(checkValidInput): New helper method to check for valid input
+	and roll it back if necessary.
+
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/JFormattedTextField.java
+	(getActions): Call super.getActions instead of throwing an exception.
+	This is safe here.
+	(processFocusEvent): Likewise.
+	* javax/swing/plaf/basic/BasicTextUI.java
+	(createKeymap): Construct new bindings array if UIDefaults does return
+	a null object for this.
+
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/plaf/basic/BasicSplitPaneUI.java
+	(installDefaults): Call resetLayoutManager() _after_ the divider
+	is created to prevent NPE.
+	(paint): Removed check for valid divider location. This is done
+	in resetComponentAt(index).
+	(resetLayoutManager): Call layout.updateComponents _after_ the
+	layout has been installed. Otherwise it has no effect.
+
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/JComponent.java
+	(setMinimumSize): Adjust preferredSize and maximumSize when
+	minimumSize is greater than preferred or maximumSize.
+
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/text/DefaultEditorKit.java:
+	Added some API documentation.
+
+	2005-06-08  Roman Kennke  <roman at kennke.org>
+
+	* javax/swing/text/DefaultEditorKit.java
+	(DefaultKeyTypedAction.actionPerformed): This action
+	has to filter control characters here.
+	(InsertBreakAction.actionPerformed): This action inserts
+	a newline character here.
+	
+2005-06-11  Dalibor Topic  <robilad at kaffe.org>
+
+	Resynced with GNU Classpath.
+
 	2005-06-06  Sven de Marothy <sven at physto.se>
 
 	* javax/swing/JLabel.java
Index: kaffe/libraries/javalib/java/awt/image/BandedSampleModel.java
diff -u kaffe/libraries/javalib/java/awt/image/BandedSampleModel.java:1.3 kaffe/libraries/javalib/java/awt/image/BandedSampleModel.java:1.4
--- kaffe/libraries/javalib/java/awt/image/BandedSampleModel.java:1.3	Fri Feb 18 15:13:48 2005
+++ kaffe/libraries/javalib/java/awt/image/BandedSampleModel.java	Sat Jun 11 21:43:17 2005
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004  Free Software Foundation
+/* Copyright (C) 2004, 2005, Free Software Foundation
 
 This file is part of GNU Classpath.
 
@@ -53,9 +53,17 @@
   private int numberOfBits;
   private int numElems;
 
+  private static int[] createBankArray(int size) 
+  {
+    int[] result = new int[size];
+    for (int i = 0; i < size; i++)
+      result[i] = i;
+    return result;
+  }
+
   public BandedSampleModel(int dataType, int w, int h, int numBands)
   {
-    super(dataType, w, h, 1, w, new int[numBands]);
+    this(dataType, w, h, w, createBankArray(numBands), new int[numBands]);
   }
 
   public BandedSampleModel(int dataType, int w, int h, int scanlineStride,
@@ -103,6 +111,10 @@
 
   public SampleModel createSubsetSampleModel(int[] bands)
   {
+    if (bands.length > bankIndices.length)
+      throw new
+	RasterFormatException("BandedSampleModel createSubsetSampleModel too"
+			      +" many bands");
     int[] newoff = new int[bands.length];
     int[] newbanks = new int[bands.length];
     for (int i=0; i < bands.length; i++)
@@ -112,11 +124,6 @@
 	newbanks[i] = bankIndices[b];
       }
 
-    if (bands.length > bankIndices.length)
-      throw new
-	RasterFormatException("BandedSampleModel createSubsetSampleModel too"
-			      +" many bands");
-    
     return new BandedSampleModel(dataType, width, height, scanlineStride,
 				 newbanks, newoff);
   }
@@ -192,7 +199,7 @@
   {
     if (iArray == null) iArray = new int[numBands];
     for (int i=0; i < numBands; i++)
-      iArray[i] = getSample(x, y, 0, data);
+      iArray[i] = getSample(x, y, i, data);
 	
     return iArray;
   }
@@ -223,13 +230,15 @@
   {
     if (iArray == null) iArray = new int[w*h*numBands];
     int outOffset = 0;
-    for (y=0; y<h; y++)
+    int maxX = x + w;
+    int maxY = y + h;
+    for (int yy = x; yy < maxY; yy++)
       {
-	for (x=0; x<w;)
+	for (int xx = x; xx < maxX; xx++)
 	  {
-	    for (int b=0; b < numBands; b++)
+	    for (int b = 0; b < numBands; b++)
 	      {
-		int offset = bandOffsets[b] + y * scanlineStride + x;
+		int offset = bandOffsets[b] + yy * scanlineStride + xx;
 		iArray[outOffset++] =
 		  data.getElem(bankIndices[b], offset);
 	      }
@@ -281,11 +290,13 @@
   {
     if (iArray == null) iArray = new int[w*h];
     int outOffset = 0;
-    for (y=0; y<h; y++)
+    int maxX = x + w;
+    int maxY = y + h;
+    for (int yy = y; yy < maxY; yy++)
       {
-	for (x=0; x<w;)
+	for (int xx = x; xx < maxX; xx++)
 	  {
-	    int offset = bandOffsets[b] + y * scanlineStride + x;
+	    int offset = bandOffsets[b] + yy * scanlineStride + xx;
 	    iArray[outOffset++] =
 	      data.getElem(bankIndices[b], offset);
 	  }
@@ -328,7 +339,7 @@
 	      DataBufferByte out = (DataBufferByte) data;
 	      byte[] in = (byte[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  case DataBuffer.TYPE_SHORT:
@@ -336,7 +347,7 @@
 	      DataBufferShort out = (DataBufferShort) data;
 	      short[] in = (short[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  case DataBuffer.TYPE_USHORT:
@@ -344,7 +355,7 @@
 	      DataBufferUShort out = (DataBufferUShort) data;
 	      short[] in = (short[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  case DataBuffer.TYPE_INT:
@@ -352,7 +363,7 @@
 	      DataBufferInt out = (DataBufferInt) data;
 	      int[] in = (int[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  case DataBuffer.TYPE_FLOAT:
@@ -360,7 +371,7 @@
 	      DataBufferFloat out = (DataBufferFloat) data;
 	      float[] in = (float[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  case DataBuffer.TYPE_DOUBLE:
@@ -368,7 +379,7 @@
 	      DataBufferDouble out = (DataBufferDouble) data;
 	      double[] in = (double[]) obj;
 	      for (int i=0; i < numBands; i++)
-		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[0];
+		out.getData(bankIndices[i])[offset + bandOffsets[i]] = in[i];
 	      return;
 	    }
 	  default:
Index: kaffe/libraries/javalib/javax/swing/JComponent.java
diff -u kaffe/libraries/javalib/javax/swing/JComponent.java:1.20 kaffe/libraries/javalib/javax/swing/JComponent.java:1.21
--- kaffe/libraries/javalib/javax/swing/JComponent.java:1.20	Sat Jun 11 19:11:36 2005
+++ kaffe/libraries/javalib/javax/swing/JComponent.java	Sat Jun 11 21:43:17 2005
@@ -2063,6 +2063,16 @@
     firePropertyChange("minimumSize", oldMinimumSize, minimumSize);
     revalidate();
     repaint();
+
+    // adjust preferred and maximum size accordingly
+    Dimension prefSize = getPreferredSize();
+    prefSize.width = Math.max(prefSize.width, minimumSize.width);
+    prefSize.height = Math.max(prefSize.height, minimumSize.height);
+    setPreferredSize(prefSize);
+    Dimension maxSize = getMaximumSize();
+    maxSize.width = Math.max(maxSize.width, minimumSize.width);
+    maxSize.height = Math.max(maxSize.height, minimumSize.height);
+    setMaximumSize(maxSize);
   }
 
   /**
Index: kaffe/libraries/javalib/javax/swing/JFormattedTextField.java
diff -u kaffe/libraries/javalib/javax/swing/JFormattedTextField.java:1.9 kaffe/libraries/javalib/javax/swing/JFormattedTextField.java:1.10
--- kaffe/libraries/javalib/javax/swing/JFormattedTextField.java:1.9	Sun May 15 09:46:20 2005
+++ kaffe/libraries/javalib/javax/swing/JFormattedTextField.java	Sat Jun 11 21:43:17 2005
@@ -197,7 +197,8 @@
 
   public Action[] getActions ()
   {
-    throw new InternalError ("not implemented");
+    // FIXME: Add JFormattedTextField specific actions
+    return super.getActions();
   }
 
   public int getFocusLostBehavior()
@@ -240,7 +241,10 @@
 
   protected void processFocusEvent (FocusEvent evt)
   {
-    throw new InternalError ("not implemented");
+    // it's safe to simply call super for now, until it gets clear
+    // what this method is supposed to do
+    // throw new InternalError ("not implemented");
+    super.processFocusEvent(evt);
   }
 
   public void setDocument(Document newDocument)
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.6 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.7
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.6	Sat Jun 11 21:09:33 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java	Sat Jun 11 21:43:18 2005
@@ -990,8 +990,8 @@
    */
   protected void installDefaults()
   {
-    resetLayoutManager();
     divider = createDefaultDivider();
+    resetLayoutManager();
     nonContinuousLayoutDivider = createDefaultNonContinuousLayoutDivider();
     splitPane.add(divider, JSplitPane.DIVIDER);
 
@@ -1384,11 +1384,6 @@
    */
   public void paint(Graphics g, JComponent jc)
   {
-    // Make sure that the location is valid
-    int divLoc = splitPane.getDividerLocation();
-    int valLoc = validLocation(divLoc);
-    if (divLoc != valLoc)
-      splitPane.setDividerLocation(valLoc);
   }
 
   /**
@@ -1449,9 +1444,8 @@
       layoutManager = new BasicHorizontalLayoutManager();
     else
       layoutManager = new BasicVerticalLayoutManager();
-    layoutManager.invalidateLayout(splitPane);
-    layoutManager.updateComponents();
     getSplitPane().setLayout(layoutManager);
+    layoutManager.updateComponents();
 
     // invalidating by itself does not invalidate the layout.
     getSplitPane().revalidate();
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.14 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.15
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.14	Sat Jun 11 21:37:13 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java	Sat Jun 11 21:43:18 2005
@@ -375,6 +375,12 @@
     UIDefaults defaults = UIManager.getLookAndFeelDefaults();
     JTextComponent.KeyBinding[] bindings = 
       (JTextComponent.KeyBinding[]) defaults.get(prefix + ".keyBindings");
+    if (bindings == null)
+      {
+        bindings = new JTextComponent.KeyBinding[0];
+        defaults.put(prefix + ".keyBindings", bindings);
+      }
+
     Keymap km = JTextComponent.addKeymap(getKeymapName(), 
                                          JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP));    
     JTextComponent.loadKeymap(km, bindings, textComponent.getActions());
Index: kaffe/libraries/javalib/javax/swing/text/DefaultEditorKit.java
diff -u kaffe/libraries/javalib/javax/swing/text/DefaultEditorKit.java:1.10 kaffe/libraries/javalib/javax/swing/text/DefaultEditorKit.java:1.11
--- kaffe/libraries/javalib/javax/swing/text/DefaultEditorKit.java:1.10	Mon Apr 18 23:57:52 2005
+++ kaffe/libraries/javalib/javax/swing/text/DefaultEditorKit.java	Sat Jun 11 21:43:18 2005
@@ -92,6 +92,16 @@
     }
   }
 
+  /**
+   * This action is executed as default action when a KEY_TYPED
+   * event is received and no keymap entry exists for that. The purpose
+   * of this action is to filter out a couple of characters. This includes
+   * the control characters and characters with the ALT-modifier.
+   * 
+   * If an event does not get filtered, it is inserted into the document
+   * of the text component. If there is some text selected in the text component,
+   * this text will be replaced.
+   */
   public static class DefaultKeyTypedAction 
     extends TextAction
   {
@@ -102,6 +112,13 @@
 
     public void actionPerformed(ActionEvent event)
     {
+      // first we filter the following events:
+      // - control characters
+      // - key events with the ALT modifier (FIXME: filter that too!)
+      char c = event.getActionCommand().charAt(0);
+      if (Character.isISOControl(c))
+        return;
+
       JTextComponent t = getTextComponent(event);
       if (t != null)
         {
@@ -119,6 +136,11 @@
     }
   }
 
+  /**
+   * This action inserts a newline character into the document
+   * of the text component. This is typically triggered by hitting
+   * ENTER on the keyboard.
+   */
   public static class InsertBreakAction 
     extends TextAction
   {
@@ -129,6 +151,8 @@
 
     public void actionPerformed(ActionEvent event)
     {
+      JTextComponent t = getTextComponent(event);
+      t.replaceSelection("\n");
     }
   }
 




More information about the kaffe mailing list