@@ -73,95 +73,68 @@ public class Preferences {
73
73
74
74
static final String PREFS_FILE = "preferences.txt" ;
75
75
76
- String [] languages = {
77
- _ ("System Default" ),
78
- "العربية" + " (" + _ ("Arabic" ) + ")" ,
79
- "Aragonés" + " (" + _ ("Aragonese" ) + ")" ,
80
- "български" + " (" + _ ("Bulgarian" ) + ")" ,
81
- "Català" + " (" + _ ("Catalan" ) + ")" ,
82
- "Hrvatski" + " (" + _ ("Croatian" ) + ")" ,
83
- "český" + " (" + _ ("Czech" ) + ")" ,
84
- "简体中文" + " (" + _ ("Chinese Simplified" ) + ")" ,
85
- "繁體中文" + " (" + _ ("Chinese Traditional" ) + ")" ,
86
- "Dansk" + " (" + _ ("Danish" ) + ")" ,
87
- "Nederlands" + " (" + _ ("Dutch" ) + ")" ,
88
- "English" + " (" + _ ("English" ) + ")" ,
89
- "Eesti" + " (" + _ ("Estonian" ) + ")" ,
90
- "Pilipino" + " (" + _ ("Filipino" ) + ")" ,
91
- "Français" + " (" + _ ("French" ) + ")" ,
92
- "Canadienne-français" + " (" + _ ("Canadian French" ) + ")" ,
93
- "Galego" + " (" + _ ("Galician" ) + ")" ,
94
- "საქართველოს" + " (" + _ ("Georgian" ) + ")" ,
95
- "עברית" + " (" + _ ("Hebrew" ) + ")" ,
96
- "Deutsch" + " (" + _ ("German" ) + ")" ,
97
- "ελληνικά" + " (" + _ ("Greek" ) + ")" ,
98
- "Magyar" + " (" + _ ("Hindi" ) + ")" ,
99
- "Magyar" + " (" + _ ("Hungarian" ) + ")" ,
100
- "Bahasa Indonesia" + " (" + _ ("Indonesian" ) + ")" ,
101
- "Italiano" + " (" + _ ("Italian" ) + ")" ,
102
- "日本語" + " (" + _ ("Japanese" ) + ")" ,
103
- "한국어" + " (" + _ ("Korean" ) + ")" ,
104
- "Latviešu" + " (" + _ ("Latvian" ) + ")" ,
105
- "Lietuvių Kalba" + " (" + _ ("Lithuaninan" ) + ")" ,
106
- "मराठी" + " (" + _ ("Marathi" ) + ")" ,
107
- "Norsk" + " (" + _ ("Norwegian" ) + ")" ,
108
- "Norsk bokmål" + " (" + _ ("Norwegian Bokmål" ) + ")" ,
109
- "فارسی" + " (" + _ ("Persian" ) + ")" ,
110
- "Język Polski" + " (" + _ ("Polish" ) + ")" ,
111
- "Português" + " (" + _ ("Portuguese" ) + " - Brazil)" ,
112
- "Português" + " (" + _ ("Portuguese" ) + " - Portugal)" ,
113
- "Română" + " (" + _ ("Romanian" ) + ")" ,
114
- "Русский" + " (" + _ ("Russian" ) + ")" ,
115
- "Español" + " (" + _ ("Spanish" ) + ")" ,
116
- "தமிழ்" + " (" + _ ("Tamil" ) + ")" ,
117
- "Türk" + " (" + _ ("Turkish" ) + ")" ,
118
- "Український" + " (" + _ ("Ukrainian" ) + ")"
119
- };
120
- String [] languagesISO = {
121
- "" ,
122
- "ar" ,
123
- "an" ,
124
- "bg" ,
125
- "ca" ,
126
- "hr_hr" ,
127
- "cs_cz" ,
128
- "zh_cn" ,
129
- "zh_tw" ,
130
- "da" ,
131
- "nl" ,
132
- "en" ,
133
- "et" ,
134
- "tl" ,
135
- "fr" ,
136
- "fr_ca" ,
137
- "gl" ,
138
- "ka_ge" ,
139
- "he" ,
140
- "de" ,
141
- "el" ,
142
- "hi" ,
143
- "hu" ,
144
- "id" ,
145
- "it" ,
146
- "ja" ,
147
- "ko" ,
148
- "lv" ,
149
- "lt" ,
150
- "mr" ,
151
- "no_nb" ,
152
- "nb_no" ,
153
- "fa" ,
154
- "pl" ,
155
- "pt_br" ,
156
- "pt_pt" ,
157
- "ro" ,
158
- "ru" ,
159
- "es" ,
160
- "ta" ,
161
- "tr" ,
162
- "uk"
163
- };
164
-
76
+ class Language {
77
+ Language (String _name , String _originalName , String _isoCode ) {
78
+ name = _name ;
79
+ originalName = _originalName ;
80
+ isoCode = _isoCode ;
81
+ }
82
+
83
+ public String toString () {
84
+ if (originalName .length () == 0 )
85
+ return name ;
86
+ return originalName + " (" + name + ")" ;
87
+ };
88
+
89
+ String name ;
90
+ String originalName ;
91
+ String isoCode ;
92
+ }
93
+
94
+ Language languages [] = {
95
+ new Language (_ ("System Default" ), "" , "" ),
96
+ new Language (_ ("Arabic" ), "العربية" , "ar" ),
97
+ new Language (_ ("Aragonese" ), "Aragonés" , "an" ),
98
+ new Language (_ ("Bulgarian" ), "български" , "bg" ),
99
+ new Language (_ ("Catalan" ), "Català" , "ca" ),
100
+ new Language (_ ("Croatian" ), "Hrvatski" , "hr_hr" ),
101
+ new Language (_ ("Czech" ), "český" , "cs_cz" ),
102
+ new Language (_ ("Chinese Simplified" ), "简体中文" , "zh_cn" ),
103
+ new Language (_ ("Chinese Traditional" ), "繁體中文" , "zh_tw" ),
104
+ new Language (_ ("Danish" ), "Dansk" , "da" ),
105
+ new Language (_ ("Dutch" ), "Nederlands" , "nl" ),
106
+ new Language (_ ("English" ), "English" , "en" ),
107
+ new Language (_ ("Estonian" ), "Eesti" , "et" ),
108
+ new Language (_ ("Filipino" ), "Pilipino" , "tl" ),
109
+ new Language (_ ("French" ), "Français" , "fr" ),
110
+ new Language (_ ("Canadian French" ), "Canadienne-français" , "fr_ca" ),
111
+ new Language (_ ("Galician" ), "Galego" , "gl" ),
112
+ new Language (_ ("Georgian" ), "საქართველოს" , "ka_ge" ),
113
+ new Language (_ ("German" ), "Deutsch" , "de" ),
114
+ new Language (_ ("Greek" ), "ελληνικά" , "el" ),
115
+ new Language (_ ("Hebrew" ), "עברית" , "he" ),
116
+ new Language (_ ("Hindi" ), "हिंदी" , "hi" ),
117
+ new Language (_ ("Hungarian" ), "Magyar" , "hu" ),
118
+ new Language (_ ("Indonesian" ), "Bahasa Indonesia" , "id" ),
119
+ new Language (_ ("Italian" ), "Italiano" , "it" ),
120
+ new Language (_ ("Japanese" ), "日本語" , "ja" ),
121
+ new Language (_ ("Korean" ), "한국어" , "ko" ),
122
+ new Language (_ ("Latvian" ), "Latviešu" , "lv" ),
123
+ new Language (_ ("Lithuaninan" ), "Lietuvių Kalba" , "lt" ),
124
+ new Language (_ ("Marathi" ), "मराठी" , "mr" ),
125
+ new Language (_ ("Norwegian" ), "Norsk" , "no_nb" ),
126
+ new Language (_ ("Norwegian Bokmål" ), "Norsk bokmål" , "nb_no" ),
127
+ new Language (_ ("Persian" ), "فارسی" , "fa" ),
128
+ new Language (_ ("Polish" ), "Język Polski" , "pl" ),
129
+ new Language (_ ("Portuguese (Brazil)" ), "Português (Brazil)" , "pt_br" ),
130
+ new Language (_ ("Portuguese (Portugal)" ), "Português (Portugal)" , "pt_pt" ),
131
+ new Language (_ ("Romanian" ), "Română" , "ro" ),
132
+ new Language (_ ("Russian" ), "Русский" , "ru" ),
133
+ new Language (_ ("Spanish" ), "Español" , "es" ),
134
+ new Language (_ ("Tamil" ), "தமிழ்" , "ta" ),
135
+ new Language (_ ("Turkish" ), "Türk" , "tr" ),
136
+ new Language (_ ("Ukrainian" ), "Український" , "uk" ), };
137
+
165
138
/**
166
139
* Standardized width for buttons. Mac OS X 10.3 wants 70 as its default,
167
140
* Windows XP needs 66, and my Ubuntu machine needs 80+, so 80 seems proper.
@@ -217,7 +190,7 @@ public class Preferences {
217
190
218
191
// data model
219
192
220
- static Hashtable defaults ;
193
+ static Hashtable < String , String > defaults ;
221
194
static Hashtable <String , String > table = new Hashtable <String , String >();
222
195
static File preferencesFile ;
223
196
@@ -253,7 +226,7 @@ static protected void init(String commandLinePrefs) {
253
226
}
254
227
255
228
// clone the hash table
256
- defaults = ( Hashtable ) table . clone ( );
229
+ defaults = new Hashtable < String , String >( table );
257
230
258
231
// Load a prefs file if specified on the command line
259
232
if (commandLinePrefs != null ) {
@@ -294,7 +267,12 @@ static protected void init(String commandLinePrefs) {
294
267
}
295
268
296
269
// load the I18n module for internationalization
297
- I18n .init (Preferences .get ("editor.languages.current" ));
270
+ try {
271
+ I18n .init (Preferences .get ("editor.languages.current" ));
272
+ } catch (MissingResourceException e ) {
273
+ I18n .init ("" );
274
+ Preferences .set ("editor.languages.current" , "" );
275
+ }
298
276
299
277
// set some other runtime constants (not saved on preferences file)
300
278
table .put ("runtime.os" , PConstants .platformNames [PApplet .platform ]);
@@ -386,7 +364,11 @@ public void actionPerformed(ActionEvent e) {
386
364
label = new JLabel (_ ("Editor language: " ));
387
365
box .add (label );
388
366
comboLanguage = new JComboBox (languages );
389
- comboLanguage .setSelectedIndex ((Arrays .asList (languagesISO )).indexOf (Preferences .get ("editor.languages.current" )));
367
+ String currentLanguage = Preferences .get ("editor.languages.current" );
368
+ for (Language language : languages ) {
369
+ if (language .isoCode .equals (currentLanguage ))
370
+ comboLanguage .setSelectedItem (language );
371
+ }
390
372
box .add (comboLanguage );
391
373
label = new JLabel (_ (" (requires restart of Arduino)" ));
392
374
box .add (label );
@@ -676,9 +658,8 @@ protected void applyFrame() {
676
658
setBoolean ("editor.update_extension" , updateExtensionBox .isSelected ());
677
659
678
660
// adds the selected language to the preferences file
679
- Object newItem = comboLanguage .getSelectedItem ();
680
- int pos = (Arrays .asList (languages )).indexOf (newItem .toString ()); // position in the languages array
681
- set ("editor.languages.current" ,(Arrays .asList (languagesISO )).get (pos ));
661
+ Language newLanguage = (Language ) comboLanguage .getSelectedItem ();
662
+ set ("editor.languages.current" , newLanguage .isoCode );
682
663
683
664
editor .applyPreferences ();
684
665
}
@@ -725,7 +706,7 @@ static protected void load(InputStream input) throws IOException {
725
706
load (input , table );
726
707
}
727
708
728
- static public void load (InputStream input , Map table ) throws IOException {
709
+ static public void load (InputStream input , Map < String , String > table ) throws IOException {
729
710
String [] lines = loadStrings (input ); // Reads as UTF-8
730
711
for (String line : lines ) {
731
712
if ((line .length () == 0 ) ||
@@ -837,7 +818,7 @@ public static void remove(String key) {
837
818
}
838
819
839
820
static public String getDefault (String attribute ) {
840
- return ( String ) defaults .get (attribute );
821
+ return defaults .get (attribute );
841
822
}
842
823
843
824
0 commit comments