diff --git a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form index d50d3f3..3c9d32b 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form +++ b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form @@ -873,6 +873,7 @@ + @@ -1232,7 +1233,7 @@ - + @@ -1242,20 +1243,15 @@ - + - - - - - - + @@ -1273,7 +1269,7 @@ - + @@ -1281,7 +1277,7 @@ - + @@ -1289,7 +1285,7 @@ - + @@ -1297,7 +1293,7 @@ - + @@ -1305,7 +1301,7 @@ - + @@ -1313,7 +1309,7 @@ - + @@ -1321,7 +1317,7 @@ - + @@ -1331,7 +1327,7 @@ - + @@ -1339,7 +1335,7 @@ - + @@ -1351,7 +1347,7 @@ - + @@ -1359,7 +1355,7 @@ - + @@ -1372,7 +1368,7 @@ - + @@ -1394,7 +1390,7 @@ - + @@ -1416,7 +1412,7 @@ - + @@ -1424,7 +1420,7 @@ - + @@ -1433,13 +1429,13 @@ - + - + @@ -1448,7 +1444,7 @@ - + @@ -1457,7 +1453,7 @@ - + @@ -1466,7 +1462,7 @@ - + @@ -1475,7 +1471,7 @@ - + @@ -1483,7 +1479,7 @@ - + @@ -1492,7 +1488,7 @@ - + @@ -1501,7 +1497,7 @@ - + @@ -1511,7 +1507,7 @@ - + @@ -1520,7 +1516,7 @@ - + @@ -1529,7 +1525,7 @@ - + @@ -1538,7 +1534,7 @@ - + @@ -1547,7 +1543,7 @@ - + @@ -1556,7 +1552,7 @@ - + @@ -1566,7 +1562,7 @@ - + @@ -1597,7 +1593,7 @@ - + @@ -1628,7 +1624,7 @@ - + @@ -1658,7 +1654,7 @@ - + @@ -1667,7 +1663,7 @@ - + @@ -1676,7 +1672,7 @@ - + @@ -1685,7 +1681,7 @@ - + @@ -1694,7 +1690,7 @@ - + @@ -1703,7 +1699,7 @@ - + @@ -1712,7 +1708,7 @@ - + @@ -1722,7 +1718,7 @@ - + @@ -1752,7 +1748,7 @@ - + @@ -1761,7 +1757,7 @@ - + @@ -1770,7 +1766,7 @@ - + @@ -1778,7 +1774,7 @@ - + @@ -1793,7 +1789,7 @@ - + @@ -1801,7 +1797,7 @@ - + @@ -1809,7 +1805,7 @@ - + @@ -1817,7 +1813,7 @@ - + @@ -1825,7 +1821,7 @@ - + @@ -1833,7 +1829,7 @@ - + @@ -1841,7 +1837,7 @@ - + @@ -1849,7 +1845,7 @@ - + @@ -1857,37 +1853,37 @@ - + - + - + - + - + - + @@ -1895,7 +1891,7 @@ - + @@ -1907,7 +1903,7 @@ - + @@ -1915,7 +1911,7 @@ - + @@ -1923,7 +1919,7 @@ - + @@ -1931,7 +1927,7 @@ - + @@ -1939,7 +1935,7 @@ - + @@ -1951,7 +1947,7 @@ - + @@ -1960,7 +1956,7 @@ - + @@ -1978,7 +1974,7 @@ - + @@ -1987,7 +1983,7 @@ - + @@ -1995,7 +1991,7 @@ - + @@ -2003,7 +1999,7 @@ - + @@ -2011,7 +2007,7 @@ - + @@ -2020,12 +2016,20 @@ - + + + + + + + + + diff --git a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java index 25f95c1..d7b45d3 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java @@ -43,6 +43,7 @@ import org.json.JSONArray; import javax.swing.*; import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.text.DefaultFormatter; @@ -63,6 +64,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; +import java.lang.reflect.Method; import java.net.URL; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; @@ -188,6 +190,7 @@ public class LauncherGUI implements Observer { private JLabel aboutUpdateLabel; private JButton updateButton; private JCheckBox settingsDebugBox; + private JButton showModfolderInExplorerButton; private static final Logger logger = LogManager.getLogger(LauncherGUI.class); @@ -196,6 +199,7 @@ public class LauncherGUI implements Observer { private Syncer syncer; private SyncList lastSynclist = null; private Updater updater = new Updater(); + private FileChecker.Type checkType = null; public LauncherGUI() { logger.info("Initialize GUI"); @@ -408,14 +412,23 @@ public class LauncherGUI implements Observer { presetPanelButton.addActionListener(e -> switchTab(Tab.PRESET)); settingsPanelButton.addActionListener(e -> switchTab(Tab.SETTING)); - refreshRepoButton.addActionListener(e -> RepositoryManger.getInstance().refreshModset()); + refreshRepoButton.addActionListener(e -> { + checkType = null; + RepositoryManger.getInstance().refreshModset(); + }); expandAllButton.addActionListener(e -> repoTree.expandAllNodes()); syncDownloadAbortButton.addActionListener(e -> syncer.stop()); syncCheckAbortButton.addActionListener(e -> fileChecker.stop()); - syncIntensiveCheckButton.addActionListener(e -> fileCheck(false)); - syncFastCheckButton.addActionListener(e -> fileCheck(true)); + syncIntensiveCheckButton.addActionListener(e -> { + checkType = FileChecker.Type.SLOW; + RepositoryManger.getInstance().refreshModset(); + }); + syncFastCheckButton.addActionListener(e -> { + checkType = FileChecker.Type.FAST; + RepositoryManger.getInstance().refreshModset(); + }); syncDownloadButton.addActionListener(e -> { if (!fileChecker.isChecked()) return; @@ -633,6 +646,17 @@ public class LauncherGUI implements Observer { } }); }); + + showModfolderInExplorerButton.addActionListener(e -> { + final Parameter p = Parameters.MOD_PATH.toParameter(); + if(p.getConfigValue() == null || String.valueOf(p.getConfigValue()).isEmpty()) return; + Desktop desktop = Desktop.getDesktop(); + try { + desktop.open(new File((String) p.getConfigValue())); + } catch (IOException ex) { + logger.error(ex); + } + }); } public static void infoBox(String infoMessage, String titleBar) { @@ -670,7 +694,7 @@ public class LauncherGUI implements Observer { } public void techCheck() { - boolean pathSet = Parameters.ARMA_PATH.toParameter().getConfigValue() != null && Parameters.ARMA_PATH.toParameter().getConfigValue() != null; + boolean pathSet = Parameters.ARMA_PATH.toParameter().getConfigValue() != null && Parameters.MOD_PATH.toParameter().getConfigValue() != null; playButton.setEnabled(false); playPresetButton.setEnabled(false); @@ -1147,10 +1171,16 @@ public class LauncherGUI implements Observer { final Parameter checkModsetParameter = Parameters.CHECK_MODSET.toParameter(); if (checkModsetParameter.getValue() != null && (boolean) checkModsetParameter.getValue()) { if (!fileChecker.isChecked()) { - SwingUtilities.invokeLater(() -> fileCheck(false)); + SwingUtilities.invokeLater(() -> fileCheck(true)); logger.info("Started file check on launch"); } } + + if(checkType != null) { + final FileChecker.Type checkTypeFinal = checkType; + SwingUtilities.invokeLater(() -> fileCheck(checkTypeFinal == FileChecker.Type.FAST)); + checkType = null; + } break; case RUNNING: @@ -1288,6 +1318,8 @@ public class LauncherGUI implements Observer { syncCheckStatusLabel.setText("Running!"); new Thread(() -> fileChecker.check(fastscan)).start(); + syncDownloadButton.setEnabled(false); + refreshRepoButton.setEnabled(false); repoTree.setCheckboxesEnabled(false); @@ -1420,7 +1452,7 @@ public class LauncherGUI implements Observer { settingsPanelButton.setIconTextGap(10); settingsPanelButton.setInheritsPopupMenu(true); settingsPanelButton.setMargin(new Insets(0, 0, 0, 0)); - this.$$$loadButtonText$$$(settingsPanelButton, ResourceBundle.getBundle("lang").getString("settings")); + this.$$$loadButtonText$$$(settingsPanelButton, this.$$$getMessageFromBundle$$$("lang", "settings")); settingsPanelButton.putClientProperty("hideActionText", Boolean.FALSE); panel1.add(settingsPanelButton, new GridConstraints(12, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); @@ -1433,7 +1465,7 @@ public class LauncherGUI implements Observer { updatePanelButton.setHorizontalAlignment(2); updatePanelButton.setIcon(new ImageIcon(getClass().getResource("/icons/download_16.png"))); updatePanelButton.setIconTextGap(10); - this.$$$loadButtonText$$$(updatePanelButton, ResourceBundle.getBundle("lang").getString("update")); + this.$$$loadButtonText$$$(updatePanelButton, this.$$$getMessageFromBundle$$$("lang", "update")); panel1.add(updatePanelButton, new GridConstraints(9, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); playPanelButton = new JButton(); playPanelButton.setFocusPainted(false); @@ -1444,7 +1476,7 @@ public class LauncherGUI implements Observer { playPanelButton.setIcon(new ImageIcon(getClass().getResource("/icons/play_16.png"))); playPanelButton.setIconTextGap(10); playPanelButton.setMargin(new Insets(0, 0, 0, 0)); - this.$$$loadButtonText$$$(playPanelButton, ResourceBundle.getBundle("lang").getString("play")); + this.$$$loadButtonText$$$(playPanelButton, this.$$$getMessageFromBundle$$$("lang", "play")); panel1.add(playPanelButton, new GridConstraints(8, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); @@ -1490,7 +1522,7 @@ public class LauncherGUI implements Observer { presetPanelButton.setIcon(new ImageIcon(getClass().getResource("/icons/preset_16.png"))); presetPanelButton.setIconTextGap(10); presetPanelButton.setMargin(new Insets(0, 0, 0, 0)); - this.$$$loadButtonText$$$(presetPanelButton, ResourceBundle.getBundle("lang").getString("presets")); + this.$$$loadButtonText$$$(presetPanelButton, this.$$$getMessageFromBundle$$$("lang", "presets")); panel1.add(presetPanelButton, new GridConstraints(11, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); changelogButton = new JButton(); changelogButton.setFocusPainted(false); @@ -1500,7 +1532,7 @@ public class LauncherGUI implements Observer { changelogButton.setHorizontalAlignment(2); changelogButton.setIcon(new ImageIcon(getClass().getResource("/icons/changelog_16.png"))); changelogButton.setIconTextGap(10); - this.$$$loadButtonText$$$(changelogButton, ResourceBundle.getBundle("lang").getString("changelog")); + this.$$$loadButtonText$$$(changelogButton, this.$$$getMessageFromBundle$$$("lang", "changelog")); panel1.add(changelogButton, new GridConstraints(10, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel3 = new JPanel(); panel3.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); @@ -1509,18 +1541,18 @@ public class LauncherGUI implements Observer { twitterIcon = new JLabel(); twitterIcon.setIcon(new ImageIcon(getClass().getResource("/icons/twitter_32.png"))); twitterIcon.setText(""); - twitterIcon.setToolTipText(ResourceBundle.getBundle("lang").getString("follow_on_twitter")); + twitterIcon.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "follow_on_twitter")); panel3.add(twitterIcon, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); githubIcon = new JLabel(); githubIcon.setIcon(new ImageIcon(getClass().getResource("/icons/github_32.png"))); githubIcon.setText(""); - githubIcon.setToolTipText(ResourceBundle.getBundle("lang").getString("star_on_github")); + githubIcon.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "star_on_github")); panel3.add(githubIcon, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aboutLabel = new JLabel(); Font aboutLabelFont = this.$$$getFont$$$(null, -1, 11, aboutLabel.getFont()); if (aboutLabelFont != null) aboutLabel.setFont(aboutLabelFont); aboutLabel.setForeground(new Color(-7500403)); - this.$$$loadLabelText$$$(aboutLabel, ResourceBundle.getBundle("lang").getString("about")); + this.$$$loadLabelText$$$(aboutLabel, this.$$$getMessageFromBundle$$$("lang", "about")); panel1.add(aboutLabel, new GridConstraints(13, 1, 1, 1, GridConstraints.ANCHOR_SOUTHEAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); tabbedPane1 = new JTabbedPane(); tabbedPane1.setEnabled(true); @@ -1546,7 +1578,7 @@ public class LauncherGUI implements Observer { final JLabel label3 = new JLabel(); Font label3Font = this.$$$getFont$$$(null, Font.BOLD, 16, label3.getFont()); if (label3Font != null) label3.setFont(label3Font); - this.$$$loadLabelText$$$(label3, ResourceBundle.getBundle("lang").getString("select_server")); + this.$$$loadLabelText$$$(label3, this.$$$getMessageFromBundle$$$("lang", "select_server")); panel5.add(label3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel6 = new JPanel(); panel6.setLayout(new GridLayoutManager(2, 1, new Insets(50, 25, 0, 25), -1, -1)); @@ -1558,7 +1590,7 @@ public class LauncherGUI implements Observer { Font playButtonFont = this.$$$getFont$$$(null, Font.BOLD, 18, playButton.getFont()); if (playButtonFont != null) playButton.setFont(playButtonFont); playButton.setMargin(new Insets(15, 0, 15, 0)); - this.$$$loadButtonText$$$(playButton, ResourceBundle.getBundle("lang").getString("play_now")); + this.$$$loadButtonText$$$(playButton, this.$$$getMessageFromBundle$$$("lang", "play_now")); panel6.add(playButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); parameterText = new JTextField(); parameterText.setEditable(false); @@ -1571,7 +1603,7 @@ public class LauncherGUI implements Observer { panel7.setLayout(new GridLayoutManager(3, 1, new Insets(10, 0, 0, 0), -1, -1)); panel7.setOpaque(true); updateTab.add(panel7, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel7.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + panel7.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); final JPanel panel8 = new JPanel(); panel8.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); panel8.setOpaque(true); @@ -1588,14 +1620,14 @@ public class LauncherGUI implements Observer { final JLabel label4 = new JLabel(); Font label4Font = this.$$$getFont$$$(null, Font.BOLD, 16, label4.getFont()); if (label4Font != null) label4.setFont(label4Font); - this.$$$loadLabelText$$$(label4, ResourceBundle.getBundle("lang").getString("check")); + this.$$$loadLabelText$$$(label4, this.$$$getMessageFromBundle$$$("lang", "check")); panel10.add(label4, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel11 = new JPanel(); panel11.setLayout(new GridLayoutManager(6, 4, new Insets(0, 3, 0, 0), -1, -1)); panel11.setOpaque(true); panel9.add(panel11, BorderLayout.CENTER); final JLabel label5 = new JLabel(); - this.$$$loadLabelText$$$(label5, ResourceBundle.getBundle("lang").getString("check_local_addons")); + this.$$$loadLabelText$$$(label5, this.$$$getMessageFromBundle$$$("lang", "check_local_addons")); panel11.add(label5, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer3 = new Spacer(); panel11.add(spacer3, new GridConstraints(0, 2, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); @@ -1614,24 +1646,24 @@ public class LauncherGUI implements Observer { panel11.add(panel12, new GridConstraints(2, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); syncCheckAbortButton = new JButton(); syncCheckAbortButton.setEnabled(false); - this.$$$loadButtonText$$$(syncCheckAbortButton, ResourceBundle.getBundle("lang").getString("abort")); + this.$$$loadButtonText$$$(syncCheckAbortButton, this.$$$getMessageFromBundle$$$("lang", "abort")); panel12.add(syncCheckAbortButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncIntensiveCheckButton = new JButton(); syncIntensiveCheckButton.setEnabled(false); - this.$$$loadButtonText$$$(syncIntensiveCheckButton, ResourceBundle.getBundle("lang").getString("intensive_check")); + this.$$$loadButtonText$$$(syncIntensiveCheckButton, this.$$$getMessageFromBundle$$$("lang", "intensive_check")); panel12.add(syncIntensiveCheckButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncFastCheckButton = new JButton(); syncFastCheckButton.setEnabled(false); - this.$$$loadButtonText$$$(syncFastCheckButton, ResourceBundle.getBundle("lang").getString("fast_check")); + this.$$$loadButtonText$$$(syncFastCheckButton, this.$$$getMessageFromBundle$$$("lang", "fast_check")); panel12.add(syncFastCheckButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label6 = new JLabel(); - this.$$$loadLabelText$$$(label6, ResourceBundle.getBundle("lang").getString("changed_files")); + this.$$$loadLabelText$$$(label6, this.$$$getMessageFromBundle$$$("lang", "changed_files")); panel11.add(label6, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label7 = new JLabel(); - this.$$$loadLabelText$$$(label7, ResourceBundle.getBundle("lang").getString("added_files")); + this.$$$loadLabelText$$$(label7, this.$$$getMessageFromBundle$$$("lang", "added_files")); panel11.add(label7, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label8 = new JLabel(); - this.$$$loadLabelText$$$(label8, ResourceBundle.getBundle("lang").getString("deleted_files")); + this.$$$loadLabelText$$$(label8, this.$$$getMessageFromBundle$$$("lang", "deleted_files")); panel11.add(label8, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncChangedFilesLabel = new JLabel(); syncChangedFilesLabel.setText("0"); @@ -1643,11 +1675,11 @@ public class LauncherGUI implements Observer { syncDeletedFilesLabel.setText("0"); panel11.add(syncDeletedFilesLabel, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label9 = new JLabel(); - this.$$$loadLabelText$$$(label9, ResourceBundle.getBundle("lang").getString("changed_filesize")); + this.$$$loadLabelText$$$(label9, this.$$$getMessageFromBundle$$$("lang", "changed_filesize")); panel11.add(label9, new GridConstraints(3, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncChangedFileSizeLabel = new JLabel(); syncChangedFileSizeLabel.setText("0.0 B"); - syncChangedFileSizeLabel.setToolTipText(ResourceBundle.getBundle("lang").getString("changed_filesize_tooltip")); + syncChangedFileSizeLabel.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "changed_filesize_tooltip")); panel11.add(syncChangedFileSizeLabel, new GridConstraints(3, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel13 = new JPanel(); panel13.setLayout(new BorderLayout(0, 0)); @@ -1661,26 +1693,26 @@ public class LauncherGUI implements Observer { final JLabel label10 = new JLabel(); Font label10Font = this.$$$getFont$$$(null, Font.BOLD, 16, label10.getFont()); if (label10Font != null) label10.setFont(label10Font); - this.$$$loadLabelText$$$(label10, ResourceBundle.getBundle("lang").getString("progress")); + this.$$$loadLabelText$$$(label10, this.$$$getMessageFromBundle$$$("lang", "progress")); panel14.add(label10, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel15 = new JPanel(); panel15.setLayout(new FormLayout("fill:d:grow,left:4dlu:noGrow,fill:d:grow", "center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow")); panel13.add(panel15, BorderLayout.CENTER); final JLabel label11 = new JLabel(); - this.$$$loadLabelText$$$(label11, ResourceBundle.getBundle("lang").getString("speed")); + this.$$$loadLabelText$$$(label11, this.$$$getMessageFromBundle$$$("lang", "speed")); CellConstraints cc = new CellConstraints(); panel15.add(label11, cc.xy(1, 5)); final JLabel label12 = new JLabel(); - this.$$$loadLabelText$$$(label12, ResourceBundle.getBundle("lang").getString("remaining_time")); + this.$$$loadLabelText$$$(label12, this.$$$getMessageFromBundle$$$("lang", "remaining_time")); panel15.add(label12, cc.xy(1, 7)); syncFileCountLabel = new JLabel(); syncFileCountLabel.setText(""); panel15.add(syncFileCountLabel, cc.xy(3, 3)); final JLabel label13 = new JLabel(); - this.$$$loadLabelText$$$(label13, ResourceBundle.getBundle("lang").getString("file_count")); + this.$$$loadLabelText$$$(label13, this.$$$getMessageFromBundle$$$("lang", "file_count")); panel15.add(label13, cc.xy(1, 3)); final JLabel label14 = new JLabel(); - this.$$$loadLabelText$$$(label14, ResourceBundle.getBundle("lang").getString("total_file_size")); + this.$$$loadLabelText$$$(label14, this.$$$getMessageFromBundle$$$("lang", "total_file_size")); panel15.add(label14, cc.xy(1, 1)); syncSizeLabel = new JLabel(); syncSizeLabel.setText("0.0 B/0.0 B"); @@ -1703,7 +1735,7 @@ public class LauncherGUI implements Observer { final JLabel label16 = new JLabel(); Font label16Font = this.$$$getFont$$$(null, Font.BOLD, 16, label16.getFont()); if (label16Font != null) label16.setFont(label16Font); - this.$$$loadLabelText$$$(label16, ResourceBundle.getBundle("lang").getString("download")); + this.$$$loadLabelText$$$(label16, this.$$$getMessageFromBundle$$$("lang", "download")); panel17.add(label16, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel18 = new JPanel(); panel18.setLayout(new FormLayout("fill:d:grow", "center:d:grow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow")); @@ -1726,15 +1758,15 @@ public class LauncherGUI implements Observer { panel18.add(panel21, cc.xywh(1, 2, 1, 8)); syncDownloadButton = new JButton(); syncDownloadButton.setEnabled(false); - this.$$$loadButtonText$$$(syncDownloadButton, ResourceBundle.getBundle("lang").getString("download")); + this.$$$loadButtonText$$$(syncDownloadButton, this.$$$getMessageFromBundle$$$("lang", "download")); panel21.add(syncDownloadButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncDownloadAbortButton = new JButton(); syncDownloadAbortButton.setEnabled(false); - this.$$$loadButtonText$$$(syncDownloadAbortButton, ResourceBundle.getBundle("lang").getString("abort")); + this.$$$loadButtonText$$$(syncDownloadAbortButton, this.$$$getMessageFromBundle$$$("lang", "abort")); panel21.add(syncDownloadAbortButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncPauseButton = new JButton(); syncPauseButton.setEnabled(false); - this.$$$loadButtonText$$$(syncPauseButton, ResourceBundle.getBundle("lang").getString("pause")); + this.$$$loadButtonText$$$(syncPauseButton, this.$$$getMessageFromBundle$$$("lang", "pause")); panel21.add(syncPauseButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncStatusLabel = new JLabel(); syncStatusLabel.setText(""); @@ -1753,27 +1785,28 @@ public class LauncherGUI implements Observer { final JLabel label17 = new JLabel(); Font label17Font = this.$$$getFont$$$(null, Font.BOLD, 16, label17.getFont()); if (label17Font != null) label17.setFont(label17Font); - this.$$$loadLabelText$$$(label17, ResourceBundle.getBundle("lang").getString("repository_content")); + this.$$$loadLabelText$$$(label17, this.$$$getMessageFromBundle$$$("lang", "repository_content")); panel24.add(label17, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel25 = new JPanel(); panel25.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1)); panel23.add(panel25, BorderLayout.SOUTH); expandAllButton = new JButton(); expandAllButton.setEnabled(false); - this.$$$loadButtonText$$$(expandAllButton, ResourceBundle.getBundle("lang").getString("expand_all")); + this.$$$loadButtonText$$$(expandAllButton, this.$$$getMessageFromBundle$$$("lang", "expand_all")); panel25.add(expandAllButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); syncPresetCombo = new JComboBox(); panel25.add(syncPresetCombo, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label18 = new JLabel(); - this.$$$loadLabelText$$$(label18, ResourceBundle.getBundle("lang").getString("preset")); + this.$$$loadLabelText$$$(label18, this.$$$getMessageFromBundle$$$("lang", "preset")); panel25.add(label18, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); refreshRepoButton = new JButton(); refreshRepoButton.setEnabled(false); - this.$$$loadButtonText$$$(refreshRepoButton, ResourceBundle.getBundle("lang").getString("update_repository")); + this.$$$loadButtonText$$$(refreshRepoButton, this.$$$getMessageFromBundle$$$("lang", "update_repository")); + refreshRepoButton.setVisible(true); panel25.add(refreshRepoButton, new GridConstraints(2, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); collapseAllButton = new JButton(); collapseAllButton.setEnabled(false); - this.$$$loadButtonText$$$(collapseAllButton, ResourceBundle.getBundle("lang").getString("collapse_all")); + this.$$$loadButtonText$$$(collapseAllButton, this.$$$getMessageFromBundle$$$("lang", "collapse_all")); panel25.add(collapseAllButton, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); updateTreeScrolPane = new JScrollPane(); panel23.add(updateTreeScrolPane, BorderLayout.CENTER); @@ -1790,7 +1823,7 @@ public class LauncherGUI implements Observer { changelogScroll.setOpaque(true); changelogScroll.setVisible(true); changelogTab.add(changelogScroll, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - changelogScroll.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + changelogScroll.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); changelogPane = new JTextArea(); changelogPane.setAutoscrolls(false); changelogPane.setEditable(false); @@ -1819,7 +1852,7 @@ public class LauncherGUI implements Observer { panel27.add(spacer4, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); playPresetButton = new JButton(); playPresetButton.setEnabled(false); - this.$$$loadButtonText$$$(playPresetButton, ResourceBundle.getBundle("lang").getString("play")); + this.$$$loadButtonText$$$(playPresetButton, this.$$$getMessageFromBundle$$$("lang", "play")); panel27.add(playPresetButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel28 = new JPanel(); panel28.setLayout(new GridLayoutManager(2, 1, new Insets(10, 0, 5, 5), -1, -1)); @@ -1828,7 +1861,7 @@ public class LauncherGUI implements Observer { scrollPane2.setHorizontalScrollBarPolicy(31); scrollPane2.setVerticalScrollBarPolicy(20); panel28.add(scrollPane2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - scrollPane2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + scrollPane2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); final JPanel panel29 = new JPanel(); panel29.setLayout(new GridLayoutManager(1, 1, new Insets(100, 70, 100, 70), -1, -1)); scrollPane2.setViewportView(panel29); @@ -1839,22 +1872,22 @@ public class LauncherGUI implements Observer { final JLabel label19 = new JLabel(); Font label19Font = this.$$$getFont$$$(null, Font.BOLD, 14, label19.getFont()); if (label19Font != null) label19.setFont(label19Font); - this.$$$loadLabelText$$$(label19, ResourceBundle.getBundle("lang").getString("note")); + this.$$$loadLabelText$$$(label19, this.$$$getMessageFromBundle$$$("lang", "note")); presetNotePane.add(label19, cc.xy(1, 1)); presetNoteButton = new JButton(); - this.$$$loadButtonText$$$(presetNoteButton, ResourceBundle.getBundle("lang").getString("clone_preset")); + this.$$$loadButtonText$$$(presetNoteButton, this.$$$getMessageFromBundle$$$("lang", "clone_preset")); presetNotePane.add(presetNoteButton, cc.xy(1, 5)); presetNotePaneWrapper = new JPanel(); presetNotePaneWrapper.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); presetNotePane.add(presetNotePaneWrapper, cc.xy(1, 3)); presetNoteTextPane = new JTextPane(); presetNoteTextPane.setEnabled(true); - presetNoteTextPane.setText(ResourceBundle.getBundle("lang").getString("presets_note")); + presetNoteTextPane.setText(this.$$$getMessageFromBundle$$$("lang", "presets_note")); presetNotePaneWrapper.add(presetNoteTextPane, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(200, 50), null, 0, false)); final JLabel label20 = new JLabel(); Font label20Font = this.$$$getFont$$$(null, Font.BOLD, 16, label20.getFont()); if (label20Font != null) label20.setFont(label20Font); - this.$$$loadLabelText$$$(label20, ResourceBundle.getBundle("lang").getString("preset_settings")); + this.$$$loadLabelText$$$(label20, this.$$$getMessageFromBundle$$$("lang", "preset_settings")); panel28.add(label20, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel30 = new JPanel(); panel30.setLayout(new BorderLayout(0, 0)); @@ -1864,18 +1897,18 @@ public class LauncherGUI implements Observer { panel30.add(panel31, BorderLayout.SOUTH); clonePresetButton = new JButton(); clonePresetButton.setEnabled(false); - this.$$$loadButtonText$$$(clonePresetButton, ResourceBundle.getBundle("lang").getString("clone")); + this.$$$loadButtonText$$$(clonePresetButton, this.$$$getMessageFromBundle$$$("lang", "clone")); panel31.add(clonePresetButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); newPresetButtom = new JButton(); - this.$$$loadButtonText$$$(newPresetButtom, ResourceBundle.getBundle("lang").getString("new")); + this.$$$loadButtonText$$$(newPresetButtom, this.$$$getMessageFromBundle$$$("lang", "new")); panel31.add(newPresetButtom, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); removePresetButtom = new JButton(); removePresetButtom.setEnabled(false); - this.$$$loadButtonText$$$(removePresetButtom, ResourceBundle.getBundle("lang").getString("remove")); + this.$$$loadButtonText$$$(removePresetButtom, this.$$$getMessageFromBundle$$$("lang", "remove")); panel31.add(removePresetButtom, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); renamePresetButton = new JButton(); renamePresetButton.setEnabled(false); - this.$$$loadButtonText$$$(renamePresetButton, ResourceBundle.getBundle("lang").getString("rename")); + this.$$$loadButtonText$$$(renamePresetButton, this.$$$getMessageFromBundle$$$("lang", "rename")); panel31.add(renamePresetButton, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel32 = new JPanel(); panel32.setLayout(new GridLayoutManager(1, 1, new Insets(0, 5, 15, 0), -1, -1)); @@ -1891,12 +1924,12 @@ public class LauncherGUI implements Observer { final JLabel label21 = new JLabel(); Font label21Font = this.$$$getFont$$$(null, Font.BOLD, 16, label21.getFont()); if (label21Font != null) label21.setFont(label21Font); - this.$$$loadLabelText$$$(label21, ResourceBundle.getBundle("lang").getString("presets")); + this.$$$loadLabelText$$$(label21, this.$$$getMessageFromBundle$$$("lang", "presets")); panel33.add(label21, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label22 = new JLabel(); Font label22Font = this.$$$getFont$$$(null, Font.BOLD, 16, label22.getFont()); if (label22Font != null) label22.setFont(label22Font); - this.$$$loadLabelText$$$(label22, ResourceBundle.getBundle("lang").getString("select_mods")); + this.$$$loadLabelText$$$(label22, this.$$$getMessageFromBundle$$$("lang", "select_mods")); panel33.add(label22, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer5 = new Spacer(); panel33.add(spacer5, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); @@ -1907,153 +1940,151 @@ public class LauncherGUI implements Observer { panel34.setLayout(new GridLayoutManager(1, 1, new Insets(10, 0, 0, 0), -1, -1)); panel34.setOpaque(false); settingsTab.add(panel34, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel34.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + panel34.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); settingScrollPane = new JScrollPane(); settingScrollPane.setOpaque(false); panel34.add(settingScrollPane, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - settingScrollPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + settingScrollPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); final JPanel panel35 = new JPanel(); - panel35.setLayout(new GridLayoutManager(40, 4, new Insets(0, 0, 0, 5), -1, -1)); + panel35.setLayout(new GridLayoutManager(40, 5, new Insets(0, 0, 0, 5), -1, -1)); panel35.setOpaque(false); settingScrollPane.setViewportView(panel35); final JLabel label23 = new JLabel(); - this.$$$loadLabelText$$$(label23, ResourceBundle.getBundle("lang").getString("arma3_installpath")); - panel35.add(label23, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer6 = new Spacer(); - panel35.add(spacer6, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label23, this.$$$getMessageFromBundle$$$("lang", "arma3_installpath")); + panel35.add(label23, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsArmaPathText = new JTextField(); settingsArmaPathText.setEditable(false); - panel35.add(settingsArmaPathText, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsArmaPathText, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JLabel label24 = new JLabel(); - this.$$$loadLabelText$$$(label24, ResourceBundle.getBundle("lang").getString("modset_folder")); + this.$$$loadLabelText$$$(label24, this.$$$getMessageFromBundle$$$("lang", "modset_folder")); panel35.add(label24, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label25 = new JLabel(); - this.$$$loadLabelText$$$(label25, ResourceBundle.getBundle("lang").getString("show_startparameter")); - panel35.add(label25, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label25, this.$$$getMessageFromBundle$$$("lang", "show_startparameter")); + panel35.add(label25, new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label26 = new JLabel(); - this.$$$loadLabelText$$$(label26, ResourceBundle.getBundle("lang").getString("check_modset")); - panel35.add(label26, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label26, this.$$$getMessageFromBundle$$$("lang", "check_modset")); + panel35.add(label26, new GridConstraints(4, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label27 = new JLabel(); - this.$$$loadLabelText$$$(label27, ResourceBundle.getBundle("lang").getString("behaviour_aafter_start")); - panel35.add(label27, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label27, this.$$$getMessageFromBundle$$$("lang", "behaviour_aafter_start")); + panel35.add(label27, new GridConstraints(6, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsCheckModsBox = new JCheckBox(); settingsCheckModsBox.setText(""); - panel35.add(settingsCheckModsBox, new GridConstraints(4, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsCheckModsBox, new GridConstraints(4, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsShowParameterBox = new JCheckBox(); settingsShowParameterBox.setText(""); - panel35.add(settingsShowParameterBox, new GridConstraints(3, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsShowParameterBox, new GridConstraints(3, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsArmaPathBtn = new JButton(); settingsArmaPathBtn.setText("..."); - panel35.add(settingsArmaPathBtn, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsArmaPathBtn, new GridConstraints(1, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsModsPathText = new JTextField(); settingsModsPathText.setEditable(false); - panel35.add(settingsModsPathText, new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsModsPathText, new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); settingsModsPathBtn = new JButton(); settingsModsPathBtn.setText("..."); - panel35.add(settingsModsPathBtn, new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsModsPathBtn, new GridConstraints(2, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsBehaviorStartCombo = new JComboBox(); final DefaultComboBoxModel defaultComboBoxModel1 = new DefaultComboBoxModel(); defaultComboBoxModel1.addElement("Nothing"); defaultComboBoxModel1.addElement("Minimize"); defaultComboBoxModel1.addElement("Exit"); settingsBehaviorStartCombo.setModel(defaultComboBoxModel1); - panel35.add(settingsBehaviorStartCombo, new GridConstraints(6, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsBehaviorStartCombo, new GridConstraints(6, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label28 = new JLabel(); - this.$$$loadLabelText$$$(label28, ResourceBundle.getBundle("lang").getString("backend_url")); - panel35.add(label28, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label28, this.$$$getMessageFromBundle$$$("lang", "backend_url")); + panel35.add(label28, new GridConstraints(8, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsBackendText = new JTextField(); settingsBackendText.setEditable(false); settingsBackendText.setEnabled(true); Font settingsBackendTextFont = this.$$$getFont$$$(null, Font.ITALIC, -1, settingsBackendText.getFont()); if (settingsBackendTextFont != null) settingsBackendText.setFont(settingsBackendTextFont); - panel35.add(settingsBackendText, new GridConstraints(8, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsBackendText, new GridConstraints(8, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JPanel panel36 = new JPanel(); panel36.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1)); panel36.setBackground(new Color(-14736860)); panel36.setEnabled(false); - panel35.add(panel36, new GridConstraints(0, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel36, new GridConstraints(0, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JLabel label29 = new JLabel(); Font label29Font = this.$$$getFont$$$(null, Font.BOLD, 16, label29.getFont()); if (label29Font != null) label29.setFont(label29Font); - this.$$$loadLabelText$$$(label29, ResourceBundle.getBundle("lang").getString("client_settings")); + this.$$$loadLabelText$$$(label29, this.$$$getMessageFromBundle$$$("lang", "client_settings")); panel36.add(label29, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel37 = new JPanel(); panel37.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1)); panel37.setBackground(new Color(-14736860)); panel37.setEnabled(false); - panel35.add(panel37, new GridConstraints(11, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel37, new GridConstraints(11, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JLabel label30 = new JLabel(); Font label30Font = this.$$$getFont$$$(null, Font.BOLD, 16, label30.getFont()); if (label30Font != null) label30.setFont(label30Font); - this.$$$loadLabelText$$$(label30, ResourceBundle.getBundle("lang").getString("arm33_parameter")); + this.$$$loadLabelText$$$(label30, this.$$$getMessageFromBundle$$$("lang", "arm33_parameter")); panel37.add(label30, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel38 = new JPanel(); panel38.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 25, 0), -1, -1)); - panel35.add(panel38, new GridConstraints(10, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel38, new GridConstraints(10, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JLabel label31 = new JLabel(); label31.setText("Profile"); - label31.setToolTipText(ResourceBundle.getBundle("lang").getString("profile_desc")); - panel35.add(label31, new GridConstraints(12, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label31.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "profile_desc")); + panel35.add(label31, new GridConstraints(12, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsProfileCombo = new JComboBox(); - panel35.add(settingsProfileCombo, new GridConstraints(12, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsProfileCombo, new GridConstraints(12, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label32 = new JLabel(); label32.setText("Use64BitClient"); - label32.setToolTipText(ResourceBundle.getBundle("lang").getString("use64bitclient_desc")); - panel35.add(label32, new GridConstraints(13, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label32.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "use64bitclient_desc")); + panel35.add(label32, new GridConstraints(13, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label33 = new JLabel(); label33.setText("NoSplash"); - label33.setToolTipText(ResourceBundle.getBundle("lang").getString("nosplash_desc")); - panel35.add(label33, new GridConstraints(15, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label33.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "nosplash_desc")); + panel35.add(label33, new GridConstraints(15, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label34 = new JLabel(); label34.setText("SkipIntro"); - label34.setToolTipText(ResourceBundle.getBundle("lang").getString("skipintro_desc")); - panel35.add(label34, new GridConstraints(16, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label34.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "skipintro_desc")); + panel35.add(label34, new GridConstraints(16, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label35 = new JLabel(); label35.setText("World"); - label35.setToolTipText(ResourceBundle.getBundle("lang").getString("world_desc")); - panel35.add(label35, new GridConstraints(17, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label35.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "world_desc")); + panel35.add(label35, new GridConstraints(17, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsWorldText = new JTextField(); - panel35.add(settingsWorldText, new GridConstraints(17, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsWorldText, new GridConstraints(17, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JLabel label36 = new JLabel(); label36.setText("MaxMem"); - label36.setToolTipText(ResourceBundle.getBundle("lang").getString("maxmem_desc")); - panel35.add(label36, new GridConstraints(19, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label36.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "maxmem_desc")); + panel35.add(label36, new GridConstraints(19, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label37 = new JLabel(); label37.setText("MaxVRAM"); - label37.setToolTipText(ResourceBundle.getBundle("lang").getString("maxvram_desc")); - panel35.add(label37, new GridConstraints(20, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label37.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "maxvram_desc")); + panel35.add(label37, new GridConstraints(20, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label38 = new JLabel(); label38.setText("NoCB"); - label38.setToolTipText(ResourceBundle.getBundle("lang").getString("nocb_desc")); + label38.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "nocb_desc")); label38.setVerifyInputWhenFocusTarget(false); - panel35.add(label38, new GridConstraints(21, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(label38, new GridConstraints(21, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label39 = new JLabel(); label39.setText("CpuCount"); - label39.setToolTipText(ResourceBundle.getBundle("lang").getString("cpucount_desc")); - panel35.add(label39, new GridConstraints(22, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label39.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "cpucount_desc")); + panel35.add(label39, new GridConstraints(22, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label40 = new JLabel(); label40.setText("ExThreads"); - label40.setToolTipText(ResourceBundle.getBundle("lang").getString("exthreads_desc")); - panel35.add(label40, new GridConstraints(23, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label40.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "exthreads_desc")); + panel35.add(label40, new GridConstraints(23, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label41 = new JLabel(); label41.setText("Malloc"); - label41.setToolTipText(ResourceBundle.getBundle("lang").getString("malloc_desc")); - panel35.add(label41, new GridConstraints(24, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label41.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "malloc_desc")); + panel35.add(label41, new GridConstraints(24, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label42 = new JLabel(); label42.setText("NoLogs"); - label42.setToolTipText(ResourceBundle.getBundle("lang").getString("nologs_desc")); - panel35.add(label42, new GridConstraints(25, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label42.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "nologs_desc")); + panel35.add(label42, new GridConstraints(25, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label43 = new JLabel(); label43.setText("EnableHT"); - label43.setToolTipText(ResourceBundle.getBundle("lang").getString("enableht_desc")); - panel35.add(label43, new GridConstraints(26, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label43.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "enableht_desc")); + panel35.add(label43, new GridConstraints(26, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label44 = new JLabel(); label44.setText("Hugepages"); - label44.setToolTipText(ResourceBundle.getBundle("lang").getString("hugepages_desc")); - panel35.add(label44, new GridConstraints(27, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label44.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "hugepages_desc")); + panel35.add(label44, new GridConstraints(27, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel39 = new JPanel(); panel39.setLayout(new GridLayoutManager(1, 1, new Insets(5, 0, 5, 0), -1, -1)); - panel35.add(panel39, new GridConstraints(18, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel39, new GridConstraints(18, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JPanel panel40 = new JPanel(); panel40.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1)); panel40.setBackground(new Color(-14210516)); @@ -2061,11 +2092,11 @@ public class LauncherGUI implements Observer { final JLabel label45 = new JLabel(); Font label45Font = this.$$$getFont$$$(null, Font.BOLD | Font.ITALIC, 14, label45.getFont()); if (label45Font != null) label45.setFont(label45Font); - this.$$$loadLabelText$$$(label45, ResourceBundle.getBundle("lang").getString("performance")); + this.$$$loadLabelText$$$(label45, this.$$$getMessageFromBundle$$$("lang", "performance")); panel40.add(label45, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel41 = new JPanel(); panel41.setLayout(new GridLayoutManager(1, 1, new Insets(5, 0, 5, 0), -1, -1)); - panel35.add(panel41, new GridConstraints(14, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel41, new GridConstraints(14, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JPanel panel42 = new JPanel(); panel42.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1)); panel42.setBackground(new Color(-14210516)); @@ -2073,11 +2104,11 @@ public class LauncherGUI implements Observer { final JLabel label46 = new JLabel(); Font label46Font = this.$$$getFont$$$(null, Font.BOLD | Font.ITALIC, 14, label46.getFont()); if (label46Font != null) label46.setFont(label46Font); - this.$$$loadLabelText$$$(label46, ResourceBundle.getBundle("lang").getString("speed_up_game")); + this.$$$loadLabelText$$$(label46, this.$$$getMessageFromBundle$$$("lang", "speed_up_game")); panel42.add(label46, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel43 = new JPanel(); panel43.setLayout(new GridLayoutManager(1, 1, new Insets(5, 0, 5, 0), -1, -1)); - panel35.add(panel43, new GridConstraints(28, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel43, new GridConstraints(28, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JPanel panel44 = new JPanel(); panel44.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1)); panel44.setBackground(new Color(-14210516)); @@ -2085,39 +2116,39 @@ public class LauncherGUI implements Observer { final JLabel label47 = new JLabel(); Font label47Font = this.$$$getFont$$$(null, Font.BOLD | Font.ITALIC, 14, label47.getFont()); if (label47Font != null) label47.setFont(label47Font); - this.$$$loadLabelText$$$(label47, ResourceBundle.getBundle("lang").getString("developer_settings")); + this.$$$loadLabelText$$$(label47, this.$$$getMessageFromBundle$$$("lang", "developer_settings")); panel44.add(label47, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label48 = new JLabel(); label48.setText("NoPause"); - label48.setToolTipText(ResourceBundle.getBundle("lang").getString("nopause_desc")); - panel35.add(label48, new GridConstraints(29, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label48.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "nopause_desc")); + panel35.add(label48, new GridConstraints(29, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label49 = new JLabel(); label49.setText("ShowScriptErrors"); - label49.setToolTipText(ResourceBundle.getBundle("lang").getString("showscripterrors_desc")); - panel35.add(label49, new GridConstraints(30, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label49.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "showscripterrors_desc")); + panel35.add(label49, new GridConstraints(30, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label50 = new JLabel(); label50.setText("FilePatching"); - label50.setToolTipText(ResourceBundle.getBundle("lang").getString("filepatching_desc")); - panel35.add(label50, new GridConstraints(31, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label50.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "filepatching_desc")); + panel35.add(label50, new GridConstraints(31, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label51 = new JLabel(); label51.setText("Init"); - label51.setToolTipText(ResourceBundle.getBundle("lang").getString("init_desc")); - panel35.add(label51, new GridConstraints(32, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label51.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "init_desc")); + panel35.add(label51, new GridConstraints(32, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label52 = new JLabel(); label52.setText("Beta"); - label52.setToolTipText(ResourceBundle.getBundle("lang").getString("beta_desc")); - panel35.add(label52, new GridConstraints(33, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label52.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "beta_desc")); + panel35.add(label52, new GridConstraints(33, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label53 = new JLabel(); label53.setText("CrashDiag"); - label53.setToolTipText(ResourceBundle.getBundle("lang").getString("crashdiag_desc")); - panel35.add(label53, new GridConstraints(34, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label53.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "crashdiag_desc")); + panel35.add(label53, new GridConstraints(34, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label54 = new JLabel(); label54.setText("Window"); - label54.setToolTipText(ResourceBundle.getBundle("lang").getString("window_desc")); - panel35.add(label54, new GridConstraints(36, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label54.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "window_desc")); + panel35.add(label54, new GridConstraints(36, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel45 = new JPanel(); panel45.setLayout(new GridLayoutManager(1, 1, new Insets(5, 0, 5, 0), -1, -1)); - panel35.add(panel45, new GridConstraints(35, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel45, new GridConstraints(35, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JPanel panel46 = new JPanel(); panel46.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1)); panel46.setBackground(new Color(-14210516)); @@ -2125,19 +2156,19 @@ public class LauncherGUI implements Observer { final JLabel label55 = new JLabel(); Font label55Font = this.$$$getFont$$$(null, Font.BOLD | Font.ITALIC, 14, label55.getFont()); if (label55Font != null) label55.setFont(label55Font); - this.$$$loadLabelText$$$(label55, ResourceBundle.getBundle("lang").getString("display_settings")); + this.$$$loadLabelText$$$(label55, this.$$$getMessageFromBundle$$$("lang", "display_settings")); panel46.add(label55, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label56 = new JLabel(); label56.setText("PosX"); - label56.setToolTipText(ResourceBundle.getBundle("lang").getString("posx_desc")); - panel35.add(label56, new GridConstraints(37, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label56.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "posx_desc")); + panel35.add(label56, new GridConstraints(37, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label57 = new JLabel(); label57.setText("PosY"); - label57.setToolTipText(ResourceBundle.getBundle("lang").getString("posy_desc")); - panel35.add(label57, new GridConstraints(38, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + label57.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "posy_desc")); + panel35.add(label57, new GridConstraints(38, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsNoCBBox = new JCheckBox(); settingsNoCBBox.setText(""); - panel35.add(settingsNoCBBox, new GridConstraints(21, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsNoCBBox, new GridConstraints(21, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsMallocCombo = new JComboBox(); final DefaultComboBoxModel defaultComboBoxModel2 = new DefaultComboBoxModel(); defaultComboBoxModel2.addElement(""); @@ -2147,99 +2178,102 @@ public class LauncherGUI implements Observer { defaultComboBoxModel2.addElement("jemalloc_bi_x64"); defaultComboBoxModel2.addElement("system"); settingsMallocCombo.setModel(defaultComboBoxModel2); - panel35.add(settingsMallocCombo, new GridConstraints(24, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsMallocCombo, new GridConstraints(24, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsNoLogsBox = new JCheckBox(); settingsNoLogsBox.setText(""); - panel35.add(settingsNoLogsBox, new GridConstraints(25, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsNoLogsBox, new GridConstraints(25, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsEnableHTBox = new JCheckBox(); settingsEnableHTBox.setText(""); - panel35.add(settingsEnableHTBox, new GridConstraints(26, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsEnableHTBox, new GridConstraints(26, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsHugeoagesBox = new JCheckBox(); settingsHugeoagesBox.setText(""); - panel35.add(settingsHugeoagesBox, new GridConstraints(27, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsHugeoagesBox, new GridConstraints(27, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsNoPauseBox = new JCheckBox(); settingsNoPauseBox.setText(""); - panel35.add(settingsNoPauseBox, new GridConstraints(29, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsNoPauseBox, new GridConstraints(29, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsShowScriptErrorsBox = new JCheckBox(); settingsShowScriptErrorsBox.setText(""); - panel35.add(settingsShowScriptErrorsBox, new GridConstraints(30, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsShowScriptErrorsBox, new GridConstraints(30, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsFilePatchingBox = new JCheckBox(); settingsFilePatchingBox.setText(""); - panel35.add(settingsFilePatchingBox, new GridConstraints(31, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsFilePatchingBox, new GridConstraints(31, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsCrashDiagBox = new JCheckBox(); settingsCrashDiagBox.setText(""); - panel35.add(settingsCrashDiagBox, new GridConstraints(34, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsCrashDiagBox, new GridConstraints(34, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsWindowBox = new JCheckBox(); settingsWindowBox.setText(""); - panel35.add(settingsWindowBox, new GridConstraints(36, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsWindowBox, new GridConstraints(36, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsMaxMemSpinner = new JSpinner(); - panel35.add(settingsMaxMemSpinner, new GridConstraints(19, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsMaxMemSpinner, new GridConstraints(19, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsMaxVRamSpinner = new JSpinner(); - panel35.add(settingsMaxVRamSpinner, new GridConstraints(20, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsMaxVRamSpinner, new GridConstraints(20, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsCpuCountSpinner = new JSpinner(); - panel35.add(settingsCpuCountSpinner, new GridConstraints(22, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsCpuCountSpinner, new GridConstraints(22, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsPosXSpinner = new JSpinner(); - panel35.add(settingsPosXSpinner, new GridConstraints(37, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsPosXSpinner, new GridConstraints(37, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsPosYSpinner = new JSpinner(); - panel35.add(settingsPosYSpinner, new GridConstraints(38, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsPosYSpinner, new GridConstraints(38, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsInitText = new JTextField(); - panel35.add(settingsInitText, new GridConstraints(32, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsInitText, new GridConstraints(32, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); settingsExThreadsCombo = new JComboBox(); final DefaultComboBoxModel defaultComboBoxModel3 = new DefaultComboBoxModel(); defaultComboBoxModel3.addElement(""); defaultComboBoxModel3.addElement("3"); defaultComboBoxModel3.addElement("7"); settingsExThreadsCombo.setModel(defaultComboBoxModel3); - panel35.add(settingsExThreadsCombo, new GridConstraints(23, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsExThreadsCombo, new GridConstraints(23, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsSkipIntroBox = new JCheckBox(); settingsSkipIntroBox.setText(""); - panel35.add(settingsSkipIntroBox, new GridConstraints(16, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsSkipIntroBox, new GridConstraints(16, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsNoSplashBox = new JCheckBox(); settingsNoSplashBox.setText(""); - panel35.add(settingsNoSplashBox, new GridConstraints(15, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsNoSplashBox, new GridConstraints(15, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsUseSixtyFourBitBox = new JCheckBox(); settingsUseSixtyFourBitBox.setText(""); - panel35.add(settingsUseSixtyFourBitBox, new GridConstraints(13, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsUseSixtyFourBitBox, new GridConstraints(13, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label58 = new JLabel(); - this.$$$loadLabelText$$$(label58, ResourceBundle.getBundle("lang").getString("language")); - panel35.add(label58, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label58, this.$$$getMessageFromBundle$$$("lang", "language")); + panel35.add(label58, new GridConstraints(7, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsLanguageCombo = new JComboBox(); final DefaultComboBoxModel defaultComboBoxModel4 = new DefaultComboBoxModel(); defaultComboBoxModel4.addElement("System"); defaultComboBoxModel4.addElement("English"); defaultComboBoxModel4.addElement("Deutsch"); settingsLanguageCombo.setModel(defaultComboBoxModel4); - panel35.add(settingsLanguageCombo, new GridConstraints(7, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsLanguageCombo, new GridConstraints(7, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsBetaText = new JTextField(); - panel35.add(settingsBetaText, new GridConstraints(33, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel35.add(settingsBetaText, new GridConstraints(33, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JPanel panel47 = new JPanel(); panel47.setLayout(new GridLayoutManager(1, 1, new Insets(25, 0, 5, 0), -1, -1)); - panel35.add(panel47, new GridConstraints(39, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel35.add(panel47, new GridConstraints(39, 0, 1, 5, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); settingsResetDefault = new JButton(); Font settingsResetDefaultFont = this.$$$getFont$$$(null, Font.BOLD, 14, settingsResetDefault.getFont()); if (settingsResetDefaultFont != null) settingsResetDefault.setFont(settingsResetDefaultFont); - this.$$$loadButtonText$$$(settingsResetDefault, ResourceBundle.getBundle("lang").getString("reset_default")); + this.$$$loadButtonText$$$(settingsResetDefault, this.$$$getMessageFromBundle$$$("lang", "reset_default")); panel47.add(settingsResetDefault, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label59 = new JLabel(); - this.$$$loadLabelText$$$(label59, ResourceBundle.getBundle("lang").getString("use_workshop")); - label59.setToolTipText(ResourceBundle.getBundle("lang").getString("use_workshop_desc")); - panel35.add(label59, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label59, this.$$$getMessageFromBundle$$$("lang", "use_workshop")); + label59.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "use_workshop_desc")); + panel35.add(label59, new GridConstraints(5, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsUseWorkshopBox = new JCheckBox(); settingsUseWorkshopBox.setText(""); - panel35.add(settingsUseWorkshopBox, new GridConstraints(5, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsUseWorkshopBox, new GridConstraints(5, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label60 = new JLabel(); label60.setText("MB"); - panel35.add(label60, new GridConstraints(19, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(label60, new GridConstraints(19, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label61 = new JLabel(); label61.setText("MB"); - panel35.add(label61, new GridConstraints(20, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(label61, new GridConstraints(20, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label62 = new JLabel(); - this.$$$loadLabelText$$$(label62, ResourceBundle.getBundle("lang").getString("use_debug")); - label62.setToolTipText(ResourceBundle.getBundle("lang").getString("use_debug_tooltip")); - panel35.add(label62, new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + this.$$$loadLabelText$$$(label62, this.$$$getMessageFromBundle$$$("lang", "use_debug")); + label62.setToolTipText(this.$$$getMessageFromBundle$$$("lang", "use_debug_tooltip")); + panel35.add(label62, new GridConstraints(9, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); settingsDebugBox = new JCheckBox(); settingsDebugBox.setText(""); - panel35.add(settingsDebugBox, new GridConstraints(9, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel35.add(settingsDebugBox, new GridConstraints(9, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + showModfolderInExplorerButton = new JButton(); + this.$$$loadButtonText$$$(showModfolderInExplorerButton, this.$$$getMessageFromBundle$$$("lang", "show_in_explorer")); + panel35.add(showModfolderInExplorerButton, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aboutTab = new JPanel(); aboutTab.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); aboutTab.setOpaque(true); @@ -2265,26 +2299,26 @@ public class LauncherGUI implements Observer { panel50.add(aboutClient, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_SOUTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aboutUpdateLabel = new JLabel(); aboutUpdateLabel.setRequestFocusEnabled(true); - this.$$$loadLabelText$$$(aboutUpdateLabel, ResourceBundle.getBundle("lang").getString("client_up_to_date")); + this.$$$loadLabelText$$$(aboutUpdateLabel, this.$$$getMessageFromBundle$$$("lang", "client_up_to_date")); panel50.add(aboutUpdateLabel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_NORTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel51 = new JPanel(); panel51.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 0, 0), -1, -1)); panel50.add(panel51, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JLabel label63 = new JLabel(); - this.$$$loadLabelText$$$(label63, ResourceBundle.getBundle("lang").getString("developer_page")); + this.$$$loadLabelText$$$(label63, this.$$$getMessageFromBundle$$$("lang", "developer_page")); panel51.add(label63, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_SOUTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aboutDeveloperLabel = new JLabel(); aboutDeveloperLabel.setRequestFocusEnabled(true); aboutDeveloperLabel.setText("github.com"); panel51.add(aboutDeveloperLabel, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_SOUTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label64 = new JLabel(); - this.$$$loadLabelText$$$(label64, ResourceBundle.getBundle("lang").getString("project_page")); + this.$$$loadLabelText$$$(label64, this.$$$getMessageFromBundle$$$("lang", "project_page")); panel51.add(label64, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_NORTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aboutProjectLabel = new JLabel(); aboutProjectLabel.setText("gurkengewuerz.de"); panel51.add(aboutProjectLabel, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_NORTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); updateButton = new JButton(); - this.$$$loadButtonText$$$(updateButton, ResourceBundle.getBundle("lang").getString("update_now")); + this.$$$loadButtonText$$$(updateButton, this.$$$getMessageFromBundle$$$("lang", "update_now")); panel50.add(updateButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel52 = new JPanel(); panel52.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); @@ -2300,7 +2334,7 @@ public class LauncherGUI implements Observer { splitPane2.setRightComponent(panel53); final JScrollPane scrollPane3 = new JScrollPane(); panel53.add(scrollPane3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - scrollPane3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null)); + scrollPane3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); disclaimer = new JTextPane(); disclaimer.setContentType("text/html"); disclaimer.setEditable(false); @@ -2328,6 +2362,23 @@ public class LauncherGUI implements Observer { return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize()); } + private static Method $$$cachedGetBundleMethod$$$ = null; + + private String $$$getMessageFromBundle$$$(String path, String key) { + ResourceBundle bundle; + try { + Class thisClass = this.getClass(); + if ($$$cachedGetBundleMethod$$$ == null) { + Class dynamicBundleClass = thisClass.getClassLoader().loadClass("com.intellij.DynamicBundle"); + $$$cachedGetBundleMethod$$$ = dynamicBundleClass.getMethod("getBundle", String.class, Class.class); + } + bundle = (ResourceBundle) $$$cachedGetBundleMethod$$$.invoke(null, path, thisClass); + } catch (Exception e) { + bundle = ResourceBundle.getBundle(path); + } + return bundle.getString(key); + } + /** * @noinspection ALL */ diff --git a/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java index b1e80ca..b32b074 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java @@ -28,8 +28,10 @@ public class ModFile implements AbstractMod { private String sha1sum; private String parent; private String localGeneratedSHA1sum = ""; + private long lastModified = -1; + private long localLastModified = -1; - public ModFile(File f, String modfile, String parent, long size, String sha1sum) { + public ModFile(File f, String modfile, String parent, long size, String sha1sum, long lastModified) { // File: Abosolut Path // modfile: addons/config/something.pbo // size: size as in metafile on server @@ -39,10 +41,11 @@ public class ModFile implements AbstractMod { this.modfileString = modfile; this.sha1sum = sha1sum.toLowerCase(); this.parent = parent; + this.lastModified = lastModified; } - public ModFile(File f, String modfile, long size, String sha1sum) { - this(f, modfile, null, size, sha1sum); + public ModFile(File f, String modfile, long size, String sha1sum, long lastModified) { + this(f, modfile, null, size, sha1sum, lastModified); } public long getSize() { @@ -91,6 +94,18 @@ public class ModFile implements AbstractMod { return sha1sum; } + public long getLocalLastModified() { + if (localLastModified <= 0 && exists()) { + localLastModified = (int) (f.lastModified() / 1000); + } + + return localLastModified; + } + + public long getLastModified() { + return lastModified; + } + public String getLocalGeneratedSHA1Sum() { try { if (localGeneratedSHA1sum.isEmpty() && exists()) { diff --git a/gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java index 05bbf41..1bc4b53 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java @@ -6,7 +6,6 @@ import de.mc8051.arma3launcher.interfaces.Observer; import de.mc8051.arma3launcher.objects.AbstractMod; import de.mc8051.arma3launcher.objects.Mod; import de.mc8051.arma3launcher.objects.ModFile; -import de.mc8051.arma3launcher.utils.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -123,7 +122,7 @@ public class FileChecker implements Observable { return running; } - private void checkFile(String mod, ModFile mf, boolean fastscan) { + private boolean checkFile(String mod, ModFile mf, boolean fastscan) { logger.debug("Check {}", mf.getLocaleFile().getAbsolutePath()); ArrayList temp = new ArrayList<>(); @@ -135,23 +134,23 @@ public class FileChecker implements Observable { addedCount++; size += mf.getSize(); logger.info("File {} not exists", mf.getLocaleFile().getAbsolutePath()); - return; + return true; } - - if (fastscan || !mf.getSHA1Sum().equalsIgnoreCase(mf.getLocalGeneratedSHA1Sum())) { - if (mf.getLocalSize() != mf.getSize()) { - if (changed.containsKey(mod)) temp = changed.get(mod); - temp.add(mf); - changed.put(mod, temp); - changedCount++; - size += mf.getSize(); - logger.debug("File {} changed", mf.getLocaleFile().getAbsolutePath()); - return; - } + if (mf.getLocalSize() != mf.getSize() + || mf.getLocalLastModified() != mf.getLastModified() + || (!fastscan && !mf.getSHA1Sum().equalsIgnoreCase(mf.getLocalGeneratedSHA1Sum()))) { + if (changed.containsKey(mod)) temp = changed.get(mod); + temp.add(mf); + changed.put(mod, temp); + changedCount++; + size += mf.getSize(); + logger.debug("File {} changed", mf.getLocaleFile().getAbsolutePath()); + return true; } logger.debug("File {} is okay", mf.getLocaleFile().getAbsolutePath()); + return false; } private void checkDeleted() { @@ -242,4 +241,9 @@ public class FileChecker implements Observable { public void notifyObservers(String obj) { for (Observer obs : observerList) obs.update(obj); } + + public static enum Type { + FAST, + SLOW + } } diff --git a/gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java index ead661d..2658df9 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java @@ -183,15 +183,16 @@ public class RepositoryManger implements Observable { JSONObject jo = content.getJSONObject(modfile); long modfilesize = jo.getLong("size"); String sha1 = jo.getString("sha1"); + final long lastModified = jo.getLong("lastModified"); - modFiles.add(new ModFile(new File(finalModPath + File.separator + modname + File.separator + modfile), modfile, modname, modfilesize, sha1)); + modFiles.add(new ModFile(new File(finalModPath + File.separator + modname + File.separator + modfile), modfile, modname, modfilesize, sha1, lastModified)); RepositoryManger.MOD_LIST_SIZE++; } MOD_LIST.add(new Mod(modname, modsize, modFiles)); } else { // Single File - MOD_LIST.add(new ModFile(new File(finalModPath + File.separator + modname), modname, modsize, jsonMod.getString("sha1"))); + MOD_LIST.add(new ModFile(new File(finalModPath + File.separator + modname), modname, modsize, jsonMod.getString("sha1"), jsonMod.getLong("lastModified"))); RepositoryManger.MOD_LIST_SIZE++; } diff --git a/gui/src/main/resources/arma3launcher.json b/gui/src/main/resources/arma3launcher.json index 1426acb..43662e4 100644 --- a/gui/src/main/resources/arma3launcher.json +++ b/gui/src/main/resources/arma3launcher.json @@ -4,7 +4,7 @@ "subtitle": "${name} v${version}", "sync": { "useragent": "TheTownSyncer", - "url": "http://46.4.195.36" + "url": "http://repo.the-town.net" }, "social": { "twitter": "https://twitter.com/TheTownServer", diff --git a/gui/src/main/resources/lang_de_DE.properties b/gui/src/main/resources/lang_de_DE.properties index f4bf5bf..aac124c 100644 --- a/gui/src/main/resources/lang_de_DE.properties +++ b/gui/src/main/resources/lang_de_DE.properties @@ -111,4 +111,5 @@ update_now=Jetzt updaten! arma_path_not_found=ArmA 3 Pfad nicht gefunden arma_path_not_found_msg=Der Installationsordner von ArmA 3 konnte nicht automatisch erkannt werden. Bitte gehe zuerst in die Einstellungen. use_debug=Detaillierter Log -use_debug_tooltip=Der Client benutzt einen detaillierten Log. Die Funktion ist nur wichtig, wenn du einen Fehler melden möchtest \ No newline at end of file +use_debug_tooltip=Der Client benutzt einen detaillierten Log. Die Funktion ist nur wichtig, wenn du einen Fehler melden möchtest +show_in_explorer=Pfad öffnen \ No newline at end of file diff --git a/gui/src/main/resources/lang_en_US.properties b/gui/src/main/resources/lang_en_US.properties index a257139..9e62526 100644 --- a/gui/src/main/resources/lang_en_US.properties +++ b/gui/src/main/resources/lang_en_US.properties @@ -114,4 +114,5 @@ update_now=Update now! arma_path_not_found=ArmA 3 path can't be detected arma_path_not_found_msg=The installation folder of ArmA 3 could not be detected automatically. Please go to the settings first. use_debug=Use debug log -use_debug_tooltip=The client uses a detailed log. This function is only important if you want to report an error. \ No newline at end of file +use_debug_tooltip=The client uses a detailed log. This function is only important if you want to report an error. +show_in_explorer=Open in explorer \ No newline at end of file diff --git a/linux/generateRepo.sh b/linux/generateRepo.sh index 5da38d4..e890c05 100644 --- a/linux/generateRepo.sh +++ b/linux/generateRepo.sh @@ -25,7 +25,7 @@ fi declare -A SHASUMS echo "===== ===== ===== GENERATE .ZSYNC ===== ===== =====" -FILELIST=$(find . -type f ! -path "*/.sync*" ! -path "*.zsync") +FILELIST=$(find . -type f ! -path '*generateRepo.*' ! -path 'generateRepo.*' ! -path "*/.sync*" ! -path "*.zsync") while IFS= read -r line; do mustgenerate=false zsyncfile="${line}.zsync" @@ -81,7 +81,7 @@ done <<< "$ZSYNCLIST" echo -e "===== ===== ===== ===== ===== =====\n" echo "===== ===== ===== GENERATE METADATA ===== ===== =====" -FILELIST=$(find . -maxdepth 1 ! -path "*/.sync*" ! -path "*.zsync" ! -path "." | sed 's|^./||') +FILELIST=$(find . -maxdepth 1 ! -path '*generateRepo.*' ! -path "*/.sync*" ! -path "*.zsync" ! -path "." | sed 's|^./||') declare -a JSONDATA while IFS= read -r folder; do echo "${folder}" @@ -93,6 +93,7 @@ while IFS= read -r folder; do FILEFOLDER=$(find "${folder}" -type f ! -path "*.zsync" | sed 's|^./||') while IFS= read -r folderfile; do filebyte=$(wc -c < "${folderfile}") + lastModified=$(stat -c %Y "${folderfile}") if [ $filebyte -eq 0 ]; then echo "Skipping \"${folderfile}\" because file is empty" @@ -101,7 +102,7 @@ while IFS= read -r folder; do foldersize=$(expr $foldersize + $filebyte) name=$(echo "${folderfile}" | cut -d"/" -f2-) - x="\"${name}\":{\"size\": ${filebyte}, \"sha1\": \"${SHASUMS[$folderfile]}\"},${x}" + x="\"${name}\":{\"size\": ${filebyte}, \"sha1\": \"${SHASUMS[$folderfile]}\", \"lastModified\": ${lastModified}},${x}" done <<< "$FILEFOLDER" x=$(echo ${x} | rev | cut -c2- | rev) @@ -113,10 +114,11 @@ while IFS= read -r folder; do else echo "is file" filebyte=$(wc -c < "${folder}") + lastModified=$(stat -c %Y "${folderfile}") if [ $filebyte -eq 0 ]; then continue fi - JSONDATA+=( "\"${folder}\": {\"size\":${filebyte}, \"sha1\": \"${SHASUMS[$folder]}\"}" ) + JSONDATA+=( "\"${folder}\": {\"size\":${filebyte}, \"sha1\": \"${SHASUMS[$folder]}\", \"lastModified\": ${lastModified}}" ) fi done <<< "$FILELIST" diff --git a/pom.xml b/pom.xml index 3a743f2..12efb08 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - 0.1.1006 + 0.1.1008 de.mc8051