+++ /dev/null
-package tim.prune.gui;
-
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-/**
- * Class to make it easier to use GridBagLayout for a non-equal-width layout
- * Default is two columns but can handle more
- */
-public class GuiGridLayout
-{
- private GridBagLayout _layout = null;
- private GridBagConstraints _constraints = null;
- private JPanel _panel = null;
- private int _numColumns = 0;
- private double[] _colWeights = null;
- private boolean[] _rightAligns = null;
- private int _x = 0;
- private int _y = 0;
-
- /**
- * Constructor
- * @param inPanel panel using layout
- */
- public GuiGridLayout(JPanel inPanel)
- {
- // Default is two columns, with more weight to the right-hand one; first column is right-aligned
- this(inPanel, null, null);
- }
-
- /**
- * Constructor
- * @param inPanel panel using layout
- * @param inColumnWeights array of column weights
- * @param inAlignRights array of booleans, true for right alignment, false for left
- */
- public GuiGridLayout(JPanel inPanel, double[] inColumnWeights, boolean[] inAlignRights)
- {
- _panel = inPanel;
- _layout = new GridBagLayout();
- _constraints = new GridBagConstraints();
- _colWeights = inColumnWeights;
- _rightAligns = inAlignRights;
- if (_colWeights == null || _rightAligns == null || _colWeights.length != _rightAligns.length
- || _colWeights.length < 2)
- {
- _colWeights = new double[] {0.5, 1.0};
- _rightAligns = new boolean[] {true, false};
- }
- _numColumns = _colWeights.length;
- _constraints.weightx = 1.0;
- _constraints.weighty = 0.0;
- _constraints.ipadx = 10;
- _constraints.ipady = 1;
- _constraints.insets = new Insets(1, 5, 1, 5);
- // Apply layout to panel
- _panel.setLayout(_layout);
- }
-
- /**
- * Add the given component to the grid
- * @param inComponent component to add
- */
- public void add(JComponent inComponent)
- {
- _constraints.gridx = _x;
- _constraints.gridy = _y;
- _constraints.weightx = _colWeights[_x];
- // set anchor
- _constraints.anchor = (_rightAligns[_x]?GridBagConstraints.LINE_END:GridBagConstraints.LINE_START);
- _layout.setConstraints(inComponent, _constraints);
- // add to panel
- _panel.add(inComponent);
- // work out next position
- _x++;
- if (_x >= _numColumns) {
- nextRow();
- }
- }
-
- /**
- * Go to the next row of the grid
- */
- public void nextRow()
- {
- _x = 0;
- _y++;
- }
-}