X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGAlignExportSettings.java;fp=src%2Fjalview%2Fjbgui%2FGAlignExportSettings.java;h=2583b6ba0feef250e929fe49451236a32720fbd6;hb=60bf4c4778ecca475a951c4dd00731933d0b7c59;hp=0000000000000000000000000000000000000000;hpb=1152ad2009cfc7bf521b6bcb556f6031bbe5b86a;p=jalview.git diff --git a/src/jalview/jbgui/GAlignExportSettings.java b/src/jalview/jbgui/GAlignExportSettings.java new file mode 100644 index 0000000..2583b6b --- /dev/null +++ b/src/jalview/jbgui/GAlignExportSettings.java @@ -0,0 +1,146 @@ +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); +}