Skip to content

Commit 028f2e2

Browse files
author
Thach Nguyen
committed
Merge branch '2013' into 2014: Implement localization
2 parents 5c04de6 + 54a384d commit 028f2e2

File tree

15 files changed

+196
-140
lines changed

15 files changed

+196
-140
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>pes.compulsion</groupId>
88
<artifactId>pes-editor</artifactId>
9-
<version>2014-1.0</version>
9+
<version>2014-1.1</version>
1010
<packaging>jar</packaging>
1111

1212
<!-- Generic properties -->
@@ -21,7 +21,7 @@
2121
</properties>
2222

2323
<build>
24-
<finalName>PES2014Editor-1.0</finalName>
24+
<finalName>PES2014Editor-1.1</finalName>
2525
<plugins>
2626
<plugin>
2727
<groupId>org.apache.maven.plugins</groupId>

src/main/java/editor/data/OptionFile.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,9 @@ public synchronized boolean load(File file) {
115115

116116
checksum(data, true);
117117
decrypt(data);
118-
}
119118

120-
log.info("Loading of {} save game file succeeded", format);
119+
log.info("Loading of {} save game file succeeded", format);
120+
}
121121
} catch (Exception e) {
122122
log.error("Failed to load save game file:", e);
123123
format = null;
@@ -525,8 +525,8 @@ private static void checksum(byte[] data, boolean validate) {
525525
// 4 bytes checksum before each blocks
526526
if (validate) {
527527
int crc = Bits.toInt(data, adr);
528-
if (crc != chk) {
529-
throw new IllegalStateException(String.format("Invalid checksum 0x%X, expected: 0x%X", crc, chk));
528+
if (crc != 0 && crc != chk) {
529+
throw new IllegalStateException(String.format("Invalid block@%d checksum 0x%X, expected: 0x%X", block[0], crc, chk));
530530
}
531531
} else {
532532
Bits.toBytes(chk, data, adr);

src/main/java/editor/data/Stats.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ private Stats() {
267267
"Syria",
268268
"New Caledonia",
269269

270-
"[ - ]",// Black * NOTE: Nation IDs [100-101] must not be used
271-
"[ ]",// White
270+
"[ - ]",// Black * NOTE: Nation IDs [100-101] must not be used
271+
"[ ]",// White
272272
"[ M ]",// Master-League country
273273

274274
"Albania",

src/main/java/editor/lang/NullHostnameVerifier.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/editor/lang/TrustAllManager.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/main/java/editor/ui/Editor.java

Lines changed: 89 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.awt.event.WindowEvent;
1919
import java.io.*;
2020
import java.net.URL;
21+
import java.util.Locale;
2122

2223
public class Editor extends JFrame implements ActionListener {
2324
private static final long serialVersionUID = 212475114885790986L;
@@ -28,15 +29,19 @@ public class Editor extends JFrame implements ActionListener {
2829
private final CsvMaker csvMaker;
2930

3031
public Editor() {
31-
super(Resources.getMessage("editor.title"));
32+
super();
3233

3334
of = new OptionFile();
3435
of2 = new OptionFile();
3536
csvMaker = new CsvMaker();
3637

37-
initComponents();
38+
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
39+
initIcon();
3840

39-
tabbedPane.setVisible(false);
41+
File lastDir = loadSettings();
42+
setTitle(Resources.getMessage("editor.title"));
43+
44+
initComponents(lastDir);
4045
}
4146

4247
//region Initialize the GUI components
@@ -60,10 +65,7 @@ public Editor() {
6065
private/* final*/ CsvSwitchPanel csvSwitch;
6166
private/* final*/ JFileChooser csvChooser;
6267

63-
private void initComponents() {
64-
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
65-
initIcon();
66-
68+
private void initComponents(File lastDir) {
6769
csvSwitch = new CsvSwitchPanel();
6870

6971
csvChooser = new JFileChooser();
@@ -110,18 +112,22 @@ private void initComponents() {
110112
tabbedPane.addTab(Resources.getMessage("editor.tab8"), null, globalPan, null);
111113
tabbedPane.addTab(Resources.getMessage("editor.tab9"), null, importPanel, null);
112114

113-
buildMenu();
114-
getContentPane().add(tabbedPane);
115-
116115
opFileFilter = new OptionFileFilter();
117116
//
118-
opFileChooser = new JFileChooser(loadSettings());
117+
opFileChooser = new JFileChooser(lastDir);
119118
opFileChooser.setAcceptAllFileFilterUsed(false);
120119
opFileChooser.addChoosableFileFilter(opFileFilter);
121120
opFileChooser.setAccessory(new OptionPreviewPanel(opFileChooser));
122121

122+
buildMenu();
123+
124+
setResizable(true);
125+
getContentPane().add(tabbedPane);
126+
123127
setResizable(false);
124128
pack();
129+
130+
tabbedPane.setVisible(false);
125131
}
126132

127133
private JMenuItem open2Item;
@@ -172,6 +178,9 @@ private void buildMenu() {
172178
tool.add(csvItem);
173179
tool.add(convertItem);
174180

181+
JMenu language = new JMenu(Resources.getMessage("menu.language"));
182+
buildLanguageMenu(language);
183+
175184
JMenuItem helpItem = new JMenuItem(Resources.getMessage("menu.helpPage"));
176185
helpItem.setActionCommand("Help");
177186
helpItem.addActionListener(this);
@@ -187,17 +196,21 @@ private void buildMenu() {
187196
JMenuBar mb = new JMenuBar();
188197
mb.add(file);
189198
mb.add(tool);
199+
mb.add(language);
190200
mb.add(help);
191201

192202
setJMenuBar(mb);
193203

194-
csvItem.setEnabled(false);
195-
open2Item.setEnabled(false);
196-
saveItem.setEnabled(false);
197-
saveAsItem.setEnabled(false);
198-
convertItem.setEnabled(false);
204+
enableMenuItems(false);
205+
log.debug("Building of menu-bar is succeeded");
206+
}
199207

200-
log.debug("Building of menu-bar succeeded");
208+
private void enableMenuItems(boolean enable) {
209+
csvItem.setEnabled(enable);
210+
open2Item.setEnabled(enable);
211+
saveItem.setEnabled(enable);
212+
saveAsItem.setEnabled(enable);
213+
convertItem.setEnabled(enable && of2.isLoaded());
201214
}
202215

203216
private void initIcon() {
@@ -208,6 +221,20 @@ private void initIcon() {
208221
}
209222
}
210223

224+
private void buildLanguageMenu(JMenu language) {
225+
Locale loc;
226+
JMenuItem mi;
227+
for (int i = 0; i < Resources.SUPPORTED_LOCALES.length; i++) {
228+
loc = Resources.SUPPORTED_LOCALES[i];
229+
230+
mi = new JMenuItem(loc.getDisplayLanguage(loc));
231+
mi.setActionCommand("Language" + i);
232+
mi.addActionListener(this);
233+
234+
language.add(mi);
235+
}
236+
}
237+
211238
//endregion
212239

213240
private void refreshTitle(String filename) {
@@ -239,6 +266,10 @@ public void actionPerformed(ActionEvent evt) {
239266
exportCsv();
240267
} else if ("Convert".equalsIgnoreCase(evt.getActionCommand())) {
241268
importFromOF2();
269+
} else if (null != evt.getActionCommand() && evt.getActionCommand().startsWith("Language")) {
270+
int i = Integer.parseInt(evt.getActionCommand().substring(8));
271+
switchLanguage(Resources.SUPPORTED_LOCALES[i]);
272+
242273
} else if ("Help".equalsIgnoreCase(evt.getActionCommand())) {
243274
helpDia.setVisible(true);
244275
} else if ("About".equalsIgnoreCase(evt.getActionCommand())) {
@@ -275,40 +306,51 @@ private void openFile(String filePath) {
275306

276307
Squads.fixAll(of);
277308

278-
flagPanel.refresh();
279-
imagePanel.refresh();
280-
transferPan.refresh();
281-
wenShop.getWenPanel().refresh();
282-
wenShop.getShopPanel().refresh();
283-
stadiumPan.refresh();
284-
teamPan.refresh();
285-
leaguePan.refresh();
286-
importPanel.refresh();
287-
288-
tabbedPane.setVisible(true);
289-
290-
csvItem.setEnabled(true);
291-
open2Item.setEnabled(true);
292-
saveItem.setEnabled(true);
293-
saveAsItem.setEnabled(true);
294-
convertItem.setEnabled(of2.isLoaded());
309+
refreshComponents();
310+
enableMenuItems(true);
295311

296312
log.debug("Open succeeded on input file: {}", fs.getName());
297313
} else {
298314
refreshTitle(null);
299315
tabbedPane.setVisible(false);
300316

301-
csvItem.setEnabled(false);
302-
open2Item.setEnabled(false);
303-
saveItem.setEnabled(false);
304-
saveAsItem.setEnabled(false);
305-
convertItem.setEnabled(false);
317+
enableMenuItems(false);
306318

307319
log.debug("Failed to open file: {}", fs);
308320
showOpenFailMsg();
309321
}
310322
}
311323

324+
private void refreshComponents() {
325+
flagPanel.refresh();
326+
imagePanel.refresh();
327+
transferPan.refresh();
328+
wenShop.getWenPanel().refresh();
329+
wenShop.getShopPanel().refresh();
330+
stadiumPan.refresh();
331+
teamPan.refresh();
332+
leaguePan.refresh();
333+
importPanel.refresh();
334+
335+
tabbedPane.setVisible(true);
336+
}
337+
338+
private void switchLanguage(Locale locale) {
339+
Locale.setDefault(locale);
340+
saveSettings();
341+
342+
getContentPane().remove(tabbedPane);
343+
initComponents(opFileChooser.getCurrentDirectory());
344+
345+
if (null != currentFile) {
346+
refreshTitle(currentFile.getName());
347+
refreshComponents();
348+
enableMenuItems(true);
349+
} else {
350+
refreshTitle(null);
351+
}
352+
}
353+
312354
/**
313355
* Imports OptionFile from OF2.
314356
*/
@@ -505,14 +547,14 @@ private void showIllegalNameMsg() {
505547

506548
private boolean saveSettings() {
507549
File dir = opFileChooser.getCurrentDirectory();
508-
if (null == dir) {
550+
/*if (null == dir) {
509551
return true;
510-
}
552+
}*/
511553

512554
ObjectOutputStream sw = null;
513555
try {
514556
sw = new ObjectOutputStream(new FileOutputStream(settingsFile, false));
515-
sw.writeObject(dir);
557+
sw.writeObject(new Object[]{dir, Locale.getDefault()});
516558

517559
} catch (IOException e) {
518560
log.warn("Failed to save settings: {}", e.toString());
@@ -540,11 +582,13 @@ private File loadSettings() {
540582
sr = new ObjectInputStream(new FileInputStream(settingsFile));
541583
Object o = sr.readObject();
542584

543-
if (o instanceof File) {
544-
dir = (File) o;
545-
if (!dir.exists()) {
585+
if (o instanceof Object[]) {
586+
Object[] settings = (Object[]) o;
587+
dir = (File) settings[0];
588+
if (null != dir && !dir.exists()) {
546589
dir = null;
547590
}
591+
Locale.setDefault((Locale) settings[1]);
548592
}
549593
} catch (Exception e) {
550594
log.warn("Failed to load settings: {}", e.toString());

src/main/java/editor/ui/InfoPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,10 @@ private void insertName(int index1, int index2) throws BadLocationException {
303303
StyleConstants.setForeground(attr, Color.WHITE);
304304

305305
if (index1 > 0) {
306-
doc.insertString(doc.getLength(), Player.getName(of, index1), attr);
306+
doc.insertString(doc.getLength(), Player.getName(of, index1) + " [" + index1 + ']', attr);
307307
}
308308
if (index2 > 0) {
309-
doc.insertString(doc.getLength(), "\t" + Player.getName(of, index2), attr);
309+
doc.insertString(doc.getLength(), "\t" + Player.getName(of, index2) + " [" + index2 + ']', attr);
310310
}
311311
}
312312

src/main/java/editor/ui/TransferPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,7 @@ private void detectSafeTransferSide(
764764
transferFree.set(false);
765765
}
766766

767-
if (!autoRelease.isSelected() && squadFrom >= Squads.FIRST_CLUB && squadFrom <= Squads.TOTAL) {
767+
if (!autoRelease.isSelected() && squadFrom >= Squads.FIRST_CLUB/* && squadFrom <= Squads.TOTAL*/) {
768768
int s = clubRelease(indexTo, false);
769769
if (s >= 0) {
770770
transferTo.set(false);

src/main/java/editor/util/Resources.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ private Resources() {
1616

1717
private static volatile ResourceBundle messages = null;
1818

19-
public static ResourceBundle getMessages(boolean reload) {
20-
if (null == messages || reload) {
21-
messages = ResourceBundle.getBundle("META-INF/i18n/messages", Locale.getDefault());
19+
public static ResourceBundle getMessages(Locale locale) {
20+
if (null == messages || !locale.equals(messages.getLocale())) {
21+
messages = ResourceBundle.getBundle("META-INF/i18n/messages", locale);
2222
if (null == messages) {
2323
throw new IllegalStateException("messages must not be null.");
2424
}
@@ -27,7 +27,7 @@ public static ResourceBundle getMessages(boolean reload) {
2727
}
2828

2929
public static ResourceBundle getMessages() {
30-
return getMessages(false);
30+
return getMessages(Locale.getDefault());
3131
}
3232

3333
private static String getMessage(String key, boolean nullable, Object... args) {
@@ -61,4 +61,9 @@ public static String getNullableMessage(String key, Object... args) {
6161
return getMessage(key, true, args);
6262
}
6363

64+
public static final Locale[] SUPPORTED_LOCALES = {
65+
Locale.ENGLISH,
66+
new Locale("vi"),
67+
};
68+
6469
}

0 commit comments

Comments
 (0)