This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: Import recent Classpath awt work


Hi,

This imports the recent Classpath AWT work by Michael Koch and Jeroen
Frijters. This is needed to compile/run the open-wonka visualtests (see
Classpath mailinglist).

2003-07-25  Mark Wielaard  <mark@klomp.org>

       * Makefile.am (awt_java_source_files): java/awt/GridBagLayoutInfo.java
       added.
       * Makefile.in: Likewise.

2003-07-25  Jeroen Frijters  <jeroen@frijters.net>

       * java/awt/Component.java
       (getPreferredSize): Call preferredSize.
       (preferredSize): Moved body of getPreferredSize here.
       (getMinimumSize): Call minimumSize.
       (minimumSize): Moved body of getMinimumSize here.
       (prepareImage): Fall back on Toolkit.prepareImage if there is no peer
       (checkImage(Image,ImageObserver)): Don't call getWidth/getHeight, but
       pass -1
       * java/awt/Container.java
       (validate): Don't validate if there is no peer.
       (update): Clear background before calling paint.
       * java/awt/GridBagLayout.java
       Completed the implementation and fixed several bugs.
       * java/awt/MediaTracker.java
       (MediaEntry.imageUpdate): Fixed typo. & instead of | was used to
       combine flags.
       * java/awt/Window.java
       (Window): Don't call setVisible(false). Windows are invisible by
       default and calling virtual methods from constructor causes
       compatibility problems (e.g. subclasses may assume that the peer
       already exists).

2003-07-25  Michael Koch  <konqueror@gmx.de>

       * java/awt/GridBagLayout.java:
       Totally reworked and partly implemented.
       * java/awt/GridBagLayoutInfo.java:
       New file.

Cheers,

Mark
Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.308
diff -u -r1.308 Makefile.am
--- Makefile.am	13 Jul 2003 16:53:04 -0000	1.308
+++ Makefile.am	25 Jul 2003 12:45:01 -0000
@@ -818,6 +818,7 @@
 java/awt/GraphicsConfiguration.java \
 java/awt/GridBagConstraints.java \
 java/awt/GridBagLayout.java \
+java/awt/GridBagLayoutInfo.java \
 java/awt/GridLayout.java \
 java/awt/IllegalComponentStateException.java \
 java/awt/Image.java \
Index: java/awt/Component.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Component.java,v
retrieving revision 1.25
diff -u -r1.25 Component.java
--- java/awt/Component.java	2 Mar 2003 14:31:39 -0000	1.25
+++ java/awt/Component.java	25 Jul 2003 12:45:06 -0000
@@ -1452,12 +1452,7 @@
    */
   public Dimension getPreferredSize()
   {
-    if (prefSize == null)
-      if (peer == null)
-	return new Dimension(width, height);
-      else 
-        prefSize = peer.getPreferredSize();
-    return prefSize;
+    return preferredSize();
   }
 
   /**
@@ -1468,7 +1463,12 @@
    */
   public Dimension preferredSize()
   {
-    return getPreferredSize();
+    if (prefSize == null)
+      if (peer == null)
+	return new Dimension(width, height);
+      else 
+        prefSize = peer.getPreferredSize();
+    return prefSize;
   }
 
   /**
@@ -1480,10 +1480,7 @@
    */
   public Dimension getMinimumSize()
   {
-    if (minSize == null)
-      minSize = (peer != null ? peer.getMinimumSize()
-                 : new Dimension(width, height));
-    return minSize;
+    return minimumSize();
   }
 
   /**
@@ -1494,7 +1491,10 @@
    */
   public Dimension minimumSize()
   {
-    return getMinimumSize();
+    if (minSize == null)
+      minSize = (peer != null ? peer.getMinimumSize()
+                 : new Dimension(width, height));
+    return minSize;
   }
 
   /**
@@ -1941,7 +1941,10 @@
   public boolean prepareImage(Image image, int width, int height,
                               ImageObserver observer)
   {
-    return peer.prepareImage(image, width, height, observer);
+    if (peer != null)
+	return peer.prepareImage(image, width, height, observer);
+    else
+	return getToolkit().prepareImage(image, width, height, observer);
   }
 
   /**
@@ -1957,8 +1960,7 @@
    */
   public int checkImage(Image image, ImageObserver observer)
   {
-    return checkImage(image, image.getWidth(observer),
-                      image.getHeight(observer), observer);
+    return checkImage(image, -1, -1, observer);
   }
 
   /**
Index: java/awt/Container.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Container.java,v
retrieving revision 1.24
diff -u -r1.24 Container.java
--- java/awt/Container.java	9 Jul 2003 07:50:01 -0000	1.24
+++ java/awt/Container.java	25 Jul 2003 12:45:06 -0000
@@ -473,7 +473,7 @@
   {
     synchronized (getTreeLock ())
       {
-        if (! isValid())
+        if (! isValid() && peer != null)
           {
             validateTree();
           }
@@ -658,6 +658,7 @@
    */
   public void update(Graphics g)
   {
+    g.clearRect(0, 0, width, height);
     super.update(g);
   }
 
Index: java/awt/GridBagLayout.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/GridBagLayout.java,v
retrieving revision 1.4
diff -u -r1.4 GridBagLayout.java
--- java/awt/GridBagLayout.java	10 Nov 2002 00:16:42 -0000	1.4
+++ java/awt/GridBagLayout.java	25 Jul 2003 12:45:07 -0000
@@ -1,5 +1,5 @@
 /* GridBagLayout - Layout manager for components according to GridBagConstraints
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -35,64 +35,644 @@
 obligated to do so.  If you do not wish to do so, delete this
 exception statement from your version. */
 
+
 package java.awt;
 
 import java.io.Serializable;
+import java.util.Hashtable;
 
 /**
- * Stub implementation.
+ * @author Michael Koch <konqueror@gmx.de>
+ * @author Jeroen Frijters <jeroen@frijters.net>
  */
 public class GridBagLayout
-  implements Serializable, LayoutManager2
+    implements Serializable, LayoutManager2
 {
-  static final long serialVersionUID = 8838754796412211005L;
+    private static final long serialVersionUID = 8838754796412211005L;
 
-  public void addLayoutComponent(String name, Component component)
-  {
-  }
-
-  public void removeLayoutComponent(Component component)
-  {
-  }
-
-  public Dimension preferredLayoutSize(Container parent)
-  {
-    return null;
-  }
-
-  public Dimension minimumLayoutSize(Container parent)
-  {
-    return null;
-  }
-
-  public void layoutContainer(Container parent)
-  {
-  }
-
-  public void addLayoutComponent(Component component, Object contraint)
-  {
-  }
-
-  public Dimension maximumLayoutSize(Container target)
-  {
-    return null;
-  }
-
-  public float getLayoutAlignmentX(Container target)
-  {
-    return 0.0f;
-  }
-
-  public float getLayoutAlignmentY(Container target)
-  {
-    return 0.0f;
-  }
-
-  public void invalidateLayout(Container target)
-  {
-  }
-
-  public void setConstraints(Component comp, GridBagConstraints constraints)
-  {
-  }
+    protected static final int MINSIZE = 1;
+    protected static final int PREFERREDSIZE = 2;
+    protected static final int MAXGRIDSIZE = 512;
+
+    protected Hashtable comptable;
+    protected GridBagLayoutInfo layoutInfo;
+    protected GridBagConstraints defaultConstraints;
+
+    public double[] columnWeights;
+    public int[] columnWidths;
+    public double[] rowWeights;
+    public int[] rowHeights;
+
+    public GridBagLayout ()
+    {
+	this.comptable = new Hashtable();
+	this.defaultConstraints= new GridBagConstraints();
+    }
+
+    /**
+     * Helper method to calc the sum of a range of elements in an int array.
+     */
+    private int sumIntArray (int[] array, int upto)
+    {
+	int result = 0;
+
+	for (int i = 0; i < upto; i++)
+	    result += array [i];
+
+	return result;
+    }
+
+    /**
+     * Helper method to calc the sum of all elements in an int array.
+     */
+    private int sumIntArray (int[] array)
+    {
+	return sumIntArray(array, array.length);
+    }
+
+    /**
+     * Helper method to calc the sum of all elements in an double array.
+     */
+    private double sumDoubleArray (double[] array)
+    {
+	double result = 0;
+
+	for (int i = 0; i < array.length; i++)
+	    result += array [i];
+
+	return result;
+    }
+
+    public void addLayoutComponent (String name, Component component)
+    {
+	// do nothing here.
+    }
+
+    public void removeLayoutComponent (Component component)
+    {
+	// do nothing here
+    }
+
+    public void addLayoutComponent (Component component, Object constraints)
+    {
+	if (constraints == null)
+	    return;
+
+	if (!(constraints instanceof GridBagConstraints))
+	    throw new IllegalArgumentException();
+
+	setConstraints (component, (GridBagConstraints) constraints);
+    }
+
+    public Dimension preferredLayoutSize (Container parent)
+    {
+	if (parent == null)
+	    return new Dimension (0, 0);
+    
+	GridBagLayoutInfo li = getLayoutInfo (parent, PREFERREDSIZE);
+	return getMinSize (parent, li);
+    }
+
+    public Dimension minimumLayoutSize (Container parent)
+    {
+	if (parent == null)
+	    return new Dimension (0, 0);
+    
+	GridBagLayoutInfo li = getLayoutInfo (parent, MINSIZE);
+	return getMinSize (parent, li);
+    }
+
+    public Dimension maximumLayoutSize (Container target)
+    {
+	return new Dimension (Integer.MAX_VALUE, Integer.MAX_VALUE);
+    }
+
+    public void layoutContainer (Container parent)
+    {
+	arrangeGrid (parent);
+    }
+
+    public float getLayoutAlignmentX (Container target)
+    {
+	return Component.CENTER_ALIGNMENT;
+    }
+
+    public float getLayoutAlignmentY (Container target)
+    {
+	return Component.CENTER_ALIGNMENT;
+    }
+
+    public void invalidateLayout (Container target)
+    {
+	this.layoutInfo = null;
+    }
+
+    public void setConstraints (Component component,
+	GridBagConstraints constraints)
+    {
+	GridBagConstraints clone = (GridBagConstraints) constraints.clone();
+
+	if (clone.gridx < 0)
+	    clone.gridx = GridBagConstraints.RELATIVE;
+    
+	if (clone.gridy < 0)
+	    clone.gridy = GridBagConstraints.RELATIVE;
+
+	if (clone.gridwidth == 0)
+	    clone.gridwidth = GridBagConstraints.REMAINDER;
+	else if (clone.gridwidth < 0
+	    && clone.gridwidth != GridBagConstraints.REMAINDER
+	    && clone.gridwidth != GridBagConstraints.RELATIVE)
+	    clone.gridwidth = 1;
+    
+	if (clone.gridheight == 0)
+	    clone.gridheight = GridBagConstraints.REMAINDER;
+	else if (clone.gridheight < 0
+	    && clone.gridheight != GridBagConstraints.REMAINDER
+	    && clone.gridheight != GridBagConstraints.RELATIVE)
+	    clone.gridheight = 1;
+    
+	comptable.put (component, clone);
+    }
+
+    public GridBagConstraints getConstraints (Component component)
+    {
+	return (GridBagConstraints) (lookupConstraints (component).clone());
+    }
+
+    protected GridBagConstraints lookupConstraints (Component component)
+    {
+	GridBagConstraints result = (GridBagConstraints) comptable.get (component);
+
+	if (result == null)
+	{
+	    setConstraints (component, defaultConstraints);
+	    result = (GridBagConstraints) comptable.get (component);
+	}
+    
+	return result;
+    }
+
+    /**
+     * @since 1.1
+     */
+    public Point getLayoutOrigin ()
+    {
+	if (layoutInfo == null)
+	    return new Point (0, 0);
+    
+	return new Point (layoutInfo.pos_x, layoutInfo.pos_y);
+    }
+
+    /**
+     * @since 1.1
+     */
+    public int[][] getLayoutDimensions ()
+    {
+	if (layoutInfo == null)
+	    return new int [2][];
+
+	int[][] result = new int [2][];
+	result [0] = new int [layoutInfo.cols];
+	System.arraycopy (layoutInfo.colWidths, 0, result [0], 0, layoutInfo.cols);
+	result [1] = new int [layoutInfo.rows];
+	System.arraycopy (layoutInfo.rowHeights, 0, result [1], 0, layoutInfo.rows);
+	return result;
+    }
+
+    public double[][] getLayoutWeights ()
+    {
+	if (layoutInfo == null)
+	    return new double [2][];
+      
+	double[][] result = new double [2][];
+	result [0] = new double [layoutInfo.cols];
+	System.arraycopy (layoutInfo.colWeights, 0, result [0], 0, layoutInfo.cols);
+	result [1] = new double [layoutInfo.rows];
+	System.arraycopy (layoutInfo.rowWeights, 0, result [1], 0, layoutInfo.rows);
+	return result;
+    }
+
+    /**
+     * @since 1.1
+     */
+    public Point location (int x, int y)
+    {
+	if (layoutInfo == null)
+	    return new Point (0, 0);
+
+	int col;
+	int row;
+	int pixel_x = layoutInfo.pos_x;
+	int pixel_y = layoutInfo.pos_y;
+
+	for (col = 0; col < layoutInfo.cols; col++)
+	{
+	    int w = layoutInfo.colWidths [col];
+	    if (x < pixel_x + w)
+		break;
+
+	    pixel_x += w;
+	}
+
+	for (row = 0; row < layoutInfo.rows; row++)
+	{
+	    int h = layoutInfo.rowHeights [row];
+	    if (y < pixel_y + h)
+		break;
+
+	    pixel_y += h;
+	}
+
+	return new Point (col, row);
+    }
+
+    /**
+     * Obsolete.
+     */
+    protected void AdjustForGravity (GridBagConstraints gbc, Rectangle rect)
+    {
+	adjustForGravity (gbc, rect);
+    }
+
+    /**
+     * Obsolete.
+     */
+    protected void ArrangeGrid (Container parent)
+    {
+	arrangeGrid (parent);
+    }
+
+    /**
+     * Obsolete.
+     */
+    protected GridBagLayoutInfo GetLayoutInfo (Container parent, int sizeflag)
+    {
+	return getLayoutInfo (parent, sizeflag);
+    }
+
+    /**
+     * Obsolete.
+     */
+    protected Dimension GetMinSize (Container parent, GridBagLayoutInfo info)
+    {
+	return getMinSize (parent, info);
+    }
+
+    /**
+     * @since 1.4
+     */
+    protected Dimension getMinSize (Container parent, GridBagLayoutInfo info)
+    {
+	if (parent == null || info == null)
+	    return new Dimension (0, 0);
+
+	Insets insets = parent.getInsets();
+	int width = sumIntArray (info.colWidths) + insets.left + insets.right;
+	int height = sumIntArray (info.rowHeights) + insets.top + insets.bottom;
+	return new Dimension (width, height);
+    }
+
+    private void calcCellSizes (int[] sizes, double[] weights, int range)
+    {
+	int diff = range - sumIntArray (sizes);
+
+	if (diff == 0)
+	    return;
+    
+	double weight = sumDoubleArray (weights);
+
+	for (int i = 0; i < sizes.length; i++)
+	{
+	    sizes [i] += (int) (((double) diff) * weights [i] / weight );
+
+	    if (sizes [i] < 0)
+		sizes [i] = 0;
+	}
+    }
+
+    private void dumpLayoutInfo (GridBagLayoutInfo info)
+    {
+	System.out.println ("GridBagLayoutInfo:");
+	System.out.println ("cols: " + info.cols + ", rows: " + info.rows);
+	System.out.print ("colWidths: ");
+	dumpArray(info.colWidths);
+	System.out.print ("rowHeights: ");
+	dumpArray(info.rowHeights);
+	System.out.print ("colWeights: ");
+	dumpArray(info.colWeights);
+	System.out.print ("rowWeights: ");
+	dumpArray(info.rowWeights);
+    }
+
+    private void dumpArray(int[] array)
+    {
+	String sep = "";
+	for(int i = 0; i < array.length; i++)
+	{
+	    System.out.print(sep);
+	    System.out.print(array[i]);
+	    sep = ", ";
+	}
+	System.out.println();
+    }
+
+    private void dumpArray(double[] array)
+    {
+	String sep = "";
+	for(int i = 0; i < array.length; i++)
+	{
+	    System.out.print(sep);
+	    System.out.print(array[i]);
+	    sep = ", ";
+	}
+	System.out.println();
+    }
+  
+    /**
+     * @since 1.4
+     */
+    protected void arrangeGrid (Container parent)
+    {
+	Component[] components = parent.getComponents();
+
+	if (components.length == 0)
+	    return;
+
+	GridBagLayoutInfo info = getLayoutInfo (parent, PREFERREDSIZE);
+	if (info.cols == 0 && info.rows == 0)
+	    return;
+	layoutInfo = info;
+
+	// DEBUG
+	//dumpLayoutInfo (layoutInfo);
+    
+	for(int i = 0; i < components.length; i++)
+	{
+	    Component component = components [i];
+		
+	    // If component is not visible we dont have to care about it.
+	    if (!component.isVisible())
+		continue;
+		
+	    GridBagConstraints constraints = lookupConstraints (component);
+
+	    int cellx = sumIntArray(layoutInfo.colWidths, constraints.gridx);
+	    int celly = sumIntArray(layoutInfo.rowHeights, constraints.gridy);
+	    int cellw = sumIntArray(layoutInfo.colWidths,
+		constraints.gridx + constraints.gridwidth) - cellx;
+	    int cellh = sumIntArray(layoutInfo.rowHeights,
+		constraints.gridy + constraints.gridheight) - celly;
+
+	    Insets insets = constraints.insets;
+	    if (insets != null)
+	    {
+		cellx += insets.left;
+		celly += insets.top;
+		cellw -= insets.left + insets.right;
+		cellh -= insets.top + insets.bottom;
+	    }
+
+	    Dimension dim = component.preferredSize();
+
+	    // Note: Documentation says that padding is added on both sides, but
+	    // visual inspection shows that the Sun implementation only adds it
+	    // once, so we do the same.
+	    dim.width += constraints.ipadx;
+	    dim.height += constraints.ipady;
+
+	    switch(constraints.fill)
+	    {
+		case GridBagConstraints.HORIZONTAL:
+		    dim.width = cellw;
+		    break;
+		case GridBagConstraints.VERTICAL:
+		    dim.height = cellh;
+		    break;
+		case GridBagConstraints.BOTH:
+		    dim.width = cellw;
+		    dim.height = cellh;
+		    break;
+	    }
+
+	    int x;
+	    int y;
+
+	    switch(constraints.anchor)
+	    {
+		case GridBagConstraints.NORTH:
+		    x = cellx + (cellw - dim.width) / 2;
+		    y = celly;
+		    break;
+		case GridBagConstraints.SOUTH:
+		    x = cellx + (cellw - dim.width) / 2;
+		    y = celly + cellh - dim.height;
+		    break;
+		case GridBagConstraints.WEST:
+		    x = cellx;
+		    y = celly + (cellh - dim.height) / 2;
+		    break;
+		case GridBagConstraints.EAST:
+		    x = cellx + cellw - dim.width;
+		    y = celly + (cellh - dim.height) / 2;
+		    break;
+		case GridBagConstraints.NORTHEAST:
+		    x = cellx + cellw - dim.width;
+		    y = celly;
+		    break;
+		case GridBagConstraints.NORTHWEST:
+		    x = cellx;
+		    y = celly;
+		    break;
+		case GridBagConstraints.SOUTHEAST:
+		    x = cellx + cellw - dim.width;
+		    y = celly + cellh - dim.height;
+		    break;
+		case GridBagConstraints.SOUTHWEST:
+		    x = cellx;
+		    y = celly + cellh - dim.height;
+		    break;
+		default:
+		    x = cellx + (cellw - dim.width) / 2;
+		    y = celly + (cellh - dim.height) / 2;
+		    break;
+	    }
+
+	    component.setBounds(layoutInfo.pos_x + x, layoutInfo.pos_y + y, dim.width, dim.height);
+	}
+    
+	// DEBUG
+	//dumpLayoutInfo (layoutInfo);
+
+    }
+
+    /**
+     * @since 1.4
+     */
+    protected GridBagLayoutInfo getLayoutInfo (Container parent, int sizeflag)
+    {
+	if (sizeflag != MINSIZE && sizeflag != PREFERREDSIZE)
+	    throw new IllegalArgumentException();
+
+	Dimension parentDim = parent.size();
+	Insets parentInsets = parent.insets();
+	parentDim.width -= parentInsets.left + parentInsets.right;
+	parentDim.height -= parentInsets.top + parentInsets.bottom;
+   
+	int x = 0;
+	int y = 0;
+	int max_x = 0;
+	int max_y = 0;
+
+	// first we figure out how many rows/columns
+	Component[] components = parent.getComponents();
+	for (int i = 0; i < components.length; i++)
+	{
+	    Component component = components [i];
+		
+	    // If component is not visible we dont have to care about it.
+	    if (!component.isVisible())
+		continue;
+		
+	    GridBagConstraints constraints = lookupConstraints (component);
+		
+	    if(constraints.gridx == GridBagConstraints.RELATIVE)
+		constraints.gridx = x;
+
+	    if(constraints.gridy == GridBagConstraints.RELATIVE)
+		constraints.gridy = y;
+		
+	    max_x = Math.max(max_x, 
+		constraints.gridx + Math.max(1, constraints.gridwidth));
+	    max_y = Math.max(max_y,
+		constraints.gridy + Math.max(1, constraints.gridheight));
+
+	    if(constraints.gridwidth == GridBagConstraints.REMAINDER)
+	    {
+		x = 0;
+		y++;
+	    }
+	    else
+	    {
+		x = constraints.gridx + Math.max(1, constraints.gridwidth);
+		y = constraints.gridy;
+	    }
+	}
+	
+	GridBagLayoutInfo info = new GridBagLayoutInfo(max_x, max_y);
+
+	for (x = 0; x <= max_x; x++)
+	{
+	    if(columnWidths != null && columnWidths.length > x)
+	    {
+		info.colWidths[x] = columnWidths[x];
+	    }
+	    if(columnWeights != null && columnWeights.length > x)
+	    {
+		info.colWeights[x] = columnWeights[x];
+	    }
+	    for (int i = 0; i < components.length; i++)
+	    {
+		Component component = components [i];
+			
+		// If component is not visible we dont have to care about it.
+		if (!component.isVisible())
+		    continue;
+			
+		GridBagConstraints constraints = lookupConstraints (component);
+
+		// first we fix up any REMAINDER cells
+		if(constraints.gridwidth == GridBagConstraints.REMAINDER)
+		{
+		    constraints.gridwidth = max_x - constraints.gridx;
+		}
+		if(constraints.gridheight == GridBagConstraints.REMAINDER)
+		{
+		    constraints.gridheight = max_y - constraints.gridy;
+		}
+
+		if(constraints.gridx + constraints.gridwidth - 1 == x)
+		{
+		    int width = (sizeflag == PREFERREDSIZE) ?
+			component.preferredSize().width :
+			component.minimumSize().width;
+		    if(constraints.insets != null)
+		    {
+			width += constraints.insets.left + constraints.insets.right;
+		    }
+		    width += constraints.ipadx;
+		    for(int w = 1; w < constraints.gridwidth; w++)
+		    {
+			width -= info.colWidths[x - w];
+		    }
+		    info.colWidths[x] = Math.max(info.colWidths[x], width);
+		    info.colWeights[x] =
+			Math.max(info.colWeights[x], constraints.weightx);
+		}
+	    }
+	}
+
+	for (y = 0; y <= max_y; y++)
+	{
+	    if(rowHeights != null && rowHeights.length > y)
+	    {
+		info.rowHeights[y] = rowHeights[y];
+	    }
+	    if(rowWeights != null && rowWeights.length > y)
+	    {
+		info.rowWeights[y] = rowWeights[y];
+	    }
+	    for (int i = 0; i < components.length; i++)
+	    {
+		Component component = components [i];
+			
+		// If component is not visible we dont have to care about it.
+		if (!component.isVisible())
+		    continue;
+			
+		GridBagConstraints constraints = lookupConstraints (component);
+
+		if(constraints.gridy + constraints.gridheight - 1 == y)
+		{
+		    int height = (sizeflag == PREFERREDSIZE) ?
+			component.preferredSize().height :
+			component.minimumSize().height;
+		    if(constraints.insets != null)
+		    {
+			height += constraints.insets.top + constraints.insets.bottom;
+		    } 
+		    height += constraints.ipady;
+		    for(int h = 1; h < constraints.gridheight; h++)
+		    {
+			height -= info.rowHeights[y - h];
+		    }
+		    info.rowHeights[y] = Math.max(info.rowHeights[y], height);
+		    info.rowWeights[y] =
+			Math.max(info.rowWeights[y], constraints.weighty);
+		}
+	    }
+	}
+
+	calcCellSizes (info.colWidths, info.colWeights, parentDim.width);
+	calcCellSizes (info.rowHeights, info.rowWeights, parentDim.height);
+
+	int totalWidth = sumIntArray(info.colWidths);
+	int totalHeight = sumIntArray(info.rowHeights);
+	info.pos_x = parentInsets.left + (parentDim.width - totalWidth) / 2;
+	info.pos_y = parentInsets.top + (parentDim.height - totalHeight) / 2;
+
+	// DEBUG
+	//dumpLayoutInfo (info);
+
+	return info;
+    }
+
+    /**
+     * @since 1.4
+     */
+    protected void adjustForGravity (GridBagConstraints gbc, Rectangle rect)
+    {
+	// FIXME
+	throw new Error ("Not implemented");
+    }
 }
Index: java/awt/GridBagLayoutInfo.java
===================================================================
RCS file: java/awt/GridBagLayoutInfo.java
diff -N java/awt/GridBagLayoutInfo.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ java/awt/GridBagLayoutInfo.java	25 Jul 2003 12:45:07 -0000
@@ -0,0 +1,70 @@
+/* GridBagLayoutInfo -
+   Copyright (C) 2003 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;
+
+import java.io.Serializable;
+
+/**
+ * @author Michael Koch <konqueror@gmx.de>
+ */
+class GridBagLayoutInfo implements Serializable
+{
+  private static final long serialVersionUID = -4899416460737170217L;
+
+  int pos_x;
+  int pos_y;
+  int cols;
+  int rows;
+  int colWidths[];
+  int rowHeights[];
+  double colWeights[];
+  double rowWeights[];
+
+  GridBagLayoutInfo (int cols, int rows)
+  {
+    this.pos_x = 0;
+    this.pos_y = 0;
+    this.cols = cols;
+    this.rows = rows;
+    this.colWidths = new int [cols];
+    this.rowHeights = new int [rows];
+    this.colWeights = new double [cols];
+    this.rowWeights = new double [rows];
+  }
+}
Index: java/awt/MediaTracker.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MediaTracker.java,v
retrieving revision 1.3
diff -u -r1.3 MediaTracker.java
--- java/awt/MediaTracker.java	6 Mar 2002 08:11:06 -0000	1.3
+++ java/awt/MediaTracker.java	25 Jul 2003 12:45:07 -0000
@@ -76,9 +76,9 @@
 			       int width, int height)
     {
       if ((flags & ABORT) != 0)
-        status = ABORTED & COMPLETE;
+        status = ABORTED | COMPLETE;
       else if ((flags & ERROR) != 0)
-        status = ERRORED & COMPLETE;
+        status = ERRORED | COMPLETE;
       else if ((flags & ALLBITS) != 0)
         status = COMPLETE;
       else
Index: java/awt/Window.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Window.java,v
retrieving revision 1.26
diff -u -r1.26 Window.java
--- java/awt/Window.java	23 Jul 2003 09:53:34 -0000	1.26
+++ java/awt/Window.java	25 Jul 2003 12:45:07 -0000
@@ -84,7 +84,6 @@
    */
   Window()
   {
-    setVisible(false);
     setLayout(new BorderLayout());
   }
 
@@ -106,7 +105,7 @@
     peer = ((EmbeddedWindowSupport) getToolkit())
 	    .createEmbeddedWindow (window_id, width, height);
   }
-    
+  
   /**
    * Initializes a new instance of <code>Window</code> with the specified
    * parent.  The window will initially be invisible.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]