diff --git a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form
index 3c015de..1cf55c8 100644
--- a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form
+++ b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form
@@ -2053,7 +2053,7 @@
-
+
@@ -2083,7 +2083,7 @@
-
+
@@ -2123,6 +2123,14 @@
+
+
+
+
+
+
+
+
diff --git a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java
index 35f15f5..354aa19 100644
--- a/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java
+++ b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java
@@ -1,5 +1,10 @@
package de.mc8051.arma3launcher;
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import com.intellij.uiDesigner.core.Spacer;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
import com.sun.management.OperatingSystemMXBean;
import de.mc8051.arma3launcher.interfaces.Observer;
import de.mc8051.arma3launcher.model.JCheckBoxTree;
@@ -47,6 +52,7 @@ import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -59,6 +65,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
+import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
@@ -174,6 +181,7 @@ public class LauncherGUI implements Observer {
private JPanel presetNotePaneWrapper;
private JPanel presetNotePane;
private JLabel aboutUpdateLabel;
+ private JButton updateButton;
private JCheckBoxTree repoTree;
private FileChecker fileChecker;
@@ -521,9 +529,23 @@ public class LauncherGUI implements Observer {
updater.needUpdate((needUpdate, newestVersion) -> {
if (needUpdate) {
- SwingUtilities.invokeLater(() -> warnBox(LangUtils.getInstance().getString("client_outdated"), LangUtils.getInstance().getString("please_update")));
+ SwingUtilities.invokeLater(() -> warnBox(LangUtils.getInstance().getString("please_update"), LangUtils.getInstance().getString("client_outdated")));
}
});
+
+ updateButton.addActionListener((e) -> {
+ updater.needUpdate((needUpdate, newestVersion) -> {
+ if (!needUpdate) return;
+ try {
+ updater.update();
+ JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(mainPanel);
+ frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
+ } catch (IOException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, e);
+ SwingUtilities.invokeLater(() -> aboutUpdateLabel.setText("UPDATE FAILED " + ex.getMessage()));
+ }
+ });
+ });
}
public static void infoBox(String infoMessage, String titleBar) {
@@ -1233,9 +1255,17 @@ public class LauncherGUI implements Observer {
@Override
public void response(boolean needUpdate, Version newestVersion) {
if (needUpdate) {
- SwingUtilities.invokeLater(() -> aboutUpdateLabel.setText(LangUtils.getInstance().getString("client_outdated") + ": v" + newestVersion.get()));
+ SwingUtilities.invokeLater(() -> {
+ aboutUpdateLabel.setText(LangUtils.getInstance().getString("client_outdated") + ": v" + newestVersion.get());
+ updateButton.setVisible(true);
+ aboutUpdateLabel.setForeground(Color.ORANGE);
+ });
} else {
- SwingUtilities.invokeLater(() -> aboutUpdateLabel.setText(LangUtils.getInstance().getString("client_up_to_date")));
+ SwingUtilities.invokeLater(() -> {
+ aboutUpdateLabel.setText(LangUtils.getInstance().getString("client_up_to_date"));
+ updateButton.setVisible(false);
+ aboutUpdateLabel.setForeground(UIManager.getColor("Label.foreground"));
+ });
}
}
});
@@ -1245,6 +1275,1008 @@ public class LauncherGUI implements Observer {
tabbedPane1.setSelectedIndex(tab.getIndex());
}
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer
+ * >>> IMPORTANT!! <<<
+ * DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ mainPanel = new JPanel();
+ mainPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ mainPanel.setMinimumSize(new Dimension(765, 550));
+ splitView = new JSplitPane();
+ splitView.setContinuousLayout(false);
+ splitView.setDividerLocation(200);
+ splitView.setDividerSize(10);
+ splitView.setEnabled(false);
+ splitView.setOrientation(1);
+ mainPanel.add(splitView, 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, new Dimension(200, 200), null, 0, false));
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(14, 2, new Insets(0, 8, 7, 8), -1, -1));
+ panel1.setBackground(new Color(-14210516));
+ splitView.setLeftComponent(panel1);
+ settingsPanelButton = new JButton();
+ settingsPanelButton.setAlignmentY(0.0f);
+ settingsPanelButton.setBorderPainted(true);
+ settingsPanelButton.setFocusCycleRoot(false);
+ settingsPanelButton.setFocusPainted(false);
+ settingsPanelButton.setFocusable(false);
+ Font settingsPanelButtonFont = this.$$$getFont$$$(null, -1, 16, settingsPanelButton.getFont());
+ if (settingsPanelButtonFont != null) settingsPanelButton.setFont(settingsPanelButtonFont);
+ settingsPanelButton.setHorizontalAlignment(2);
+ settingsPanelButton.setIcon(new ImageIcon(getClass().getResource("/icons/settings_16.png")));
+ settingsPanelButton.setIconTextGap(10);
+ settingsPanelButton.setInheritsPopupMenu(true);
+ settingsPanelButton.setMargin(new Insets(0, 0, 0, 0));
+ this.$$$loadButtonText$$$(settingsPanelButton, ResourceBundle.getBundle("lang").getString("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();
+ panel1.add(spacer1, new GridConstraints(6, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ updatePanelButton = new JButton();
+ updatePanelButton.setFocusPainted(false);
+ updatePanelButton.setFocusable(false);
+ Font updatePanelButtonFont = this.$$$getFont$$$(null, -1, 16, updatePanelButton.getFont());
+ if (updatePanelButtonFont != null) updatePanelButton.setFont(updatePanelButtonFont);
+ updatePanelButton.setHorizontalAlignment(2);
+ updatePanelButton.setIcon(new ImageIcon(getClass().getResource("/icons/download_16.png")));
+ updatePanelButton.setIconTextGap(10);
+ this.$$$loadButtonText$$$(updatePanelButton, ResourceBundle.getBundle("lang").getString("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);
+ playPanelButton.setFocusable(false);
+ Font playPanelButtonFont = this.$$$getFont$$$(null, -1, 16, playPanelButton.getFont());
+ if (playPanelButtonFont != null) playPanelButton.setFont(playPanelButtonFont);
+ playPanelButton.setHorizontalAlignment(2);
+ 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"));
+ 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));
+ panel2.setBackground(new Color(-12828863));
+ panel2.setOpaque(false);
+ panel1.add(panel2, new GridConstraints(0, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, new Dimension(128, 128), null, null, 0, false));
+ logo = new JLabel();
+ logo.setText("");
+ panel2.add(logo, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ title = new JLabel();
+ Font titleFont = this.$$$getFont$$$(null, Font.BOLD, 14, title.getFont());
+ if (titleFont != null) title.setFont(titleFont);
+ title.setOpaque(false);
+ title.setText("Welcome :)!");
+ title.setVerticalAlignment(0);
+ title.setVerticalTextPosition(0);
+ panel1.add(title, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ subtitle = new JLabel();
+ Font subtitleFont = this.$$$getFont$$$("Monospaced", Font.ITALIC, 12, subtitle.getFont());
+ if (subtitleFont != null) subtitle.setFont(subtitleFont);
+ subtitle.setText("Town-Client v1.1.153");
+ panel1.add(subtitle, new GridConstraints(2, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label1 = new JLabel();
+ label1.setText("Steam");
+ panel1.add(label1, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_SOUTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ steamStatus = new JLabel();
+ steamStatus.setText("");
+ panel1.add(steamStatus, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_SOUTHEAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label2 = new JLabel();
+ label2.setText("ArmA 3");
+ panel1.add(label2, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_NORTHWEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ armaStatus = new JLabel();
+ armaStatus.setText("");
+ panel1.add(armaStatus, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_NORTHEAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final Spacer spacer2 = new Spacer();
+ panel1.add(spacer2, new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ presetPanelButton = new JButton();
+ presetPanelButton.setFocusPainted(false);
+ presetPanelButton.setFocusable(false);
+ Font presetPanelButtonFont = this.$$$getFont$$$(null, -1, 16, presetPanelButton.getFont());
+ if (presetPanelButtonFont != null) presetPanelButton.setFont(presetPanelButtonFont);
+ presetPanelButton.setHorizontalAlignment(2);
+ 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"));
+ 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);
+ changelogButton.setFocusable(false);
+ Font changelogButtonFont = this.$$$getFont$$$(null, -1, 16, changelogButton.getFont());
+ if (changelogButtonFont != null) changelogButton.setFont(changelogButtonFont);
+ changelogButton.setHorizontalAlignment(2);
+ changelogButton.setIcon(new ImageIcon(getClass().getResource("/icons/changelog_16.png")));
+ changelogButton.setIconTextGap(10);
+ this.$$$loadButtonText$$$(changelogButton, ResourceBundle.getBundle("lang").getString("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));
+ panel3.setOpaque(false);
+ panel1.add(panel3, new GridConstraints(7, 0, 1, 2, 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));
+ twitterIcon = new JLabel();
+ twitterIcon.setIcon(new ImageIcon(getClass().getResource("/icons/twitter_32.png")));
+ twitterIcon.setText("");
+ twitterIcon.setToolTipText(ResourceBundle.getBundle("lang").getString("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"));
+ 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"));
+ 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);
+ tabbedPane1.setInheritsPopupMenu(false);
+ tabbedPane1.setVisible(true);
+ tabbedPane1.putClientProperty("html.disable", Boolean.FALSE);
+ splitView.setRightComponent(tabbedPane1);
+ playTab = new JPanel();
+ playTab.setLayout(new BorderLayout(0, 0));
+ tabbedPane1.addTab("Play", playTab);
+ final JPanel panel4 = new JPanel();
+ panel4.setLayout(new GridLayoutManager(3, 1, new Insets(50, 50, 50, 50), -1, -1));
+ playTab.add(panel4, BorderLayout.CENTER);
+ final JScrollPane scrollPane1 = new JScrollPane();
+ panel4.add(scrollPane1, 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));
+ serverTable = new JTable();
+ scrollPane1.setViewportView(serverTable);
+ final JPanel panel5 = new JPanel();
+ panel5.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1));
+ panel5.setBackground(new Color(-14736860));
+ panel5.setEnabled(false);
+ panel4.add(panel5, 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));
+ 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"));
+ 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));
+ Font panel6Font = this.$$$getFont$$$(null, -1, -1, panel6.getFont());
+ if (panel6Font != null) panel6.setFont(panel6Font);
+ panel4.add(panel6, new GridConstraints(2, 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));
+ playButton = new JButton();
+ playButton.setEnabled(false);
+ 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"));
+ 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);
+ parameterText.setText("-noInit -noLogs");
+ panel6.add(parameterText, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ updateTab = new JPanel();
+ updateTab.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 5, 0), -1, -1));
+ tabbedPane1.addTab("Update", updateTab);
+ final JPanel panel7 = new JPanel();
+ 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));
+ final JPanel panel8 = new JPanel();
+ panel8.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ panel8.setOpaque(true);
+ panel7.add(panel8, 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));
+ final JPanel panel9 = new JPanel();
+ panel9.setLayout(new BorderLayout(0, 0));
+ panel9.setOpaque(true);
+ panel8.add(panel9, 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));
+ final JPanel panel10 = new JPanel();
+ panel10.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1));
+ panel10.setBackground(new Color(-14736860));
+ panel10.setEnabled(false);
+ panel9.add(panel10, BorderLayout.NORTH);
+ 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"));
+ 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"));
+ 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));
+ syncCheckStatusLabel = new JLabel();
+ Font syncCheckStatusLabelFont = this.$$$getFont$$$(null, Font.ITALIC, -1, syncCheckStatusLabel.getFont());
+ if (syncCheckStatusLabelFont != null) syncCheckStatusLabel.setFont(syncCheckStatusLabelFont);
+ syncCheckStatusLabel.setText("");
+ panel11.add(syncCheckStatusLabel, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ syncCheckProgress = new JProgressBar();
+ syncCheckProgress.setString("");
+ syncCheckProgress.setStringPainted(true);
+ syncCheckProgress.setValue(0);
+ panel11.add(syncCheckProgress, new GridConstraints(1, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JPanel panel12 = new JPanel();
+ panel12.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1));
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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");
+ panel11.add(syncChangedFilesLabel, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ syncAddedFilesLabel = new JLabel();
+ syncAddedFilesLabel.setText("0");
+ panel11.add(syncAddedFilesLabel, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ syncDeletedFilesLabel = new JLabel();
+ 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"));
+ 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"));
+ 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));
+ panel13.setOpaque(true);
+ panel7.add(panel13, new GridConstraints(2, 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 JPanel panel14 = new JPanel();
+ panel14.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1));
+ panel14.setBackground(new Color(-14736860));
+ panel14.setEnabled(false);
+ panel13.add(panel14, BorderLayout.NORTH);
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ panel15.add(label13, cc.xy(1, 3));
+ final JLabel label14 = new JLabel();
+ this.$$$loadLabelText$$$(label14, ResourceBundle.getBundle("lang").getString("total_file_size"));
+ panel15.add(label14, cc.xy(1, 1));
+ syncSizeLabel = new JLabel();
+ syncSizeLabel.setText("0.0 B/0.0 B");
+ panel15.add(syncSizeLabel, cc.xy(3, 1));
+ syncDownloadSpeedLabel = new JLabel();
+ syncDownloadSpeedLabel.setText("");
+ panel15.add(syncDownloadSpeedLabel, cc.xy(3, 5));
+ final JLabel label15 = new JLabel();
+ label15.setText("");
+ panel15.add(label15, cc.xy(3, 7));
+ final JPanel panel16 = new JPanel();
+ panel16.setLayout(new BorderLayout(0, 0));
+ panel16.setOpaque(true);
+ panel7.add(panel16, new GridConstraints(1, 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 JPanel panel17 = new JPanel();
+ panel17.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1));
+ panel17.setBackground(new Color(-14736860));
+ panel17.setEnabled(false);
+ panel16.add(panel17, BorderLayout.NORTH);
+ 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"));
+ 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"));
+ panel16.add(panel18, BorderLayout.CENTER);
+ final JPanel panel19 = new JPanel();
+ panel19.setLayout(new FormLayout("fill:d:grow", "center:d:noGrow"));
+ panel18.add(panel19, cc.xy(1, 1));
+ final JPanel panel20 = new JPanel();
+ panel20.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ panel19.add(panel20, cc.xy(1, 1));
+ syncDownloadProgress = new JProgressBar();
+ Font syncDownloadProgressFont = this.$$$getFont$$$(null, Font.BOLD, 14, syncDownloadProgress.getFont());
+ if (syncDownloadProgressFont != null) syncDownloadProgress.setFont(syncDownloadProgressFont);
+ syncDownloadProgress.setString("");
+ syncDownloadProgress.setStringPainted(true);
+ syncDownloadProgress.setValue(0);
+ panel20.add(syncDownloadProgress, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JPanel panel21 = new JPanel();
+ panel21.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1));
+ panel18.add(panel21, cc.xywh(1, 2, 1, 8));
+ syncDownloadButton = new JButton();
+ syncDownloadButton.setEnabled(false);
+ this.$$$loadButtonText$$$(syncDownloadButton, ResourceBundle.getBundle("lang").getString("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"));
+ 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"));
+ 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("");
+ updateTab.add(syncStatusLabel, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JPanel panel22 = new JPanel();
+ panel22.setLayout(new GridLayoutManager(1, 1, new Insets(10, 0, 0, 5), -1, -1));
+ updateTab.add(panel22, new GridConstraints(0, 1, 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 JPanel panel23 = new JPanel();
+ panel23.setLayout(new BorderLayout(0, 0));
+ panel22.add(panel23, 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));
+ final JPanel panel24 = new JPanel();
+ panel24.setLayout(new GridLayoutManager(1, 1, new Insets(2, 5, 3, 0), -1, -1));
+ panel24.setBackground(new Color(-14736860));
+ panel24.setEnabled(false);
+ panel23.add(panel24, BorderLayout.NORTH);
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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);
+ updateTreePanel = new JPanel();
+ updateTreePanel.setLayout(new BorderLayout(0, 0));
+ updateTreeScrolPane.setViewportView(updateTreePanel);
+ tree1 = new JTree();
+ updateTreePanel.add(tree1, BorderLayout.CENTER);
+ changelogTab = new JPanel();
+ changelogTab.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane1.addTab("Changelog", changelogTab);
+ changelogScroll = new JScrollPane();
+ changelogScroll.setAutoscrolls(false);
+ 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));
+ changelogPane = new JTextArea();
+ changelogPane.setAutoscrolls(false);
+ changelogPane.setEditable(false);
+ Font changelogPaneFont = this.$$$getFont$$$("Monospaced", -1, 15, changelogPane.getFont());
+ if (changelogPaneFont != null) changelogPane.setFont(changelogPaneFont);
+ changelogPane.setLineWrap(true);
+ changelogPane.setText("No Changelog Availaible");
+ changelogPane.setVisible(true);
+ changelogScroll.setViewportView(changelogPane);
+ presetsTab = new JPanel();
+ presetsTab.setLayout(new BorderLayout(0, 0));
+ presetsTab.setBackground(new Color(-7103841));
+ tabbedPane1.addTab("Presets", presetsTab);
+ final JSplitPane splitPane1 = new JSplitPane();
+ splitPane1.setDividerSize(15);
+ splitPane1.setDoubleBuffered(false);
+ splitPane1.setEnabled(false);
+ presetsTab.add(splitPane1, BorderLayout.CENTER);
+ final JPanel panel26 = new JPanel();
+ panel26.setLayout(new BorderLayout(0, 0));
+ splitPane1.setRightComponent(panel26);
+ final JPanel panel27 = new JPanel();
+ panel27.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 5, 5), -1, -1));
+ panel26.add(panel27, BorderLayout.SOUTH);
+ final Spacer spacer4 = new Spacer();
+ 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"));
+ 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));
+ panel26.add(panel28, BorderLayout.CENTER);
+ final JScrollPane scrollPane2 = new JScrollPane();
+ 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));
+ final JPanel panel29 = new JPanel();
+ panel29.setLayout(new GridLayoutManager(1, 1, new Insets(100, 70, 100, 70), -1, -1));
+ scrollPane2.setViewportView(panel29);
+ presetNotePane = new JPanel();
+ presetNotePane.setLayout(new FormLayout("fill:d:grow", "center:d:noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow"));
+ presetNotePane.setVisible(false);
+ panel29.add(presetNotePane, 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));
+ 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"));
+ presetNotePane.add(label19, cc.xy(1, 1));
+ presetNoteButton = new JButton();
+ this.$$$loadButtonText$$$(presetNoteButton, ResourceBundle.getBundle("lang").getString("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"));
+ 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"));
+ 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));
+ splitPane1.setLeftComponent(panel30);
+ final JPanel panel31 = new JPanel();
+ panel31.setLayout(new GridLayoutManager(2, 2, new Insets(0, 5, 5, 0), -1, -1));
+ panel30.add(panel31, BorderLayout.SOUTH);
+ clonePresetButton = new JButton();
+ clonePresetButton.setEnabled(false);
+ this.$$$loadButtonText$$$(clonePresetButton, ResourceBundle.getBundle("lang").getString("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"));
+ 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"));
+ 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"));
+ 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));
+ panel30.add(panel32, BorderLayout.CENTER);
+ final JPanel panel33 = new JPanel();
+ panel33.setLayout(new GridLayoutManager(2, 3, new Insets(10, 0, 5, 0), -1, -1));
+ panel32.add(panel33, 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));
+ presetList = new JList();
+ presetList.setSelectionMode(1);
+ panel33.add(presetList, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(150, 50), null, 0, false));
+ modList = new JList();
+ panel33.add(modList, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(150, 50), null, 0, false));
+ 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"));
+ 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"));
+ 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));
+ settingsTab = new JPanel();
+ settingsTab.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane1.addTab("Settings", settingsTab);
+ final JPanel panel34 = new JPanel();
+ 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));
+ 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));
+ final JPanel panel35 = new JPanel();
+ panel35.setLayout(new GridLayoutManager(39, 4, 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));
+ 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));
+ final JLabel label24 = new JLabel();
+ this.$$$loadLabelText$$$(label24, ResourceBundle.getBundle("lang").getString("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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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));
+ 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"));
+ 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(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));
+ 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"));
+ 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(9, 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));
+ final JLabel label31 = new JLabel();
+ label31.setText("Profile");
+ label31.setToolTipText(ResourceBundle.getBundle("lang").getString("profile_desc"));
+ panel35.add(label31, new GridConstraints(11, 0, 1, 1, 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(11, 2, 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(12, 0, 1, 1, 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(14, 0, 1, 1, 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(15, 0, 1, 1, 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(16, 0, 1, 1, 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(16, 2, 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(18, 0, 1, 1, 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(19, 0, 1, 1, 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.setVerifyInputWhenFocusTarget(false);
+ panel35.add(label38, new GridConstraints(20, 0, 1, 1, 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(21, 0, 1, 1, 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(22, 0, 1, 1, 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(23, 0, 1, 1, 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(24, 0, 1, 1, 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(25, 0, 1, 1, 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(26, 0, 1, 1, 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(17, 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));
+ final JPanel panel40 = new JPanel();
+ panel40.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1));
+ panel40.setBackground(new Color(-14210516));
+ panel39.add(panel40, 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));
+ 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"));
+ 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(13, 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));
+ final JPanel panel42 = new JPanel();
+ panel42.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1));
+ panel42.setBackground(new Color(-14210516));
+ panel41.add(panel42, 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));
+ 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"));
+ 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(27, 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));
+ final JPanel panel44 = new JPanel();
+ panel44.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1));
+ panel44.setBackground(new Color(-14210516));
+ panel43.add(panel44, 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));
+ 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"));
+ 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(28, 0, 1, 1, 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(29, 0, 1, 1, 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(30, 0, 1, 1, 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(31, 0, 1, 1, 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(32, 0, 1, 1, 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(33, 0, 1, 1, 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(35, 0, 1, 1, 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(34, 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));
+ final JPanel panel46 = new JPanel();
+ panel46.setLayout(new GridLayoutManager(1, 1, new Insets(2, 6, 5, 0), -1, -1));
+ panel46.setBackground(new Color(-14210516));
+ panel45.add(panel46, 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));
+ 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"));
+ 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(36, 0, 1, 1, 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(37, 0, 1, 1, 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(20, 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));
+ settingsMallocCombo = new JComboBox();
+ final DefaultComboBoxModel defaultComboBoxModel2 = new DefaultComboBoxModel();
+ defaultComboBoxModel2.addElement("");
+ defaultComboBoxModel2.addElement("tbb4malloc_bi");
+ defaultComboBoxModel2.addElement("jemalloc_bi");
+ defaultComboBoxModel2.addElement("system");
+ settingsMallocCombo.setModel(defaultComboBoxModel2);
+ panel35.add(settingsMallocCombo, new GridConstraints(23, 2, 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(24, 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));
+ settingsEnableHTBox = new JCheckBox();
+ settingsEnableHTBox.setText("");
+ panel35.add(settingsEnableHTBox, 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));
+ settingsHugeoagesBox = new JCheckBox();
+ settingsHugeoagesBox.setText("");
+ panel35.add(settingsHugeoagesBox, 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));
+ settingsNoPauseBox = new JCheckBox();
+ settingsNoPauseBox.setText("");
+ panel35.add(settingsNoPauseBox, new GridConstraints(28, 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));
+ settingsShowScriptErrorsBox = new JCheckBox();
+ settingsShowScriptErrorsBox.setText("");
+ panel35.add(settingsShowScriptErrorsBox, 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));
+ settingsFilePatchingBox = new JCheckBox();
+ settingsFilePatchingBox.setText("");
+ panel35.add(settingsFilePatchingBox, 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));
+ settingsCrashDiagBox = new JCheckBox();
+ settingsCrashDiagBox.setText("");
+ panel35.add(settingsCrashDiagBox, new GridConstraints(33, 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));
+ settingsWindowBox = new JCheckBox();
+ settingsWindowBox.setText("");
+ panel35.add(settingsWindowBox, new GridConstraints(35, 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));
+ settingsMaxMemSpinner = new JSpinner();
+ panel35.add(settingsMaxMemSpinner, new GridConstraints(18, 2, 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(19, 2, 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(21, 2, 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(36, 2, 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(37, 2, 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(31, 2, 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(22, 2, 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(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));
+ settingsNoSplashBox = new JCheckBox();
+ settingsNoSplashBox.setText("");
+ panel35.add(settingsNoSplashBox, new GridConstraints(14, 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));
+ settingsUseSixtyFourBitBox = new JCheckBox();
+ settingsUseSixtyFourBitBox.setText("");
+ panel35.add(settingsUseSixtyFourBitBox, new GridConstraints(12, 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));
+ 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));
+ 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));
+ settingsBetaText = new JTextField();
+ panel35.add(settingsBetaText, 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));
+ final JPanel panel47 = new JPanel();
+ panel47.setLayout(new GridLayoutManager(1, 1, new Insets(25, 0, 5, 0), -1, -1));
+ panel35.add(panel47, new GridConstraints(38, 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));
+ 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"));
+ 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));
+ 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));
+ final JLabel label60 = new JLabel();
+ label60.setText("MB");
+ panel35.add(label60, new GridConstraints(18, 3, 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(19, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, 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);
+ tabbedPane1.addTab("About", aboutTab);
+ final JPanel panel48 = new JPanel();
+ panel48.setLayout(new GridLayoutManager(1, 1, new Insets(10, 150, 5, 150), -1, -1));
+ aboutTab.add(panel48, 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));
+ final JSplitPane splitPane2 = new JSplitPane();
+ splitPane2.setEnabled(false);
+ splitPane2.setOrientation(0);
+ panel48.add(splitPane2, 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, new Dimension(200, 200), null, 0, false));
+ final JPanel panel49 = new JPanel();
+ panel49.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 0, 0), -1, -1));
+ splitPane2.setLeftComponent(panel49);
+ final JPanel panel50 = new JPanel();
+ panel50.setLayout(new GridLayoutManager(4, 1, new Insets(0, 0, 0, 0), -1, -1));
+ panel49.add(panel50, 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));
+ aboutClient = new JLabel();
+ aboutClient.setEnabled(true);
+ Font aboutClientFont = this.$$$getFont$$$(null, Font.BOLD, 18, aboutClient.getFont());
+ if (aboutClientFont != null) aboutClient.setFont(aboutClientFont);
+ aboutClient.setText("Client v1.0.1000");
+ 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"));
+ 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 label62 = new JLabel();
+ this.$$$loadLabelText$$$(label62, ResourceBundle.getBundle("lang").getString("developer_page"));
+ panel51.add(label62, 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 label63 = new JLabel();
+ this.$$$loadLabelText$$$(label63, ResourceBundle.getBundle("lang").getString("project_page"));
+ panel51.add(label63, 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"));
+ 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));
+ panel49.add(panel52, new GridConstraints(0, 1, 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));
+ aboutLogo = new JLabel();
+ aboutLogo.setText("");
+ panel52.add(aboutLogo, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ aboutCopyrightLabel = new JLabel();
+ aboutCopyrightLabel.setText("Copyright (c) 2020-{year} Niklas Schütrumpf (Gurkengewuerz)");
+ panel49.add(aboutCopyrightLabel, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JPanel panel53 = new JPanel();
+ panel53.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ 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));
+ disclaimer = new JTextPane();
+ disclaimer.setContentType("text/html");
+ disclaimer.setEditable(false);
+ disclaimer.setEnabled(true);
+ disclaimer.setText("\n \n \n \n \n \n\n");
+ scrollPane3.setViewportView(disclaimer);
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) {
+ if (currentFont == null) return null;
+ String resultName;
+ if (fontName == null) {
+ resultName = currentFont.getName();
+ } else {
+ Font testFont = new Font(fontName, Font.PLAIN, 10);
+ if (testFont.canDisplay('a') && testFont.canDisplay('1')) {
+ resultName = fontName;
+ } else {
+ resultName = currentFont.getName();
+ }
+ }
+ return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize());
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ private void $$$loadLabelText$$$(JLabel component, String text) {
+ StringBuffer result = new StringBuffer();
+ boolean haveMnemonic = false;
+ char mnemonic = '\0';
+ int mnemonicIndex = -1;
+ for (int i = 0; i < text.length(); i++) {
+ if (text.charAt(i) == '&') {
+ i++;
+ if (i == text.length()) break;
+ if (!haveMnemonic && text.charAt(i) != '&') {
+ haveMnemonic = true;
+ mnemonic = text.charAt(i);
+ mnemonicIndex = result.length();
+ }
+ }
+ result.append(text.charAt(i));
+ }
+ component.setText(result.toString());
+ if (haveMnemonic) {
+ component.setDisplayedMnemonic(mnemonic);
+ component.setDisplayedMnemonicIndex(mnemonicIndex);
+ }
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ private void $$$loadButtonText$$$(AbstractButton component, String text) {
+ StringBuffer result = new StringBuffer();
+ boolean haveMnemonic = false;
+ char mnemonic = '\0';
+ int mnemonicIndex = -1;
+ for (int i = 0; i < text.length(); i++) {
+ if (text.charAt(i) == '&') {
+ i++;
+ if (i == text.length()) break;
+ if (!haveMnemonic && text.charAt(i) != '&') {
+ haveMnemonic = true;
+ mnemonic = text.charAt(i);
+ mnemonicIndex = result.length();
+ }
+ }
+ result.append(text.charAt(i));
+ }
+ component.setText(result.toString());
+ if (haveMnemonic) {
+ component.setMnemonic(mnemonic);
+ component.setDisplayedMnemonicIndex(mnemonicIndex);
+ }
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return mainPanel;
+ }
+
private enum Tab {
PLAY(0),
UPDATE(1),
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 b504616..01f5d3e 100644
--- a/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java
+++ b/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java
@@ -2,6 +2,7 @@ package de.mc8051.arma3launcher.objects;
import de.mc8051.arma3launcher.ArmA3Launcher;
import de.mc8051.arma3launcher.utils.FileUtils;
+import de.mc8051.arma3launcher.utils.URLUtils;
import java.io.File;
import java.io.IOException;
@@ -105,12 +106,12 @@ public class ModFile implements AbstractMod {
public String getRemoteFile() {
String s = ArmA3Launcher.config.getString("sync.url");
if (parent == null || parent.isEmpty()) {
- return s + "/" + encodeToURL(getName());
+ return s + "/" + URLUtils.encodeToURL(getName());
}
- s += "/" + encodeToURL(parent);
+ s += "/" + URLUtils.encodeToURL(parent);
for (String seg : getPath()) {
- s += "/" + encodeToURL(seg);
+ s += "/" + URLUtils.encodeToURL(seg);
}
return s;
}
@@ -118,13 +119,4 @@ public class ModFile implements AbstractMod {
public String getParent() {
return parent;
}
-
- private String encodeToURL(String s) {
- try {
- return URLEncoder.encode(s, StandardCharsets.UTF_8.name()).replace("+", "%20").replace("@", "%40");
- } catch (UnsupportedEncodingException e) {
- Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, e);
- }
- return "";
- }
}
diff --git a/gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java
index 5ea3e1a..29bfdf2 100644
--- a/gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java
+++ b/gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java
@@ -2,16 +2,75 @@ package de.mc8051.arma3launcher.repo;
import de.mc8051.arma3launcher.ArmA3Launcher;
import de.mc8051.arma3launcher.utils.Callback;
+import de.mc8051.arma3launcher.utils.URLUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* Created by gurkengewuerz.de on 29.03.2020.
*/
public class Updater {
- private boolean canPatch = false;
+ private File patcherFile = new File(ArmA3Launcher.APPLICATION_PATH + File.separator + "patcher.jar");
+ private File me;
+ private long lastCheck = 0;
+ private Version newestVersion = null;
+ private String newFile = "";
- public void update() {
+ public Updater() {
+ try {
+ me = new File(Updater.class.getProtectionDomain().getCodeSource().getLocation().toURI());
+ } catch (URISyntaxException ignored) {}
+ }
+ public void update() throws IOException {
+ if (!me.exists() || !me.isFile()) throw new IOException("Own jar not exists. Are you running in dev?");
+ if (!patcherFile.exists()) throw new IOException("Patcher does not exists");
+ Runtime.getRuntime().exec(
+ "\"" + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java\"" +
+ " -jar \"" + patcherFile.getAbsolutePath() + "\"" +
+ " \"" + ArmA3Launcher.config.getString("sync.url") + "/.sync/" + URLUtils.encodeToURL(newFile) + "\"" +
+ " \"" + me.getAbsolutePath() + "\""
+ );
+ }
+
+ public void downloadPatcher() {
+ if(patcherFile.exists()) {
+ Logger.getLogger(getClass().getName()).log(Level.INFO, "Patcher already exists. Skip.");
+ return;
+ }
+ try {
+ HttpClient client = HttpClient.newHttpClient();
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(new URI(ArmA3Launcher.config.getString("sync.url") + "/.sync/patcher.jar"))
+ .GET()
+ .build();
+
+ Path tempFile = Files.createTempFile("patcher", "jar");
+
+ client.sendAsync(request, HttpResponse.BodyHandlers.ofFile(tempFile)).thenAccept((r) -> {
+ if (r.statusCode() != 200) return;
+ try {
+ Files.copy(tempFile, patcherFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ Logger.getLogger(getClass().getName()).log(Level.INFO, "Patcher copied to " + patcherFile.getAbsolutePath());
+ } catch (IOException e) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Copy patcher failed", e);
+ }
+ });
+ } catch (IOException | URISyntaxException e) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, e);
+ }
}
public void getNewestVersion(Callback.HttpCallback callback) {
@@ -20,13 +79,26 @@ public class Updater {
public void needUpdate(Callback.NeedUpdateCallback callback) {
final Version currentVersion = new Version(ArmA3Launcher.VERSION);
+
+ if(lastCheck != 0 && System.currentTimeMillis() - lastCheck < 2 * 60 * 1000) {
+ callback.response(currentVersion.compareTo(newestVersion) < 0, newestVersion);
+ lastCheck = System.currentTimeMillis();
+ return;
+ }
+
getNewestVersion(new Callback.HttpCallback() {
@Override
public void response(Response r) {
if (!r.isSuccessful()) callback.response(false, null);
final String[] split = r.getBody().split(":");
- final Version newestVersion = new Version(r.getBody().split(":")[0]);
- callback.response((currentVersion.compareTo(newestVersion) < 0), newestVersion);
+ newestVersion = new Version(split[0]);
+ newFile = split[1].replace("\n", "").replace("\r","").trim();
+
+ final boolean needUpdate = currentVersion.compareTo(newestVersion) < 0;
+ if(needUpdate) downloadPatcher();
+ lastCheck = System.currentTimeMillis();
+
+ callback.response(needUpdate, newestVersion);
}
});
}
diff --git a/gui/src/main/java/de/mc8051/arma3launcher/utils/URLUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/URLUtils.java
new file mode 100644
index 0000000..a13d113
--- /dev/null
+++ b/gui/src/main/java/de/mc8051/arma3launcher/utils/URLUtils.java
@@ -0,0 +1,22 @@
+package de.mc8051.arma3launcher.utils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Created by gurkengewuerz.de on 29.03.2020.
+ */
+public class URLUtils {
+
+ public static String encodeToURL(String s) {
+ try {
+ return URLEncoder.encode(s, StandardCharsets.UTF_8.name()).replace("+", "%20").replace("@", "%40");
+ } catch (UnsupportedEncodingException e) {
+ Logger.getLogger(URLUtils.class.getName()).log(Level.SEVERE, null, e);
+ }
+ return "";
+ }
+}
diff --git a/gui/src/main/resources/lang_de_DE.properties b/gui/src/main/resources/lang_de_DE.properties
index 3c3a130..4875097 100644
--- a/gui/src/main/resources/lang_de_DE.properties
+++ b/gui/src/main/resources/lang_de_DE.properties
@@ -101,7 +101,7 @@ follow_on_twitter=Folgt und auf Twitter
star_on_github="Star us" auf GitHub
client_up_to_date=Client ist aktuell
client_outdated=Neue Client Version verfügbar
-please_update=Bitte führe ein Update durch
+please_update=Bitte führe ein Update durch. Gehe in den Tab "Über" und führe das Update durch.
developer_page=Entwickler-Seite
project_page=Projektseite
fast_check=Schnelle Prüfung
@@ -111,4 +111,5 @@ presets_note=Vorlagen k
clone_preset=Vorlage klonen
new_modset_name=Modsset Name
modset_exists_msg=Bitte wähle ein anderen Namen für deine Vorlage.
-modset_exists=Preset mit diesen Namen existiert bereits
\ No newline at end of file
+modset_exists=Preset mit diesen Namen existiert bereits
+update_now=Jetzt updaten!
\ 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 9489689..657c4fd 100644
--- a/gui/src/main/resources/lang_en_US.properties
+++ b/gui/src/main/resources/lang_en_US.properties
@@ -99,7 +99,7 @@ follow_on_twitter=Follow us on Twitter
star_on_github=Star us on GitHub
client_up_to_date=Client is up to date
client_outdated=New client version available
-please_update=Please do an update
+please_update=Please do an update. Go to the Tab "About" and run the update.
developer_page=Developer page
project_page=Project page
new_modset_name=Modsset name
diff --git a/linux/.sync/arma3launcher.jar b/linux/.sync/arma3launcher.jar
new file mode 100644
index 0000000..e69de29
diff --git a/linux/.sync/patcher.jar b/linux/.sync/patcher.jar
new file mode 100644
index 0000000..e69de29
diff --git a/linux/.sync/version.txt b/linux/.sync/version.txt
new file mode 100644
index 0000000..f1b8ff2
--- /dev/null
+++ b/linux/.sync/version.txt
@@ -0,0 +1 @@
+0.1.1000:arma3launcher.jar
\ No newline at end of file
diff --git a/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java
index 125a519..c0dc05a 100644
--- a/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java
+++ b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java
@@ -25,6 +25,7 @@
package de.mc8051.arma3launcher;
import javax.swing.*;
+import java.awt.*;
/**
* Created by gurkengewuerz.de on 29.03.2020.
@@ -32,4 +33,59 @@ import javax.swing.*;
public class Patcher {
public JPanel mainpanel;
public JProgressBar progressBar1;
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer
+ * >>> IMPORTANT!! <<<
+ * DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ mainpanel = new JPanel();
+ mainpanel.setLayout(new BorderLayout(0, 0));
+ progressBar1 = new JProgressBar();
+ progressBar1.setMinimumSize(new Dimension(10, 4));
+ progressBar1.setString("");
+ progressBar1.setValue(0);
+ mainpanel.add(progressBar1, BorderLayout.CENTER);
+ final JLabel label1 = new JLabel();
+ Font label1Font = this.$$$getFont$$$(null, Font.BOLD, 16, label1.getFont());
+ if (label1Font != null) label1.setFont(label1Font);
+ label1.setText("Launcher Updater");
+ mainpanel.add(label1, BorderLayout.NORTH);
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) {
+ if (currentFont == null) return null;
+ String resultName;
+ if (fontName == null) {
+ resultName = currentFont.getName();
+ } else {
+ Font testFont = new Font(fontName, Font.PLAIN, 10);
+ if (testFont.canDisplay('a') && testFont.canDisplay('1')) {
+ resultName = fontName;
+ } else {
+ resultName = currentFont.getName();
+ }
+ }
+ return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize());
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return mainpanel;
+ }
}