package com.kenai.redminenb.util;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.plaf.basic.BasicTreeUI;
public class ExpandablePanel {
private final JComponent panel;
private final JLabel label;
private final Icon ei;
private final Icon ci;
private boolean expaned = true;
public ExpandablePanel(JLabel l, JComponent p) {
BasicTreeUI tvui = (BasicTreeUI) new JTree().getUI();
ei = tvui.getExpandedIcon();
ci = tvui.getCollapsedIcon();
this.panel = p;
this.label = l;
this.label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (panel.isVisible()) {
colapse();
} else {
expand();
}
}
});
expaned = p.isVisible();
updateIcon();
}
public void expand() {
expaned = true;
panel.setVisible(true);
updateIcon();
}
public void colapse() {
expaned = false;
panel.setVisible(false);
updateIcon();
}
public void setVisible(boolean visible) {
label.setVisible(visible);
panel.setVisible(visible && expaned);
}
private void updateIcon() {
if(expaned) {
label.setIcon(ei);
} else {
label.setIcon(ci);
}
}
}