200 lines
5.2 KiB
Java
200 lines
5.2 KiB
Java
/*
|
|
* Copyright (C) 2004-2014 L2J Server
|
|
*
|
|
* This file is part of L2J Server.
|
|
*
|
|
* L2J Server 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.
|
|
*
|
|
* L2J Server 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.l2jserver.tools.gsregistering;
|
|
|
|
import java.awt.GridBagConstraints;
|
|
import java.awt.GridBagLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.Map;
|
|
import java.util.ResourceBundle;
|
|
|
|
import javax.swing.JButton;
|
|
import javax.swing.JComboBox;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JFileChooser;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JTextPane;
|
|
import javax.swing.WindowConstants;
|
|
import javax.swing.filechooser.FileFilter;
|
|
|
|
import com.l2jserver.loginserver.GameServerTable;
|
|
|
|
/**
|
|
* @author KenM
|
|
*/
|
|
public class RegisterDialog extends JDialog implements ActionListener
|
|
{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private final ResourceBundle _bundle;
|
|
private final JComboBox<ComboServer> _combo;
|
|
private final GUserInterface _owner;
|
|
|
|
public RegisterDialog(final GUserInterface owner)
|
|
{
|
|
super(owner.getFrame(), true);
|
|
_owner = owner;
|
|
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
|
_bundle = owner.getBundle();
|
|
setTitle(_bundle.getString("registerGS"));
|
|
setResizable(false);
|
|
setLayout(new GridBagLayout());
|
|
GridBagConstraints cons = new GridBagConstraints();
|
|
cons.weightx = 0.5;
|
|
cons.weighty = 0.5;
|
|
cons.gridx = 0;
|
|
cons.gridy = 0;
|
|
cons.fill = GridBagConstraints.BOTH;
|
|
|
|
final JLabel label = new JLabel(_bundle.getString("serverName"));
|
|
this.add(label, cons);
|
|
|
|
_combo = new JComboBox<>();
|
|
_combo.setEditable(false);
|
|
for (Map.Entry<Integer, String> entry : GameServerTable.getInstance().getServerNames().entrySet())
|
|
{
|
|
if (!GameServerTable.getInstance().hasRegisteredGameServerOnId(entry.getKey()))
|
|
{
|
|
_combo.addItem(new ComboServer(entry.getKey(), entry.getValue()));
|
|
}
|
|
}
|
|
cons.gridx = 1;
|
|
cons.gridy = 0;
|
|
this.add(_combo, cons);
|
|
|
|
cons.gridx = 0;
|
|
cons.gridy = 1;
|
|
cons.gridwidth = 2;
|
|
JTextPane textPane = new JTextPane();
|
|
textPane.setText(_bundle.getString("saveHexId"));
|
|
textPane.setEditable(false);
|
|
textPane.setBackground(label.getBackground());
|
|
this.add(textPane, cons);
|
|
cons.gridwidth = 1;
|
|
|
|
JButton btnSave = new JButton(_bundle.getString("save"));
|
|
btnSave.setActionCommand("save");
|
|
btnSave.addActionListener(this);
|
|
cons.gridx = 0;
|
|
cons.gridy = 2;
|
|
this.add(btnSave, cons);
|
|
|
|
JButton btnCancel = new JButton(_bundle.getString("cancel"));
|
|
btnCancel.setActionCommand("cancel");
|
|
btnCancel.addActionListener(this);
|
|
cons.gridx = 1;
|
|
cons.gridy = 2;
|
|
this.add(btnCancel, cons);
|
|
|
|
final double leftSize = Math.max(label.getPreferredSize().getWidth(), btnSave.getPreferredSize().getWidth());
|
|
final double rightSize = Math.max(_combo.getPreferredSize().getWidth(), btnCancel.getPreferredSize().getWidth());
|
|
|
|
final double height = _combo.getPreferredSize().getHeight() + (4 * textPane.getPreferredSize().getHeight()) + btnSave.getPreferredSize().getHeight();
|
|
this.setSize((int) (leftSize + rightSize + 30), (int) (height + 20));
|
|
|
|
setLocationRelativeTo(owner.getFrame());
|
|
}
|
|
|
|
class ComboServer
|
|
{
|
|
private final int _id;
|
|
private final String _name;
|
|
|
|
public ComboServer(int id, String name)
|
|
{
|
|
_id = id;
|
|
_name = name;
|
|
}
|
|
|
|
/**
|
|
* @return Returns the id.
|
|
*/
|
|
public int getId()
|
|
{
|
|
return _id;
|
|
}
|
|
|
|
/**
|
|
* @return Returns the name.
|
|
*/
|
|
public String getName()
|
|
{
|
|
return _name;
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return getName();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e)
|
|
{
|
|
String cmd = e.getActionCommand();
|
|
|
|
if (cmd.equals("save"))
|
|
{
|
|
ComboServer server = (ComboServer) _combo.getSelectedItem();
|
|
int gsId = server.getId();
|
|
|
|
JFileChooser fc = new JFileChooser();
|
|
// fc.setS
|
|
fc.setDialogTitle(_bundle.getString("hexidDest"));
|
|
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
|
fc.setFileFilter(new FileFilter()
|
|
{
|
|
|
|
@Override
|
|
public boolean accept(File f)
|
|
{
|
|
return f.isDirectory();
|
|
}
|
|
|
|
@Override
|
|
public String getDescription()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
});
|
|
fc.showOpenDialog(this);
|
|
|
|
try
|
|
{
|
|
BaseGameServerRegister.registerGameServer(gsId, fc.getSelectedFile().getAbsolutePath());
|
|
_owner.refreshAsync();
|
|
setVisible(false);
|
|
}
|
|
catch (IOException e1)
|
|
{
|
|
_owner.showError(_bundle.getString("ioErrorRegister"), e1);
|
|
}
|
|
}
|
|
else if (cmd.equals("cancel"))
|
|
{
|
|
setVisible(false);
|
|
}
|
|
}
|
|
}
|