OSDN Git Service

Support Polish language thanks to Monika Viste
[sudokuki/sudokuki.git] / src / classes / net / jankenpoi / sudokuki / ui / swing / NumbersMenu.java
1 /*\r
2  * Sudokuki - essential sudoku game\r
3  * Copyright (C) 2007-2016 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.gtxt;\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 itemStandardNumbers = new JRadioButtonMenuItem();\r
40         private final JRadioButtonMenuItem itemChineseNumbers = new JRadioButtonMenuItem();\r
41         private final JRadioButtonMenuItem itemArabicNumbers = new JRadioButtonMenuItem();\r
42     private final Action actionStandardNumbers;\r
43         private final Action actionChineseNumbers;\r
44         private final Action actionArabicNumbers;\r
45         private LocaleListenerImpl localeListener;\r
46 \r
47         public NumbersMenu(SwingView view) {\r
48                 this.view = view;\r
49 \r
50                 actionStandardNumbers = new AbstractAction(gtxt("Standard"), null) {\r
51                     \r
52                     @Override\r
53                     public void actionPerformed(ActionEvent arg0) {\r
54                         setNumbersMode(0);\r
55                     }\r
56                 };\r
57                 \r
58                 actionChineseNumbers = new AbstractAction(gtxt("Chinese"), null) {\r
59 \r
60                         @Override\r
61                         public void actionPerformed(ActionEvent arg0) {\r
62                             setNumbersMode(1);\r
63                         }\r
64                 };\r
65 \r
66                 actionArabicNumbers = new AbstractAction(gtxt("Arabic"), null) {\r
67                     \r
68                     @Override\r
69                     public void actionPerformed(ActionEvent arg0) {\r
70                         setNumbersMode(2);\r
71                     }\r
72                 };\r
73                 \r
74                 addItems();\r
75                 setIcon(StockIcons.ICON_FONT);\r
76                 \r
77                 setL10nMessages(null, gtxt("DETECTED_LANGUAGE"));\r
78                 localeListener = new LocaleListenerImpl(this);\r
79                 I18n.addLocaleListener(localeListener);\r
80                 \r
81                 setEnabled(true);\r
82         }\r
83 \r
84         @Override\r
85         public void setL10nMessages(Locale locale, String languageCode) {\r
86                 setText(gtxt("Numbers"));\r
87                 itemStandardNumbers.setText(gtxt("Standard"));\r
88                 itemChineseNumbers.setText(gtxt("Chinese"));\r
89                 itemArabicNumbers.setText(gtxt("Arabic"));\r
90         }\r
91         \r
92         private void addItems() {\r
93                 \r
94                 ButtonGroup numbersGroup = new ButtonGroup();\r
95                 \r
96                 int numbersMode = UserPreferences.getInstance().getInteger("NumbersMode", Integer.valueOf(0)).intValue();\r
97                 \r
98         itemStandardNumbers.setAction(actionStandardNumbers);\r
99         numbersGroup.add(itemStandardNumbers);\r
100         itemStandardNumbers.setSelected(numbersMode == 0);\r
101         add(itemStandardNumbers);\r
102         \r
103                 itemChineseNumbers.setAction(actionChineseNumbers);\r
104                 numbersGroup.add(itemChineseNumbers);\r
105                 itemChineseNumbers.setSelected(numbersMode == 1);\r
106                 add(itemChineseNumbers);\r
107                 \r
108                 itemArabicNumbers.setAction(actionArabicNumbers);\r
109                 numbersGroup.add(itemArabicNumbers);\r
110                 itemArabicNumbers.setSelected(numbersMode == 2);\r
111                 add(itemArabicNumbers);\r
112         }\r
113         \r
114         private void setNumbersMode(int mode) {\r
115                 UserPreferences.getInstance().set("numbersMode", Integer.valueOf(mode));\r
116                 view.getController().notifyGridChanged();\r
117         }\r
118         \r
119 }\r