package de.juwimm.cms.gui.controls;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.LayoutManager;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import de.juwimm.cms.util.UIConstants;
public class ColapsePanel extends JPanel {
private static final long serialVersionUID = 6001767654899738989L;
private JLabel arrow;
private GradientBar headerPanel;
private JPanel contentPanel;
private ImageIcon arrowDown;
private ImageIcon arrowRight;
private boolean isDocked = true;
public ColapsePanel() {
super();
init();
}
private void init() {
this.setLayout(new BorderLayout());
headerPanel = new GradientBar();
contentPanel = new JPanel();
arrow = new JLabel();
arrowDown = UIConstants.ICON_ARROW_DOWN;
arrowRight = UIConstants.ICON_ARROW_RIGHT;
arrow.setIcon(arrowDown);
contentPanel.setBackground(new Color(247, 247, 247));
contentPanel.setBorder(BorderFactory.createLineBorder(new Color(113, 113, 113)));
arrow.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
isDocked = !isDocked;
updateDocking();
}
});
arrow.setForeground(Color.white);
arrow.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
headerPanel.setLayout(new BorderLayout());
headerPanel.add(arrow, BorderLayout.WEST);
headerPanel.setBackground(Color.black);
headerPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
this.setLayout(new BorderLayout());
super.add(headerPanel, BorderLayout.NORTH);
super.add(contentPanel, BorderLayout.SOUTH);
updateDocking();
}
@Override
public Component add(Component comp) {
return contentPanel.add(comp);
}
@Override
public void add(Component comp, Object constraints) {
contentPanel.add(comp, constraints);
}
@Override
public Component add(String name, Component comp) {
return contentPanel.add(name, comp);
}
@Override
public Component add(Component comp, int index) {
return contentPanel.add(comp, index);
}
@Override
public void add(Component comp, Object constraints, int index) {
contentPanel.add(comp, constraints, index);
}
/* (non-Javadoc)
* @see java.awt.Container#setLayout(java.awt.LayoutManager)
*/
@Override
public void setLayout(LayoutManager mgr) {
if (contentPanel != null) {
contentPanel.setLayout(mgr);
} else {
super.setLayout(mgr);
}
}
private void updateDocking() {
contentPanel.setVisible(!isDocked);
headerPanel.setDirection(isDocked ? GradientBar.DOWN_UP : GradientBar.UP_DOWN);
arrow.setIcon(!isDocked ? arrowDown : arrowRight);
}
public void setText(String value) {
arrow.setText(value);
}
public void setDocked(boolean state) {
isDocked = state;
updateDocking();
}
}