OSDN Git Service

from subversion repository
[jindolf/Jindolf.git] / src / main / java / jp / sourceforge / jindolf / DialogPrefPanel.java
1 /*\r
2  * dialog preference panel\r
3  *\r
4  * Copyright(c) 2009 olyutorskii\r
5  * $Id: DialogPrefPanel.java 977 2010-01-02 15:54:12Z olyutorskii $\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf;\r
9 \r
10 import java.awt.Container;\r
11 import java.awt.GridBagConstraints;\r
12 import java.awt.GridBagLayout;\r
13 import java.awt.Insets;\r
14 import java.awt.event.ActionEvent;\r
15 import java.awt.event.ActionListener;\r
16 import java.awt.event.ItemEvent;\r
17 import java.awt.event.ItemListener;\r
18 import javax.swing.BorderFactory;\r
19 import javax.swing.JButton;\r
20 import javax.swing.JCheckBox;\r
21 import javax.swing.JComponent;\r
22 import javax.swing.JPanel;\r
23 import javax.swing.border.Border;\r
24 \r
25 /**\r
26  * 発言表示の各種設定パネル。\r
27  */\r
28 @SuppressWarnings("serial")\r
29 public class DialogPrefPanel\r
30         extends JPanel\r
31         implements ActionListener,\r
32                    ItemListener {\r
33 \r
34     private final JCheckBox useBodyImage = new JCheckBox("デカキャラモード");\r
35     private final JCheckBox useMonoImage =\r
36             new JCheckBox("墓石を遺影に置き換える");\r
37     private final JCheckBox isSimpleMode =\r
38             new JCheckBox("シンプル表示モード");\r
39     private final JCheckBox alignBaloon =\r
40             new JCheckBox("フキダシ幅を揃える");\r
41     private final JButton resetDefault = new JButton("出荷時に戻す");\r
42 \r
43     /**\r
44      * コンストラクタ。\r
45      */\r
46     public DialogPrefPanel(){\r
47         this.resetDefault.addActionListener(this);\r
48         this.isSimpleMode.addItemListener(this);\r
49 \r
50         design(this);\r
51         modifyGUIState();\r
52 \r
53         return;\r
54     }\r
55 \r
56     /**\r
57      * レイアウトを行う。\r
58      * @param content コンテナ\r
59      */\r
60     private void design(Container content){\r
61         GridBagLayout layout = new GridBagLayout();\r
62         GridBagConstraints constraints = new GridBagConstraints();\r
63 \r
64         content.setLayout(layout);\r
65 \r
66         constraints.insets = new Insets(2, 2, 2, 2);\r
67 \r
68         constraints.weightx = 0.0;\r
69         constraints.gridwidth = GridBagConstraints.REMAINDER;\r
70         constraints.fill = GridBagConstraints.NONE;\r
71         constraints.anchor = GridBagConstraints.NORTHWEST;\r
72 \r
73         content.add(this.isSimpleMode, constraints);\r
74         content.add(this.alignBaloon, constraints);\r
75         content.add(buildIconPanel(), constraints);\r
76 \r
77         constraints.weightx = 1.0;\r
78         constraints.weighty = 1.0;\r
79         constraints.fill = GridBagConstraints.NONE;\r
80         constraints.anchor = GridBagConstraints.SOUTHEAST;\r
81         content.add(this.resetDefault, constraints);\r
82 \r
83         return;\r
84     }\r
85 \r
86     /**\r
87      * アイコン設定パネルを生成する。\r
88      * @return アイコン設定パネル\r
89      */\r
90     private JComponent buildIconPanel(){\r
91         JPanel result = new JPanel();\r
92 \r
93         GridBagLayout layout = new GridBagLayout();\r
94         GridBagConstraints constraints = new GridBagConstraints();\r
95         result.setLayout(layout);\r
96 \r
97         constraints.insets = new Insets(1, 1, 1, 1);\r
98 \r
99         constraints.weightx = 0.0;\r
100         constraints.gridwidth = GridBagConstraints.REMAINDER;\r
101         constraints.fill = GridBagConstraints.NONE;\r
102         constraints.anchor = GridBagConstraints.NORTHWEST;\r
103 \r
104         result.add(this.useBodyImage, constraints);\r
105         result.add(this.useMonoImage, constraints);\r
106 \r
107         Border border = BorderFactory.createTitledBorder("アイコン表示");\r
108         result.setBorder(border);\r
109 \r
110         return result;\r
111     }\r
112 \r
113     /**\r
114      * GUI間の一貫性を維持する。\r
115      */\r
116     private void modifyGUIState(){\r
117         if(this.isSimpleMode.isSelected()){\r
118             this.useBodyImage.setEnabled(false);\r
119             this.useMonoImage.setEnabled(false);\r
120             this.alignBaloon .setEnabled(false);\r
121         }else{\r
122             this.useBodyImage.setEnabled(true);\r
123             this.useMonoImage.setEnabled(true);\r
124             this.alignBaloon .setEnabled(true);\r
125         }\r
126 \r
127         return;\r
128     }\r
129 \r
130     /**\r
131      * デカキャラモードを使うか否か画面の状態を返す。\r
132      * @return デカキャラモードを使うならtrue\r
133      */\r
134     public boolean useBodyImage(){\r
135         return this.useBodyImage.isSelected();\r
136     }\r
137 \r
138     /**\r
139      * 遺影モードを使うか否か画面の状態を返す。\r
140      * @return 遺影モードを使うならtrue\r
141      */\r
142     public boolean useMonoImage(){\r
143         return this.useMonoImage.isSelected();\r
144     }\r
145 \r
146     /**\r
147      * シンプル表示モードか否か画面の状態を返す。\r
148      * @return シンプル表示モードならtrue\r
149      */\r
150     public boolean isSimpleMode(){\r
151         return this.isSimpleMode.isSelected();\r
152     }\r
153 \r
154     /**\r
155      * フキダシ幅を揃えるか否か画面の状態を返す。\r
156      * @return フキダシ幅を揃えるならtrue\r
157      */\r
158     public boolean alignBaloon(){\r
159         return this.alignBaloon.isSelected();\r
160     }\r
161 \r
162     /**\r
163      * デカキャラモードの設定を行う。\r
164      * @param setting 有効にするならtrue\r
165      */\r
166     public void setBodyImageSetting(boolean setting){\r
167         this.useBodyImage.setSelected(setting);\r
168         return;\r
169     }\r
170 \r
171     /**\r
172      * 遺影モードの設定を行う。\r
173      * @param setting 有効にするならtrue\r
174      */\r
175     public void setMonoImageSetting(boolean setting){\r
176         this.useMonoImage.setSelected(setting);\r
177         return;\r
178     }\r
179 \r
180     /**\r
181      * シンプル表示モードの設定を行う。\r
182      * @param setting 有効にするならtrue\r
183      */\r
184     public void setSimpleModeSetting(boolean setting){\r
185         this.isSimpleMode.setSelected(setting);\r
186         modifyGUIState();\r
187         return;\r
188     }\r
189 \r
190     /**\r
191      * フキダシ幅揃えの設定を行う。\r
192      * @param setting 有効にするならtrue\r
193      */\r
194     public void setAlignBaloonSetting(boolean setting){\r
195         this.alignBaloon.setSelected(setting);\r
196         return;\r
197     }\r
198 \r
199     /**\r
200      * 発言表示設定を設定する。\r
201      * @param pref 表示設定\r
202      */\r
203     public void setDialogPref(DialogPref pref){\r
204         setBodyImageSetting(pref.useBodyImage());\r
205         setMonoImageSetting(pref.useMonoImage());\r
206         setSimpleModeSetting(pref.isSimpleMode());\r
207         setAlignBaloonSetting(pref.alignBaloonWidth());\r
208         modifyGUIState();\r
209         return;\r
210     }\r
211 \r
212     /**\r
213      * 発言表示設定を返す。\r
214      * @return 表示設定\r
215      */\r
216     public DialogPref getDialogPref(){\r
217         DialogPref result = new DialogPref();\r
218         result.setBodyImageSetting(useBodyImage());\r
219         result.setMonoImageSetting(useMonoImage());\r
220         result.setSimpleMode(isSimpleMode());\r
221         result.setAlignBalooonWidthSetting(alignBaloon());\r
222         return result;\r
223     }\r
224 \r
225     /**\r
226      * デフォルトボタン押下処理。\r
227      * @param event ボタン押下イベント\r
228      */\r
229     public void actionPerformed(ActionEvent event){\r
230         Object source = event.getSource();\r
231         if(source != this.resetDefault) return;\r
232         this.useBodyImage.setSelected(false);\r
233         this.useMonoImage.setSelected(false);\r
234         this.isSimpleMode.setSelected(false);\r
235         this.alignBaloon.setSelected(false);\r
236         modifyGUIState();\r
237         return;\r
238     }\r
239 \r
240     /**\r
241      * チェックボックス操作の受信。\r
242      * @param event チェックボックス操作イベント\r
243      */\r
244     public void itemStateChanged(ItemEvent event){\r
245         modifyGUIState();\r
246         return;\r
247     }\r
248 \r
249 }\r