Formatting changes
[jalview.git] / src / jalview / gui / Preferences.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 package jalview.gui;\r
20 \r
21 import jalview.bin.*;\r
22 \r
23 import jalview.io.*;\r
24 \r
25 import jalview.jbgui.*;\r
26 \r
27 import jalview.schemes.*;\r
28 \r
29 import java.awt.*;\r
30 import java.awt.event.*;\r
31 \r
32 import javax.swing.*;\r
33 \r
34 \r
35 /**\r
36  * DOCUMENT ME!\r
37  *\r
38  * @author $author$\r
39  * @version $Revision$\r
40  */\r
41 public class Preferences extends GPreferences\r
42 {\r
43     static boolean preferencesLoaded = false;\r
44 \r
45     /** DOCUMENT ME!! */\r
46     public static boolean showFullscreen = false;\r
47 \r
48     /** DOCUMENT ME!! */\r
49     public static boolean showFullId = true;\r
50 \r
51     /** DOCUMENT ME!! */\r
52     public static boolean showAnnotation = true;\r
53 \r
54     /** DOCUMENT ME!! */\r
55     public static boolean showConservation = true;\r
56 \r
57     /** DOCUMENT ME!! */\r
58     public static boolean showQuality = true;\r
59 \r
60     /** DOCUMENT ME!! */\r
61     public static boolean showIdentity = true;\r
62 \r
63     /** DOCUMENT ME!! */\r
64     public static String fontName = "SansSerif";\r
65 \r
66     /** DOCUMENT ME!! */\r
67     public static String fontSize = "10";\r
68 \r
69     /** DOCUMENT ME!! */\r
70     public static String fontStyle = Font.PLAIN + "";\r
71 \r
72     /** DOCUMENT ME!! */\r
73     public static char gapSymbol = '-';\r
74 \r
75     /** DOCUMENT ME!! */\r
76     public static String defaultColour = null;\r
77 \r
78     /** DOCUMENT ME!! */\r
79     public static boolean showStartupFile = true;\r
80 \r
81     /** DOCUMENT ME!! */\r
82     public static String startupFile = "http://www.jalview.org/examples/exampleFile.jar";\r
83     JInternalFrame frame;\r
84 \r
85     /**\r
86      * Creates a new Preferences object.\r
87      */\r
88     public Preferences()\r
89     {\r
90         initPreferences();\r
91 \r
92         frame = new JInternalFrame();\r
93         frame.setContentPane(this);\r
94         Desktop.addInternalFrame(frame, "Preferences", 480, 390);\r
95 \r
96         fullID.setSelected(showFullId);\r
97 \r
98         String string = Cache.getProperty("SHOW_FULLSCREEN");\r
99         boolean value = false;\r
100 \r
101         if (string != null)\r
102         {\r
103             value = Boolean.valueOf(string).booleanValue();\r
104         }\r
105 \r
106         fullScreen.setSelected(value);\r
107         annotations.setSelected(showAnnotation);\r
108 \r
109         conservation.setEnabled(showAnnotation);\r
110         quality.setEnabled(showAnnotation);\r
111         identity.setEnabled(showAnnotation);\r
112 \r
113         conservation.setSelected(showConservation);\r
114         quality.setSelected(showQuality);\r
115         identity.setSelected(showIdentity);\r
116 \r
117         for (int i = 0; i < 12; i++)\r
118         {\r
119             colour.addItem(ColourSchemeProperty.getColourName(i));\r
120         }\r
121 \r
122         string = Cache.getProperty("DEFAULT_COLOUR");\r
123 \r
124         if (string != null)\r
125         {\r
126             colour.setSelectedItem(string);\r
127         }\r
128         else\r
129         {\r
130             colour.setSelectedIndex(11);\r
131         }\r
132 \r
133         String[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()\r
134                                                      .getAvailableFontFamilyNames();\r
135 \r
136         for (int i = 0; i < fonts.length; i++)\r
137         {\r
138             fontNameCB.addItem(fonts[i]);\r
139         }\r
140 \r
141         for (int i = 1; i < 31; i++)\r
142         {\r
143             fontSizeCB.addItem(i + "");\r
144         }\r
145 \r
146         fontStyleCB.addItem("plain");\r
147         fontStyleCB.addItem("bold");\r
148         fontStyleCB.addItem("italic");\r
149 \r
150         fontNameCB.setSelectedItem(fontName);\r
151         fontSizeCB.setSelectedItem(fontSize);\r
152         fontStyleCB.setSelectedItem(fontStyle);\r
153 \r
154         gapSymbolCB.addItem("-");\r
155         gapSymbolCB.addItem(".");\r
156 \r
157         gapSymbolCB.setSelectedItem(gapSymbol + "");\r
158 \r
159         startupCheckbox.setSelected(showStartupFile);\r
160         startupFileTextfield.setText(startupFile);\r
161     }\r
162 \r
163     /**\r
164      * DOCUMENT ME!\r
165      */\r
166     public static void initPreferences()\r
167     {\r
168         String string = Cache.getProperty("SHOW_FULL_ID");\r
169 \r
170         if (string != null)\r
171         {\r
172             showFullId = Boolean.valueOf(string).booleanValue();\r
173         }\r
174 \r
175         string = Cache.getProperty("SHOW_FULLSCREEN");\r
176 \r
177         if (string != null)\r
178         {\r
179             showFullscreen = Boolean.valueOf(string).booleanValue();\r
180         }\r
181 \r
182         string = Cache.getProperty("SHOW_ANNOTATIONS");\r
183 \r
184         if (string != null)\r
185         {\r
186             showAnnotation = Boolean.valueOf(string).booleanValue();\r
187         }\r
188 \r
189         string = Cache.getProperty("SHOW_CONSERVATION");\r
190 \r
191         if (string != null)\r
192         {\r
193             showConservation = Boolean.valueOf(string).booleanValue();\r
194         }\r
195 \r
196         string = Cache.getProperty("SHOW_QUALITY");\r
197 \r
198         if (string != null)\r
199         {\r
200             showQuality = Boolean.valueOf(string).booleanValue();\r
201         }\r
202 \r
203         string = Cache.getProperty("SHOW_IDENTITY");\r
204 \r
205         if (string != null)\r
206         {\r
207             showIdentity = Boolean.valueOf(string).booleanValue();\r
208         }\r
209 \r
210         string = Cache.getProperty("GAP_SYMBOL");\r
211 \r
212         if (string != null)\r
213         {\r
214             gapSymbol = string.charAt(0);\r
215         }\r
216 \r
217         string = Cache.getProperty("SHOW_FULL_ID");\r
218 \r
219         if (string != null)\r
220         {\r
221             showFullId = Boolean.valueOf(string).booleanValue();\r
222         }\r
223 \r
224         string = Cache.getProperty("FONT_NAME");\r
225 \r
226         if (string != null)\r
227         {\r
228             fontName = string;\r
229         }\r
230 \r
231         string = Cache.getProperty("FONT_STYLE");\r
232 \r
233         if (string != null)\r
234         {\r
235             fontStyle = string;\r
236         }\r
237 \r
238         string = Cache.getProperty("FONT_SIZE");\r
239 \r
240         if (string != null)\r
241         {\r
242             fontSize = string;\r
243         }\r
244 \r
245         string = Cache.getProperty("DEFAULT_COLOUR");\r
246 \r
247         if (string != null)\r
248         {\r
249             defaultColour = string;\r
250         }\r
251 \r
252         string = Cache.getProperty("STARTUP_FILE");\r
253 \r
254         if (string != null)\r
255         {\r
256             startupFile = string;\r
257         }\r
258 \r
259         string = Cache.getProperty("SHOW_STARTUP_FILE");\r
260 \r
261         if (string != null)\r
262         {\r
263             showStartupFile = Boolean.valueOf(string).booleanValue();\r
264         }\r
265 \r
266         preferencesLoaded = true;\r
267     }\r
268 \r
269     /**\r
270      * DOCUMENT ME!\r
271      *\r
272      * @param e DOCUMENT ME!\r
273      */\r
274     public void ok_actionPerformed(ActionEvent e)\r
275     {\r
276         showFullId = fullID.isSelected();\r
277         showFullscreen = fullScreen.isSelected();\r
278         showAnnotation = annotations.isSelected();\r
279         showConservation = conservation.isSelected();\r
280         showQuality = quality.isSelected();\r
281         showIdentity = identity.isSelected();\r
282         defaultColour = colour.getSelectedItem().toString();\r
283         gapSymbol = gapSymbolCB.getSelectedItem().toString().charAt(0);\r
284         fontName = fontNameCB.getSelectedItem().toString();\r
285         fontSize = fontSizeCB.getSelectedItem().toString();\r
286         fontStyle = fontStyleCB.getSelectedItem().toString();\r
287         startupFile = startupFileTextfield.getText();\r
288         showStartupFile = startupCheckbox.isSelected();\r
289 \r
290         Cache.setProperty("SHOW_FULL_ID", Boolean.toString(showFullId));\r
291         Cache.setProperty("SHOW_FULLSCREEN", Boolean.toString(showFullscreen));\r
292 \r
293         Cache.setProperty("SHOW_ANNOTATIONS", Boolean.toString(showAnnotation));\r
294         Cache.setProperty("SHOW_CONSERVATION",\r
295             Boolean.toString(showConservation));\r
296         Cache.setProperty("SHOW_QUALITY", Boolean.toString(showQuality));\r
297         Cache.setProperty("SHOW_IDENTITY", Boolean.toString(showIdentity));\r
298 \r
299         Cache.setProperty("DEFAULT_COLOUR", defaultColour);\r
300         Cache.setProperty("GAP_SYMBOL", gapSymbol + "");\r
301 \r
302         Cache.setProperty("FONT_NAME", fontName);\r
303         Cache.setProperty("FONT_STYLE", fontStyle);\r
304         Cache.setProperty("FONT_SIZE", fontSize);\r
305 \r
306         Cache.setProperty("STARTUP_FILE", startupFile);\r
307         Cache.setProperty("SHOW_STARTUP_FILE", Boolean.toString(showStartupFile));\r
308 \r
309         try\r
310         {\r
311             frame.setClosed(true);\r
312         }\r
313         catch (Exception ex)\r
314         {\r
315         }\r
316     }\r
317 \r
318     /**\r
319      * DOCUMENT ME!\r
320      */\r
321     public void startupFileTextfield_mouseClicked()\r
322     {\r
323         JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty(\r
324                     "LAST_DIRECTORY"),\r
325                 new String[]\r
326                 {\r
327                     "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc",\r
328                     "jar"\r
329                 },\r
330                 new String[]\r
331                 {\r
332                     "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview"\r
333                 }, jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));\r
334         chooser.setFileView(new JalviewFileView());\r
335         chooser.setDialogTitle("Select startup file");\r
336 \r
337         int value = chooser.showOpenDialog(this);\r
338 \r
339         if (value == JalviewFileChooser.APPROVE_OPTION)\r
340         {\r
341             jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT",\r
342                 chooser.getSelectedFormat());\r
343             startupFileTextfield.setText(chooser.getSelectedFile()\r
344                                                 .getAbsolutePath());\r
345         }\r
346     }\r
347 \r
348     /**\r
349      * DOCUMENT ME!\r
350      *\r
351      * @param e DOCUMENT ME!\r
352      */\r
353     public void cancel_actionPerformed(ActionEvent e)\r
354     {\r
355         try\r
356         {\r
357             frame.setClosed(true);\r
358         }\r
359         catch (Exception ex)\r
360         {\r
361         }\r
362     }\r
363 \r
364     /**\r
365      * DOCUMENT ME!\r
366      *\r
367      * @param e DOCUMENT ME!\r
368      */\r
369     public void annotations_actionPerformed(ActionEvent e)\r
370     {\r
371         conservation.setEnabled(annotations.isSelected());\r
372         quality.setEnabled(annotations.isSelected());\r
373         identity.setEnabled(annotations.isSelected());\r
374     }\r
375 }\r