package net.knarcraft.serverlauncher.userinterface; import net.knarcraft.serverlauncher.server.Server; import net.knarcraft.serverlauncher.server.ServerType; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.Scanner; public class GUI implements ActionListener { private JFrame frame; //Settings private boolean runInBackground; private int delayStartup; private boolean downloadJars; //Menu private JCheckBoxMenuItem chckbxmntmRunInBackground, chckbxmntmDelayStartup, chckbxmntmDownloadJars; //Options private JMenuItem mntmErrors, mntmSetup, mntmManualUpdate; //Help private JMenuItem mntmRunInBackground, mntmDelayStartup, mntmDownloadJars; //Info/options private JMenuItem mntmAbout, mntmStory; //Info/about //Basic controls private JButton btnStartServer, btnStopServer, addServer, backup, addProfile, delProfile; private JComboBox profiles; private final JLabel lblStatuslabel = new JLabel("Servers are stopped"); //Server controls private JComboBox targetServer, targetPlayer; private JButton btnKick, btnBan, btnOp, btnDeop, btnCustomCommand, btnSaveserver, btnReload, btnServerConsoles; private JTextField customCommand; //Text private String setupText; private String runInBackgroundText; private String delayStartupText; private String downloadJarsText; private String aboutText; private JTabbedPane serversPane; /** * Create the application. */ public GUI() { initialize(); loadMessages(); Server.setGui(this); } public JFrame getFrame() { return this.frame; } public void setStatus(String text) { this.lblStatuslabel.setText(text); } /** * Initialize the contents of the frame. */ private void initialize() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | UnsupportedLookAndFeelException | InstantiationException | IllegalAccessException e) { e.printStackTrace(); } frame = new JFrame(); frame.setBounds(100, 100, 398, 219); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenu mnOptions = new JMenu("Options"); menuBar.add(mnOptions); chckbxmntmRunInBackground = new JCheckBoxMenuItem("Run in background on exit"); mnOptions.add(chckbxmntmRunInBackground); chckbxmntmRunInBackground.addActionListener(this); chckbxmntmDelayStartup = new JCheckBoxMenuItem("Delay Startup"); mnOptions.add(chckbxmntmDelayStartup); chckbxmntmDelayStartup.addActionListener(this); chckbxmntmDownloadJars = new JCheckBoxMenuItem("Download jars"); mnOptions.add(chckbxmntmDownloadJars); chckbxmntmDownloadJars.addActionListener(this); JMenu mnHelp = new JMenu("Help"); menuBar.add(mnHelp); mntmErrors = new JMenuItem("Errors"); mnHelp.add(mntmErrors); mntmErrors.addActionListener(this); mntmSetup = new JMenuItem("Setup"); mnHelp.add(mntmSetup); mntmSetup.addActionListener(this); mntmManualUpdate = new JMenuItem("Manual update"); mnHelp.add(mntmManualUpdate); mntmManualUpdate.addActionListener(this); JMenu mnInfo = new JMenu("Info"); menuBar.add(mnInfo); JMenu mnOptionsInfo = new JMenu("Options"); mnInfo.add(mnOptionsInfo); mntmRunInBackground = new JMenuItem("Run in background on exit"); mnOptionsInfo.add(mntmRunInBackground); mntmRunInBackground.addActionListener(this); mntmDelayStartup = new JMenuItem("Delay Startup"); mnOptionsInfo.add(mntmDelayStartup); mntmDelayStartup.addActionListener(this); mntmDownloadJars = new JMenuItem("Download jars"); mnOptionsInfo.add(mntmDownloadJars); mntmDownloadJars.addActionListener(this); JMenu mnAbout = new JMenu("About"); mnInfo.add(mnAbout); mntmAbout = new JMenuItem("About"); mnAbout.add(mntmAbout); mntmAbout.addActionListener(this); mntmStory = new JMenuItem("Story"); mnAbout.add(mntmStory); frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS)); mntmStory.addActionListener(this); JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); frame.getContentPane().add(tabbedPane); 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); btnStartServer = new JButton("Start servers"); sl_panel.putConstraint(SpringLayout.WEST, lblBasicControls, 0, SpringLayout.WEST, btnStartServer); sl_panel.putConstraint(SpringLayout.SOUTH, lblBasicControls, -6, SpringLayout.NORTH, btnStartServer); sl_panel.putConstraint(SpringLayout.NORTH, btnStartServer, 30, SpringLayout.NORTH, panelBasic); sl_panel.putConstraint(SpringLayout.WEST, btnStartServer, 10, SpringLayout.WEST, panelBasic); panelBasic.add(btnStartServer); btnStartServer.addActionListener(this); btnStopServer = new JButton("Stop servers"); sl_panel.putConstraint(SpringLayout.NORTH, btnStopServer, 0, SpringLayout.NORTH, btnStartServer); sl_panel.putConstraint(SpringLayout.WEST, btnStopServer, 6, SpringLayout.EAST, btnStartServer); panelBasic.add(btnStopServer); btnStopServer.addActionListener(this); JLabel lblProfile = new JLabel("Profile"); sl_panel.putConstraint(SpringLayout.NORTH, lblProfile, 6, SpringLayout.SOUTH, btnStartServer); sl_panel.putConstraint(SpringLayout.WEST, lblProfile, 10, SpringLayout.WEST, panelBasic); panelBasic.add(lblProfile); addProfile = new JButton("+"); sl_panel.putConstraint(SpringLayout.NORTH, addProfile, 6, SpringLayout.SOUTH, lblProfile); sl_panel.putConstraint(SpringLayout.WEST, addProfile, 10, SpringLayout.WEST, panelBasic); panelBasic.add(addProfile); addProfile.addActionListener(this); delProfile = new JButton("-"); sl_panel.putConstraint(SpringLayout.NORTH, delProfile, 0, SpringLayout.NORTH, addProfile); sl_panel.putConstraint(SpringLayout.WEST, delProfile, 6, SpringLayout.EAST, addProfile); panelBasic.add(delProfile); delProfile.addActionListener(this); profiles = new JComboBox(); sl_panel.putConstraint(SpringLayout.NORTH, profiles, 1, SpringLayout.NORTH, addProfile); sl_panel.putConstraint(SpringLayout.WEST, profiles, 6, SpringLayout.EAST, delProfile); sl_panel.putConstraint(SpringLayout.EAST, profiles, 124, SpringLayout.EAST, delProfile); panelBasic.add(profiles); profiles.addActionListener(this); sl_panel.putConstraint(SpringLayout.NORTH, lblStatuslabel, 15, SpringLayout.SOUTH, addProfile); sl_panel.putConstraint(SpringLayout.WEST, lblStatuslabel, 10, SpringLayout.WEST, panelBasic); sl_panel.putConstraint(SpringLayout.EAST, lblStatuslabel, 386, SpringLayout.WEST, panelBasic); panelBasic.add(lblStatuslabel); addServer = new JButton("Add server"); sl_panel.putConstraint(SpringLayout.NORTH, addServer, 0, SpringLayout.NORTH, btnStartServer); sl_panel.putConstraint(SpringLayout.WEST, addServer, 6, SpringLayout.EAST, btnStopServer); panelBasic.add(addServer); addServer.addActionListener(this); backup = new JButton("Backup"); sl_panel.putConstraint(SpringLayout.NORTH, backup, 0, SpringLayout.NORTH, btnStartServer); sl_panel.putConstraint(SpringLayout.WEST, backup, 6, SpringLayout.EAST, addServer); panelBasic.add(backup); backup.addActionListener(this); JPanel controlServers = new JPanel(); tabbedPane.addTab("Control servers", null, controlServers, null); SpringLayout sl_panel_1 = new SpringLayout(); controlServers.setLayout(sl_panel_1); targetServer = new JComboBox(); sl_panel_1.putConstraint(SpringLayout.NORTH, targetServer, 10, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.SOUTH, targetServer, 30, SpringLayout.NORTH, controlServers); controlServers.add(targetServer); targetPlayer = new JComboBox(); sl_panel_1.putConstraint(SpringLayout.NORTH, targetPlayer, 6, SpringLayout.SOUTH, targetServer); sl_panel_1.putConstraint(SpringLayout.SOUTH, targetPlayer, 26, SpringLayout.SOUTH, targetServer); targetPlayer.setEditable(true); controlServers.add(targetPlayer); btnKick = new JButton("Kick"); sl_panel_1.putConstraint(SpringLayout.NORTH, btnKick, 9, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.WEST, btnKick, 6, SpringLayout.EAST, targetServer); sl_panel_1.putConstraint(SpringLayout.SOUTH, btnKick, 32, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.EAST, btnKick, 84, SpringLayout.EAST, targetServer); controlServers.add(btnKick); btnKick.addActionListener(this); btnBan = new JButton("Ban"); sl_panel_1.putConstraint(SpringLayout.NORTH, btnBan, 35, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.WEST, btnBan, 6, SpringLayout.EAST, targetPlayer); sl_panel_1.putConstraint(SpringLayout.EAST, btnBan, 84, SpringLayout.EAST, targetPlayer); controlServers.add(btnBan); btnBan.addActionListener(this); btnOp = new JButton("OP"); sl_panel_1.putConstraint(SpringLayout.NORTH, btnOp, 9, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.WEST, btnOp, 287, SpringLayout.WEST, controlServers); sl_panel_1.putConstraint(SpringLayout.SOUTH, btnOp, 32, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.EAST, btnOp, 370, SpringLayout.WEST, controlServers); controlServers.add(btnOp); btnOp.addActionListener(this); btnDeop = new JButton("DEOP"); sl_panel_1.putConstraint(SpringLayout.WEST, btnDeop, 287, SpringLayout.WEST, controlServers); sl_panel_1.putConstraint(SpringLayout.NORTH, btnDeop, 35, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.EAST, btnDeop, 370, SpringLayout.WEST, controlServers); controlServers.add(btnDeop); btnDeop.addActionListener(this); JLabel lblTargetServer = new JLabel("Target server"); sl_panel_1.putConstraint(SpringLayout.WEST, targetServer, 6, SpringLayout.EAST, lblTargetServer); sl_panel_1.putConstraint(SpringLayout.EAST, targetServer, 121, SpringLayout.EAST, lblTargetServer); sl_panel_1.putConstraint(SpringLayout.NORTH, lblTargetServer, 10, SpringLayout.NORTH, controlServers); sl_panel_1.putConstraint(SpringLayout.WEST, lblTargetServer, 10, SpringLayout.WEST, controlServers); controlServers.add(lblTargetServer); JLabel lblTargetPlayer = new JLabel("Target player"); sl_panel_1.putConstraint(SpringLayout.WEST, targetPlayer, 7, SpringLayout.EAST, lblTargetPlayer); sl_panel_1.putConstraint(SpringLayout.EAST, targetPlayer, 122, SpringLayout.EAST, lblTargetPlayer); sl_panel_1.putConstraint(SpringLayout.NORTH, lblTargetPlayer, 12, SpringLayout.SOUTH, lblTargetServer); sl_panel_1.putConstraint(SpringLayout.WEST, lblTargetPlayer, 0, SpringLayout.WEST, lblTargetServer); controlServers.add(lblTargetPlayer); btnCustomCommand = new JButton("Custom command"); sl_panel_1.putConstraint(SpringLayout.WEST, btnCustomCommand, 250, SpringLayout.WEST, controlServers); sl_panel_1.putConstraint(SpringLayout.EAST, btnCustomCommand, 0, SpringLayout.EAST, btnOp); controlServers.add(btnCustomCommand); btnCustomCommand.addActionListener(this); customCommand = new JTextField(); sl_panel_1.putConstraint(SpringLayout.WEST, customCommand, 10, SpringLayout.WEST, controlServers); sl_panel_1.putConstraint(SpringLayout.EAST, customCommand, -6, SpringLayout.WEST, btnCustomCommand); sl_panel_1.putConstraint(SpringLayout.NORTH, btnCustomCommand, -1, SpringLayout.NORTH, customCommand); controlServers.add(customCommand); customCommand.setColumns(10); btnSaveserver = new JButton("Save server"); sl_panel_1.putConstraint(SpringLayout.NORTH, customCommand, 6, SpringLayout.SOUTH, btnSaveserver); sl_panel_1.putConstraint(SpringLayout.NORTH, btnSaveserver, 6, SpringLayout.SOUTH, btnBan); sl_panel_1.putConstraint(SpringLayout.WEST, btnSaveserver, 0, SpringLayout.WEST, btnKick); sl_panel_1.putConstraint(SpringLayout.EAST, btnSaveserver, 91, SpringLayout.WEST, btnKick); controlServers.add(btnSaveserver); btnSaveserver.addActionListener(this); btnReload = new JButton("Reload"); sl_panel_1.putConstraint(SpringLayout.NORTH, btnReload, 6, SpringLayout.SOUTH, btnDeop); sl_panel_1.putConstraint(SpringLayout.WEST, btnReload, 10, SpringLayout.WEST, btnDeop); sl_panel_1.putConstraint(SpringLayout.EAST, btnReload, 0, SpringLayout.EAST, btnOp); controlServers.add(btnReload); btnReload.addActionListener(this); btnServerConsoles = new JButton("View server consoles"); sl_panel_1.putConstraint(SpringLayout.NORTH, btnServerConsoles, 0, SpringLayout.NORTH, btnSaveserver); sl_panel_1.putConstraint(SpringLayout.WEST, btnServerConsoles, 0, SpringLayout.WEST, lblTargetServer); sl_panel_1.putConstraint(SpringLayout.EAST, btnServerConsoles, 0, SpringLayout.EAST, targetServer); controlServers.add(btnServerConsoles); btnServerConsoles.addActionListener(this); JPanel panel_2 = new JPanel(); tabbedPane.addTab("Servers", null, panel_2, null); SpringLayout sl_panel_2 = new SpringLayout(); panel_2.setLayout(sl_panel_2); JTabbedPane tabbedPane_1 = new JTabbedPane(JTabbedPane.TOP); sl_panel_2.putConstraint(SpringLayout.NORTH, tabbedPane_1, 0, SpringLayout.NORTH, panel_2); sl_panel_2.putConstraint(SpringLayout.WEST, tabbedPane_1, 0, SpringLayout.WEST, panel_2); sl_panel_2.putConstraint(SpringLayout.SOUTH, tabbedPane_1, 150, SpringLayout.NORTH, panel_2); sl_panel_2.putConstraint(SpringLayout.EAST, tabbedPane_1, 396, SpringLayout.WEST, panel_2); panel_2.add(tabbedPane_1); this.serversPane = tabbedPane_1; } public void addServer(String name, Server server) { JPanel panel = new JPanel(); this.serversPane.addTab(name, null, panel, null); SpringLayout sl_panel_3 = new SpringLayout(); panel.setLayout(sl_panel_3); JLabel lblServerType = new JLabel("Server type"); sl_panel_3.putConstraint(SpringLayout.NORTH, lblServerType, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.WEST, lblServerType, 10, SpringLayout.WEST, panel); sl_panel_3.putConstraint(SpringLayout.SOUTH, lblServerType, 30, SpringLayout.NORTH, panel); panel.add(lblServerType); JComboBox comboBox_3 = new JComboBox<>(ServerType.getTypeNames()); sl_panel_3.putConstraint(SpringLayout.NORTH, comboBox_3, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.WEST, comboBox_3, 16, SpringLayout.EAST, lblServerType); panel.add(comboBox_3); JLabel lblServerVersion = new JLabel("Server version"); sl_panel_3.putConstraint(SpringLayout.NORTH, lblServerVersion, 6, SpringLayout.SOUTH, lblServerType); sl_panel_3.putConstraint(SpringLayout.WEST, lblServerVersion, 10, SpringLayout.WEST, panel); sl_panel_3.putConstraint(SpringLayout.SOUTH, lblServerVersion, 26, SpringLayout.SOUTH, lblServerType); panel.add(lblServerVersion); JComboBox comboBox_4 = new JComboBox<>(ServerType.getServerTypes().get(0).getVersions()); sl_panel_3.putConstraint(SpringLayout.NORTH, comboBox_4, 6, SpringLayout.SOUTH, comboBox_3); sl_panel_3.putConstraint(SpringLayout.WEST, comboBox_4, 0, SpringLayout.WEST, comboBox_3); panel.add(comboBox_4); JLabel lblMaxRam = new JLabel("Max ram"); sl_panel_3.putConstraint(SpringLayout.EAST, comboBox_3, -13, SpringLayout.WEST, lblMaxRam); sl_panel_3.putConstraint(SpringLayout.NORTH, lblMaxRam, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.SOUTH, lblMaxRam, -92, SpringLayout.SOUTH, panel); sl_panel_3.putConstraint(SpringLayout.EAST, lblMaxRam, -111, SpringLayout.EAST, panel); panel.add(lblMaxRam); JComboBox comboBox_5 = new JComboBox<>(Server.getRamList()); sl_panel_3.putConstraint(SpringLayout.NORTH, comboBox_5, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.WEST, comboBox_5, 6, SpringLayout.EAST, lblMaxRam); sl_panel_3.putConstraint(SpringLayout.EAST, comboBox_5, 86, SpringLayout.EAST, lblMaxRam); panel.add(comboBox_5); JCheckBox chckbxEnabled = new JCheckBox("Enabled"); sl_panel_3.putConstraint(SpringLayout.NORTH, chckbxEnabled, 6, SpringLayout.SOUTH, lblServerVersion); sl_panel_3.putConstraint(SpringLayout.EAST, chckbxEnabled, 0, SpringLayout.EAST, lblServerType); panel.add(chckbxEnabled); JButton btnRemoveServer = new JButton("Remove server"); sl_panel_3.putConstraint(SpringLayout.NORTH, btnRemoveServer, 5, SpringLayout.SOUTH, lblMaxRam); sl_panel_3.putConstraint(SpringLayout.SOUTH, btnRemoveServer, -64, SpringLayout.SOUTH, panel); sl_panel_3.putConstraint(SpringLayout.SOUTH, comboBox_5, -5, SpringLayout.NORTH, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.EAST, comboBox_4, -13, SpringLayout.WEST, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.WEST, btnRemoveServer, 239, SpringLayout.WEST, panel); sl_panel_3.putConstraint(SpringLayout.EAST, btnRemoveServer, 0, SpringLayout.EAST, comboBox_5); panel.add(btnRemoveServer); JLabel lblDirectory = new JLabel("Directory"); sl_panel_3.putConstraint(SpringLayout.NORTH, lblDirectory, 1, SpringLayout.NORTH, chckbxEnabled); sl_panel_3.putConstraint(SpringLayout.SOUTH, lblDirectory, 0, SpringLayout.SOUTH, chckbxEnabled); panel.add(lblDirectory); JTextField textField_1 = new JTextField(); sl_panel_3.putConstraint(SpringLayout.NORTH, textField_1, 4, SpringLayout.SOUTH, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.SOUTH, textField_1, -37, SpringLayout.SOUTH, panel); sl_panel_3.putConstraint(SpringLayout.EAST, lblDirectory, -6, SpringLayout.WEST, textField_1); sl_panel_3.putConstraint(SpringLayout.WEST, textField_1, 130, SpringLayout.WEST, panel); panel.add(textField_1); textField_1.setColumns(10); JButton btnBrowse = new JButton("Browse"); sl_panel_3.putConstraint(SpringLayout.EAST, textField_1, -6, SpringLayout.WEST, btnBrowse); sl_panel_3.putConstraint(SpringLayout.NORTH, btnBrowse, 3, SpringLayout.SOUTH, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.WEST, btnBrowse, 293, SpringLayout.WEST, panel); sl_panel_3.putConstraint(SpringLayout.EAST, btnBrowse, 0, SpringLayout.EAST, comboBox_5); panel.add(btnBrowse); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == chckbxmntmRunInBackground) { this.runInBackground = chckbxmntmRunInBackground.isSelected(); } else if (e.getSource() == chckbxmntmDelayStartup) { if (chckbxmntmDelayStartup.isSelected()) { this.delayStartup = Integer.parseInt(JOptionPane.showInputDialog("Seconds to delay: ")); } else { this.delayStartup = 0; } } else if (e.getSource() == chckbxmntmDownloadJars) { this.downloadJars = chckbxmntmDownloadJars.isSelected(); } else if (e.getSource() == mntmErrors) { goToURL("https://knarcraft.net/Bungeeminecraftserverlauncher/Info/"); } else if (e.getSource() == mntmSetup) { JOptionPane.showMessageDialog(null, setupText, "Setup", JOptionPane.INFORMATION_MESSAGE); } else if (e.getSource() == mntmManualUpdate) { goToURL("https://knarcraft.net/Downloads/Bungeeminecraftserverlauncher/"); } else if (e.getSource() == mntmRunInBackground) { JOptionPane.showMessageDialog(null, runInBackgroundText, "Run in background", JOptionPane.INFORMATION_MESSAGE); } else if (e.getSource() == mntmDelayStartup) { JOptionPane.showMessageDialog(null, delayStartupText, "Run in background", JOptionPane.INFORMATION_MESSAGE); } else if (e.getSource() == mntmDownloadJars) { JOptionPane.showMessageDialog(null, downloadJarsText, "Run in background", JOptionPane.INFORMATION_MESSAGE); } else if (e.getSource() == mntmAbout) { JOptionPane.showMessageDialog(null, aboutText, "Run in background", JOptionPane.INFORMATION_MESSAGE); } else if (e.getSource() == mntmStory) { goToURL("https://knarcraft.net/Bungeeminecraftserverlauncher/Story/"); } else if (e.getSource() == btnStartServer) { Server.startServers(); } else if (e.getSource() == btnStopServer) { try { setStatus("Servers are stopping"); Server.stop(); setStatus("Servers are stopped"); } catch (IOException e1) { JOptionPane.showMessageDialog(null, "Could not stop server", "Error", JOptionPane.ERROR_MESSAGE); } } else if (e.getSource() == addServer) { String serverName = JOptionPane.showInputDialog("Name of server: "); new Server(serverName, this); } else if (e.getSource() == backup) { } /* //Basic controls backup, addProfile, delProfile; private JComboBox profiles; private JLabel lblStatuslabel; //Server controls private JComboBox targetServer, targetPlayer; private JButton btnKick, btnBan, btnOp, btnDeop, btnCustomCommand, btnSaveserver, btnReload, btnServerConsoles; private JTextField customCommand;*/ } private static void goToURL(String url) { java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); try { desktop.browse(new URI(url)); } catch (URISyntaxException | IOException e1) { e1.printStackTrace(); } } private void loadMessages() { try (Scanner in = new Scanner(new File("config/menumsg.csv"))) { while (in.hasNextLine()) { String[] line = in.nextLine().split("="); String content = line[1].replaceAll("_BREAK_",System.getProperty("line.separator")); switch (line[0]) { case "setup": setupText = content; break; case "runinbk": runInBackgroundText = content; break; case "delaystartup": delayStartupText = content; break; case "downloadjars": downloadJarsText = content; break; case "about": aboutText = content; } } } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(null, "Messages file could not be read", "Setup", JOptionPane.ERROR_MESSAGE); } } }