| /* |
| * Copyright 2000-2013 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.cvsSupport2.connections.ui; |
| |
| import com.intellij.cvsSupport2.config.ProxySettings; |
| import com.intellij.cvsSupport2.connections.CvsRootData; |
| import com.intellij.cvsSupport2.ui.FormUtils; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| import java.awt.event.ItemEvent; |
| import java.awt.event.ItemListener; |
| |
| public class ProxySettingsPanel { |
| |
| private JPanel myPanel; |
| private JTextField myProxyPort; |
| private JTextField myProxyHost; |
| private JCheckBox myUseProxy; |
| private JRadioButton mySocks5; |
| private JRadioButton mySocks4; |
| private JRadioButton myHTTP; |
| private JPasswordField myPassword; |
| private JTextField myLogin; |
| |
| public ProxySettingsPanel() { |
| final ButtonGroup buttonGroup = new ButtonGroup(); |
| buttonGroup.add(myHTTP); |
| buttonGroup.add(mySocks4); |
| buttonGroup.add(mySocks5); |
| disableAll(false); |
| |
| myUseProxy.addItemListener(new ItemListener() { |
| @Override |
| public void itemStateChanged(ItemEvent e) { |
| if (myUseProxy.isSelected()) { |
| enableAll(false); |
| } |
| else { |
| disableAll(false); |
| } |
| } |
| }); |
| } |
| |
| public void disableAll(boolean disableUseProxyButton) { |
| if (disableUseProxyButton) { |
| myUseProxy.setEnabled(false); |
| } |
| myHTTP.setEnabled(false); |
| mySocks4.setEnabled(false); |
| mySocks5.setEnabled(false); |
| myLogin.setEnabled(false); |
| myPassword.setEnabled(false); |
| myProxyHost.setEnabled(false); |
| myProxyPort.setEnabled(false); |
| } |
| |
| public void enableAll(boolean enableUseProxyButton) { |
| if (enableUseProxyButton) { |
| myUseProxy.setEnabled(true); |
| } |
| if (myUseProxy.isEnabled()) { |
| myHTTP.setEnabled(true); |
| mySocks4.setEnabled(true); |
| mySocks5.setEnabled(true); |
| myLogin.setEnabled(true); |
| myPassword.setEnabled(true); |
| myProxyHost.setEnabled(true); |
| myProxyPort.setEnabled(true); |
| } |
| } |
| |
| public Component getPanel() { |
| return myPanel; |
| } |
| |
| public void updateFrom(CvsRootData cvsRootData) { |
| myUseProxy.setSelected(true); |
| myProxyHost.setText(cvsRootData.PROXY_HOST); |
| myProxyPort.setText(cvsRootData.PROXY_PORT); |
| myHTTP.setSelected(true); |
| } |
| |
| public void updateFrom(ProxySettings proxy_settings) { |
| myUseProxy.setSelected(proxy_settings.USE_PROXY); |
| myProxyHost.setText(proxy_settings.PROXY_HOST); |
| myProxyPort.setText(String.valueOf(proxy_settings.PROXY_PORT)); |
| |
| if (proxy_settings.getType() == ProxySettings.HTTP) { |
| myHTTP.setSelected(true); |
| } |
| else if (proxy_settings.getType() == ProxySettings.SOCKS4) { |
| mySocks4.setSelected(true); |
| } |
| else { |
| mySocks5.setSelected(true); |
| } |
| |
| myLogin.setText(proxy_settings.getLogin()); |
| myPassword.setText(proxy_settings.getPassword()); |
| if (proxy_settings.USE_PROXY){ |
| enableAll(true); |
| } else { |
| disableAll(false); |
| } |
| } |
| |
| public boolean equalsTo(ProxySettings proxySettings) { |
| if (!myUseProxy.isSelected()) { |
| return !proxySettings.USE_PROXY; |
| } |
| return myUseProxy.isSelected() == proxySettings.USE_PROXY |
| && myProxyHost.getText().equals(proxySettings.PROXY_HOST) |
| && FormUtils.getPositiveIntFieldValue(myProxyPort, false, false, 0xFFFF) == proxySettings.PROXY_PORT |
| && getSelectedType() == proxySettings.getType() |
| && myLogin.getText().equals(proxySettings.getLogin()) |
| && new String(myPassword.getPassword()).equals(proxySettings.getPassword()); |
| } |
| |
| private int getSelectedType() { |
| if (myHTTP.isSelected()) { |
| return ProxySettings.HTTP; |
| } |
| else if (mySocks4.isSelected()) { |
| return ProxySettings.SOCKS4; |
| } |
| else { |
| return ProxySettings.SOCKS5; |
| } |
| } |
| |
| public void saveTo(ProxySettings proxySettings) { |
| proxySettings.USE_PROXY = myUseProxy.isSelected(); |
| proxySettings.PROXY_HOST = FormUtils.getFieldValue(myProxyHost, proxySettings.USE_PROXY); |
| proxySettings.PROXY_PORT = FormUtils.getPositiveIntFieldValue(myProxyPort, true, false, 0xFFFF); |
| proxySettings.TYPE = getSelectedType(); |
| proxySettings.LOGIN = myLogin.getText(); |
| proxySettings.PASSWORD = new String(myPassword.getPassword()); |
| } |
| |
| public void disablePanel() { |
| disableAll(true); |
| } |
| |
| public void enablePanel() { |
| enableAll(true); |
| if (!myUseProxy.isSelected()){ |
| disableAll(false); |
| } |
| } |
| } |