mirror of git://gcc.gnu.org/git/gcc.git
[multiple changes]
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. From-SVN: r69785
This commit is contained in:
parent
0fe37f6868
commit
ec8a1dd5a8
|
@ -1,3 +1,40 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2003-07-24 Thomas Fitzsimmons <fitzsim@redhat.com>
|
2003-07-24 Thomas Fitzsimmons <fitzsim@redhat.com>
|
||||||
|
|
||||||
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (create):
|
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (create):
|
||||||
|
|
|
@ -818,6 +818,7 @@ java/awt/Graphics2D.java \
|
||||||
java/awt/GraphicsConfiguration.java \
|
java/awt/GraphicsConfiguration.java \
|
||||||
java/awt/GridBagConstraints.java \
|
java/awt/GridBagConstraints.java \
|
||||||
java/awt/GridBagLayout.java \
|
java/awt/GridBagLayout.java \
|
||||||
|
java/awt/GridBagLayoutInfo.java \
|
||||||
java/awt/GridLayout.java \
|
java/awt/GridLayout.java \
|
||||||
java/awt/IllegalComponentStateException.java \
|
java/awt/IllegalComponentStateException.java \
|
||||||
java/awt/Image.java \
|
java/awt/Image.java \
|
||||||
|
|
|
@ -589,6 +589,7 @@ java/awt/Graphics2D.java \
|
||||||
java/awt/GraphicsConfiguration.java \
|
java/awt/GraphicsConfiguration.java \
|
||||||
java/awt/GridBagConstraints.java \
|
java/awt/GridBagConstraints.java \
|
||||||
java/awt/GridBagLayout.java \
|
java/awt/GridBagLayout.java \
|
||||||
|
java/awt/GridBagLayoutInfo.java \
|
||||||
java/awt/GridLayout.java \
|
java/awt/GridLayout.java \
|
||||||
java/awt/IllegalComponentStateException.java \
|
java/awt/IllegalComponentStateException.java \
|
||||||
java/awt/Image.java \
|
java/awt/Image.java \
|
||||||
|
@ -3094,6 +3095,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/java/awt/GraphicsConfiguration.P .deps/java/awt/GraphicsDevice.P \
|
.deps/java/awt/GraphicsConfiguration.P .deps/java/awt/GraphicsDevice.P \
|
||||||
.deps/java/awt/GraphicsEnvironment.P \
|
.deps/java/awt/GraphicsEnvironment.P \
|
||||||
.deps/java/awt/GridBagConstraints.P .deps/java/awt/GridBagLayout.P \
|
.deps/java/awt/GridBagConstraints.P .deps/java/awt/GridBagLayout.P \
|
||||||
|
.deps/java/awt/GridBagLayoutInfo.P \
|
||||||
.deps/java/awt/GridLayout.P .deps/java/awt/HeadlessException.P \
|
.deps/java/awt/GridLayout.P .deps/java/awt/HeadlessException.P \
|
||||||
.deps/java/awt/IllegalComponentStateException.P .deps/java/awt/Image.P \
|
.deps/java/awt/IllegalComponentStateException.P .deps/java/awt/Image.P \
|
||||||
.deps/java/awt/ImageCapabilities.P .deps/java/awt/Insets.P \
|
.deps/java/awt/ImageCapabilities.P .deps/java/awt/Insets.P \
|
||||||
|
|
|
@ -1452,12 +1452,7 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public Dimension getPreferredSize()
|
public Dimension getPreferredSize()
|
||||||
{
|
{
|
||||||
if (prefSize == null)
|
return preferredSize();
|
||||||
if (peer == null)
|
|
||||||
return new Dimension(width, height);
|
|
||||||
else
|
|
||||||
prefSize = peer.getPreferredSize();
|
|
||||||
return prefSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1468,7 +1463,12 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public Dimension preferredSize()
|
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 abstract class Component
|
||||||
*/
|
*/
|
||||||
public Dimension getMinimumSize()
|
public Dimension getMinimumSize()
|
||||||
{
|
{
|
||||||
if (minSize == null)
|
return minimumSize();
|
||||||
minSize = (peer != null ? peer.getMinimumSize()
|
|
||||||
: new Dimension(width, height));
|
|
||||||
return minSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1494,7 +1491,10 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public Dimension minimumSize()
|
public Dimension minimumSize()
|
||||||
{
|
{
|
||||||
return getMinimumSize();
|
if (minSize == null)
|
||||||
|
minSize = (peer != null ? peer.getMinimumSize()
|
||||||
|
: new Dimension(width, height));
|
||||||
|
return minSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1941,7 +1941,10 @@ public abstract class Component
|
||||||
public boolean prepareImage(Image image, int width, int height,
|
public boolean prepareImage(Image image, int width, int height,
|
||||||
ImageObserver observer)
|
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 abstract class Component
|
||||||
*/
|
*/
|
||||||
public int checkImage(Image image, ImageObserver observer)
|
public int checkImage(Image image, ImageObserver observer)
|
||||||
{
|
{
|
||||||
return checkImage(image, image.getWidth(observer),
|
return checkImage(image, -1, -1, observer);
|
||||||
image.getHeight(observer), observer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -473,7 +473,7 @@ public class Container extends Component
|
||||||
{
|
{
|
||||||
synchronized (getTreeLock ())
|
synchronized (getTreeLock ())
|
||||||
{
|
{
|
||||||
if (! isValid())
|
if (! isValid() && peer != null)
|
||||||
{
|
{
|
||||||
validateTree();
|
validateTree();
|
||||||
}
|
}
|
||||||
|
@ -658,6 +658,7 @@ public class Container extends Component
|
||||||
*/
|
*/
|
||||||
public void update(Graphics g)
|
public void update(Graphics g)
|
||||||
{
|
{
|
||||||
|
g.clearRect(0, 0, width, height);
|
||||||
super.update(g);
|
super.update(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* GridBagLayout - Layout manager for components according to GridBagConstraints
|
/* 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.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
@ -35,64 +35,644 @@ 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
|
obligated to do so. If you do not wish to do so, delete this
|
||||||
exception statement from your version. */
|
exception statement from your version. */
|
||||||
|
|
||||||
|
|
||||||
package java.awt;
|
package java.awt;
|
||||||
|
|
||||||
import java.io.Serializable;
|
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
|
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)
|
protected static final int MINSIZE = 1;
|
||||||
{
|
protected static final int PREFERREDSIZE = 2;
|
||||||
}
|
protected static final int MAXGRIDSIZE = 512;
|
||||||
|
|
||||||
public void removeLayoutComponent(Component component)
|
protected Hashtable comptable;
|
||||||
{
|
protected GridBagLayoutInfo layoutInfo;
|
||||||
}
|
protected GridBagConstraints defaultConstraints;
|
||||||
|
|
||||||
public Dimension preferredLayoutSize(Container parent)
|
public double[] columnWeights;
|
||||||
{
|
public int[] columnWidths;
|
||||||
return null;
|
public double[] rowWeights;
|
||||||
}
|
public int[] rowHeights;
|
||||||
|
|
||||||
public Dimension minimumLayoutSize(Container parent)
|
public GridBagLayout ()
|
||||||
{
|
{
|
||||||
return null;
|
this.comptable = new Hashtable();
|
||||||
}
|
this.defaultConstraints= new GridBagConstraints();
|
||||||
|
}
|
||||||
|
|
||||||
public void layoutContainer(Container parent)
|
/**
|
||||||
{
|
* 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;
|
||||||
|
|
||||||
public void addLayoutComponent(Component component, Object contraint)
|
for (int i = 0; i < upto; i++)
|
||||||
{
|
result += array [i];
|
||||||
}
|
|
||||||
|
|
||||||
public Dimension maximumLayoutSize(Container target)
|
return result;
|
||||||
{
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getLayoutAlignmentX(Container target)
|
/**
|
||||||
{
|
* Helper method to calc the sum of all elements in an int array.
|
||||||
return 0.0f;
|
*/
|
||||||
}
|
private int sumIntArray (int[] array)
|
||||||
|
{
|
||||||
|
return sumIntArray(array, array.length);
|
||||||
|
}
|
||||||
|
|
||||||
public float getLayoutAlignmentY(Container target)
|
/**
|
||||||
{
|
* Helper method to calc the sum of all elements in an double array.
|
||||||
return 0.0f;
|
*/
|
||||||
}
|
private double sumDoubleArray (double[] array)
|
||||||
|
{
|
||||||
|
double result = 0;
|
||||||
|
|
||||||
public void invalidateLayout(Container target)
|
for (int i = 0; i < array.length; i++)
|
||||||
{
|
result += array [i];
|
||||||
}
|
|
||||||
|
|
||||||
public void setConstraints(Component comp, GridBagConstraints constraints)
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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];
|
||||||
|
}
|
||||||
|
}
|
|
@ -76,9 +76,9 @@ public class MediaTracker implements java.io.Serializable
|
||||||
int width, int height)
|
int width, int height)
|
||||||
{
|
{
|
||||||
if ((flags & ABORT) != 0)
|
if ((flags & ABORT) != 0)
|
||||||
status = ABORTED & COMPLETE;
|
status = ABORTED | COMPLETE;
|
||||||
else if ((flags & ERROR) != 0)
|
else if ((flags & ERROR) != 0)
|
||||||
status = ERRORED & COMPLETE;
|
status = ERRORED | COMPLETE;
|
||||||
else if ((flags & ALLBITS) != 0)
|
else if ((flags & ALLBITS) != 0)
|
||||||
status = COMPLETE;
|
status = COMPLETE;
|
||||||
else
|
else
|
||||||
|
|
|
@ -84,7 +84,6 @@ public class Window extends Container implements Accessible
|
||||||
*/
|
*/
|
||||||
Window()
|
Window()
|
||||||
{
|
{
|
||||||
setVisible(false);
|
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +105,7 @@ public class Window extends Container implements Accessible
|
||||||
peer = ((EmbeddedWindowSupport) getToolkit())
|
peer = ((EmbeddedWindowSupport) getToolkit())
|
||||||
.createEmbeddedWindow (window_id, width, height);
|
.createEmbeddedWindow (window_id, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes a new instance of <code>Window</code> with the specified
|
* Initializes a new instance of <code>Window</code> with the specified
|
||||||
* parent. The window will initially be invisible.
|
* parent. The window will initially be invisible.
|
||||||
|
|
Loading…
Reference in New Issue