[kaffe] CVS kaffe (guilhem): Added missing files from the Swing merge.

Kaffe CVS cvs-commits at kaffe.org
Sun Jul 25 00:57:18 PDT 2004


PatchSet 5012 
Date: 2004/07/25 07:49:58
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Added missing files from the Swing merge.

Members: 
	ChangeLog:1.2571->1.2572 
	libraries/javalib/java/awt/image/ByteLookupTable.java:INITIAL->1.1 
	libraries/javalib/java/awt/image/Kernel.java:INITIAL->1.1 
	libraries/javalib/java/awt/image/LookupTable.java:INITIAL->1.1 
	libraries/javalib/java/awt/image/ShortLookupTable.java:INITIAL->1.1 
	libraries/javalib/javax/swing/Spring.java:INITIAL->1.1 
	libraries/javalib/javax/swing/SpringLayout.java:INITIAL->1.1 
	libraries/javalib/javax/swing/plaf/basic/BasicTextFieldUI.java:INITIAL->1.1 
	libraries/javalib/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/FieldView.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/Highlighter.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/LayeredHighlighter.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/PlainView.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/TabExpander.java:INITIAL->1.1 
	libraries/javalib/javax/swing/text/TabableView.java:INITIAL->1.1 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2571 kaffe/ChangeLog:1.2572
--- kaffe/ChangeLog:1.2571	Sun Jul 25 06:51:11 2004
+++ kaffe/ChangeLog	Sun Jul 25 07:49:58 2004
@@ -1,5 +1,24 @@
 2004-07-25  Guilhem Lavaux <guilhem at kaffe.org>
 
+	* java/awt/image/ByteLookupTable.java,
+	java/awt/image/Kernel.java,
+	java/awt/image/LookupTable.java,
+	java/awt/image/ShortLookupTable.java,
+	javax/swing/Spring.java,
+	javax/swing/SpringLayout.java,
+	javax/swing/plaf/basic/BasicTextFieldUI.java,
+	javax/swing/plaf/basic/BasicToolBarSeparatorUI.java,
+	javax/swing/text/DefaultHighlighter.java,
+	javax/swing/text/FieldView.java,
+	javax/swing/text/Highlighter.java,
+	javax/swing/text/LayeredHighlighter.java,
+	javax/swing/text/PlainView.java,
+	javax/swing/text/TabExpander.java,
+	javax/swing/text/TabableView.java:
+	Added missing files from the merge.
+
+2004-07-25  Guilhem Lavaux <guilhem at kaffe.org>
+
 	* THIRDPARTY: Added an entry for GNU Getopt.
 
 2004-07-24  Guilhem Lavaux <guilhem at kaffe.org>
===================================================================
Checking out kaffe/libraries/javalib/java/awt/image/ByteLookupTable.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/awt/image/ByteLookupTable.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/awt/image/ByteLookupTable.java	Sun Jul 25 07:57:17 2004
@@ -0,0 +1,162 @@
+/* ByteLookupTable.java -- Java class for a pixel translation table.
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 java.awt.image;
+
+/**
+ * ByteLookupTable represents translation arrays for pixel values.  It wraps
+ * one or more data arrays for each layer (or component) in an image, such as
+ * Alpha, R, G, and B.  When doing translation, the offset is subtracted from
+ * the pixel values to allow a subset of an array to be used.
+ *
+ * @author <a href="mailto:jlquinn at optonline.net">Jerry Quinn</a>
+ * @version 1.0
+ */
+public class ByteLookupTable extends LookupTable
+{
+  // Array of translation tables.
+  private byte data[][];
+
+  /**
+   * Creates a new <code>ByteLookupTable</code> instance.
+   *
+   * Offset is subtracted from pixel values when looking up in the translation
+   * tables.  If data.length is one, the same table is applied to all pixel
+   * components.
+   * 
+   * @param offset Offset to be subtracted.
+   * @param data Array of lookup tables.
+   * @exception IllegalArgumentException if offset < 0 or data.length < 1.
+   */
+  public ByteLookupTable(int offset, byte[][] data)
+    throws IllegalArgumentException
+  {
+    super(offset, data.length);
+    this.data = data;
+  }
+
+  /**
+   * Creates a new <code>ByteLookupTable</code> instance.
+   *
+   * Offset is subtracted from pixel values when looking up in the translation
+   * table.  The same table is applied to all pixel components.
+   * 
+   * @param offset Offset to be subtracted.
+   * @param data Lookup table for all components.
+   * @exception IllegalArgumentException if offset < 0.
+   */
+  public ByteLookupTable(int offset, byte[] data)
+    throws IllegalArgumentException
+  {
+    super(offset, 1);
+    this.data = new byte[][] {data};
+  }
+
+  /** Return the lookup tables. */
+  public final byte[][] getTable()
+  {
+    return data;
+  }
+
+  /**
+   * Return translated values for a pixel.
+   *
+   * For each value in the pixel src, use the value minus offset as an index
+   * in the component array and copy the value there to the output for the
+   * component.  If dest is null, the output is a new array, otherwise the
+   * translated values are written to dest.  Dest can be the same array as
+   * src.
+   *
+   * For example, if the pixel src is [2, 4, 3], and offset is 1, the output
+   * is [comp1[1], comp2[3], comp3[2]], where comp1, comp2, and comp3 are the
+   * translation arrays.
+   *
+   * @param src Component values of a pixel.
+   * @param dest Destination array for values, or null.
+   * @return Translated values for the pixel.
+   */
+  public int[] lookupPixel(int[] src, int[] dst)
+    throws ArrayIndexOutOfBoundsException
+  {
+    if (dst == null)
+      dst = new int[numComponents];
+
+    if (data.length == 1)
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[0][src[i] - offset];
+    else
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[i][src[i] - offset];
+      
+    return dst;
+  }
+
+  /**
+   * Return translated values for a pixel.
+   *
+   * For each value in the pixel src, use the value minus offset as an index
+   * in the component array and copy the value there to the output for the
+   * component.  If dest is null, the output is a new array, otherwise the
+   * translated values are written to dest.  Dest can be the same array as
+   * src.
+   *
+   * For example, if the pixel src is [2, 4, 3], and offset is 1, the output
+   * is [comp1[1], comp2[3], comp3[2]], where comp1, comp2, and comp3 are the
+   * translation arrays.
+   *
+   * @param src Component values of a pixel.
+   * @param dest Destination array for values, or null.
+   * @return Translated values for the pixel.
+   */
+  public byte[] lookupPixel(byte[] src, byte[] dst)
+    throws ArrayIndexOutOfBoundsException
+  {
+    if (dst == null)
+      dst = new byte[numComponents];
+
+    if (data.length == 1)
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[0][((int)src[i]) - offset];
+    else
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[i][((int)src[i]) - offset];
+      
+    return dst;
+
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/java/awt/image/Kernel.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/awt/image/Kernel.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/awt/image/Kernel.java	Sun Jul 25 07:57:18 2004
@@ -0,0 +1,136 @@
+/* Kernel.java -- Java class for an image processing kernel
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 java.awt.image;
+
+/**
+ * Kernel represents an image processing kernel.  It gets used to hold
+ * convolution filters among other purposes.  It stores an array of float
+ * values representing a 2-dimensional array in row-major order.
+ *
+ * @author <a href="mailto:jlquinn at optonline.net">Jerry Quinn</a>
+ * @version 1.0
+ */
+public class Kernel implements Cloneable
+{
+  private final int width;
+  private final int height;
+  private final float[] data;
+
+  /**
+   * Creates a new <code>Kernel</code> instance.
+   *
+   * @param width The 2D width of data.
+   * @param height The 2D height of data.
+   * @param data The source data array.
+   * @exception IllegalArgumentException if width * height < data.length.
+   */
+  public Kernel(int width, int height, float[] data)
+    throws IllegalArgumentException
+  {
+    this.width = width;
+    this.height = height;
+    if (data.length < width * height || width < 0 || height < 0)
+      throw new IllegalArgumentException();
+    this.data = new float[width * height];
+    System.arraycopy(data, 0, this.data, 0, width * height);
+  }
+
+  /**
+   * Return the X origin: (width - 1) / 2
+   */
+  public final int getXOrigin()
+  {
+    return (width - 1) / 2;
+  }
+
+  /**
+   * Return the Y origin: (height - 1) / 2
+   */
+  public final int getYOrigin()
+  {
+    return (height - 1) / 2;
+  }
+
+  /**
+   * @return The kernel width.
+   */
+  public final int getWidth()
+  {
+    return width;
+  }
+
+  /**
+   * @return The kernel height.
+   */
+  public final int getHeight()
+  {
+    return height;
+  }
+
+  /**
+   * Return the kernel data.
+   *
+   * If data is null, allocates a new array and returns it.  Otherwise, the
+   * kernel values are copied into data.
+   *
+   * @param data Array to copy values into, or null.
+   * @return The array with copied values.
+   * @exception IllegalArgumentException if data != null and too small.
+   */
+  public final float[] getKernelData(float[] data)
+    throws IllegalArgumentException
+  {
+    if (data == null)
+	return (float[])this.data.clone();
+
+    if (data.length < this.data.length)
+      throw new IllegalArgumentException();
+
+    System.arraycopy(this.data, 0, data, 0, this.data.length);
+    return data;
+  }
+
+  /**
+   * @return a clone of this Kernel.
+   */
+  public Object clone()
+  {
+    return new Kernel(width, height, data);
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/java/awt/image/LookupTable.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/awt/image/LookupTable.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/awt/image/LookupTable.java	Sun Jul 25 07:57:18 2004
@@ -0,0 +1,109 @@
+/* LookupTable.java -- Java class for a pixel translation table.
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 java.awt.image;
+
+/**
+ * LookupTable represents translation arrays for pixel values.  It wraps one
+ * or more data arrays for each layer (or component) in an image, such as
+ * Alpha, R, G, and B.  When doing translation, the offset is subtracted from
+ * the pixel values to allow a subset of an array to be used.
+ *
+ * @see ByteLookupTable
+ * @see ShortLookupTable
+ *
+ * @author <a href="mailto:jlquinn at optonline.net">Jerry Quinn</a>
+ * @version 1.0
+ */
+public abstract class LookupTable
+{
+  // Not protected since that's part of the public API.
+  int offset;
+  int numComponents;
+
+  /**
+   * Creates a new <code>LookupTable</code> instance.
+   *
+   * If numComponents is 1, the same translation table is used for all pixel
+   * components.
+   * 
+   * @param offset Offset to be subtracted.
+   * @param numComponents Number of image components.
+   * @exception IllegalArgumentException if offset < 0 or numComponents < 1.
+   */
+  protected LookupTable(int offset, int numComponents)
+    throws IllegalArgumentException
+  {
+    if (offset < 0 || numComponents < 1)
+      throw new IllegalArgumentException();
+    this.offset = offset;
+    this.numComponents = numComponents;
+  }
+
+  /** Return the number of components. */
+  public int getNumComponents()
+  {
+    return numComponents;
+  }
+
+  /** Return the offset. */
+  public int getOffset()
+  {
+    return offset;
+  }
+
+  
+  /**
+   * Return translated values for a pixel.
+   *
+   * For each value in the pixel src, use the value minus offset as an index
+   * in the component array and copy the value there to the output for the
+   * component.  If dest is null, the output is a new array, otherwise the
+   * translated values are written to dest.  Dest can be the same array as
+   * src.
+   *
+   * For example, if the pixel src is [2, 4, 3], and offset is 1, the output
+   * is [comp1[1], comp2[3], comp3[2]], where comp1, comp2, and comp3 are the
+   * translation arrays.
+   *
+   * @param src Component values of a pixel.
+   * @param dest Destination array for values, or null.
+   * @return Translated values for the pixel.
+   */
+  public abstract int[] lookupPixel(int[] src, int[] dest);
+}
===================================================================
Checking out kaffe/libraries/javalib/java/awt/image/ShortLookupTable.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/awt/image/ShortLookupTable.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/awt/image/ShortLookupTable.java	Sun Jul 25 07:57:18 2004
@@ -0,0 +1,162 @@
+/* ShortLookupTable.java -- Java class for a pixel translation table.
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 java.awt.image;
+
+/**
+ * ShortLookupTable represents translation arrays for pixel values.  It wraps
+ * one or more data arrays for each layer (or component) in an image, such as
+ * Alpha, R, G, and B.  When doing translation, the offset is subtracted from
+ * the pixel values to allow a subset of an array to be used.
+ *
+ * @author <a href="mailto:jlquinn at optonline.net">Jerry Quinn</a>
+ * @version 1.0
+ */
+public class ShortLookupTable extends LookupTable
+{
+  // Array of translation tables.
+  private short data[][];
+
+  /**
+   * Creates a new <code>ShortLookupTable</code> instance.
+   *
+   * Offset is subtracted from pixel values when looking up in the translation
+   * tables.  If data.length is one, the same table is applied to all pixel
+   * components.
+   * 
+   * @param offset Offset to be subtracted.
+   * @param data Array of lookup tables.
+   * @exception IllegalArgumentException if offset < 0 or data.length < 1.
+   */
+  public ShortLookupTable(int offset, short[][] data)
+    throws IllegalArgumentException
+  {
+    super(offset, data.length);
+    this.data = data;
+  }
+
+  /**
+   * Creates a new <code>ShortLookupTable</code> instance.
+   *
+   * Offset is subtracted from pixel values when looking up in the translation
+   * table.  The same table is applied to all pixel components.
+   * 
+   * @param offset Offset to be subtracted.
+   * @param data Lookup table for all components.
+   * @exception IllegalArgumentException if offset < 0.
+   */
+  public ShortLookupTable(int offset, short[] data)
+    throws IllegalArgumentException
+  {
+    super(offset, 1);
+    this.data = new short[][] {data};
+  }
+
+  /** Return the lookup tables. */
+  public final short[][] getTable()
+  {
+    return data;
+  }
+
+  /**
+   * Return translated values for a pixel.
+   *
+   * For each value in the pixel src, use the value minus offset as an index
+   * in the component array and copy the value there to the output for the
+   * component.  If dest is null, the output is a new array, otherwise the
+   * translated values are written to dest.  Dest can be the same array as
+   * src.
+   *
+   * For example, if the pixel src is [2, 4, 3], and offset is 1, the output
+   * is [comp1[1], comp2[3], comp3[2]], where comp1, comp2, and comp3 are the
+   * translation arrays.
+   *
+   * @param src Component values of a pixel.
+   * @param dest Destination array for values, or null.
+   * @return Translated values for the pixel.
+   */
+  public int[] lookupPixel(int[] src, int[] dst)
+    throws ArrayIndexOutOfBoundsException
+  {
+    if (dst == null)
+      dst = new int[numComponents];
+
+    if (data.length == 1)
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[0][src[i] - offset];
+    else
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[i][src[i] - offset];
+      
+    return dst;
+  }
+
+  /**
+   * Return translated values for a pixel.
+   *
+   * For each value in the pixel src, use the value minus offset as an index
+   * in the component array and copy the value there to the output for the
+   * component.  If dest is null, the output is a new array, otherwise the
+   * translated values are written to dest.  Dest can be the same array as
+   * src.
+   *
+   * For example, if the pixel src is [2, 4, 3], and offset is 1, the output
+   * is [comp1[1], comp2[3], comp3[2]], where comp1, comp2, and comp3 are the
+   * translation arrays.
+   *
+   * @param src Component values of a pixel.
+   * @param dest Destination array for values, or null.
+   * @return Translated values for the pixel.
+   */
+  public short[] lookupPixel(short[] src, short[] dst)
+    throws ArrayIndexOutOfBoundsException
+  {
+    if (dst == null)
+      dst = new short[numComponents];
+
+    if (data.length == 1)
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[0][((int)src[i]) - offset];
+    else
+      for (int i=0; i < src.length; i++)
+	dst[i] = data[i][((int)src[i]) - offset];
+      
+    return dst;
+
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/javax/swing/Spring.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/javax/swing/Spring.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/javax/swing/Spring.java	Sun Jul 25 07:57:18 2004
@@ -0,0 +1,580 @@
+/* Spring.java -- 
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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;
+
+/**
+ * Calculates the space between component edges, that are layed out by
+ * {@link SpringLayout}.
+ * <p>
+ * A Spring defines a minimum, preferred and maximum distance for each edge
+ * (north, east, south, west) of a component.
+ * </p>
+ * However, springs are not static, their actual values are computed at
+ * runtime. That means, if a Spring C is defined as the sum of Spring A and
+ * Spring B, then the values (min, pref and max) are not calculated at
+ * creation of Spring C, but instead always when {@link #getValue} is
+ * called. So, when Spring A or Spring B changes, this is reflected in
+ * Spring C.
+ *
+ * @author Roman Kennke (roman at ontographics.com)
+ */
+public abstract class Spring
+{
+
+  /** Indicates a not-set value. **/
+  public static final int UNSET = -2147483648;
+
+  /**
+   * Creates a new Spring object. This constructor is used by the static
+   * methods which create Springs.
+   */
+  protected Spring()
+  {
+  }
+
+  /**
+   * Creates a Spring which min, pref and max values are all the same.
+   * These kind of Springs are 'struts'.
+   *
+   * @param val the constant for min, pref and max values.
+   * @return a Spring object with constant values for min, pref and max.
+   */
+  public static Spring constant(int val)
+  {
+    return new SimpleSpring(val, val, val);
+  }
+
+  /** Creates a Spring which min, pref and max values are constants.
+   * @param min the constant for the minimum value.
+   * @param pref the constant for the preferred value.
+   * @param max the constant for the maximum value.
+   * @return a Spring object with constant values for min, pref and max.
+   */
+  public static Spring constant(int min, int pref, int max)
+  {
+    return new SimpleSpring(min, pref, max);
+  }
+
+  /**
+   * Returns the maximum value of the Spring.
+   *
+   * @return the maximum value.
+   */
+  public abstract int getMaximumValue();
+
+  /**
+   * Returns the minimum value of this Spring.
+   *
+   * @return the minimum value.
+   */
+  public abstract int getMinimumValue();
+
+  /**
+   * Return the preferred value of this Spring.
+   *
+   * @return the preferred value.
+   */
+  public abstract int getPreferredValue();
+
+  /**
+   * Return the actual value of this Spring.
+   *
+   * @return the actual value of this Spring.
+   */
+  public abstract int getValue();
+
+  /**
+   * Creates and returns a Spring, which always has the maximum values
+   * min = max(min_s1, min_s2), pref = max(pref_s1, pref_s2), max =
+   * max(max_s1, max_s2).
+   *
+   * @param s1 the first summand of the max Spring.
+   * @param s2 the second summand of the max Spring.
+   * @return a Spring which is max(s1, s2).
+   */
+  public static Spring max(Spring s1, Spring s2)
+  {
+    return new MaxSpring(s1, s2);
+  }
+
+  /**
+   * Creates and returns a Spring, which is always the negation of s.
+   * min = -min_s, pref = -pref_s, max = -max_pref.
+   *
+   * @param s the Spring to be negated.
+   * @return the negative of <code>s</code>.
+   */
+  public static Spring minus(Spring s)
+  {
+    return new MinusSpring(s);
+  }
+
+  /**
+   * Sets the actual value. If <code>value</code> is out of the (min, max)
+   * bounds, then the value is adjusted, so that is inside these bounds.
+   *
+   * @param value the value to be set.
+   */
+  public abstract void setValue(int value);
+
+  /**
+   * Creates and returns a Spring, which is always the sum of s1 and s2.
+   * min_sum = min_s1 + min_s2, pref_sum = pref_s1 + pref_s2, max_sum =
+   * max_s1 + max_s2.
+   *
+   * @param s1 the 1st summand of the sum Spring.
+   * @param s2 the 2nd summand of the sum Spring.
+   * @return a sum which is <code>s1 + s2</code>.
+   */
+  public static Spring sum(Spring s1, Spring s2)
+  {
+    return new AddSpring(s1, s2);
+  }
+
+  /**
+   * A simple Spring, that holds constant values for min, pref and max.
+   *
+   * @author Roman Kennke (roman at ontographics.com)
+   */
+  private static final class SimpleSpring extends Spring
+  {
+
+    /** The constant value for min. */
+    private final int min;
+
+    /** The constant value for pref. */
+    private final int pref;
+
+    /** The constant value for max. */
+    private final int max;
+
+    /** The actual value of the spring. */
+    private int value;
+
+    /**
+     * Creates a new SimpleSpring object.
+     *
+     * @param min the constant minimum value.
+     * @param pref the constant preferred value.
+     * @param max the constant maximum value.
+     */
+    public SimpleSpring(int newMin, int newPref, int newMax)
+    {
+      min = newMin;
+      pref = newPref;
+      max = newMax;
+      value = Spring.UNSET;
+    }
+
+    /**
+     * Returns the maximum value of this Spring.
+     *
+     * @return the maximum value.
+     */
+    public int getMaximumValue()
+    {
+      return max;
+    }
+
+    /**
+     * Returns the minimum value of this Spring.
+     *
+     * @return the minimum value.
+     */
+    public int getMinimumValue()
+    {
+      return min;
+    }
+
+    /**
+     * Returns the preferred value of this Spring.
+     *
+     * @return the preferred value.
+     */
+    public int getPreferredValue()
+    {
+      return pref;
+    }
+
+    /**
+     * Return the actual current value of this Spring.
+     *
+     * @return the current value.
+     */
+    public int getValue()
+    {
+
+      if (value == Spring.UNSET)
+        {
+          value = pref;
+        }
+	    
+      return value;
+    }
+	
+    /**
+     * Sets the current value.
+     *
+     * @param val the value to be set.
+     */
+    public void setValue(int val)
+    {
+
+      if (val > max)
+        {
+          value = max;
+	}
+      else if (val < min)
+        {
+          value = min;
+	}
+      else
+        {
+          value = val;
+        }
+    }
+
+  }
+
+
+  /**
+   * A Spring, that is the sum of two other Springs.
+   *
+   * @author Roman Kennke (roman at ontographics.com)
+   */
+  private static final class AddSpring extends Spring
+  {
+
+    /** The springs, that are the 'operands' of this Spring. */
+    private final Spring s1;
+    private final Spring s2;
+
+    /** The current value for this Spring. */
+    private int value;
+
+    /**
+     * Creates a new AddSpring object.
+     *
+     * @param s1 the first operand.
+     * @param s2 the second operand.
+     */
+    protected AddSpring(Spring s1, Spring s2)
+    {
+      super();
+      this.s1 = s1;
+      this.s2 = s2;
+      value = Spring.UNSET;
+    }
+
+    /**
+     * Returns the maximum value of this Spring.
+     *
+     * @return the maximum value.
+     */
+    public int getMaximumValue()
+    {
+      int max1 = s1.getMaximumValue();
+      int max2 = s2.getMaximumValue();
+      return max1 + max2;
+    }
+
+    /**
+     * Return the minimum value of this Spring.
+     *
+     * @return the minimum value.
+     */
+    public int getMinimumValue()
+    {
+      int min1 = s1.getMinimumValue();
+      int min2 = s2.getMinimumValue();
+      return min1 + min2;
+    }
+
+    /**
+     * Returns the preferred value of this Spring.
+     *
+     * @return the preferred value.
+     */
+    public int getPreferredValue()
+    {
+      int pref1 = s1.getPreferredValue();
+      int pref2 = s2.getPreferredValue();
+      return pref1 + pref2;

*** Patch too long, truncated ***




More information about the kaffe mailing list