On Tue, 2006-02-21 at 10:28 -0500, Lillian Angel wrote:
> Hello,
>
> Tom F. and I worked on changing how we handle Container lightweights and
> Component lightweights. This bug showed up in MegaMek and several test
> cases.
Attached is the test case that we used to fix this. Try it without the
patch and resize the Frame to see what happens.
Lillian
import java.awt.*;
public class Grid2 extends Container {
private Canvas canHex;
private Label labElev;
private TextField texElev;
private Button butElevUp;
private Button butElevDown;
private Label labTerrain;
private java.awt.List lisTerrain;
private Button butDelTerrain;
private Panel panTerrainType;
private Choice choTerrainType;
private TextField texTerrainLevel;
private Panel panTerrExits;
private Checkbox cheTerrExitSpecified;
private TextField texTerrExits;
private Button butTerrExits;
private Panel panRoads;
private Checkbox cheRoadsAutoExit;
private Label labTheme;
private TextField texTheme;
private Button butAddTerrain;
private Label blankL;
private Label labBoard;
private Panel panButtons;
private Button butBoardNew, butBoardLoad;
private Button butBoardSave, butBoardSaveAs;
private Button butBoardSaveAsImage;
private Button butMiniMap;
public static void main(String[] args)
{
new Grid2();
}
public Grid2()
{
Frame p = new Frame();
p.setLayout(new BorderLayout());
Panel scrollPane = new Panel();
scrollPane.setLayout (new BorderLayout());
Scrollbar vertical = new Scrollbar (Scrollbar.VERTICAL);
Scrollbar horizontal = new Scrollbar (Scrollbar.HORIZONTAL);
scrollPane.add (new Canvas(), BorderLayout.CENTER);
scrollPane.add (vertical, BorderLayout.EAST);
scrollPane.add (horizontal, BorderLayout.SOUTH);
p.add(scrollPane, BorderLayout.CENTER);
setupEditorPanel();
p.add(this, BorderLayout.EAST);
p.setSize(800, 600);
p.show();
System.out.println(this.getLayout());
doLayout();
}
private void setupEditorPanel() {
canHex = new Canvas();
labElev = new Label("a", Label.RIGHT); //$NON-NLS-1$
texElev = new TextField("0", 1); //$NON-NLS-1$
butElevUp = new Button("BoardEditor.butElevUp"); //$NON-NLS-1$
butElevDown = new Button(("BoardEditor.butElevDown")); //$NON-NLS-1$
labTerrain = new Label(("BoardEditor.labTerrain"), Label.LEFT); //$NON-NLS-1$
lisTerrain = new java.awt.List(6);
butDelTerrain = new Button(("BoardEditor.butDelTerrain")); //$NON-NLS-1$
choTerrainType = new Choice();
texTerrainLevel = new TextField("0", 1); //$NON-NLS-1$
butAddTerrain = new Button(("BoardEditor.butAddTerrain")); //$NON-NLS-1$
butMiniMap = new Button(("BoardEditor.butMiniMap")); //$NON-NLS-1$
panTerrainType = new Panel(new BorderLayout());
panTerrainType.add(choTerrainType, BorderLayout.WEST);
panTerrainType.add(texTerrainLevel, BorderLayout.CENTER);
cheTerrExitSpecified = new Checkbox(("BoardEditor.cheTerrExitSpecified")); //$NON-NLS-1$
butTerrExits = new Button(("BoardEditor.butTerrExits")); //$NON-NLS-1$
texTerrExits = new TextField("0", 1); //$NON-NLS-1$
panTerrExits = new Panel(new FlowLayout());
panTerrExits.add(cheTerrExitSpecified);
panTerrExits.add(butTerrExits);
panTerrExits.add(texTerrExits);
panRoads = new Panel(new FlowLayout());
cheRoadsAutoExit = new Checkbox(("BoardEditor.cheRoadsAutoExit")); //$NON-NLS-1$
panRoads.add(cheRoadsAutoExit);
labTheme = new Label(("BoardEditor.labTheme"), Label.LEFT); //$NON-NLS-1$
texTheme = new TextField("", 15); //$NON-NLS-1$
labBoard = new Label(("BoardEditor.labBoard"), Label.LEFT); //$NON-NLS-1$
butBoardNew = new Button(("BoardEditor.butBoardNew")); //$NON-NLS-1$
butBoardLoad = new Button(("BoardEditor.butBoardLoad")); //$NON-NLS-1$
butBoardSave = new Button(("BoardEditor.butBoardSave")); //$NON-NLS-1$
butBoardSaveAs = new Button(("BoardEditor.butBoardSaveAs")); //$NON-NLS-1$
butBoardSaveAsImage = new Button(("BoardEditor.butBoardSaveAsImage")); //$NON-NLS-1$
panButtons = new Panel(new GridLayout(3, 2, 2, 2));
panButtons.add(labBoard);
panButtons.add(butBoardNew);
panButtons.add(butBoardLoad);
panButtons.add(butBoardSave);
panButtons.add(butBoardSaveAs);
panButtons.add(butBoardSaveAsImage);
blankL = new Label("", Label.CENTER); //$NON-NLS-1$
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.0; c.weighty = 0.0;
c.insets = new Insets(4, 4, 1, 1);
c.gridwidth = GridBagConstraints.REMAINDER;
addBag(canHex, gridbag, c);
c.gridwidth = 1;
addBag(labElev, gridbag, c);
addBag(butElevUp, gridbag, c);
addBag(butElevDown, gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER;
addBag(texElev, gridbag, c);
addBag(labTerrain, gridbag, c);
addBag(lisTerrain, gridbag, c);
addBag(butDelTerrain, gridbag, c);
addBag(panTerrainType, gridbag, c);
addBag(panTerrExits, gridbag, c);
addBag(panRoads, gridbag, c);
addBag(labTheme, gridbag, c);
addBag(texTheme, gridbag, c);
addBag(butAddTerrain, gridbag, c);
addBag(butMiniMap, gridbag, c);
c.weightx = 1.0; c.weighty = 1.0;
addBag(blankL, gridbag, c);
c.weightx = 1.0; c.weighty = 0.0;
addBag(panButtons, gridbag, c);
}
private void addBag(Component comp, GridBagLayout gridbag, GridBagConstraints c) {
gridbag.setConstraints(comp, c);
add(comp);
}
}