Proxy server, default browser, multiple links added
[jalview.git] / src / jalview / jbgui / GPreferences.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.jbgui;\r
20 \r
21 import java.awt.*;\r
22 \r
23 import javax.swing.*;\r
24 import javax.swing.border.TitledBorder;\r
25 import java.awt.event.*;\r
26 import javax.swing.event.*;\r
27 \r
28 \r
29 /**\r
30  * DOCUMENT ME!\r
31  *\r
32  * @author $author$\r
33  * @version $Revision$\r
34  */\r
35 public class GPreferences extends JPanel\r
36 {\r
37     JTabbedPane tabbedPane = new JTabbedPane();\r
38 \r
39     JButton ok = new JButton();\r
40     JButton cancel = new JButton();\r
41     JPanel okCancelPanel = new JPanel();\r
42     BorderLayout borderLayout1 = new BorderLayout();\r
43     protected JCheckBox quality = new JCheckBox();\r
44     JPanel visualTab = new JPanel();\r
45     protected JCheckBox fullID = new JCheckBox();\r
46     protected JCheckBox fullScreen = new JCheckBox();\r
47     protected JCheckBox conservation = new JCheckBox();\r
48     protected JCheckBox identity = new JCheckBox();\r
49     protected JCheckBox annotations = new JCheckBox();\r
50     JLabel gapLabel = new JLabel();\r
51     protected JComboBox colour = new JComboBox();\r
52     JLabel colourLabel = new JLabel();\r
53     JLabel fontLabel = new JLabel();\r
54     protected JComboBox fontSizeCB = new JComboBox();\r
55     protected JComboBox fontStyleCB = new JComboBox();\r
56     protected JComboBox fontNameCB = new JComboBox();\r
57     protected JComboBox gapSymbolCB = new JComboBox();\r
58     protected JCheckBox startupCheckbox = new JCheckBox();\r
59     protected JTextField startupFileTextfield = new JTextField();\r
60   JPanel connectTab = new JPanel();\r
61   JLabel serverLabel = new JLabel();\r
62   protected JList linkURLList = new JList();\r
63   protected JTextField proxyServerTB = new JTextField();\r
64   protected JTextField proxyPortTB = new JTextField();\r
65   JLabel portLabel = new JLabel();\r
66   JLabel browserLabel = new JLabel();\r
67   protected JTextField defaultBrowser = new JTextField();\r
68   JButton newLink = new JButton();\r
69   JButton editLink = new JButton();\r
70   JButton deleteLink = new JButton();\r
71   JScrollPane linkScrollPane = new JScrollPane();\r
72   JPanel linkPanel = new JPanel();\r
73   BorderLayout borderLayout2 = new BorderLayout();\r
74   JPanel editLinkButtons = new JPanel();\r
75   GridLayout gridLayout1 = new GridLayout();\r
76   protected JList linkNameList = new JList();\r
77   JPanel linkPanel2 = new JPanel();\r
78   BorderLayout borderLayout3 = new BorderLayout();\r
79   protected JCheckBox useProxy = new JCheckBox();\r
80   JPanel jPanel1 = new JPanel();\r
81   TitledBorder titledBorder1 = new TitledBorder("Proxy Server");\r
82   GridBagLayout gridBagLayout2 = new GridBagLayout();\r
83   GridBagLayout gridBagLayout1 = new GridBagLayout();\r
84   GridBagLayout gridBagLayout3 = new GridBagLayout();\r
85   /**\r
86      * Creates a new GPreferences object.\r
87      */\r
88     public GPreferences()\r
89     {\r
90         try\r
91         {\r
92             jbInit();\r
93         }\r
94         catch (Exception ex)\r
95         {\r
96             ex.printStackTrace();\r
97         }\r
98     }\r
99 \r
100     /**\r
101      * DOCUMENT ME!\r
102      *\r
103      * @throws Exception DOCUMENT ME!\r
104      */\r
105     private void jbInit() throws Exception\r
106     {\r
107         this.setLayout(borderLayout1);\r
108         ok.setText("OK");\r
109         ok.addActionListener(new ActionListener()\r
110             {\r
111                 public void actionPerformed(ActionEvent e)\r
112                 {\r
113                     ok_actionPerformed(e);\r
114                 }\r
115             });\r
116         cancel.setText("Cancel");\r
117         cancel.addActionListener(new ActionListener()\r
118             {\r
119                 public void actionPerformed(ActionEvent e)\r
120                 {\r
121                     cancel_actionPerformed(e);\r
122                 }\r
123             });\r
124         quality.setEnabled(false);\r
125         quality.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
126         quality.setHorizontalAlignment(SwingConstants.RIGHT);\r
127         quality.setHorizontalTextPosition(SwingConstants.LEFT);\r
128         quality.setSelected(true);\r
129         quality.setText("Quality");\r
130         quality.setBounds(new Rectangle(248, 53, 81, 23));\r
131         visualTab.setBorder(new TitledBorder("Open new alignment"));\r
132         visualTab.setBounds(new Rectangle(9, 20, 442, 241));\r
133         visualTab.setLayout(null);\r
134         fullID.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
135         fullID.setHorizontalAlignment(SwingConstants.RIGHT);\r
136         fullID.setHorizontalTextPosition(SwingConstants.LEFT);\r
137         fullID.setText("Full Sequence ID");\r
138         fullID.setBounds(new Rectangle(9, 78, 129, 23));\r
139         fullScreen.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
140         fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);\r
141         fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);\r
142         fullScreen.setText("Maximise Window");\r
143         fullScreen.setBounds(new Rectangle(5, 29, 132, 23));\r
144         conservation.setEnabled(false);\r
145         conservation.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
146         conservation.setHorizontalAlignment(SwingConstants.RIGHT);\r
147         conservation.setHorizontalTextPosition(SwingConstants.LEFT);\r
148         conservation.setSelected(true);\r
149         conservation.setText("Conservation");\r
150         conservation.setBounds(new Rectangle(137, 53, 113, 23));\r
151         identity.setEnabled(false);\r
152         identity.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
153         identity.setHorizontalAlignment(SwingConstants.RIGHT);\r
154         identity.setHorizontalTextPosition(SwingConstants.LEFT);\r
155         identity.setSelected(true);\r
156         identity.setText("Consensus");\r
157         identity.setBounds(new Rectangle(326, 53, 99, 23));\r
158         annotations.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
159         annotations.setHorizontalAlignment(SwingConstants.RIGHT);\r
160         annotations.setHorizontalTextPosition(SwingConstants.LEFT);\r
161         annotations.setSelected(true);\r
162         annotations.setText("Show Annotations");\r
163         annotations.setBounds(new Rectangle(10, 53, 128, 23));\r
164         annotations.addActionListener(new ActionListener()\r
165             {\r
166                 public void actionPerformed(ActionEvent e)\r
167                 {\r
168                     annotations_actionPerformed(e);\r
169                 }\r
170             });\r
171         gapLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
172         gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);\r
173         gapLabel.setText("Gap Symbol");\r
174         gapLabel.setBounds(new Rectangle(41, 142, 76, 15));\r
175         colour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
176         colour.setBounds(new Rectangle(121, 168, 154, 21));\r
177         colourLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
178         colourLabel.setHorizontalAlignment(SwingConstants.RIGHT);\r
179         colourLabel.setText("Colour");\r
180         colourLabel.setBounds(new Rectangle(60, 172, 58, 15));\r
181         fontLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
182         fontLabel.setHorizontalAlignment(SwingConstants.RIGHT);\r
183         fontLabel.setText("Font");\r
184         fontLabel.setBounds(new Rectangle(83, 114, 34, 15));\r
185         fontSizeCB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
186         fontSizeCB.setBounds(new Rectangle(304, 109, 49, 21));\r
187         fontStyleCB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
188         fontStyleCB.setBounds(new Rectangle(353, 109, 80, 21));\r
189         fontNameCB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
190         fontNameCB.setBounds(new Rectangle(121, 109, 183, 21));\r
191         gapSymbolCB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
192         gapSymbolCB.setBounds(new Rectangle(121, 140, 67, 21));\r
193         startupCheckbox.setText("Open file");\r
194         startupCheckbox.setBounds(new Rectangle(4, 200, 115, 23));\r
195         startupCheckbox.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
196         startupCheckbox.setHorizontalAlignment(SwingConstants.RIGHT);\r
197         startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT);\r
198         startupCheckbox.setSelected(true);\r
199         startupFileTextfield.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
200         startupFileTextfield.setBounds(new Rectangle(122, 202, 309, 20));\r
201         startupFileTextfield.addMouseListener(new MouseAdapter()\r
202             {\r
203                 public void mouseClicked(MouseEvent e)\r
204                 {\r
205                     if (e.getClickCount() > 1)\r
206                     {\r
207                         startupFileTextfield_mouseClicked();\r
208                     }\r
209                 }\r
210             });\r
211 \r
212      connectTab.setLayout(gridBagLayout3);\r
213     serverLabel.setText("Address");\r
214     serverLabel.setHorizontalAlignment(SwingConstants.RIGHT);\r
215     serverLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
216     proxyServerTB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
217     proxyPortTB.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
218     portLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
219     portLabel.setHorizontalAlignment(SwingConstants.RIGHT);\r
220     portLabel.setText("Port");\r
221     browserLabel.setFont(new java.awt.Font("SansSerif", 0, 11));\r
222     browserLabel.setHorizontalAlignment(SwingConstants.TRAILING);\r
223     browserLabel.setText("Default Browser (Unix)");\r
224     defaultBrowser.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
225     defaultBrowser.setText("");\r
226     newLink.setText("New");\r
227     newLink.addActionListener(new java.awt.event.ActionListener() {\r
228       public void actionPerformed(ActionEvent e) {\r
229         newLink_actionPerformed(e);\r
230       }\r
231     });\r
232     editLink.setText("Edit");\r
233     editLink.addActionListener(new java.awt.event.ActionListener() {\r
234       public void actionPerformed(ActionEvent e) {\r
235         editLink_actionPerformed(e);\r
236       }\r
237     });\r
238     deleteLink.setText("Delete");\r
239     deleteLink.addActionListener(new java.awt.event.ActionListener() {\r
240       public void actionPerformed(ActionEvent e) {\r
241         deleteLink_actionPerformed(e);\r
242       }\r
243     });\r
244 \r
245     linkURLList.addListSelectionListener(new ListSelectionListener()\r
246          {\r
247             public void valueChanged(ListSelectionEvent e)\r
248             {\r
249                int index = linkURLList.getSelectedIndex();\r
250                linkNameList.setSelectedIndex(index);\r
251             }\r
252          });\r
253 \r
254     linkNameList.addListSelectionListener(new ListSelectionListener()\r
255         {\r
256           public void valueChanged(ListSelectionEvent e)\r
257           {\r
258               int index = linkNameList.getSelectedIndex();\r
259               linkURLList.setSelectedIndex(index);\r
260           }\r
261         });\r
262 \r
263     linkScrollPane.setBorder(null);\r
264     linkPanel.setBorder(new TitledBorder("URL link from Sequence ID"));\r
265     linkPanel.setLayout(borderLayout2);\r
266     editLinkButtons.setLayout(gridLayout1);\r
267     gridLayout1.setRows(3);\r
268     linkNameList.setFont(new java.awt.Font("Verdana", Font.ITALIC, 11));\r
269     linkNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
270     linkPanel2.setLayout(borderLayout3);\r
271     linkURLList.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
272     linkURLList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
273 \r
274     defaultBrowser.addMouseListener(new MouseAdapter()\r
275     {\r
276       public void mouseClicked(MouseEvent e)\r
277       {\r
278         if (e.getClickCount() > 1)\r
279             {\r
280               defaultBrowser_mouseClicked(e);\r
281             }\r
282       }\r
283     });\r
284     useProxy.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
285     useProxy.setHorizontalAlignment(SwingConstants.RIGHT);\r
286     useProxy.setHorizontalTextPosition(SwingConstants.LEADING);\r
287     useProxy.setText("Use a proxy server");\r
288     useProxy.addActionListener(new ActionListener()\r
289     {\r
290       public void actionPerformed(ActionEvent e)\r
291       {\r
292         useProxy_actionPerformed();\r
293       }\r
294     });\r
295     jPanel1.setBorder(titledBorder1);\r
296     jPanel1.setLayout(gridBagLayout1);\r
297     visualTab.add(annotations);\r
298         visualTab.add(conservation);\r
299         visualTab.add(quality);\r
300         visualTab.add(fullID);\r
301         visualTab.add(gapSymbolCB);\r
302         visualTab.add(fontLabel);\r
303         visualTab.add(fontNameCB);\r
304         visualTab.add(colourLabel);\r
305         visualTab.add(gapLabel);\r
306         visualTab.add(colour);\r
307         visualTab.add(fontSizeCB);\r
308         visualTab.add(fontStyleCB);\r
309         visualTab.add(identity);\r
310         visualTab.add(fullScreen);\r
311         visualTab.add(startupCheckbox);\r
312         visualTab.add(startupFileTextfield);\r
313 \r
314     tabbedPane.add(visualTab, "Visual");\r
315     tabbedPane.add(connectTab, "Connections");\r
316 \r
317     linkPanel.add(editLinkButtons, BorderLayout.EAST);\r
318     editLinkButtons.add(newLink, null);\r
319     editLinkButtons.add(editLink, null);\r
320     editLinkButtons.add(deleteLink, null);\r
321     linkPanel.add(linkScrollPane, BorderLayout.CENTER);\r
322     linkScrollPane.getViewport().add(linkPanel2, null);\r
323     linkPanel2.add(linkURLList, BorderLayout.CENTER);\r
324     linkPanel2.add(linkNameList, BorderLayout.WEST);\r
325         okCancelPanel.add(ok);\r
326         okCancelPanel.add(cancel);\r
327         this.add(tabbedPane, java.awt.BorderLayout.CENTER);\r
328 \r
329         this.add(okCancelPanel, java.awt.BorderLayout.SOUTH);\r
330     jPanel1.add(serverLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0\r
331         , GridBagConstraints.WEST, GridBagConstraints.NONE,\r
332         new Insets(0, 2, 4, 0), 5, 0));\r
333     jPanel1.add(portLabel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0\r
334                                                   , GridBagConstraints.WEST,\r
335                                                   GridBagConstraints.NONE,\r
336                                                   new Insets(0, 0, 4, 0), 11, 6));\r
337     connectTab.add(linkPanel, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0\r
338         , GridBagConstraints.CENTER, GridBagConstraints.BOTH,\r
339         new Insets(16, 0, 0, 12), 359, -17));\r
340     connectTab.add(jPanel1, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0\r
341         , GridBagConstraints.CENTER, GridBagConstraints.BOTH,\r
342         new Insets(21, 0, 35, 12), 4, 6));\r
343     connectTab.add(browserLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0\r
344         , GridBagConstraints.WEST, GridBagConstraints.NONE,\r
345         new Insets(16, 0, 0, 0), 5, 1));\r
346     jPanel1.add(proxyPortTB, new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0\r
347         , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,\r
348         new Insets(0, 2, 4, 2), 54, 1));\r
349     jPanel1.add(proxyServerTB, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0\r
350         , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,\r
351         new Insets(0, 2, 4, 0), 263, 1));\r
352     connectTab.add(defaultBrowser, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0\r
353         , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,\r
354         new Insets(15, 0, 0, 15), 307, 1));\r
355     jPanel1.add(useProxy, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0\r
356                                                  , GridBagConstraints.WEST,\r
357                                                  GridBagConstraints.NONE,\r
358                                                  new Insets(0, 2, 5, 185), 2,\r
359                                                  -4));\r
360     DefaultListCellRenderer dlcr = new DefaultListCellRenderer();\r
361         dlcr.setHorizontalAlignment(DefaultListCellRenderer.CENTER);\r
362         gapSymbolCB.setRenderer(dlcr);\r
363     }\r
364 \r
365     /**\r
366      * DOCUMENT ME!\r
367      *\r
368      * @param e DOCUMENT ME!\r
369      */\r
370     public void ok_actionPerformed(ActionEvent e)\r
371     {\r
372     }\r
373 \r
374     /**\r
375      * DOCUMENT ME!\r
376      *\r
377      * @param e DOCUMENT ME!\r
378      */\r
379     public void cancel_actionPerformed(ActionEvent e)\r
380     {\r
381     }\r
382 \r
383     /**\r
384      * DOCUMENT ME!\r
385      *\r
386      * @param e DOCUMENT ME!\r
387      */\r
388     public void annotations_actionPerformed(ActionEvent e)\r
389     {\r
390     }\r
391 \r
392 \r
393     /**\r
394      * DOCUMENT ME!\r
395      */\r
396     public void startupFileTextfield_mouseClicked()\r
397     {\r
398     }\r
399 \r
400 \r
401   public void newLink_actionPerformed(ActionEvent e) {\r
402 \r
403   }\r
404 \r
405   public void editLink_actionPerformed(ActionEvent e) {\r
406 \r
407   }\r
408 \r
409   public void deleteLink_actionPerformed(ActionEvent e) {\r
410 \r
411   }\r
412 \r
413   public void defaultBrowser_mouseClicked(MouseEvent e)\r
414   {\r
415 \r
416   }\r
417 \r
418   public void linkURLList_keyTyped(KeyEvent e)\r
419   {\r
420 \r
421   }\r
422 \r
423   public void useProxy_actionPerformed()\r
424   {\r
425       proxyServerTB.setEnabled(useProxy.isSelected());\r
426       proxyPortTB.setEnabled(useProxy.isSelected());\r
427   }\r
428 }\r