JAL-1645 source formatting and organise imports
[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 = { "JSON", "HTML" };
57
58     for (String format : complexFormats)
59     {
60       if (format.equalsIgnoreCase(alignFileFormat))
61       {
62         this.isComplexAlignFile = true;
63         break;
64       }
65     }
66     if (this.hasHiddenCols || this.hasHiddenSeq || this.isComplexAlignFile)
67     {
68       this.showDialog = true;
69     }
70     init();
71   }
72
73   public void init()
74   {
75     chkHiddenSeqs.setText(MessageManager
76             .getString("action.export_hidden_sequences"));
77     chkHiddenCols.setText(MessageManager
78             .getString("action.export_hidden_columns"));
79     chkExportAnnots.setText(MessageManager
80             .getString("action.export_annotations"));
81     chkExportFeats.setText(MessageManager
82             .getString("action.export_features"));
83     chkExportGrps.setText(MessageManager.getString("action.export_groups"));
84     btnOk.setText(MessageManager.getString("action.ok"));
85     btnCancel.setText(MessageManager.getString("action.cancel"));
86     chkAll.setText(MessageManager.getString("action.select_all"));
87
88     hiddenRegionConfPanel.setLayout(hiddenRegionLayout);
89     complexExportPanel.setLayout(complexExportLayout);
90     setLayout(mainLayout);
91
92     chkAll.addItemListener(new ItemListener()
93     {
94       public void itemStateChanged(ItemEvent e)
95       {
96         checkAllAction();
97       }
98     });
99
100     btnOk.addActionListener(new ActionListener()
101     {
102       public void actionPerformed(ActionEvent e)
103       {
104         ok_actionPerformed(e);
105       }
106     });
107
108     btnCancel.addActionListener(new ActionListener()
109     {
110       public void actionPerformed(ActionEvent e)
111       {
112         cancel_actionPerformed(e);
113       }
114     });
115
116     // hiddenRegionConfPanel.add(chkAll, BorderLayout.NORTH);
117     hiddenRegionConfPanel.add(chkHiddenSeqs, BorderLayout.CENTER);
118     hiddenRegionConfPanel.add(chkHiddenCols, BorderLayout.SOUTH);
119     chkHiddenSeqs.setEnabled(hasHiddenSeq);
120     chkHiddenCols.setEnabled(hasHiddenCols);
121
122     complexExportPanel.add(chkExportAnnots, BorderLayout.NORTH);
123     complexExportPanel.add(chkExportFeats, BorderLayout.CENTER);
124     complexExportPanel.add(chkExportGrps, BorderLayout.SOUTH);
125
126     actionPanel.add(chkAll);
127
128     if (this.isComplexAlignFile)
129     {
130       optionsPanel.add(complexExportPanel);
131     }
132
133     if (hasHiddenSeq || hasHiddenCols)
134     {
135       optionsPanel.add(hiddenRegionConfPanel);
136     }
137
138     actionPanel.add(btnCancel);
139     actionPanel.add(btnOk);
140
141     add(optionsPanel, BorderLayout.NORTH);
142     add(actionPanel, BorderLayout.SOUTH);
143
144   }
145
146   private void checkAllAction()
147   {
148     boolean isSelected = chkAll.isSelected();
149     chkHiddenSeqs.setSelected(chkHiddenSeqs.isEnabled() && isSelected);
150     chkHiddenCols.setSelected(chkHiddenCols.isEnabled() && isSelected);
151     chkExportAnnots.setSelected(isComplexAlignFile
152             && chkExportAnnots.isEnabled() && isSelected);
153     chkExportFeats.setSelected(isComplexAlignFile
154             && chkExportFeats.isEnabled() && isSelected);
155     chkExportGrps.setSelected(isComplexAlignFile
156             && chkExportGrps.isEnabled() && isSelected);
157   }
158
159   public boolean isShowDialog()
160   {
161     return showDialog;
162   }
163
164   public void setShowDialog(boolean showDialog)
165   {
166     this.showDialog = showDialog;
167   }
168
169   public abstract void ok_actionPerformed(ActionEvent e);
170
171   public abstract void cancel_actionPerformed(ActionEvent e);
172 }