--- /dev/null
+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);
+}