From be32c7e3a1fc57b5142adffe564d4332d5831374 Mon Sep 17 00:00:00 2001 From: Kristian Knarvik Date: Tue, 30 Jan 2018 19:35:42 +0100 Subject: [PATCH] Adds the not yet implemented server consoles --- config/servertypes.csv | 2 +- src/Main.java | 2 ++ .../serverlauncher/userinterface/Console.java | 28 +++++++++++++++ .../serverlauncher/userinterface/GUI.java | 11 +++++- .../userinterface/ServerConsoles.java | 36 +++++++++++++++++++ 5 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 src/net/knarcraft/serverlauncher/userinterface/Console.java create mode 100644 src/net/knarcraft/serverlauncher/userinterface/ServerConsoles.java diff --git a/config/servertypes.csv b/config/servertypes.csv index f5ded52..c39638c 100644 --- a/config/servertypes.csv +++ b/config/servertypes.csv @@ -1,6 +1,6 @@ Vanilla;Latest,1.12,1.11.2,1.10.2,1.9.4,1.8.9,1.7.10,1.6.4,1.5.2,1.4.7,1.3.2,1.2.5;https://launchermeta.mojang.com/mc/game/version_manifest.json;"release":";";https://s3.amazonaws.com/Minecraft.Download/versions/;/minecraft_server. Snapshot;Latest;https://launchermeta.mojang.com/mc/game/version_manifest.json;"snapshot":";";https://s3.amazonaws.com/Minecraft.Download/versions/;/minecraft_server. -SpongeVanilla;1.11.2,1.10.2,1.8.9;https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/;/spongevanilla- +SpongeVanilla;1.12.2,1.11.2,1.10.2,1.8.9;https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/;/spongevanilla- Bungee;Latest;https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/;Artifacts of BungeeCord #; ;http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar; Spigot;1.12.2,1.11.2,1.10.2,1.9.4,1.9,1.8.8,1.7.10,1.6.4,1.5.2,1.4.7;https://knarcraft.net/Api/Download/bungeeminecraftserverlauncher/jars/Spigot/ MCPCplus;1.6.4,1.6.2,1.5.2,1.4.7;https://knarcraft.net/Api/Download/bungeeminecraftserverlauncher/jars/MCPC+/ diff --git a/src/Main.java b/src/Main.java index af04db5..9645390 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,6 +1,7 @@ import net.knarcraft.serverlauncher.profile.Profile; import net.knarcraft.serverlauncher.server.ServerType; import net.knarcraft.serverlauncher.userinterface.GUI; +import net.knarcraft.serverlauncher.userinterface.ServerConsoles; import javax.naming.ConfigurationException; import java.awt.*; @@ -23,6 +24,7 @@ class Main { try { setup(); new GUI(); + new ServerConsoles(); Profile.addProfile("Default"); //TODO: replace with profiles loading generating a default profile if empty. diff --git a/src/net/knarcraft/serverlauncher/userinterface/Console.java b/src/net/knarcraft/serverlauncher/userinterface/Console.java new file mode 100644 index 0000000..295fe96 --- /dev/null +++ b/src/net/knarcraft/serverlauncher/userinterface/Console.java @@ -0,0 +1,28 @@ +package net.knarcraft.serverlauncher.userinterface; + +import javax.swing.*; +import java.awt.*; + +class Console { + private JTextField textInput; + private JTextArea textOutput; + + void output(String text) { + this.textOutput.setText(text); + } + + Console(JTabbedPane tab, String name) { + JPanel panel = new JPanel(); + tab.addTab(name, null, panel, null); + panel.setLayout(new BorderLayout(0, 0)); + + textInput = new JTextField(); + panel.add(textInput, BorderLayout.SOUTH); + textInput.setColumns(10); + + textOutput = new JTextArea(); + JScrollPane scroll = new JScrollPane(textOutput); + panel.add(scroll, BorderLayout.CENTER); + textOutput.setEditable(false); + } +} diff --git a/src/net/knarcraft/serverlauncher/userinterface/GUI.java b/src/net/knarcraft/serverlauncher/userinterface/GUI.java index c8ac54e..9bb8efd 100644 --- a/src/net/knarcraft/serverlauncher/userinterface/GUI.java +++ b/src/net/knarcraft/serverlauncher/userinterface/GUI.java @@ -15,6 +15,7 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Objects; import java.util.Scanner; +import java.util.concurrent.Executors; /** * Generates a GUI @@ -54,6 +55,8 @@ public class GUI implements ActionListener { private final ArrayList serverTabs = new ArrayList<>(); + //TODO: Update target server list with the list of servers when adding or removing a server. + /** * Create the application. */ @@ -379,6 +382,7 @@ public class GUI implements ActionListener { panel_2.add(tabbedPane_1); this.serversPane = tabbedPane_1; + tabbedPane_1.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); frame.setVisible(true); } @@ -422,7 +426,12 @@ public class GUI implements ActionListener { goToURL("https://knarcraft.net/Bungeeminecraftserverlauncher/Story/"); } else if (e.getSource() == btnStartServer) { this.save(); - Server.startServers(); + Executors.newSingleThreadExecutor().execute(new Runnable() { + @Override + public void run() { + Server.startServers(); + } + }); } else if (e.getSource() == btnStopServer) { stop(); } else if (e.getSource() == addServer) { diff --git a/src/net/knarcraft/serverlauncher/userinterface/ServerConsoles.java b/src/net/knarcraft/serverlauncher/userinterface/ServerConsoles.java new file mode 100644 index 0000000..7d9b857 --- /dev/null +++ b/src/net/knarcraft/serverlauncher/userinterface/ServerConsoles.java @@ -0,0 +1,36 @@ +package net.knarcraft.serverlauncher.userinterface; + +import javax.swing.JFrame; +import javax.swing.JTabbedPane; +import java.awt.BorderLayout; + +public class ServerConsoles { + + private static ServerConsoles serverConsoles; + private JFrame frame; + private JTabbedPane consolesTab; + + public ServerConsoles() { + frame = new JFrame(); + frame.setBounds(100, 100, 450, 300); + frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + + consolesTab = new JTabbedPane(JTabbedPane.TOP); + frame.getContentPane().add(consolesTab, BorderLayout.CENTER); + serverConsoles = this; + frame.setVisible(true); + } + + public static ServerConsoles getGUI() { + return serverConsoles; + } + + public void show() { + frame.setVisible(true); + } + + public void addTab(String name) { + new Console(consolesTab, name); + } + +} \ No newline at end of file