// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.trustosm.gui.dialogs; import java.awt.GridBagLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import org.openstreetmap.josm.tools.GBC; import org.openstreetmap.josm.tools.ImageProvider; public class JCollapsiblePanel extends JPanel { private boolean expanded; JPanel contentPanel_; HeaderPanel headerPanel_; private class HeaderPanel extends JPanel { JLabel title; HeaderPanel(String text) { setLayout(new GridBagLayout()); title = new JLabel(text, ImageProvider.get("misc", "minimized"), SwingConstants.LEADING); add(title, GBC.eol()); addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { expanded = !expanded; if (contentPanel_.isShowing()) { contentPanel_.setVisible(false); title.setIcon(ImageProvider.get("misc", "minimized")); } else { contentPanel_.setVisible(true); title.setIcon(ImageProvider.get("misc", "normal")); } validate(); headerPanel_.repaint(); } }); } } public JCollapsiblePanel(String text, JPanel panel) { super(new GridBagLayout()); expanded = false; headerPanel_ = new HeaderPanel(text); contentPanel_ = panel; add(headerPanel_, GBC.eol()); add(contentPanel_, GBC.eol()); contentPanel_.setVisible(false); } }