package net.knarcraft.serverlauncher.profile; import net.knarcraft.serverlauncher.server.Server; import net.knarcraft.serverlauncher.server.ServerType; import net.knarcraft.serverlauncher.userinterface.GUI; import net.knarcraft.serverlauncher.userinterface.ServerTab; import javax.swing.*; import java.io.IOException; import java.util.ArrayList; /** * Contains all user settings * * @author Kristian Knarvik * @version 0.0.0.1 * @since 0.0.0.1 */ public class Profile { private static final ArrayList profiles = new ArrayList<>(); private final ArrayList collections; private final String name; private boolean runInBackground; private int delayStartup; private boolean downloadJars; private String vanillaVersion; private String snapshotVersion; private String spongeVanillaVersion; private String bungeeVersion; private Profile(String name) { this.collections = new ArrayList<>(); this.name = name; this.runInBackground = false; this.delayStartup = 0; this.downloadJars = false; profiles.add(this); } public void addCollection(String name) { if (!collectionExists(name)) { collections.add(new Collection(name)); } else { JOptionPane.showMessageDialog(null, "A server name must my unique and not empty.", "Error", JOptionPane.ERROR_MESSAGE); } } public void removeCollection(int i) { this.collections.remove(i); } private Collection getCollection(String name) { for (Collection collection : this.collections) { if (collection.getName().equals(name)) { return collection; } } return null; } public boolean collectionExists(String name) { for (Collection collection : this.collections) { if (collection.getName().equals(name)) { return true; } } return false; } public ArrayList getCollections() { return this.collections; } public static void addProfile(String name) { if (name == null) { //If a user cancels or crosses out window return; } if (name.equals("")) { JOptionPane.showMessageDialog(null, "Profile name can't be blank.", "Error", JOptionPane.ERROR_MESSAGE); return; } for (Profile profile : profiles) { if (profile.name.equals(name)) { JOptionPane.showMessageDialog(null, "There is already a profile with this name.", "Error", JOptionPane.ERROR_MESSAGE); return; } } new Profile(name); GUI.getGUI().addProfile(name); } public static Profile getProfile(String name) { for (Profile profile : profiles) { if (profile.name.equals(name)) { return profile; } } return null; } public static void deleteProfile(String name) { if (profiles.size() > 1) { for (int i = 0; i < profiles.size(); i++) { if (profiles.get(i).name.equals((name))) { profiles.remove(i); GUI.getGUI().removeProfile(i); } } } } public void setRunInBackground(boolean value) { this.runInBackground = value; } public void setDelayStartup(int value) { if (value >= 0) { this.delayStartup = value; } } public void setDownloadJars(boolean value) { this.downloadJars = value; } public void sendCommand(String serverName, String command) { if (serverName.equals("All")) { for (Collection collection : this.collections) { try { collection.getServer().sendCommand(command); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Server " + collection.getServer().getName() + " caused an exception.", "Error", JOptionPane.ERROR_MESSAGE); } } } else { Server target = getCollection(serverName).getServer(); if (target != null) { try { target.sendCommand(command); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Server " + target.getName() + " caused an exception.", "Error", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(null, "Server " + serverName + " is invalid.", "Error", JOptionPane.ERROR_MESSAGE); } } } public void setVersion(String type, String version) { if (!version.equals("")) { switch (type) { case "Vanilla": this.vanillaVersion = version; break; case "Snapshot": this.snapshotVersion = version; break; case "SpongeVanilla": this.spongeVanillaVersion = version; break; case "Bungee": this.bungeeVersion = version; } } } public String getVersion(String type) { switch (type) { case "Vanilla": return this.vanillaVersion; case "Snapshot": return this.snapshotVersion; case "SpongeVanilla": return this.spongeVanillaVersion; case "Bungee": return this.bungeeVersion; default: return ""; } } public void save() { for (int i = 0; i < this.collections.size(); i++) { Server server = collections.get(i).getServer(); ServerTab serverTab = collections.get(i).getServerTab(); server.setPath(serverTab.getPath()); server.setMaxRam(serverTab.getMaxRam()); server.setType(ServerType.getByName(serverTab.getType())); server.setServerVersion(serverTab.getVersion()); server.toggle(serverTab.enabled()); } } }