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.RefreshListener; 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>PaneItemImpl</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 class PaneItemImpl implements PaneItem, RefreshListener { /** * The container that elements in the pane are added to. */ private final TitledPaddedPanel CONTAINER = new TitledPaddedPanel(); /** * Constant <tt>Component</tt> for use as a standard horizontal * separator. */ private static final Component HORIZONTAL_SEPARATOR = Box.createRigidArea(new Dimension(6,0)); /** * Constant <tt>Component</tt> for use as a standard horizontal * separator. */ private static final Component VERTICAL_SEPARATOR = Box.createRigidArea(new Dimension(0,6)); /** * The component that paints the graph. */ private final GraphPainter PAINTER; private final PaneItemMainLabel LABEL; /** * Creates a new <tt>PaneItemImpl</tt> with the default settings * for the displayed graph. * * @param key the key for obtaining the locale-specific values for * displayed strings */ public PaneItemImpl(final String key) { this(key, new GraphAxisData()); } /** * 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 * @param data the <tt>GraphAxisData</tt> instance specifying the * customized display values to use for the graph */ public PaneItemImpl(final String key, GraphAxisData data) { String title = "STATS_"+key+"_TITLE"; String label = "STATS_"+key+"_LABEL"; CONTAINER.setTitle(GUIMediator.getStringResource(title)); LABEL = new PaneItemMainLabel(GUIMediator.getStringResource(label)); add(LABEL.getLabel()); PAINTER = new GraphPainter(data); add(PAINTER); } // inherit doc comment public JComponent getStatsComponent() { return PAINTER; } // inherit doc comment 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 */ public void registerStatistic(Statistic stat, String displayName) { PAINTER.registerStatistic(stat, displayName); } /** * Refreshes the statistics for this <tt>PaneItem</tt>. */ public void refresh() { PAINTER.repaint(); } // overrides Object.toString public String toString() { return "PaneItemImpl: "+CONTAINER.getTitle(); } // inherit doc comment public void componentResized(ComponentEvent e, Component comp) { LABEL.componentResized(e, comp); } }