b911d7d632afec839d3b8928a323749a682e4e95
[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 java.awt.*;\r
22 import java.awt.event.*;\r
23 import javax.swing.*;\r
24 \r
25 import jalview.bin.*;\r
26 import jalview.jbgui.*;\r
27 \r
28 public class FontChooser\r
29     extends GFontChooser\r
30 {\r
31   AlignmentPanel ap;\r
32   Font oldFont;\r
33   boolean init = true;\r
34   JInternalFrame frame;\r
35 \r
36   public FontChooser(AlignmentPanel ap)\r
37   {\r
38     frame = new JInternalFrame();\r
39     frame.setContentPane(this);\r
40     Desktop.addInternalFrame(frame, "Change Font", 480, 100, false);\r
41     frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
42 \r
43     this.ap = ap;\r
44 \r
45     String[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()\r
46         .getAvailableFontFamilyNames();\r
47 \r
48     for (int i = 0; i < fonts.length; i++)\r
49     {\r
50       fontName.addItem(fonts[i]);\r
51     }\r
52 \r
53     for (int i = 1; i < 31; i++)\r
54     {\r
55       fontSize.addItem(i + "");\r
56     }\r
57 \r
58     fontStyle.addItem("plain");\r
59     fontStyle.addItem("bold");\r
60     fontStyle.addItem("italic");\r
61 \r
62     oldFont = ap.av.getFont();\r
63     fontName.setSelectedItem(oldFont.getName());\r
64     fontSize.setSelectedItem(oldFont.getSize() + "");\r
65     fontStyle.setSelectedIndex(oldFont.getStyle());\r
66 \r
67     init = false;\r
68   }\r
69 \r
70   protected void ok_actionPerformed(ActionEvent e)\r
71   {\r
72     try\r
73     {\r
74       frame.setClosed(true);\r
75     }\r
76     catch (Exception ex)\r
77     {\r
78     }\r
79 \r
80     if (ap.getOverviewPanel() != null)\r
81     {\r
82       ap.getOverviewPanel().updateOverviewImage();\r
83     }\r
84   }\r
85 \r
86   protected void cancel_actionPerformed(ActionEvent e)\r
87   {\r
88     ap.av.setFont(oldFont);\r
89     ap.repaint();\r
90     fontName.setSelectedItem(oldFont.getName());\r
91     fontSize.setSelectedItem(oldFont.getSize() + "");\r
92     fontStyle.setSelectedIndex(oldFont.getStyle());\r
93 \r
94     try\r
95     {\r
96       frame.setClosed(true);\r
97     }\r
98     catch (Exception ex)\r
99     {\r
100     }\r
101   }\r
102 \r
103   void changeFont()\r
104   {\r
105     Font newFont = new Font(fontName.getSelectedItem().toString(),\r
106                             fontStyle.getSelectedIndex(),\r
107                             Integer.parseInt(fontSize.getSelectedItem().\r
108                                              toString()));\r
109     ap.av.setFont(newFont);\r
110     ap.fontChanged();\r
111   }\r
112 \r
113   protected void fontName_actionPerformed(ActionEvent e)\r
114   {\r
115     if (init)\r
116     {\r
117       return;\r
118     }\r
119 \r
120     changeFont();\r
121   }\r
122 \r
123   protected void fontSize_actionPerformed(ActionEvent e)\r
124   {\r
125     if (init)\r
126     {\r
127       return;\r
128     }\r
129 \r
130     changeFont();\r
131   }\r
132 \r
133   protected void fontStyle_actionPerformed(ActionEvent e)\r
134   {\r
135     if (init)\r
136     {\r
137       return;\r
138     }\r
139 \r
140     changeFont();\r
141   }\r
142 \r
143   public void defaultButton_actionPerformed(ActionEvent e)\r
144   {\r
145     Cache.setProperty("FONT_NAME", fontName.getSelectedItem().toString());\r
146     Cache.setProperty("FONT_STYLE", fontStyle.getSelectedIndex() + "");\r
147     Cache.setProperty("FONT_SIZE", fontSize.getSelectedItem().toString());\r
148   }\r
149 }\r