X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fswing%2FStatusBar.java;h=c0e844db66009de486bc6100c92585d44cb31fdf;hb=f33c078012fd2c8683a5253e7c9cfffb460d7fcb;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..c0e844d 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; @@ -34,7 +37,6 @@ import javax.swing.border.EtchedBorder; * 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,13 +47,16 @@ 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)); } /** @@ -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(); + } + }