/*
 * Created on 24.07.2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package de.skyrix.zsp.gui;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import de.skyrix.zsp.conf.ZSPConfig;

/**
 * @author sell
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class CFGPanelZideStore extends JPanel {
	private JTextField tfServer = null;
	private JTextField tfUser = null;
	private JPasswordField pfPassword = null;
	private JCheckBox cbGrabAuthKey = null;

	public CFGPanelZideStore() {

		JPanel serverPanel = new JPanel(new GridLayout(0, 2));
		serverPanel.add(new JLabel("Zidestore url:"));
		serverPanel.add(
			tfServer = new JTextField(ZSPConfig.getProperty("zidestore_url"), 15));
		serverPanel.add(new JLabel("User:"));
		serverPanel.add(
			tfUser = new JTextField(ZSPConfig.getProperty("zidestore_user"), 15));
		serverPanel.add(new JLabel("Password:"));
		serverPanel.add(
			pfPassword =
				new JPasswordField(ZSPConfig.getProperty("zidestore_password"), 15));

		JPanel mainPanel = new JPanel(new BorderLayout());
		mainPanel.add(serverPanel, BorderLayout.CENTER);
		mainPanel.add(
			cbGrabAuthKey = new JCheckBox("Grab identity from client connection"),
			BorderLayout.SOUTH);

		cbGrabAuthKey.setSelected(
			"true".equals(ZSPConfig.getProperty("detectAuthKey")));
		pfPassword.setEnabled(!cbGrabAuthKey.isSelected());
		tfUser.setEnabled(!cbGrabAuthKey.isSelected());

		cbGrabAuthKey.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				try {
					JCheckBox cbItem = (JCheckBox) e.getItem();
					pfPassword.setEnabled(!cbItem.isSelected());
					tfUser.setEnabled(!cbItem.isSelected());
				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});

		TitledBorder border =
			BorderFactory.createTitledBorder(
				BorderFactory.createEtchedBorder(),
				"Remote server");
		border.setTitleJustification(TitledBorder.DEFAULT_JUSTIFICATION);
		border.setTitlePosition(TitledBorder.CENTER);
		mainPanel.setBorder(border);

		setLayout(new BorderLayout());
		add(mainPanel, BorderLayout.NORTH);
	}

	void save() {
		ZSPConfig.setProperty("zidestore_url", tfServer.getText());
		if (cbGrabAuthKey.isSelected()) {
			ZSPConfig.removeProperty("zidestore_user");
			ZSPConfig.removeProperty("zidestore_password");
			ZSPConfig.setProperty("detectAuthKey", "true");
		}
		else {
			ZSPConfig.setProperty("zidestore_user", tfUser.getText());
			ZSPConfig.setProperty(
				"zidestore_password",
				((JTextField) pfPassword).getText());
			ZSPConfig.setProperty("detectAuthKey", "false");
		}
	}
}
