OSDN Git Service

8f3f70dc2aa0ef00de1dcb47e3729dff5f6f6078
[sudokuki/sudokuki.git] / src / classes / net / jankenpoi / sudokuki / ui / swing / NumbersMenu.java
1 /*\r
2  * Sudokuki - essential sudoku game\r
3  * Copyright (C) 2007-2012 Sylvain Vedrenne\r
4  *\r
5  * This program is free software: you can redistribute it and/or modify\r
6  * it under the terms of the GNU General Public License as published by\r
7  * the Free Software Foundation, either version 3 of the License, or\r
8  * (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, see <http://www.gnu.org/licenses/>.\r
17  */\r
18 package net.jankenpoi.sudokuki.ui.swing;\r
19 \r
20 import static net.jankenpoi.i18n.I18n._;\r
21 \r
22 import java.awt.event.ActionEvent;\r
23 import java.util.Locale;\r
24 \r
25 import javax.swing.AbstractAction;\r
26 import javax.swing.Action;\r
27 import javax.swing.ButtonGroup;\r
28 import javax.swing.JMenu;\r
29 import javax.swing.JRadioButtonMenuItem;\r
30 \r
31 import net.jankenpoi.i18n.I18n;\r
32 import net.jankenpoi.sudokuki.preferences.UserPreferences;\r
33 import net.jankenpoi.sudokuki.ui.L10nComponent;\r
34 \r
35 @SuppressWarnings("serial")\r
36 public class NumbersMenu extends JMenu implements L10nComponent {\r
37 \r
38         private final SwingView view;\r
39         private final JRadioButtonMenuItem itemArabicNumbers = new JRadioButtonMenuItem();\r
40         private final JRadioButtonMenuItem itemChineseNumbers = new JRadioButtonMenuItem();\r
41         private final Action actionArabicNumbers;\r
42         private final Action actionChineseNumbers;\r
43         private LocaleListenerImpl localeListener;\r
44 \r
45         public NumbersMenu(SwingView view) {\r
46                 this.view = view;\r
47 \r
48                 actionArabicNumbers = new AbstractAction(_("Arabic"), null) {\r
49 \r
50                         @Override\r
51                         public void actionPerformed(ActionEvent arg0) {\r
52                                 setKanjiMode(false);\r
53                         }\r
54                 };\r
55                 \r
56                 actionChineseNumbers = new AbstractAction(_("Chinese"), null) {\r
57 \r
58                         @Override\r
59                         public void actionPerformed(ActionEvent arg0) {\r
60                                 setKanjiMode(true);\r
61                         }\r
62                 };\r
63 \r
64                 addItems();\r
65                 setIcon(StockIcons.ICON_FONT);\r
66                 \r
67                 setL10nMessages(null, null);\r
68                 localeListener = new LocaleListenerImpl(this);\r
69                 I18n.addLocaleListener(localeListener);\r
70                 \r
71                 setEnabled(true);\r
72         }\r
73 \r
74         @Override\r
75         public void setL10nMessages(Locale locale, String languageCode) {\r
76                 setText(_("Numbers"));\r
77                 itemArabicNumbers.setText(_("Arabic"));\r
78                 itemChineseNumbers.setText(_("Chinese"));\r
79         }\r
80         \r
81         private void addItems() {\r
82                 \r
83                 ButtonGroup numbersGroup = new ButtonGroup();\r
84                 \r
85                 boolean kanjiMode = UserPreferences.getInstance().getBoolean("KanjiMode", false);\r
86                 \r
87                 itemArabicNumbers.setAction(actionArabicNumbers);\r
88                 numbersGroup.add(itemArabicNumbers);\r
89                 itemArabicNumbers.setSelected(!kanjiMode);\r
90                 add(itemArabicNumbers);\r
91                 \r
92                 itemChineseNumbers.setAction(actionChineseNumbers);\r
93                 numbersGroup.add(itemChineseNumbers);\r
94                 itemChineseNumbers.setSelected(kanjiMode);\r
95                 add(itemChineseNumbers);\r
96         }\r
97         \r
98         private void setKanjiMode(boolean mode) {\r
99                 UserPreferences.getInstance().set("kanjiMode", mode);\r
100                 view.getController().notifyGridChanged();\r
101         }\r
102         \r
103 }\r