/* * ATLauncher - https://github.com/ATLauncher/ATLauncher * Copyright (C) 2013 ATLauncher * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.atlauncher.gui.dialogs; import com.atlauncher.App; import com.atlauncher.data.Language; import com.atlauncher.data.MinecraftServer; import com.atlauncher.utils.MCQuery; import com.atlauncher.utils.Utils; import de.zh32.pingtest.QueryVersion; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AddEditServerForCheckerDialog extends JDialog implements ActionListener { /** * Auto generated serial. */ private static final long serialVersionUID = 3385411077046354453L; private JPanel middle; private JPanel bottom; private JLabel serverNameLabel; private JTextField serverName; private JLabel serverHostLabel; private JTextField serverHost; private JLabel serverPortLabel; private JTextField serverPort; private JButton addEditButton; private JButton closeButton; private MinecraftServer serverEditing = null; public AddEditServerForCheckerDialog(MinecraftServer minecraftServer) { super(null, Language.INSTANCE.localize((minecraftServer == null ? "tools.addserver" : "tools.editserver")), ModalityType.APPLICATION_MODAL); setSize(300, 200); setLocationRelativeTo(null); setLayout(new BorderLayout()); setIconImage(Utils.getImage("/assets/image/Icon.png")); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setResizable(false); setupComponents(); if (minecraftServer != null) { this.serverEditing = minecraftServer; addEditButton.setText(Language.INSTANCE.localize("common.edit")); serverName.setText(minecraftServer.getName()); serverHost.setText(minecraftServer.getHost()); serverPort.setText(minecraftServer.getPort() + ""); } setVisible(true); } private void setupComponents() { // Middle Panel Stuff middle = new JPanel(); middle.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); // Server Name gbc.gridx = 0; gbc.gridy = 0; gbc.anchor = GridBagConstraints.BASELINE_TRAILING; serverNameLabel = new JLabel(Language.INSTANCE.localize("tools.serverchecker.name") + ": "); middle.add(serverNameLabel, gbc); gbc.gridx++; gbc.anchor = GridBagConstraints.BASELINE_LEADING; serverName = new JTextField(16); middle.add(serverName, gbc); // Server Host/IP gbc.gridx = 0; gbc.gridy++; gbc.anchor = GridBagConstraints.BASELINE_TRAILING; serverHostLabel = new JLabel(Language.INSTANCE.localize("tools.serverchecker.ip") + ": "); middle.add(serverHostLabel, gbc); gbc.gridx++; gbc.anchor = GridBagConstraints.BASELINE_LEADING; serverHost = new JTextField(16); middle.add(serverHost, gbc); // Server Port gbc.gridx = 0; gbc.gridy++; gbc.anchor = GridBagConstraints.BASELINE_TRAILING; serverPortLabel = new JLabel(Language.INSTANCE.localize("tools.serverchecker.port") + ": "); middle.add(serverPortLabel, gbc); gbc.gridx++; gbc.anchor = GridBagConstraints.BASELINE_LEADING; serverPort = new JTextField(16); serverPort.setText("25565"); middle.add(serverPort, gbc); // Bottom Panel Stuff bottom = new JPanel(); bottom.setLayout(new FlowLayout()); addEditButton = new JButton(Language.INSTANCE.localize("common.add")); addEditButton.addActionListener(this); bottom.add(addEditButton); closeButton = new JButton(Language.INSTANCE.localize("common.close")); closeButton.addActionListener(this); bottom.add(closeButton); add(middle, BorderLayout.CENTER); add(bottom, BorderLayout.SOUTH); } public boolean isValidPort() { return !(serverPort.getText().isEmpty() || Integer.parseInt(serverPort.getText().replaceAll("[^0-9]", "")) < 1 || Integer.parseInt(serverPort.getText().replaceAll("[^0-9]", "")) > 65535); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == addEditButton) { if (serverName.getText().isEmpty() || serverHost.getText().isEmpty() || serverPort.getText().isEmpty()) { JOptionPane.showMessageDialog(App.settings.getParent(), Language.INSTANCE.localize("tools" + "" + ".serverchecker.notallfields"), Language.INSTANCE.localize("common.error"), JOptionPane.ERROR_MESSAGE); } else if (!isValidPort()) { JOptionPane.showMessageDialog(App.settings.getParent(), Language.INSTANCE.localize("settings" + "" + ".proxyportinvalid"), Language.INSTANCE.localize("common.error"), JOptionPane .ERROR_MESSAGE); } else { String name = serverName.getText(); final String host = serverHost.getText(); final int port = Integer.parseInt(serverPort.getText().replaceAll("[^0-9]", "")); QueryVersion qv = null; final ProgressDialog dialog = new ProgressDialog(Language.INSTANCE.localize("tools.serverchecker" + "" + ".checkingserver"), 0, Language.INSTANCE.localize("tools.serverchecker.checkingserver"), "Cancelled Server Check!"); dialog.addThread(new Thread() { @Override public void run() { dialog.setReturnValue(MCQuery.getMinecraftServerQueryVersion(host, port)); dialog.close(); } }); dialog.start(); if (dialog.getReturnValue() != null) { qv = (QueryVersion) dialog.getReturnValue(); } if (qv == null) { JOptionPane.showMessageDialog(App.settings.getParent(), Language.INSTANCE.localize("tools" + "" + ".serverchecker.couldntconnect"), Language.INSTANCE.localize("common.error"), JOptionPane.ERROR_MESSAGE); } else { App.TOASTER.pop(Language.INSTANCE.localize((this.serverEditing == null ? "tools" + "" + ".serverchecker.serveradded" : "tools.serverchecker.serveredited"))); if (this.serverEditing == null) { App.settings.addCheckingServer(new MinecraftServer(name, host, port, qv)); } else { this.serverEditing.setName(name); this.serverEditing.setHost(host); this.serverEditing.setPort(port); this.serverEditing.setQueryVersion(qv); App.settings.saveCheckingServers(); } close(); } } } else if (e.getSource() == closeButton) { close(); } } public void close() { setVisible(false); dispose(); } }