package org.limewire.ui.swing.components;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
import org.jdesktop.application.Resource;
import org.jdesktop.swingx.JXPanel;
import org.jdesktop.swingx.painter.Painter;
import org.limewire.ui.swing.util.GuiUtils;
/**
* Creates a Lime Message Component. Currently
* this is painted green by default and has a triangle, chat arrow
* attached to the bottom of it.
*/
public class MessageComponent extends JPanel {
@Resource
private Font headingFont;
@Resource
private Color fontColor;
@Resource
private Font subFont;
/**
* Contains the actual subComponents.
*/
private final JXPanel messageContainer;
private final JLabel arrowLabel;
public MessageComponent() {
this(18, 22, 22, 18);
}
public MessageComponent(int topInset, int leftInset, int bottomInset, int rightInset) {
super(new MigLayout("insets 0 0 0 0, gap 0"));
GuiUtils.assignResources(this);
setOpaque(false);
messageContainer = new JXPanel(new MigLayout("insets " + topInset + " " + leftInset + " " + bottomInset + " " + rightInset + ", hidemode 3"));
messageContainer.setOpaque(false);
arrowLabel = new JLabel();
add(arrowLabel, "pos (messageContainer.x + 25) 0.99al");
add(messageContainer, "wrap");
}
public void setMessageBackroundPainter(Painter painter) {
messageContainer.setBackgroundPainter(painter);
}
public void setArrowIcon(Icon icon) {
arrowLabel.setIcon(icon);
setBorder(BorderFactory.createEmptyBorder(0, 0, icon.getIconHeight()-2, 0));
}
public void addComponent(JComponent component, String layout) {
messageContainer.add(component, layout);
}
public void decorateHeaderLabel(JComponent component) {
component.setFont(headingFont);
component.setForeground(fontColor);
}
public void decorateHeaderLink(HyperlinkButton link) {
link.setFont(headingFont);
}
public void decorateSubLabel(JLabel component) {
component.setFont(subFont);
component.setForeground(fontColor);
}
public void decorateSubLabel(HTMLLabel label) {
label.setHtmlFont(subFont);
label.setHtmlForeground(fontColor);
}
public void decorateFont(JComponent component) {
component.setFont(subFont);
}
}