added help and documentation for annotation editing.
[jalview.git] / src / jalview / gui / FontChooser.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.jbgui.*;\r
24 \r
25 import java.awt.*;\r
26 import java.awt.event.*;\r
27 \r
28 import javax.swing.*;\r
29 \r
30 \r
31 /**\r
32  * DOCUMENT ME!\r
33  *\r
34  * @author $author$\r
35  * @version $Revision$\r
36  */\r
37 public class FontChooser extends GFontChooser\r
38 {\r
39     AlignmentPanel ap;\r
40     Font oldFont;\r
41     boolean init = true;\r
42     JInternalFrame frame;\r
43 \r
44     /**\r
45      * Creates a new FontChooser object.\r
46      *\r
47      * @param ap DOCUMENT ME!\r
48      */\r
49     public FontChooser(AlignmentPanel ap)\r
50     {\r
51         frame = new JInternalFrame();\r
52         frame.setContentPane(this);\r
53         Desktop.addInternalFrame(frame, "Change Font", 480, 100, false);\r
54         frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
55 \r
56         this.ap = ap;\r
57 \r
58         String[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()\r
59                                                      .getAvailableFontFamilyNames();\r
60 \r
61         for (int i = 0; i < fonts.length; i++)\r
62         {\r
63             fontName.addItem(fonts[i]);\r
64         }\r
65 \r
66         for (int i = 1; i < 31; i++)\r
67         {\r
68             fontSize.addItem(i + "");\r
69         }\r
70 \r
71         fontStyle.addItem("plain");\r
72         fontStyle.addItem("bold");\r
73         fontStyle.addItem("italic");\r
74 \r
75         oldFont = ap.av.getFont();\r
76         fontName.setSelectedItem(oldFont.getName());\r
77         fontSize.setSelectedItem(oldFont.getSize() + "");\r
78         fontStyle.setSelectedIndex(oldFont.getStyle());\r
79 \r
80         init = false;\r
81     }\r
82 \r
83     /**\r
84      * DOCUMENT ME!\r
85      *\r
86      * @param e DOCUMENT ME!\r
87      */\r
88     protected void ok_actionPerformed(ActionEvent e)\r
89     {\r
90         try\r
91         {\r
92             frame.setClosed(true);\r
93         }\r
94         catch (Exception ex)\r
95         {\r
96         }\r
97 \r
98         if (ap.getOverviewPanel() != null)\r
99         {\r
100             ap.getOverviewPanel().updateOverviewImage();\r
101         }\r
102     }\r
103 \r
104     /**\r
105      * DOCUMENT ME!\r
106      *\r
107      * @param e DOCUMENT ME!\r
108      */\r
109     protected void cancel_actionPerformed(ActionEvent e)\r
110     {\r
111         ap.av.setFont(oldFont);\r
112         ap.repaint();\r
113         fontName.setSelectedItem(oldFont.getName());\r
114         fontSize.setSelectedItem(oldFont.getSize() + "");\r
115         fontStyle.setSelectedIndex(oldFont.getStyle());\r
116 \r
117         try\r
118         {\r
119             frame.setClosed(true);\r
120         }\r
121         catch (Exception ex)\r
122         {\r
123         }\r
124     }\r
125 \r
126     /**\r
127      * DOCUMENT ME!\r
128      */\r
129     void changeFont()\r
130     {\r
131         Font newFont = new Font(fontName.getSelectedItem().toString(),\r
132                 fontStyle.getSelectedIndex(),\r
133                 Integer.parseInt(fontSize.getSelectedItem().toString()));\r
134         ap.av.setFont(newFont);\r
135         ap.fontChanged();\r
136     }\r
137 \r
138     /**\r
139      * DOCUMENT ME!\r
140      *\r
141      * @param e DOCUMENT ME!\r
142      */\r
143     protected void fontName_actionPerformed(ActionEvent e)\r
144     {\r
145         if (init)\r
146         {\r
147             return;\r
148         }\r
149 \r
150         changeFont();\r
151     }\r
152 \r
153     /**\r
154      * DOCUMENT ME!\r
155      *\r
156      * @param e DOCUMENT ME!\r
157      */\r
158     protected void fontSize_actionPerformed(ActionEvent e)\r
159     {\r
160         if (init)\r
161         {\r
162             return;\r
163         }\r
164 \r
165         changeFont();\r
166     }\r
167 \r
168     /**\r
169      * DOCUMENT ME!\r
170      *\r
171      * @param e DOCUMENT ME!\r
172      */\r
173     protected void fontStyle_actionPerformed(ActionEvent e)\r
174     {\r
175         if (init)\r
176         {\r
177             return;\r
178         }\r
179 \r
180         changeFont();\r
181     }\r
182 \r
183     /**\r
184      * DOCUMENT ME!\r
185      *\r
186      * @param e DOCUMENT ME!\r
187      */\r
188     public void defaultButton_actionPerformed(ActionEvent e)\r
189     {\r
190         Cache.setProperty("FONT_NAME", fontName.getSelectedItem().toString());\r
191         Cache.setProperty("FONT_STYLE", fontStyle.getSelectedIndex() + "");\r
192         Cache.setProperty("FONT_SIZE", fontSize.getSelectedItem().toString());\r
193     }\r
194 }\r