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; /** * Contains all buttons for configuring a server * Does some visual stuff by itself, but otherwise reads boxes and stuff * * @author Kristian Knarvik * @version 0.0.0.1 * @since 0.0.0.1 */ public class ServerTab implements ActionListener { private final JComboBox serverTypes, serverVersions, maxRam; private final JCheckBox chckbxEnabled; private final JButton btnRemoveServer, btnBrowse; private final JTextField directory; public ServerTab(String name) { JPanel panel = new JPanel(); GUI.getGUI().getPane().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); serverTypes = new JComboBox<>(ServerType.getTypeNames()); sl_panel_3.putConstraint(SpringLayout.NORTH, serverTypes, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.WEST, serverTypes, 16, SpringLayout.EAST, lblServerType); panel.add(serverTypes); serverTypes.addActionListener(this); 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); serverVersions = new JComboBox<>(ServerType.getServerTypes().get(0).getVersions()); sl_panel_3.putConstraint(SpringLayout.NORTH, serverVersions, 6, SpringLayout.SOUTH, serverTypes); sl_panel_3.putConstraint(SpringLayout.WEST, serverVersions, 0, SpringLayout.WEST, serverTypes); panel.add(serverVersions); serverVersions.addActionListener(this); JLabel lblMaxRam = new JLabel("Max ram"); sl_panel_3.putConstraint(SpringLayout.EAST, serverTypes, -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); maxRam = new JComboBox<>(Server.getRamList()); sl_panel_3.putConstraint(SpringLayout.NORTH, maxRam, 10, SpringLayout.NORTH, panel); sl_panel_3.putConstraint(SpringLayout.WEST, maxRam, 6, SpringLayout.EAST, lblMaxRam); sl_panel_3.putConstraint(SpringLayout.EAST, maxRam, 86, SpringLayout.EAST, lblMaxRam); panel.add(maxRam); maxRam.addActionListener(this); 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); chckbxEnabled.addActionListener(this); 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, maxRam, -5, SpringLayout.NORTH, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.EAST, serverVersions, -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, maxRam); panel.add(btnRemoveServer); btnRemoveServer.addActionListener(this); 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); directory = new JTextField(); sl_panel_3.putConstraint(SpringLayout.NORTH, directory, 4, SpringLayout.SOUTH, btnRemoveServer); sl_panel_3.putConstraint(SpringLayout.SOUTH, directory, -37, SpringLayout.SOUTH, panel); sl_panel_3.putConstraint(SpringLayout.EAST, lblDirectory, -6, SpringLayout.WEST, directory); sl_panel_3.putConstraint(SpringLayout.WEST, directory, 130, SpringLayout.WEST, panel); panel.add(directory); directory.setColumns(10); directory.addActionListener(this); btnBrowse = new JButton("Browse"); sl_panel_3.putConstraint(SpringLayout.EAST, directory, -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, maxRam); panel.add(btnBrowse); btnBrowse.addActionListener(this); } public String getPath() { return this.directory.getText(); } public String getMaxRam() { Object selected = this.maxRam.getSelectedItem(); if (selected != null) { return selected.toString(); } else { return "512M"; } } public String getType() { Object selected = this.serverTypes.getSelectedItem(); if (selected != null) { return selected.toString(); } else { return "Vanilla"; } } public String getVersion() { Object selected = this.serverVersions.getSelectedItem(); if (selected != null) { return selected.toString(); } else { return "Vanilla"; } } public boolean enabled() { return this.chckbxEnabled.isSelected(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == btnRemoveServer) { GUI.getGUI().removeServer(this); } else if (e.getSource() == btnBrowse) { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new java.io.File("/")); chooser.setDialogTitle("Backup folder"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { directory.setText(chooser.getSelectedFile().toString()); } } else if (e.getSource() == serverTypes) { serverVersions.removeAllItems(); String selectedserverTypes = null; Object selectedType = serverTypes.getSelectedItem(); if (selectedType != null) { selectedserverTypes = selectedType.toString(); } if (selectedserverTypes != null) { if (selectedserverTypes.equals("Custom")) { serverVersions.setEditable(true); } else { serverVersions.setEditable(false); ServerType current = null; for (ServerType servertype : ServerType.getServerTypes()) { if (servertype.getName().equals(selectedserverTypes)) { current = servertype; } } if (current != null) { for (String version : current.getVersions()) { serverVersions.addItem(version); } } } } } } }