package com.limegroup.gnutella.gui;
import java.awt.Dimension;
import java.awt.FontMetrics;
import javax.swing.JLabel;
import javax.swing.Icon;
import java.net.URL;
import org.apache.commons.httpclient.URI;
/**
* A label that has a URL.
*/
public class URLLabel extends JLabel {
public URLLabel(URL url, String display) {
this(url.toExternalForm(), display);
}
public URLLabel(URI uri, String display) {
this(uri.toString(), display);
}
public URLLabel(String url) {
this(url, url);
}
public URLLabel(final String url, String display) {
super("<html><a href=\"" + url + "\">" + display + "</a></html");
addMouseListener(GUIUtils.getURLInputListener(url));
setToolTipText(url);
// must explicitly set the preferred size 'cause otherwise
// components will muck up the size, looking at the string-width
// of the text (which isn't what's shown)
setPreferredSize(buildPreferredSize(display));
}
public URLLabel(String url, Icon icon) {
super(icon);
addMouseListener(GUIUtils.getURLInputListener(url));
setToolTipText(url);
}
private Dimension buildPreferredSize(String display) {
FontMetrics fm = getFontMetrics(getFont());
return new Dimension(fm.stringWidth(display) + 3, fm.getHeight());
}
}