package com.limegroup.gnutella.gui.statistics.panes; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ComponentEvent; import javax.swing.Box; import javax.swing.JComponent; import com.limegroup.gnutella.gui.GUIMediator; import com.limegroup.gnutella.gui.TitledPaddedPanel; import com.limegroup.gnutella.statistics.Statistic; /** * This class provides a skeletal implementation of the <tt>PaneItem</tt> * interface.<p> * * It provides the basic implementation for displaying one statistic within * a larger window of statistics. Each <tt>AbstractPaneItem</tt> has a titled * border and a label describing the statistic. The label is followed by * standardized spacing. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| public abstract class AbstractPaneItem implements PaneItem { /** * The component that displays the statistic. */ protected final StatisticDisplayer STAT_DISPLAYER; /** * The container that elements in the pane are added to. */ protected final TitledPaddedPanel CONTAINER = new TitledPaddedPanel(); /** * Constant <tt>Component</tt> for use as a standard horizontal * separator. */ protected static final Component HORIZONTAL_SEPARATOR = Box.createRigidArea(new Dimension(6,0)); /** * Constant <tt>Component</tt> for use as a standard horizontal * separator. */ protected static final Component VERTICAL_SEPARATOR = Box.createRigidArea(new Dimension(0,6)); /** * Label for the statistic. */ private final PaneItemMainLabel LABEL; /** * This sole constructor overrides the the public accessibility of the * default constructor and is usually called implicitly. * * @param key the key for obtaining the locale-specific values for * displayed strings */ protected AbstractPaneItem(final String key, final StatisticDisplayer statDisplayer) { STAT_DISPLAYER = statDisplayer; String title = "STATS_"+key+"_TITLE"; String label = "STATS_"+key+"_LABEL"; CONTAINER.setTitle(GUIMediator.getStringResource(title)); LABEL = new PaneItemMainLabel(GUIMediator.getStringResource(label)); add(LABEL.getLabel()); add(statDisplayer.getComponent()); } // inherit doc comment public JComponent getStatsComponent() { return STAT_DISPLAYER.getComponent(); } // inherit doc oomment public Container getContainer() { return CONTAINER; } /** * Adds the specified <tt>Component</tt> to the enclosed <tt>Container</tt> * instance. * * @param comp the <tt>Component</tt> to add */ protected final void add(Component comp) { CONTAINER.add(comp); } /** * Returns a <tt>Component</tt> standardly sized for horizontal separators. * * @return the constant <tt>Component</tt> used as a standard horizontal * separator */ protected final Component getHorizontalSeparator() { return HORIZONTAL_SEPARATOR; } /** * Returns a <tt>Component</tt> standardly sized for vertical separators. * * @return the constant <tt>Component</tt> used as a standard vertical * separator */ protected final Component getVerticalSeparator() { return VERTICAL_SEPARATOR; } /** * Registers the specified <tt>Statistic</tt> for display. * * @param stat the <tt>Statistic</tt> instance to register */ protected void registerStatistic(Statistic stat, String displayName) { STAT_DISPLAYER.registerStatistic(stat, displayName); } /** * Registers the set of two <tt>Statistic</tt>s for display. * * @param stat the <tt>Statistic</tt> instance to register */ protected void registerDualStatistic(Statistic stat0, Statistic stat1, String displayName) { STAT_DISPLAYER.registerDualStatistic(stat0, stat1, displayName); } /** * Refreshes the statistics for this <tt>PaneItem</tt>. */ public void refresh() { STAT_DISPLAYER.refresh(); } // overrides Object.toString public String toString() { return "AbstractPaneItem: "+CONTAINER.getTitle(); } // inherit doc comment public void componentResized(ComponentEvent e, Component comp) { LABEL.componentResized(e, comp); } }