/**
*
*/
package com.aionemu.packetsamurai.gui.logrepo;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.aionemu.packetsamurai.PacketSamurai;
import com.aionemu.packetsamurai.logrepo.RemoteLogRepositoryBackend;
/**
* @author Ulysses R. Ribeiro
*
*/
@SuppressWarnings("serial")
public class MainRepoTab extends JPanel implements ActionListener
{
// account
private JLabel _userLabel = new JLabel("User: ");
private JTextField _userField = new JTextField();
private JLabel _passLabel = new JLabel("Pass: ");
private JPasswordField _passField = new JPasswordField();
private JCheckBox _saveCheck = new JCheckBox("Save");
private JButton _enableButton = new JButton("Enable");
// proxy
private JLabel _hostLabel = new JLabel("Host: ");
private JTextField _hostField = new JTextField();
private JLabel _portLabel = new JLabel("Port: ");
private JTextField _portField = new JTextField();
private JCheckBox _proxyEnableCheck = new JCheckBox("Enable");
public MainRepoTab()
{
this.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
cons.gridwidth = 1;
_enableButton.addActionListener(this);
_enableButton.setActionCommand("enable");
JPanel accPanel = new JPanel();
accPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Account"),
BorderFactory.createEmptyBorder(5,5,5,5)));
accPanel.setLayout(new GridLayout(0,2));
cons.anchor = GridBagConstraints.NORTHWEST;
accPanel.add(_userLabel);
accPanel.add(_userField);
accPanel.add(_passLabel);
accPanel.add(_passField);
accPanel.add(_saveCheck);
accPanel.add(_enableButton);
//this.add(accPanel, cons);
//cons.gridy = 1;
_proxyEnableCheck.setActionCommand("enableProxy");
_proxyEnableCheck.addActionListener(this);
JPanel proxyPanel = new JPanel();
proxyPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("HTTP Proxy"),
BorderFactory.createEmptyBorder(5,5,5,5)));
proxyPanel.setLayout(new GridLayout(0,2));
proxyPanel.add(_hostLabel);
_hostField.setPreferredSize(new Dimension(120,_hostField.getHeight()));
proxyPanel.add(_hostField);
proxyPanel.add(_portLabel);
proxyPanel.add(_portField);
proxyPanel.add(_proxyEnableCheck);
this.add(accPanel, cons);
cons.gridx = 1;
cons.gridwidth = 2;
cons.weightx = 0.5;
this.add(proxyPanel, cons);
// omg XXX
cons.gridx = 0;
cons.ipadx = 60;
cons.weightx = 0.5;
cons.weighty = 1.0;
cons.gridy = 1;
cons.gridwidth = 4;
this.add(new JLabel(""), cons);
this.enableSavedAccount();
this.enableSavedProxy();
}
private String getUserName()
{
return _userField.getText();
}
private String getPassword()
{
return String.valueOf(_passField.getPassword());
}
public boolean enableSavedAccount()
{
String repoUser = PacketSamurai.getConfigProperty("RepositoryUser");
String repoPass = PacketSamurai.getConfigProperty("RepositoryPass");
if (repoUser.length() > 0 && repoPass.length() > 0)
{
RemoteLogRepositoryBackend.getInstance().setUserName(repoUser);
_userField.setText(repoUser);
RemoteLogRepositoryBackend.getInstance().setPasswordHashed(repoPass);
_passField.setText("12345678"); // let it look as filled
_saveCheck.setSelected(true);
this.enableGUI();
return true;
}
return false;
}
public void enableSavedProxy()
{
String repoProxyHost = PacketSamurai.getConfigProperty("RepositoryProxyHost", "");
String repoProxyPort = PacketSamurai.getConfigProperty("RepositoryProxyPort", "");
String repoProxyActive = PacketSamurai.getConfigProperty("RepositoryProxyActive", "False");
boolean proxyActive = Boolean.parseBoolean(repoProxyActive);
if (repoProxyHost.length() > 0 && repoProxyPort.length() > 0)
{
_hostField.setText(repoProxyHost);
_portField.setText(repoProxyPort);
if (proxyActive)
{
this.enableProxy();
}
}
}
public void enableGUI()
{
MainRepoTab.this._userField.setEditable(false);
MainRepoTab.this._passField.setEditable(false);
_saveCheck.setEnabled(false);
MainRepoTab.this._enableButton.setText("Disable");
MainRepoTab.this._enableButton.setActionCommand("disable");
}
public void setProxyEditable(boolean val)
{
_hostField.setEditable(val);
_portField.setEditable(val);
}
public void enableProxy()
{
try
{
String host = MainRepoTab.this._hostField.getText();
int port = Integer.parseInt(MainRepoTab.this._portField.getText());
this.setProxyEditable(false);
RemoteLogRepositoryBackend.getInstance().setProxy(host, port);
_proxyEnableCheck.setActionCommand("disableProxy");
_proxyEnableCheck.setSelected(true);
PacketSamurai.setConfigProperty("RepositoryProxyHost", host);
PacketSamurai.setConfigProperty("RepositoryProxyPort", port);
PacketSamurai.setConfigProperty("RepositoryProxyActive", "True");
}
catch (NumberFormatException e1)
{
JOptionPane.showMessageDialog(MainRepoTab.this, "Invalid port", "Error", JOptionPane.ERROR_MESSAGE);
}
}
private void disableProxy()
{
this.setProxyEditable(true);
_proxyEnableCheck.setActionCommand("enableProxy");
RemoteLogRepositoryBackend.getInstance().setProxy("", -1);
PacketSamurai.setConfigProperty("RepositoryProxyActive", "False");
}
public void actionPerformed(ActionEvent e)
{
String cmd = e.getActionCommand();
if (cmd.equals("enable"))
{
if (!enableSavedAccount())
{
RemoteLogRepositoryBackend.getInstance().setUserName(MainRepoTab.this.getUserName());
RemoteLogRepositoryBackend.getInstance().setPassword(MainRepoTab.this.getPassword());
if (_saveCheck.isSelected())
{
this.enableGUI();
PacketSamurai.setConfigProperty("RepositoryUser", MainRepoTab.this.getUserName());
PacketSamurai.setConfigProperty("RepositoryPass", RemoteLogRepositoryBackend.getInstance().getPassword());
}
else
{
PacketSamurai.setConfigProperty("RepositoryUser", "");
PacketSamurai.setConfigProperty("RepositoryPass", "");
}
}
}
else if (cmd.equals("disable"))
{
RemoteLogRepositoryBackend.getInstance().setUserName(null);
RemoteLogRepositoryBackend.getInstance().setPassword(null);
MainRepoTab.this._userField.setEditable(true);
MainRepoTab.this._passField.setEditable(true);
_saveCheck.setEnabled(true);
MainRepoTab.this._enableButton.setText("Enable");
MainRepoTab.this._enableButton.setActionCommand("enable");
}
else if (cmd.equals("save"))
{
if (!_saveCheck.isSelected())
{
PacketSamurai.setConfigProperty("RepositoryUser", "");
PacketSamurai.setConfigProperty("RepositoryPass", "");
}
}
else if (cmd.equals("enableProxy"))
{
MainRepoTab.this.enableProxy();
}
else if (cmd.equals("disableProxy"))
{
MainRepoTab.this.disableProxy();
}
}
}