JAL-1780 made the 'Select All' checkbox to be shown for all the setting panels
[jalview.git] / src / jalview / jbgui / GAlignExportSettings.java
1 package jalview.jbgui;
2
3 import jalview.util.MessageManager;
4
5 import java.awt.BorderLayout;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.awt.event.ItemEvent;
9 import java.awt.event.ItemListener;
10
11 import javax.swing.JButton;
12 import javax.swing.JCheckBox;
13 import javax.swing.JPanel;
14
15 @SuppressWarnings("serial")
16 public abstract class GAlignExportSettings extends JPanel
17 {
18   protected JPanel hiddenRegionConfPanel = new JPanel();
19
20   protected JPanel complexExportPanel = new JPanel();
21
22   protected JPanel optionsPanel = new JPanel();
23
24   protected JPanel actionPanel = new JPanel();
25
26   protected BorderLayout hiddenRegionLayout = new BorderLayout();
27
28   protected BorderLayout complexExportLayout = new BorderLayout();
29
30   protected BorderLayout mainLayout = new BorderLayout();
31
32   protected JCheckBox chkAll = new JCheckBox();
33
34   protected JCheckBox chkHiddenSeqs = new JCheckBox();
35
36   protected JCheckBox chkHiddenCols = new JCheckBox();
37
38   protected JCheckBox chkExportAnnots = new JCheckBox();
39
40   protected JCheckBox chkExportFeats = new JCheckBox();
41
42   protected JCheckBox chkExportGrps = new JCheckBox();
43
44   JButton btnOk = new JButton();
45
46   JButton btnCancel = new JButton();
47
48   private boolean hasHiddenSeq, hasHiddenCols, isComplexAlignFile,
49           showDialog;
50
51   public GAlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
52           String alignFileFormat)
53   {
54     this.hasHiddenSeq = hasHiddenSeq;
55     this.hasHiddenCols = hasHiddenCols;
56     String[] complexFormats =
57     { "JSON", "HTML" };
58
59     for (String format : complexFormats)
60     {
61       if (format.equalsIgnoreCase(alignFileFormat))
62       {
63         this.isComplexAlignFile = true;
64         break;
65       }
66     }
67     if (this.hasHiddenCols || this.hasHiddenSeq || this.isComplexAlignFile)
68     {
69       this.showDialog = true;
70     }
71     init();
72   }
73
74   public void init()
75   {
76     chkHiddenSeqs.setText(MessageManager
77             .getString("action.export_hidden_sequences"));
78     chkHiddenCols.setText(MessageManager
79             .getString("action.export_hidden_columns"));
80     chkExportAnnots.setText(MessageManager
81             .getString("action.export_annotations"));
82     chkExportFeats.setText(MessageManager
83             .getString("action.export_features"));
84     chkExportGrps.setText(MessageManager.getString("action.export_groups"));
85     btnOk.setText(MessageManager.getString("action.ok"));
86     btnCancel.setText(MessageManager.getString("action.cancel"));
87     chkAll.setText(MessageManager.getString("action.select_all"));
88
89     hiddenRegionConfPanel.setLayout(hiddenRegionLayout);
90     complexExportPanel.setLayout(complexExportLayout);
91     setLayout(mainLayout);
92
93     chkAll.addItemListener(new ItemListener()
94     {
95       public void itemStateChanged(ItemEvent e)
96       {
97         checkAllAction();
98       }
99     });
100
101     btnOk.addActionListener(new ActionListener()
102     {
103       public void actionPerformed(ActionEvent e)
104       {
105         ok_actionPerformed(e);
106       }
107     });
108
109     btnCancel.addActionListener(new ActionListener()
110     {
111       public void actionPerformed(ActionEvent e)
112       {
113         cancel_actionPerformed(e);
114       }
115     });
116
117     // hiddenRegionConfPanel.add(chkAll, BorderLayout.NORTH);
118     hiddenRegionConfPanel.add(chkHiddenSeqs, BorderLayout.CENTER);
119     hiddenRegionConfPanel.add(chkHiddenCols, BorderLayout.SOUTH);
120     chkHiddenSeqs.setEnabled(hasHiddenSeq);
121     chkHiddenCols.setEnabled(hasHiddenCols);
122
123     complexExportPanel.add(chkExportAnnots, BorderLayout.NORTH);
124     complexExportPanel.add(chkExportFeats, BorderLayout.CENTER);
125     complexExportPanel.add(chkExportGrps, BorderLayout.SOUTH);
126
127     actionPanel.add(chkAll);
128     if (hasHiddenSeq || hasHiddenCols)
129     {
130       optionsPanel.add(hiddenRegionConfPanel);
131     }
132
133     if (this.isComplexAlignFile)
134     {
135       optionsPanel.add(complexExportPanel);
136     }
137     actionPanel.add(btnCancel);
138     actionPanel.add(btnOk);
139
140     add(optionsPanel, BorderLayout.NORTH);
141     add(actionPanel, BorderLayout.SOUTH);
142
143   }
144   
145   private void checkAllAction()
146   {
147     boolean isSelected = chkAll.isSelected();
148     chkHiddenSeqs.setSelected(chkHiddenSeqs.isEnabled() && isSelected);
149     chkHiddenCols.setSelected(chkHiddenCols.isEnabled() && isSelected);
150     chkExportAnnots.setSelected(isComplexAlignFile
151             && chkExportAnnots.isEnabled() && isSelected);
152     chkExportFeats.setSelected(isComplexAlignFile
153             && chkExportFeats.isEnabled() && isSelected);
154     chkExportGrps.setSelected(isComplexAlignFile
155             && chkExportGrps.isEnabled() && isSelected);
156   }
157
158   public boolean isShowDialog()
159   {
160     return showDialog;
161   }
162
163   public void setShowDialog(boolean showDialog)
164   {
165     this.showDialog = showDialog;
166   }
167
168   public abstract void ok_actionPerformed(ActionEvent e);
169
170   public abstract void cancel_actionPerformed(ActionEvent e);
171 }