Extracts the control panel tab to its own class, and makes the add server button into a tab button
This commit is contained in:
parent
50b9188229
commit
9f092a73fe
@ -379,7 +379,7 @@ public class ServerLauncherController {
|
||||
* Updates the GUI as necessary to display loaded data
|
||||
*/
|
||||
private void executeGUILoadingTasks() {
|
||||
this.serverLauncherGUI.updateProfiles();
|
||||
this.serverLauncherGUI.getControlPanelTab().updateProfiles();
|
||||
this.serverLauncherGUI.updateWithSavedProfileData();
|
||||
this.currentProfile.updateConsoles();
|
||||
if (this.downloadAllJars) {
|
||||
|
@ -0,0 +1,206 @@
|
||||
package net.knarcraft.minecraftserverlauncher.userinterface;
|
||||
|
||||
import net.knarcraft.minecraftserverlauncher.Main;
|
||||
import net.knarcraft.minecraftserverlauncher.profile.ServerLauncherController;
|
||||
import net.knarcraft.minecraftserverlauncher.server.ServerHandler;
|
||||
import net.knarcraft.minecraftserverlauncher.utility.BackupUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class ControlPanelTab implements ActionListener {
|
||||
|
||||
private JButton startServerButton;
|
||||
private JButton stopServerButton;
|
||||
private JButton backupButton;
|
||||
private JButton addProfileButton;
|
||||
private JButton deleteProfileButton;
|
||||
private JComboBox<String> profiles;
|
||||
private final JPanel controlPanelPanel;
|
||||
private final ServerLauncherController controller;
|
||||
private final JLabel lblStatusLabel = new JLabel("Servers are stopped");
|
||||
|
||||
public ControlPanelTab(JPanel controlPanelPanel) {
|
||||
this.controlPanelPanel = controlPanelPanel;
|
||||
this.controller = Main.getController();
|
||||
initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text of the status label
|
||||
* @param text <p>The new text of the status label</p>
|
||||
*/
|
||||
public void setStatusText(String text) {
|
||||
this.lblStatusLabel.setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the ServerLauncherGUI components to block a user from doing illegal actions
|
||||
*
|
||||
* @param running <p>Whether the servers are currently running</p>
|
||||
*/
|
||||
public void updateGUIElementsWhenServersStartOrStop(boolean running) {
|
||||
boolean stopped = !running; //Most gui is only enabled when the server is stopped rather than running.
|
||||
profiles.setEnabled(stopped);
|
||||
addProfileButton.setEnabled(stopped);
|
||||
deleteProfileButton.setEnabled(stopped);
|
||||
startServerButton.setEnabled(stopped);
|
||||
stopServerButton.setEnabled(running);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops all servers
|
||||
*/
|
||||
public void stopServers() {
|
||||
GUI gui = Main.getController().getGUI();
|
||||
try {
|
||||
gui.setStatus("Servers are stopping...");
|
||||
ServerHandler.stop();
|
||||
} catch (IOException e1) {
|
||||
gui.showError("Could not stop server.");
|
||||
e1.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
gui.showError("Could not kill server.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the currently selected profile
|
||||
*
|
||||
* @return <p>The currently selected profile or null</p>
|
||||
*/
|
||||
public String getSelectedProfile() {
|
||||
Object selectedProfile = profiles.getSelectedItem();
|
||||
if (selectedProfile != null) {
|
||||
return selectedProfile.toString();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the profiles combo
|
||||
*/
|
||||
public void updateProfiles() {
|
||||
String selectedProfile = Main.getController().getCurrentProfile().getName();
|
||||
this.profiles.removeAllItems();
|
||||
for (String profile : Main.getController().getProfileNames()) {
|
||||
this.profiles.addItem(profile);
|
||||
}
|
||||
this.profiles.setSelectedItem(selectedProfile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the selected profile
|
||||
*/
|
||||
private void deleteProfile() {
|
||||
Object selected = profiles.getSelectedItem();
|
||||
int answer = JOptionPane.showConfirmDialog(null,
|
||||
String.format("Do you really want to remove the profile %s?", selected), "Remove profile",
|
||||
JOptionPane.YES_NO_OPTION
|
||||
);
|
||||
if (answer == JOptionPane.YES_NO_OPTION) {
|
||||
if (selected != null) {
|
||||
controller.removeProfile(selected.toString());
|
||||
updateProfiles();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the previous profile and loads data from the new profile
|
||||
*/
|
||||
private void changeProfile() {
|
||||
controller.saveState();
|
||||
Object current = this.profiles.getSelectedItem();
|
||||
if (current != null) {
|
||||
controller.setCurrentProfile(current.toString());
|
||||
}
|
||||
controller.getGUI().updateWithSavedProfileData();
|
||||
controller.getCurrentProfile().updateConsoles();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
SpringLayout sl_panel = new SpringLayout();
|
||||
controlPanelPanel.setLayout(sl_panel);
|
||||
|
||||
JLabel lblBasicControls = new JLabel("Basic controls");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblBasicControls, 10, SpringLayout.NORTH, controlPanelPanel);
|
||||
controlPanelPanel.add(lblBasicControls);
|
||||
|
||||
startServerButton = new JButton("Start servers");
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblBasicControls, 0, SpringLayout.WEST, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, startServerButton, 6, SpringLayout.SOUTH, lblBasicControls);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, startServerButton, 10, SpringLayout.WEST, controlPanelPanel);
|
||||
controlPanelPanel.add(startServerButton);
|
||||
startServerButton.addActionListener(this);
|
||||
|
||||
stopServerButton = new JButton("Stop servers");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, stopServerButton, 0, SpringLayout.NORTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, stopServerButton, 6, SpringLayout.EAST, startServerButton);
|
||||
controlPanelPanel.add(stopServerButton);
|
||||
stopServerButton.addActionListener(this);
|
||||
|
||||
JLabel lblProfile = new JLabel("Profile");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblProfile, 6, SpringLayout.SOUTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblProfile, 10, SpringLayout.WEST, controlPanelPanel);
|
||||
controlPanelPanel.add(lblProfile);
|
||||
|
||||
addProfileButton = new JButton("+");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, addProfileButton, 6, SpringLayout.SOUTH, lblProfile);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, addProfileButton, 10, SpringLayout.WEST, controlPanelPanel);
|
||||
controlPanelPanel.add(addProfileButton);
|
||||
addProfileButton.addActionListener(this);
|
||||
|
||||
deleteProfileButton = new JButton("-");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, deleteProfileButton, 0, SpringLayout.NORTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, deleteProfileButton, 6, SpringLayout.EAST, addProfileButton);
|
||||
controlPanelPanel.add(deleteProfileButton);
|
||||
deleteProfileButton.addActionListener(this);
|
||||
|
||||
profiles = new JComboBox<>();
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, profiles, 0, SpringLayout.NORTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, profiles, 6, SpringLayout.EAST, deleteProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.EAST, profiles, 124, SpringLayout.EAST, deleteProfileButton);
|
||||
controlPanelPanel.add(profiles);
|
||||
profiles.addActionListener(this);
|
||||
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblStatusLabel, 6, SpringLayout.SOUTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.SOUTH, lblStatusLabel, -10, SpringLayout.SOUTH, controlPanelPanel);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblStatusLabel, 10, SpringLayout.WEST, controlPanelPanel);
|
||||
sl_panel.putConstraint(SpringLayout.EAST, lblStatusLabel, -10, SpringLayout.EAST, controlPanelPanel);
|
||||
controlPanelPanel.add(lblStatusLabel);
|
||||
|
||||
backupButton = new JButton("Backup");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, backupButton, 0, SpringLayout.NORTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, backupButton, 6, SpringLayout.EAST, stopServerButton);
|
||||
controlPanelPanel.add(backupButton);
|
||||
backupButton.addActionListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
Object actionSource = actionEvent.getSource();
|
||||
if (actionSource == startServerButton) {
|
||||
controller.saveState();
|
||||
Executors.newSingleThreadExecutor().execute(ServerHandler::startServers);
|
||||
} else if (actionSource == stopServerButton) {
|
||||
stopServers();
|
||||
} else if (actionSource == backupButton) {
|
||||
//Run backup in its own thread to prevent locking up
|
||||
Executors.newSingleThreadExecutor().execute(() -> BackupUtil.backup(controller.getGUI()));
|
||||
} else if (actionSource == addProfileButton) {
|
||||
controller.addProfile(JOptionPane.showInputDialog("Profile name: "));
|
||||
updateProfiles();
|
||||
} else if (actionSource == deleteProfileButton) {
|
||||
deleteProfile();
|
||||
} else if (actionSource == profiles) {
|
||||
changeProfile();
|
||||
}
|
||||
}
|
||||
}
|
@ -3,8 +3,6 @@ package net.knarcraft.minecraftserverlauncher.userinterface;
|
||||
import net.knarcraft.minecraftserverlauncher.Main;
|
||||
import net.knarcraft.minecraftserverlauncher.profile.Collection;
|
||||
import net.knarcraft.minecraftserverlauncher.profile.ServerLauncherController;
|
||||
import net.knarcraft.minecraftserverlauncher.server.ServerHandler;
|
||||
import net.knarcraft.minecraftserverlauncher.utility.BackupUtil;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.naming.ConfigurationException;
|
||||
@ -19,7 +17,6 @@ import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import static javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE;
|
||||
import static net.knarcraft.minecraftserverlauncher.utility.CommonFunctions.getResourceAsScanner;
|
||||
@ -34,25 +31,19 @@ import static net.knarcraft.minecraftserverlauncher.utility.CommonFunctions.getR
|
||||
*/
|
||||
public class ServerLauncherGUI extends MessageHandler implements ActionListener, GUI {
|
||||
|
||||
private final JLabel lblStatusLabel = new JLabel("Servers are stopped");
|
||||
private final ServerLauncherController controller;
|
||||
private Map<String, String> textStrings;
|
||||
private Tray applicationTray;
|
||||
|
||||
private JFrame frame;
|
||||
private JTabbedPane tabbedPane;
|
||||
private JTabbedPane mainTabbedPane;
|
||||
private JTabbedPane serversPane;
|
||||
private ServerControlTab serverControlTab;
|
||||
private ControlPanelTab controlPanelTab;
|
||||
private ServerLauncherMenu serverLauncherMenu;
|
||||
|
||||
//Basic controls
|
||||
private JButton startServerButton;
|
||||
private JButton stopServerButton;
|
||||
private JButton addServerButton;
|
||||
private JButton backupButton;
|
||||
private JButton addProfileButton;
|
||||
private JButton deleteProfileButton;
|
||||
private JComboBox<String> profiles;
|
||||
private JButton addServerTabButton;
|
||||
private JButton addServerPaneButton;
|
||||
|
||||
/**
|
||||
* Creates the application window
|
||||
@ -100,9 +91,17 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
return this.serversPane;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets this GUI's control panel tab
|
||||
* @return <p>The control panel tab for this GUI</p>
|
||||
*/
|
||||
public ControlPanelTab getControlPanelTab() {
|
||||
return this.controlPanelTab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStatus(String text) {
|
||||
this.lblStatusLabel.setText(text);
|
||||
controlPanelTab.setStatusText(text);
|
||||
this.logMessage(text);
|
||||
}
|
||||
|
||||
@ -121,18 +120,6 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
return chooser.getSelectedFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the profiles combo
|
||||
*/
|
||||
public void updateProfiles() {
|
||||
String selectedProfile = Main.getController().getCurrentProfile().getName();
|
||||
this.profiles.removeAllItems();
|
||||
for (String profile : Main.getController().getProfileNames()) {
|
||||
this.profiles.addItem(profile);
|
||||
}
|
||||
this.profiles.setSelectedItem(selectedProfile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the server control tab used by this GUI
|
||||
*
|
||||
@ -163,6 +150,46 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
serversPane.addTab(collection.getName(), collection.getServerTab().getPanel());
|
||||
addCloseButtonToServerTab(collection.getName());
|
||||
}
|
||||
addAddButtonToServerTab();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an add button to the servers tab's tabs
|
||||
*/
|
||||
private void addAddButtonToServerTab() {
|
||||
JPanel tabPanel = new JPanel();
|
||||
tabPanel.setLayout(new GridLayout());
|
||||
tabPanel.setOpaque(false);
|
||||
|
||||
JPanel tabContentsPanel = new JPanel(new SpringLayout());
|
||||
serversPane.addTab("Add tab", tabContentsPanel);
|
||||
|
||||
addServerTabButton = getAddServerButton(true);
|
||||
addServerTabButton.addActionListener(this);
|
||||
addServerPaneButton = getAddServerButton(false);
|
||||
addServerPaneButton.addActionListener(this);
|
||||
|
||||
tabContentsPanel.add(addServerTabButton);
|
||||
tabPanel.add(addServerPaneButton);
|
||||
serversPane.setTabComponentAt(serversPane.getTabCount() - 1, tabPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a button for adding a new server
|
||||
* @param displayButtonStyle <p>Whether to show or hide the button's style</p>
|
||||
* @return <p>A new add server button</p>
|
||||
*/
|
||||
private JButton getAddServerButton(boolean displayButtonStyle) {
|
||||
JButton addButton = new JButton("+ Add server");
|
||||
if (!displayButtonStyle) {
|
||||
addButton.setBorder(BorderFactory.createEtchedBorder());
|
||||
addButton.setFocusable(false);
|
||||
addButton.setBorderPainted(false);
|
||||
addButton.setContentAreaFilled(false);
|
||||
addButton.setRolloverEnabled(true);
|
||||
addButton.setUI(new BasicButtonUI());
|
||||
}
|
||||
return addButton;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -230,81 +257,20 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
|
||||
this.serverLauncherMenu = new ServerLauncherMenu(menuBar, this);
|
||||
|
||||
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
||||
frame.getContentPane().add(tabbedPane);
|
||||
mainTabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
||||
frame.getContentPane().add(mainTabbedPane);
|
||||
|
||||
JPanel panelBasic = new JPanel();
|
||||
tabbedPane.addTab("Control panel", null, panelBasic, null);
|
||||
SpringLayout sl_panel = new SpringLayout();
|
||||
panelBasic.setLayout(sl_panel);
|
||||
|
||||
JLabel lblBasicControls = new JLabel("Basic controls");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblBasicControls, 10, SpringLayout.NORTH, panelBasic);
|
||||
panelBasic.add(lblBasicControls);
|
||||
|
||||
startServerButton = new JButton("Start servers");
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblBasicControls, 0, SpringLayout.WEST, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, startServerButton, 6, SpringLayout.SOUTH, lblBasicControls);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, startServerButton, 10, SpringLayout.WEST, panelBasic);
|
||||
panelBasic.add(startServerButton);
|
||||
startServerButton.addActionListener(this);
|
||||
|
||||
stopServerButton = new JButton("Stop servers");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, stopServerButton, 0, SpringLayout.NORTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, stopServerButton, 6, SpringLayout.EAST, startServerButton);
|
||||
panelBasic.add(stopServerButton);
|
||||
stopServerButton.addActionListener(this);
|
||||
|
||||
JLabel lblProfile = new JLabel("Profile");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblProfile, 6, SpringLayout.SOUTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblProfile, 10, SpringLayout.WEST, panelBasic);
|
||||
panelBasic.add(lblProfile);
|
||||
|
||||
addProfileButton = new JButton("+");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, addProfileButton, 6, SpringLayout.SOUTH, lblProfile);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, addProfileButton, 10, SpringLayout.WEST, panelBasic);
|
||||
panelBasic.add(addProfileButton);
|
||||
addProfileButton.addActionListener(this);
|
||||
|
||||
deleteProfileButton = new JButton("-");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, deleteProfileButton, 0, SpringLayout.NORTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, deleteProfileButton, 6, SpringLayout.EAST, addProfileButton);
|
||||
panelBasic.add(deleteProfileButton);
|
||||
deleteProfileButton.addActionListener(this);
|
||||
|
||||
profiles = new JComboBox<>();
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, profiles, 0, SpringLayout.NORTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, profiles, 6, SpringLayout.EAST, deleteProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.EAST, profiles, 124, SpringLayout.EAST, deleteProfileButton);
|
||||
panelBasic.add(profiles);
|
||||
profiles.addActionListener(this);
|
||||
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, lblStatusLabel, 6, SpringLayout.SOUTH, addProfileButton);
|
||||
sl_panel.putConstraint(SpringLayout.SOUTH, lblStatusLabel, -10, SpringLayout.SOUTH, panelBasic);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, lblStatusLabel, 10, SpringLayout.WEST, panelBasic);
|
||||
sl_panel.putConstraint(SpringLayout.EAST, lblStatusLabel, -10, SpringLayout.EAST, panelBasic);
|
||||
panelBasic.add(lblStatusLabel);
|
||||
|
||||
addServerButton = new JButton("Add server");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, addServerButton, 0, SpringLayout.NORTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, addServerButton, 6, SpringLayout.EAST, stopServerButton);
|
||||
panelBasic.add(addServerButton);
|
||||
addServerButton.addActionListener(this);
|
||||
|
||||
backupButton = new JButton("Backup");
|
||||
sl_panel.putConstraint(SpringLayout.NORTH, backupButton, 0, SpringLayout.NORTH, startServerButton);
|
||||
sl_panel.putConstraint(SpringLayout.WEST, backupButton, 6, SpringLayout.EAST, addServerButton);
|
||||
panelBasic.add(backupButton);
|
||||
backupButton.addActionListener(this);
|
||||
JPanel controlPanelPanel = new JPanel();
|
||||
mainTabbedPane.addTab("Control panel", null, controlPanelPanel, null);
|
||||
controlPanelTab = new ControlPanelTab(controlPanelPanel);
|
||||
|
||||
JPanel controlServers = new JPanel();
|
||||
tabbedPane.addTab("Control servers", null, controlServers, null);
|
||||
mainTabbedPane.addTab("Control servers", null, controlServers, null);
|
||||
|
||||
serverControlTab = new ServerControlTab(frame, controlServers);
|
||||
|
||||
|
||||
JPanel panel_2 = new JPanel();
|
||||
tabbedPane.addTab("Servers", null, panel_2, null);
|
||||
mainTabbedPane.addTab("Servers", null, panel_2, null);
|
||||
SpringLayout sl_panel_2 = new SpringLayout();
|
||||
panel_2.setLayout(sl_panel_2);
|
||||
|
||||
@ -332,21 +298,6 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
applicationTray.hideToTray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the currently selected profile
|
||||
*
|
||||
* @return <p>The currently selected profile or null</p>
|
||||
*/
|
||||
public String getSelectedProfile() {
|
||||
Object selectedProfile = profiles.getSelectedItem();
|
||||
if (selectedProfile != null) {
|
||||
return selectedProfile.toString();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Object actionSource = e.getSource();
|
||||
@ -361,34 +312,8 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
* @param actionSource <p>The object being interacted with</p>
|
||||
*/
|
||||
private void handleMainTabButtons(Object actionSource) {
|
||||
if (actionSource == startServerButton) {
|
||||
controller.saveState();
|
||||
Executors.newSingleThreadExecutor().execute(ServerHandler::startServers);
|
||||
} else if (actionSource == stopServerButton) {
|
||||
stopServers();
|
||||
} else if (actionSource == addServerButton) {
|
||||
if (actionSource == addServerTabButton || actionSource == addServerPaneButton) {
|
||||
addServer();
|
||||
} else if (actionSource == backupButton) {
|
||||
//Run backup in its own thread to prevent locking up
|
||||
Executors.newSingleThreadExecutor().execute(() -> BackupUtil.backup(this));
|
||||
} else if (actionSource == addProfileButton) {
|
||||
controller.addProfile(JOptionPane.showInputDialog("Profile name: "));
|
||||
updateProfiles();
|
||||
} else if (actionSource == deleteProfileButton) {
|
||||
deleteProfile();
|
||||
} else if (actionSource == profiles) {
|
||||
changeProfile();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the selected profile
|
||||
*/
|
||||
private void deleteProfile() {
|
||||
Object selected = profiles.getSelectedItem();
|
||||
if (selected != null) {
|
||||
controller.removeProfile(selected.toString());
|
||||
updateProfiles();
|
||||
}
|
||||
}
|
||||
|
||||
@ -413,42 +338,9 @@ public class ServerLauncherGUI extends MessageHandler implements ActionListener,
|
||||
*/
|
||||
public void updateGUIElementsWhenServersStartOrStop(boolean running) {
|
||||
boolean stopped = !running; //Most gui is only enabled when the server is stopped rather than running.
|
||||
profiles.setEnabled(stopped);
|
||||
addProfileButton.setEnabled(stopped);
|
||||
deleteProfileButton.setEnabled(stopped);
|
||||
startServerButton.setEnabled(stopped);
|
||||
addServerButton.setEnabled(stopped);
|
||||
tabbedPane.setEnabledAt(2, stopped);
|
||||
stopServerButton.setEnabled(running);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the previous profile and loads data from the new profile
|
||||
*/
|
||||
private void changeProfile() {
|
||||
controller.saveState();
|
||||
Object current = this.profiles.getSelectedItem();
|
||||
if (current != null) {
|
||||
controller.setCurrentProfile(current.toString());
|
||||
}
|
||||
this.updateWithSavedProfileData();
|
||||
controller.getCurrentProfile().updateConsoles();
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops all servers
|
||||
*/
|
||||
public void stopServers() {
|
||||
try {
|
||||
setStatus("Servers are stopping...");
|
||||
ServerHandler.stop();
|
||||
} catch (IOException e1) {
|
||||
showError("Could not stop server.");
|
||||
e1.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
showError("Could not kill server.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
//mainTabbedPane.setEnabledAt(1, !stopped);
|
||||
mainTabbedPane.setEnabledAt(2, stopped);
|
||||
controlPanelTab.updateGUIElementsWhenServersStartOrStop(running);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -237,7 +237,7 @@ public class ServerLauncherMenu implements ActionListener {
|
||||
* Asks the user for a delay if checked, and sets the value to the current profile
|
||||
*/
|
||||
private void delay() {
|
||||
String selectedProfile = serverLauncherGUI.getSelectedProfile();
|
||||
String selectedProfile = serverLauncherGUI.getControlPanelTab().getSelectedProfile();
|
||||
if (selectedProfile != null) {
|
||||
Profile profile = controller.getProfileByName(selectedProfile);
|
||||
if (delayStartupCheckBoxMenuItem.isSelected()) {
|
||||
@ -260,7 +260,7 @@ public class ServerLauncherMenu implements ActionListener {
|
||||
* Saves the runInBackground setting to the current profile
|
||||
*/
|
||||
private void background() {
|
||||
String selectedProfile = serverLauncherGUI.getSelectedProfile();
|
||||
String selectedProfile = serverLauncherGUI.getControlPanelTab().getSelectedProfile();
|
||||
if (selectedProfile != null) {
|
||||
Profile profile = controller.getProfileByName(selectedProfile);
|
||||
Objects.requireNonNull(profile).setRunInBackground(runInBackgroundCheckBoxMenuItem.isSelected());
|
||||
@ -273,7 +273,7 @@ public class ServerLauncherMenu implements ActionListener {
|
||||
* Saves the downloadJars setting to the current profile
|
||||
*/
|
||||
private void downloadJars() {
|
||||
String selectedProfile = serverLauncherGUI.getSelectedProfile();
|
||||
String selectedProfile = serverLauncherGUI.getControlPanelTab().getSelectedProfile();
|
||||
if (selectedProfile != null) {
|
||||
controller.setDownloadAllJars(downloadJarsCheckBoxMenuItem.isSelected());
|
||||
} else {
|
||||
|
@ -59,7 +59,7 @@ public class Tray {
|
||||
trayIcon = new TrayIcon(trayImage, "Minecraft Server Launcher", popup);
|
||||
trayIcon.setImageAutoSize(true);
|
||||
ActionListener exitListener = e -> {
|
||||
serverLauncherGUI.stopServers();
|
||||
serverLauncherGUI.getControlPanelTab().stopServers();
|
||||
controller.saveState();
|
||||
System.exit(0);
|
||||
};
|
||||
@ -92,7 +92,7 @@ public class Tray {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
serverLauncherGUI.stopServers();
|
||||
serverLauncherGUI.getControlPanelTab().stopServers();
|
||||
controller.saveState();
|
||||
System.exit(0);
|
||||
}
|
||||
@ -114,7 +114,7 @@ public class Tray {
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
controller.saveState();
|
||||
serverLauncherGUI.stopServers();
|
||||
serverLauncherGUI.getControlPanelTab().stopServers();
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user