/* * StatusBar.java * * Created on June 7, 2003, 1:34 PM */ package kiyut.swing.statusbar; //import java.awt.Dimension; //import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.util.*; import javax.swing.*; import javax.swing.border.*; /** * * @author tonny */ public class StatusBar extends JPanel { private List<StatusBarItem> itemList; /** Creates a new instance of StatusBar */ public StatusBar() { this.setLayout(new java.awt.GridBagLayout()); itemList = new ArrayList<StatusBarItem>(); } /** Appends a statusBarItem to the end of this statusBar. *@param statusBarItem the StatusBarItem to be added */ public void addItem(StatusBarItem statusBarItem) { GridBagConstraints gridBagConstraints; // add item into container gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = itemList.size(); gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; this.add(statusBarItem, gridBagConstraints); // update the prev weightx; int pos = itemList.size()-1; if (pos >= 0) { StatusBarItem prevItem = (StatusBarItem)itemList.get(pos); java.awt.GridBagLayout layout = (java.awt.GridBagLayout)getLayout(); gridBagConstraints = layout.getConstraints(prevItem); gridBagConstraints.weightx = 0; layout.setConstraints(prevItem, gridBagConstraints); } // add the list itemList.add(statusBarItem); } public StatusBarItem removeItem(int pos) { super.remove(pos); // remove from the container StatusBarItem removed = itemList.remove(pos); // remove from the list // last item if (pos == itemList.size() && (pos > 0)) { StatusBarItem prevItem = itemList.get(pos); java.awt.GridBagLayout layout = (java.awt.GridBagLayout)getLayout(); GridBagConstraints gridBagConstraints = layout.getConstraints(prevItem); gridBagConstraints.weightx = 1; layout.setConstraints(prevItem, gridBagConstraints); } return removed; } public java.util.List<StatusBarItem> getItemList() { return itemList; } public StatusBarItem getItem(int pos) { return itemList.get(pos); } public int getItemCount() { return itemList.size(); } }