X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fswing%2FStatusBar.java;h=1e1873e1f515f4384cf939c59908f36eafb1535f;hb=c63257e8cc0ba1a5aca9364b22171abe7279d479;hp=ebfaec29b0dff53d4bb9b9df53b05cb7c5ae5381;hpb=23aa0ec9da5f8a3e2eefaf2343bc68b88a29096a;p=jSite2.git diff --git a/src/net/pterodactylus/util/swing/StatusBar.java b/src/net/pterodactylus/util/swing/StatusBar.java index ebfaec2..1e1873e 100644 --- a/src/net/pterodactylus/util/swing/StatusBar.java +++ b/src/net/pterodactylus/util/swing/StatusBar.java @@ -20,9 +20,12 @@ package net.pterodactylus.util.swing; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.util.ArrayList; +import java.util.List; import javax.swing.JFrame; import javax.swing.JLabel; @@ -32,9 +35,8 @@ import javax.swing.border.EtchedBorder; /** * Status bar component that can be added to the {@link BorderLayout#SOUTH} area * of a {@link JFrame}’s {@link JFrame#getContentPane() content pane}. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ /* TODO - make it possible to add further components. */ public class StatusBar extends JPanel { @@ -45,18 +47,21 @@ public class StatusBar extends JPanel { /** The label. */ private JLabel statusLabel = new JLabel(); + /** Addition components. */ + private List sideComponents = new ArrayList(); + /** * Creates a new status bar. */ public StatusBar() { setLayout(layout); statusLabel.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); - add(statusLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); + add(statusLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); } /** * Sets the text of the label. - * + * * @param text * The text of the label */ @@ -64,4 +69,60 @@ public class StatusBar extends JPanel { statusLabel.setText(text); } + /** + * Adds a side component to the right side of the status bar, pushing all + * previously added side components to the left. + * + * @param component + * The component to add + */ + public void addSideComponent(Component component) { + sideComponents.add(component); + int newIndex = sideComponents.size(); + add(component, new GridBagConstraints(newIndex, 0, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 2, 0, 0), 0, 0)); + validate(); + } + + /** + * Returns the number of side components. + * + * @return The number of side components + */ + public int getSideComponentCount() { + return sideComponents.size(); + } + + /** + * Returns all side components in order. + * + * @return All side components + */ + public List getSideComponents() { + return sideComponents; + } + + /** + * Removes the side component with the given index. + * + * @param sideComponentIndex + * The index of the side component to remove + */ + public void removeSideComponent(int sideComponentIndex) { + Component sideComponent = sideComponents.remove(sideComponentIndex); + remove(sideComponent); + validate(); + } + + /** + * Removes the given side component. + * + * @param sideComponent + * The side component to remove + */ + public void removeSideComponent(Component sideComponent) { + sideComponents.remove(sideComponent); + remove(sideComponent); + validate(); + } + }