package org.chesmapper.view.gui.util; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JRadioButton; import javax.swing.border.EmptyBorder; import org.chesmapper.map.main.Settings; import org.chesmapper.view.cluster.Clustering; import org.chesmapper.view.gui.ViewControler; import org.chesmapper.view.gui.ViewControler.DisguiseMode; import org.mg.javalib.gui.TextPanel; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.factories.ButtonBarFactory; import com.jgoodies.forms.layout.FormLayout; public class HideUnselectedDialog extends JDialog { private HideUnselectedDialog(final ViewControler viewControler, final Clustering clustering) { super(Settings.TOP_LEVEL_FRAME, Settings.text("hide-unselected.title"), true); DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("fill:p:grow")); TextPanel tp1 = new TextPanel(Settings.text("hide-unselected.unzoomed-info")); builder.append(tp1); final JRadioButton zoomInvisible = new JRadioButton(Settings.text("hide-unselected.invisible")); final JRadioButton zoomTranslucent = new JRadioButton(Settings.text("hide-unselected.translucent")); final JRadioButton zoomSolid = new JRadioButton(Settings.text("hide-unselected.solid")); JRadioButton zoomButtons[] = new JRadioButton[] { zoomInvisible, zoomTranslucent, zoomSolid }; ButtonGroup group = new ButtonGroup(); for (JRadioButton r : zoomButtons) { group.add(r); builder.append(r); } if (viewControler.getDisguiseUnZoomed() == DisguiseMode.invisible) zoomInvisible.setSelected(true); else if (viewControler.getDisguiseUnZoomed() == DisguiseMode.translucent) zoomTranslucent.setSelected(true); else zoomSolid.setSelected(true); builder.append(" ");//add gap TextPanel tp2 = new TextPanel(Settings.text("hide-unselected.unhovered-info")); builder.append(tp2); final JRadioButton hoverTranslucent = new JRadioButton(Settings.text("hide-unselected.translucent")); final JRadioButton hoverSolid = new JRadioButton(Settings.text("hide-unselected.solid")); JRadioButton hoverButtons[] = new JRadioButton[] { hoverTranslucent, hoverSolid }; ButtonGroup group2 = new ButtonGroup(); for (JRadioButton r : hoverButtons) { group2.add(r); builder.append(r); } if (viewControler.getDisguiseUnHovered() == DisguiseMode.translucent) hoverTranslucent.setSelected(true); else hoverSolid.setSelected(true); ActionListener l = new ActionListener() { @Override public void actionPerformed(ActionEvent a) { if (a.getSource() == zoomInvisible) viewControler.setDisguiseUnZoomed(DisguiseMode.invisible); else if (a.getSource() == zoomTranslucent) viewControler.setDisguiseUnZoomed(DisguiseMode.translucent); else if (a.getSource() == zoomSolid) viewControler.setDisguiseUnZoomed(DisguiseMode.solid); else if (a.getSource() == hoverTranslucent) viewControler.setDisguiseUnHovered(DisguiseMode.translucent); else if (a.getSource() == hoverSolid) viewControler.setDisguiseUnHovered(DisguiseMode.solid); } }; for (JRadioButton r : zoomButtons) r.addActionListener(l); for (JRadioButton r : hoverButtons) r.addActionListener(l); JButton close = new JButton("Close"); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { HideUnselectedDialog.this.setVisible(false); } }); builder.append(ButtonBarFactory.buildCloseBar(close)); builder.setBorder(new EmptyBorder(10, 10, 10, 10)); setLayout(new BorderLayout()); add(builder.getPanel()); viewControler.addViewListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (!HideUnselectedDialog.this.isVisible()) return; } }); pack(); tp1.setPreferredWith(300); tp2.setPreferredWith(300); pack(); setLocationRelativeTo(getOwner()); } public static void showDialog(ViewControler viewControler, Clustering clustering) { HideUnselectedDialog d = new HideUnselectedDialog(viewControler, clustering); d.setVisible(true); } }