package ilarkesto.swing;
import ilarkesto.core.logging.Log;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class HorizontalBarPanel extends JPanel {
private static final Log LOG = Log.get(HorizontalBarPanel.class);
public static void main(String[] args) {
HorizontalBarPanel panel = new HorizontalBarPanel();
panel.addColumn(new JLabel("Column 1"));
panel.addColumn(new JLabel("Column 2"));
panel.addColumn(new JLabel("Column 3"));
panel.addColumn(new JLabel("Column 4"));
Swing.showInJFrame(panel);
}
private JPanel grid;
public HorizontalBarPanel() {
setLayout(new BorderLayout());
add(createGrid(), BorderLayout.CENTER);
}
public void addColumn(Component component) {
LOG.debug("addColumn:", component);
grid.add(component);
grid.updateUI();
}
public void removeColumn(Component component) {
LOG.debug("removeColumn:", component);
grid.remove(component);
grid.updateUI();
}
public void removeColumnsAfter(Component component) {
LOG.debug("removeColumnsAfter:", component);
int count = grid.getComponentCount();
for (int i = count - 1; i >= 0; i--) {
if (grid.getComponent(i) == component) break;
grid.remove(i);
}
grid.updateUI();
}
public void removeAllColumns() {
LOG.debug("removeAllColumns");
grid.removeAll();
}
private Component createGrid() {
grid = new JPanel(new GridLayout(1, 0, 10, 0));
JPanel wrapper = new JPanel(new BorderLayout());
wrapper.add(grid, BorderLayout.WEST);
JScrollPane scroller = new JScrollPane(wrapper);
scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
return scroller;
}
}