/****************************************************************************
* Copyright (C) 2013 ecsec GmbH.
* All rights reserved.
* Contact: ecsec GmbH (info@ecsec.de)
*
* This file is part of the Open eCard App.
*
* GNU General Public License Usage
* This file may be used under the terms of the GNU General Public
* License version 3.0 as published by the Free Software Foundation
* and appearing in the file LICENSE.GPL included in the packaging of
* this file. Please review the following information to ensure the
* GNU General Public License version 3.0 requirements will be met:
* http://www.gnu.org/copyleft/gpl.html.
*
* Other Usage
* Alternatively, this file may be used in accordance with the terms
* and conditions contained in a signed written agreement between
* you and ecsec GmbH.
*
***************************************************************************/
package org.openecard.richclient.gui.manage.core;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import org.openecard.common.I18n;
import org.openecard.common.OpenecardProperties;
import org.openecard.crypto.tls.proxy.ProxySettings;
import org.openecard.common.util.FileUtils;
import org.openecard.richclient.gui.manage.SettingsGroup;
/**
* Custom settings group for proxy settings.
* The settings are made dynamic to reflect the choice made by the user.
*
* @author Tobias Wich <tobias.wich@ecsec.de>
*/
public class ProxySettingsGroup extends SettingsGroup {
private static final long serialVersionUID = 1L;
private static final I18n lang = I18n.getTranslation("addon");
private static final String GROUP = "addon.list.core.connection.proxy.group_name";
private static final String SCHEME = "addon.list.core.connection.proxy.scheme";
private static final String SCHEME_DESC = "addon.list.core.connection.proxy.scheme.desc";
private static final String HOST = "addon.list.core.connection.proxy.host";
private static final String HOST_DESC = "addon.list.core.connection.proxy.host.desc";
private static final String PORT = "addon.list.core.connection.proxy.port";
private static final String PORT_DESC = "addon.list.core.connection.proxy.port.desc";
private static final String VALI = "addon.list.core.connection.proxy.vali";
private static final String VALI_DESC = "addon.list.core.connection.proxy.vali.desc";
private static final String USER = "addon.list.core.connection.proxy.user";
private static final String USER_DESC = "addon.list.core.connection.proxy.user.desc";
private static final String PASS = "addon.list.core.connection.proxy.pass";
private static final String PASS_DESC = "addon.list.core.connection.proxy.pass.desc";
private final JComboBox selection;
private final JTextField host;
private final JTextField port;
private final JCheckBox vali;
private final JTextField user;
private final JTextField pass;
public ProxySettingsGroup() {
super(lang.translationForKey(GROUP), OpenecardProperties.properties());
selection = addSelectionItem(lang.translationForKey(SCHEME), lang.translationForKey(SCHEME_DESC),
"proxy.scheme", "", "SOCKS", "HTTP", "HTTPS");
host = addInputItem(lang.translationForKey(HOST), lang.translationForKey(HOST_DESC), "proxy.host");
port = addInputItem(lang.translationForKey(PORT), lang.translationForKey(PORT_DESC), "proxy.port");
vali = addBoolItem(lang.translationForKey(VALI), lang.translationForKey(VALI_DESC), "proxy.validate_tls");
user = addInputItem(lang.translationForKey(USER), lang.translationForKey(USER_DESC), "proxy.user");
pass = addInputItem(lang.translationForKey(PASS), lang.translationForKey(PASS_DESC), "proxy.pass");
// register event and trigger initial setup
ItemManager manager = new ItemManager();
Object selectedItem = selection.getSelectedItem();
ItemEvent trigger = new ItemEvent(selection, ItemEvent.ITEM_FIRST, selectedItem, ItemEvent.SELECTED);
manager.itemStateChanged(trigger);
selection.addItemListener(manager);
}
@Override
protected void saveProperties() throws IOException, SecurityException {
File home = FileUtils.getHomeConfigDir();
File config = new File(home, "openecard.properties");
FileWriter writer = new FileWriter(config);
properties.store(writer, null);
// reload global properties and proxy settings
OpenecardProperties.load();
ProxySettings.load();
}
private class ItemManager implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Object val = e.getItem();
if ("SOCKS".equals(val)) {
setEnabledComponent(host, true);
setEnabledComponent(port, true);
setEnabledComponent(vali, false);
setEnabledComponent(user, false);
setEnabledComponent(pass, false);
} else if ("HTTP".equals(val)) {
setEnabledComponent(host, true);
setEnabledComponent(port, true);
setEnabledComponent(vali, false);
setEnabledComponent(user, true);
setEnabledComponent(pass, true);
} else if ("HTTPS".equals(val)) {
setEnabledComponent(host, true);
setEnabledComponent(port, true);
setEnabledComponent(vali, true);
setEnabledComponent(user, true);
setEnabledComponent(pass, true);
} else {
setEnabledComponent(host, false);
setEnabledComponent(port, false);
setEnabledComponent(vali, false);
setEnabledComponent(user, false);
setEnabledComponent(pass, false);
}
}
}
}
}