2 * dialog preference panel
4 * License : The MIT License
5 * Copyright(c) 2009 olyutorskii
8 package jp.sfjp.jindolf.view;
10 import java.awt.Container;
11 import java.awt.GridBagConstraints;
12 import java.awt.GridBagLayout;
13 import java.awt.Insets;
14 import java.awt.event.ActionEvent;
15 import java.awt.event.ActionListener;
16 import java.awt.event.ItemEvent;
17 import java.awt.event.ItemListener;
18 import javax.swing.BorderFactory;
19 import javax.swing.JButton;
20 import javax.swing.JCheckBox;
21 import javax.swing.JComponent;
22 import javax.swing.JPanel;
23 import javax.swing.border.Border;
24 import jp.sfjp.jindolf.data.DialogPref;
29 @SuppressWarnings("serial")
30 public class DialogPrefPanel
32 implements ActionListener,
35 private final JCheckBox useBodyImage = new JCheckBox("デカキャラモード");
36 private final JCheckBox useMonoImage =
37 new JCheckBox("墓石を遺影に置き換える");
38 private final JCheckBox isSimpleMode =
39 new JCheckBox("シンプル表示モード");
40 private final JCheckBox alignBaloon =
41 new JCheckBox("フキダシ幅を揃える");
42 private final JButton resetDefault = new JButton("出荷時に戻す");
47 @SuppressWarnings("LeakingThisInConstructor")
48 public DialogPrefPanel(){
51 this.resetDefault.addActionListener(this);
52 this.isSimpleMode.addItemListener(this);
64 private void design(Container content){
65 GridBagLayout layout = new GridBagLayout();
66 GridBagConstraints constraints = new GridBagConstraints();
68 content.setLayout(layout);
70 constraints.insets = new Insets(2, 2, 2, 2);
72 constraints.weightx = 0.0;
73 constraints.gridwidth = GridBagConstraints.REMAINDER;
74 constraints.fill = GridBagConstraints.NONE;
75 constraints.anchor = GridBagConstraints.NORTHWEST;
77 content.add(this.isSimpleMode, constraints);
78 content.add(this.alignBaloon, constraints);
79 content.add(buildIconPanel(), constraints);
81 constraints.weightx = 1.0;
82 constraints.weighty = 1.0;
83 constraints.fill = GridBagConstraints.NONE;
84 constraints.anchor = GridBagConstraints.SOUTHEAST;
85 content.add(this.resetDefault, constraints);
94 private JComponent buildIconPanel(){
95 JPanel result = new JPanel();
97 GridBagLayout layout = new GridBagLayout();
98 GridBagConstraints constraints = new GridBagConstraints();
99 result.setLayout(layout);
101 constraints.insets = new Insets(1, 1, 1, 1);
103 constraints.weightx = 0.0;
104 constraints.gridwidth = GridBagConstraints.REMAINDER;
105 constraints.fill = GridBagConstraints.NONE;
106 constraints.anchor = GridBagConstraints.NORTHWEST;
108 result.add(this.useBodyImage, constraints);
109 result.add(this.useMonoImage, constraints);
111 Border border = BorderFactory.createTitledBorder("アイコン表示");
112 result.setBorder(border);
120 private void modifyGUIState(){
121 if(this.isSimpleMode.isSelected()){
122 this.useBodyImage.setEnabled(false);
123 this.useMonoImage.setEnabled(false);
124 this.alignBaloon .setEnabled(false);
126 this.useBodyImage.setEnabled(true);
127 this.useMonoImage.setEnabled(true);
128 this.alignBaloon .setEnabled(true);
135 * デカキャラモードを使うか否か画面の状態を返す。
136 * @return デカキャラモードを使うならtrue
138 public boolean useBodyImage(){
139 return this.useBodyImage.isSelected();
143 * 遺影モードを使うか否か画面の状態を返す。
144 * @return 遺影モードを使うならtrue
146 public boolean useMonoImage(){
147 return this.useMonoImage.isSelected();
151 * シンプル表示モードか否か画面の状態を返す。
152 * @return シンプル表示モードならtrue
154 public boolean isSimpleMode(){
155 return this.isSimpleMode.isSelected();
159 * フキダシ幅を揃えるか否か画面の状態を返す。
160 * @return フキダシ幅を揃えるならtrue
162 public boolean alignBaloon(){
163 return this.alignBaloon.isSelected();
168 * @param setting 有効にするならtrue
170 public void setBodyImageSetting(boolean setting){
171 this.useBodyImage.setSelected(setting);
177 * @param setting 有効にするならtrue
179 public void setMonoImageSetting(boolean setting){
180 this.useMonoImage.setSelected(setting);
186 * @param setting 有効にするならtrue
188 public void setSimpleModeSetting(boolean setting){
189 this.isSimpleMode.setSelected(setting);
196 * @param setting 有効にするならtrue
198 public void setAlignBaloonSetting(boolean setting){
199 this.alignBaloon.setSelected(setting);
207 public void setDialogPref(DialogPref pref){
208 setBodyImageSetting(pref.useBodyImage());
209 setMonoImageSetting(pref.useMonoImage());
210 setSimpleModeSetting(pref.isSimpleMode());
211 setAlignBaloonSetting(pref.alignBaloonWidth());
220 public DialogPref getDialogPref(){
221 DialogPref result = new DialogPref();
222 result.setBodyImageSetting(useBodyImage());
223 result.setMonoImageSetting(useMonoImage());
224 result.setSimpleMode(isSimpleMode());
225 result.setAlignBalooonWidthSetting(alignBaloon());
231 * @param event ボタン押下イベント
234 public void actionPerformed(ActionEvent event){
235 Object source = event.getSource();
236 if(source != this.resetDefault) return;
237 this.useBodyImage.setSelected(false);
238 this.useMonoImage.setSelected(false);
239 this.isSimpleMode.setSelected(false);
240 this.alignBaloon.setSelected(false);
247 * @param event チェックボックス操作イベント
250 public void itemStateChanged(ItemEvent event){