package com.google.code.joto.util.ui;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* Helper class for using GridBagLayout, and building forms
*/
public class GridBagLayoutFormBuilder {
protected JPanel parent;
protected GridBagConstraints labelC;
protected GridBagConstraints compC;
// ------------------------------------------------------------------------
public GridBagLayoutFormBuilder(JPanel parent) {
this.parent = parent;
this.labelC = new GridBagConstraints();
this.compC = new GridBagConstraints();
labelC.gridx = 0;
labelC.gridy = 0;
labelC.gridwidth = 1;
labelC.gridheight = 1;
labelC.anchor = GridBagConstraints.WEST;
labelC.fill = GridBagConstraints.HORIZONTAL;
labelC.insets = new Insets(5, 5, 5, 5);
compC.gridx = 1;
compC.gridy = 0;
compC.gridwidth = 1;
compC.gridheight = 1;
compC.weightx = 1.0;
compC.weighty = 0.0;
compC.anchor = GridBagConstraints.WEST;
compC.fill = GridBagConstraints.BOTH;
compC.insets = new Insets(5, 5, 5, 5);
}
// ------------------------------------------------------------------------
/**
* add 1 row in form, as "<<JLabel (LEFT)>> <<Comp (FILL)>>"
* @param label
* @param comp
*/
public void addLabelComp(String label, JComponent comp) {
parent.add(new JLabel(label), labelC);
parent.add(comp, compC);
newline();
}
public void addLabelRow(String label) {
JLabel jlabel = new JLabel(label);
parent.add(jlabel, labelC);
newline();
}
public void addLabelCompFill2Rows(String label, JComponent jcomp) {
addLabelFillRow(label);
addCompFillRow(jcomp);
}
public void addLabelFillRow(String label) {
labelC.gridwidth = 2;
JLabel jlabel = new JLabel(label);
parent.add(jlabel, labelC);
labelC.gridwidth = 1;
newline();
}
public void addCompFillRow(JComponent jcomp) {
compC.gridx = labelC.gridx; // tmp set
compC.gridwidth = 2;
compC.weighty = 1.0;
parent.add(jcomp, compC);
// restore from tmp set
compC.gridx = labelC.gridx + 1;
compC.gridwidth = 1;
compC.weighty = 0.0;
newline();
}
public void addCompRow(JComponent jcomp) {
addCompRow(jcomp, 0.0);
}
public void addCompRow(JComponent jcomp, double weightY) {
compC.gridx = labelC.gridx; // tmp set
compC.gridwidth = 2;
if (weightY == 0.0) {
compC.fill = GridBagConstraints.HORIZONTAL;
}
compC.weighty = weightY;
parent.add(jcomp, compC);
// restore from tmp set
compC.gridx = labelC.gridx + 1;
compC.gridwidth = 1;
compC.weighty = 0.0;
compC.fill = GridBagConstraints.BOTH;
newline();
}
private void newline() {
labelC.gridy++;
compC.gridy++;
}
public void newColumn() {
labelC.gridx += 2;
labelC.gridy = 0;
compC.gridx += 2;
compC.gridy = 0;
}
}