diff --git a/files/GUIIcon.png b/files/GUIIcon.png new file mode 100644 index 0000000..1b5f48a Binary files /dev/null and b/files/GUIIcon.png differ diff --git a/src/Main.java b/src/Main.java index 09286cf..7ba204f 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,10 +1,7 @@ import net.knarcraft.serverlauncher.server.*; +import net.knarcraft.serverlauncher.userinterface.GUI; + import javax.naming.ConfigurationException; -/** - * @Version - * @Java - * @Requires - */ //Java 9 required. /** @@ -17,6 +14,8 @@ import javax.naming.ConfigurationException; public class Main { public static void main(String[] args) { setup(); + GUI gui = new GUI(); + } public static void setup() { @@ -27,5 +26,5 @@ public class Main { System.exit(1); } } - // TODO: Add gui + // TODO: Add gui functionality } \ No newline at end of file diff --git a/src/net/knarcraft/serverlauncher/server/Server.java b/src/net/knarcraft/serverlauncher/server/Server.java index 977342f..85e348e 100644 --- a/src/net/knarcraft/serverlauncher/server/Server.java +++ b/src/net/knarcraft/serverlauncher/server/Server.java @@ -16,9 +16,7 @@ import java.util.ArrayList; * @since 0.0.0.1 */ public class Server { - /** - * Available ram sizes. For GUI dropdown - */ + /** Available ram sizes. For GUI dropdown */ private static final String[] ramList = {"512M", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G", "9G", "10G", "11G", "12G", "13G", "14G", "15G", "16G"}; private static ArrayList servers = new ArrayList<>(); @@ -56,6 +54,9 @@ public class Server { } } + /** + * @return A representation of the name of a jarfile. + */ private String getType() { return this.type.getName() + this.serverVersion + ".jar"; } @@ -124,7 +125,6 @@ public class Server { System.out.println("File was not found."); return; } - //Runtime rt = Runtime.getRuntime(); try { ProcessBuilder builder = new ProcessBuilder("java", "-Xmx" + this.maxRam, "-Xms512M", "-Djline.terminal=jline.UnsupportedTerminal", "-Dcom.mojang.eula.agree=true", "-jar", "\"" + this.path + "\\" + this.getType() + "\""); builder.directory(new File(this.path)); diff --git a/src/net/knarcraft/serverlauncher/userinterface/GUI.java b/src/net/knarcraft/serverlauncher/userinterface/GUI.java new file mode 100644 index 0000000..5a8e225 --- /dev/null +++ b/src/net/knarcraft/serverlauncher/userinterface/GUI.java @@ -0,0 +1,96 @@ +package net.knarcraft.serverlauncher.userinterface; + +import javax.swing.*; +import java.awt.*; + +/** + * A class for creating the gui. + * + * @author Kristian Knarvik + * @version 0.0.0.1 + * @since 0.0.0.1 + */ +public class GUI { + public GUI() { + JFrame frame = new JFrame("Minecraft server launcher"); + ImageIcon img = new ImageIcon("files/GUIIcon.png"); + frame.setIconImage(img.getImage()); + frame.setLocation(0,0); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + JMenuBar menu = new JMenuBar(); + + // A menu containing a user's options + JMenu optionsMenu = new JMenu("Options"); + JCheckBoxMenuItem backgroundMode = new JCheckBoxMenuItem("Run in background on exit"); + JCheckBoxMenuItem delayStartup = new JCheckBoxMenuItem("Delay startup"); + JCheckBoxMenuItem downloadJars = new JCheckBoxMenuItem("Download Jars"); + + // A menu containing helpful information + JMenu helpMenu = new JMenu("Help"); + JMenuItem errors = new JMenuItem("Errors"); + JMenuItem setup = new JMenuItem("Setup"); + JMenuItem warning = new JMenuItem("Warning"); + JMenuItem manualUpdate = new JMenuItem("Manual update"); + + // A menu containing various information + JMenu infoMenu = new JMenu("Info"); + JMenu options = new JMenu("Options"); + JMenu about = new JMenu("About"); + JMenuItem backgroundModeInfo = new JMenuItem("Run in background on exit"); + JMenuItem delayStartupInfo = new JMenuItem("Delay Startup"); + JMenuItem downloadJarsInfo = new JMenuItem("Download jars"); + JMenuItem aboutAbout = new JMenuItem("About"); + JMenuItem aboutStory = new JMenuItem("Story"); + + // Connects menu items to each other + optionsMenu.add(backgroundMode); + optionsMenu.add(delayStartup); + optionsMenu.add(downloadJars); + menu.add(optionsMenu); + helpMenu.add(errors); + helpMenu.add(setup); + helpMenu.add(warning); + helpMenu.add(manualUpdate); + menu.add(helpMenu); + options.add(backgroundModeInfo); + options.add(delayStartupInfo); + options.add(downloadJarsInfo); + infoMenu.add(options); + about.add(aboutAbout); + about.add(aboutStory); + infoMenu.add(about); + menu.add(infoMenu); + frame.setJMenuBar(menu); + + JTabbedPane tabs = new JTabbedPane(SwingConstants.TOP); + JPanel panel = new JPanel(); + JLabel basicControls = new JLabel("Basic controls"); + JButton sendStart = new JButton("Start servers"); + JButton sendStop = new JButton("Stop servers"); + + panel.add(basicControls); + panel.add(sendStart); + panel.add(sendStop); + tabs.addTab("Basic controls", null, panel, "Basic server controls"); + frame.add(tabs); + + // TODO: Finish gui + + + frame.setVisible(true); + + + Insets insets = frame.getInsets(); + frame.setSize(450 + 2 * insets.left, 170 + insets.top + insets.bottom); + } + + protected JComponent makeTextPanel(String text) { + JPanel panel = new JPanel(false); + JLabel filler = new JLabel(text); + filler.setHorizontalAlignment(JLabel.CENTER); + panel.setLayout(new GridLayout(1, 1)); + panel.add(filler); + return panel; + } +}