package com.limegroup.gnutella.gui.statistics.panes; import java.awt.Component; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.event.ComponentEvent; import javax.swing.JComponent; import com.limegroup.gnutella.gui.MultiLineLabel; /** * This class uses the decorator pattern around a <tt>MultiLineLabel</tt> * that is customized for use in statistics panes. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| final class PaneItemMainLabel { /** * The wrapped <tt>MultiLineLabel</tt> label instance. */ private final MultiLineLabel LABEL; /** * Constant for the width of labels. */ private final int LABEL_WIDTH = 480; /** * This constructor creates the label object with the standard width * and maximum size. * * @param str the string for the label */ PaneItemMainLabel(final String str) { LABEL = new MultiLineLabel(str, LABEL_WIDTH); FontMetrics fm = LABEL.getFontMetrics(LABEL.getFont()); int height = fm.getHeight(); height *= LABEL.getLineCount(); height += 12; // add separator pixels to the height height += 10; Dimension dim = new Dimension(1000, height); LABEL.setPreferredSize(dim); LABEL.setMaximumSize(dim); } /** * Returns the <tt>Component</tt> containing the underlying label. * * @return the <tt>Component</tt> containing the underlying label */ final JComponent getLabel() { return LABEL; } // inherit doc comment public void componentResized(ComponentEvent e, Component comp) { Dimension dim = comp.getSize(); LABEL.setText(LABEL.getText(), dim.width-55); } }