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; + } }