package jalview.jbgui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JPanel; @SuppressWarnings("serial") public abstract class GAlignExportSettings extends JPanel { protected JPanel hiddenRegionConfPanel = new JPanel(); protected JPanel complexExportPanel = new JPanel(); protected JPanel optionsPanel = new JPanel(); protected JPanel actionPanel = new JPanel(); protected BorderLayout hiddenRegionLayout = new BorderLayout(); protected BorderLayout complexExportLayout = new BorderLayout(); protected BorderLayout mainLayout = new BorderLayout(); protected JCheckBox chkAll = new JCheckBox("Check All"); protected JCheckBox chkHiddenSeqs = new JCheckBox( "Export Hidden Sequences"); protected JCheckBox chkHiddenCols = new JCheckBox("Export Hidden Columns"); protected JCheckBox chkExportAnnots = new JCheckBox("Export Annotations"); protected JCheckBox chkExportFeats = new JCheckBox("Export Features"); protected JCheckBox chkExportGrps = new JCheckBox("Export Groups"); JButton btnOk = new JButton("Ok"); JButton btnCancel = new JButton("Cancel"); private boolean hasHiddenSeq, hasHiddenCols, isComplexAlignFile; boolean isComplexFormat = false; public GAlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols, String alignFileFormat) { this.hasHiddenSeq = hasHiddenSeq; this.hasHiddenCols = hasHiddenCols; String[] complexFormats = { "JSON", "HTML" }; for (String format : complexFormats) { if (format.equalsIgnoreCase(alignFileFormat)) { this.isComplexAlignFile = true; break; } } init(); } public void init() { hiddenRegionConfPanel.setLayout(hiddenRegionLayout); complexExportPanel.setLayout(complexExportLayout); setLayout(mainLayout); chkAll.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { checkAllAction(); } }); btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ok_actionPerformed(e); } }); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cancel_actionPerformed(e); } }); hiddenRegionConfPanel.add(chkAll, BorderLayout.NORTH); hiddenRegionConfPanel.add(chkHiddenSeqs, BorderLayout.CENTER); hiddenRegionConfPanel.add(chkHiddenCols, BorderLayout.SOUTH); chkHiddenSeqs.setEnabled(hasHiddenSeq); chkHiddenCols.setEnabled(hasHiddenCols); complexExportPanel.add(chkExportAnnots, BorderLayout.NORTH); complexExportPanel.add(chkExportFeats, BorderLayout.CENTER); complexExportPanel.add(chkExportGrps, BorderLayout.SOUTH); if (hasHiddenSeq || hasHiddenCols) { optionsPanel.add(hiddenRegionConfPanel); } if (isComplexAlignFile) { optionsPanel.add(complexExportPanel); } actionPanel.add(btnCancel); actionPanel.add(btnOk); add(optionsPanel, BorderLayout.NORTH); add(actionPanel, BorderLayout.SOUTH); } private void checkAllAction() { boolean isSelected = chkAll.isSelected(); chkHiddenSeqs.setSelected(chkHiddenSeqs.isEnabled() && isSelected); chkHiddenCols.setSelected(chkHiddenCols.isEnabled() && isSelected); chkExportAnnots.setSelected(isComplexAlignFile && chkExportAnnots.isEnabled() && isSelected); chkExportFeats.setSelected(isComplexAlignFile && chkExportFeats.isEnabled() && isSelected); chkExportGrps.setSelected(isComplexAlignFile && chkExportGrps.isEnabled() && isSelected); } public abstract void ok_actionPerformed(ActionEvent e); public abstract void cancel_actionPerformed(ActionEvent e); }