You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

609 lines
31 KiB
Java

/*
* Copyright (C) 2009-2017 Alistair Neil <info@dazzleships.net>
*
* This program 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 2
* of the License, or (at your option) any later version.
*
* This program 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package client;
import javax.swing.DefaultComboBoxModel;
import lib.Localisation;
import lib.SimpleProps;
import lib.Utilities;
/**
*
* @author Alistair Neil, <info@dazzleships.net>
*/
public final class PrefsDialog extends javax.swing.JDialog {
public static final int CANCEL = 0;
public static final int APPLY = 1;
public static final int RESET = 2;
private static final Localisation LOCAL = new Localisation("resources/MessagesBundle");
private final SimpleProps sp;
private final String disabledprefs;
/**
* Creates a preferences editor dialog
*
* @param parent Parent Frame
* @param sp
* @param disabledprefs
*/
public PrefsDialog(java.awt.Frame parent, SimpleProps sp, String disabledprefs) {
super(parent, true);
this.sp = sp;
this.disabledprefs = disabledprefs;
initComponents();
loadBasicPrefs(false);
loadAdvancedPrefs(false);
}
/**
* @return the return status of this dialog - one of RET_OK or RET_CANCEL
*/
public int getReturnStatus() {
return returnStatus;
}
public void loadBasicPrefs(boolean usedefault) {
sp.setDefaultModeEnabled(usedefault);
jCheckAutostart.setSelected(sp.getBool("PREF_AUTOSTART"));
jCheckDisableTray.setSelected(sp.getBool("PREF_NOSYSTRAY"));
jCheckHideMin.setEnabled(!jCheckDisableTray.isSelected());
jCheckHideTray.setSelected(sp.getBool("PREF_HIDETOTRAY"));
jCheckAppUpdate.setSelected(sp.getBool("PREF_UPDATECHECK"));
jCheckMinOnClose.setSelected(sp.getBool("PREF_MINONCLOSE"));
jCheckCacheDelete.setSelected(sp.getBool("PREF_CACHEDELETE"));
jCheckDisableNotify.setSelected(sp.getBool("PREF_DISABLE_NOTIFY"));
jCheckHideMin.setSelected(sp.getBool("PREF_HIDE_MIN"));
jCheckGeoUpdate.setSelected(sp.getBool("PREF_GEOCHECK"));
if (disabledprefs.contains("jCheckDisableTray")) {
jCheckDisableTray.setEnabled(false);
jCheckHideMin.setEnabled(false);
}
jCheckAppUpdate.setVisible(!disabledprefs.contains("jCheckAppUpdate"));
sp.setDefaultModeEnabled(false);
updatePortRanges(sp.getInt("PREF_TOR_TESTHREADS"));
}
/**
* Load the preferences
*
* @param usedefault
*/
public void loadAdvancedPrefs(boolean usedefault) {
sp.setDefaultModeEnabled(usedefault);
jTextHTTPProxy.setText(sp.getString("PREF_HTTP_PROXY"));
jSpinnerMainPort.setValue(sp.getInt("PREF_LISTENPORT"));
jTextTorBridge.setText(sp.getString("PREF_TORBRIDGE"));
jTextTorArgs.setText(sp.getString("PREF_TORARGS"));
jComboLogLev.setSelectedIndex(sp.getInt("PREF_TORLOGLEV"));
jCheckSafeSocks.setSelected(sp.getBool("PREF_SAFESOCKS"));
jCheckTestSocks.setSelected(sp.getBool("PREF_TESTSOCKS"));
jCheckAvoidDisk.setSelected(sp.getBool("PREF_AVOIDDISK"));
jCheckSafeLog.setSelected(sp.getBool("PREF_SAFELOG"));
sp.setDefaultModeEnabled(false);
}
/**
* Save preferences
*/
public void savePreferences() {
sp.setInt("PREF_LISTENPORT", (Integer) jSpinnerMainPort.getValue());
sp.setInt("PREF_TORLOGLEV", jComboLogLev.getSelectedIndex());
sp.setBool("PREF_AUTOSTART", jCheckAutostart.isSelected());
sp.setBool("PREF_NOSYSTRAY", jCheckDisableTray.isSelected());
sp.setBool("PREF_HIDETOTRAY", jCheckHideTray.isSelected());
sp.setBool("PREF_UPDATECHECK", jCheckAppUpdate.isSelected());
sp.setBool("PREF_MINONCLOSE", jCheckMinOnClose.isSelected());
sp.setBool("PREF_SAFESOCKS", jCheckSafeSocks.isSelected());
sp.setBool("PREF_TESTSOCKS", jCheckTestSocks.isSelected());
sp.setBool("PREF_AVOIDDISK", jCheckAvoidDisk.isSelected());
sp.setBool("PREF_SAFELOG", jCheckSafeLog.isSelected());
sp.setBool("PREF_CACHEDELETE", jCheckCacheDelete.isSelected());
sp.setBool("PREF_DISABLE_NOTIFY", jCheckDisableNotify.isSelected());
sp.setBool("PREF_HIDE_MIN", jCheckHideMin.isSelected());
sp.setBool("PREF_GEOCHECK", jCheckGeoUpdate.isSelected());
sp.setString("PREF_HTTP_PROXY", jTextHTTPProxy.getText());
sp.setString("PREF_TORBRIDGE", jTextTorBridge.getText());
sp.setString("PREF_TORARGS", jTextTorArgs.getText());
}
/**
* Update displayed port ranges to reflect any port changes
*/
private void updatePortRanges(int threads) {
int intBasePort = sp.getInt("PREF_LISTENPORT");
String strRanges = LOCAL.getString("label_portranges");
strRanges = strRanges.replace("$portmin", String.valueOf(intBasePort));
strRanges = strRanges.replace("$portmax", String.valueOf(intBasePort + (threads * 2) + 1));
jLabelPortRanges.setText(strRanges);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jTabPrefs = new javax.swing.JTabbedPane();
jPanelBasicPrefs = new javax.swing.JPanel();
jPanelGeneralPrefs = new javax.swing.JPanel();
jCheckHideTray = new javax.swing.JCheckBox();
jCheckAppUpdate = new javax.swing.JCheckBox();
jCheckAutostart = new javax.swing.JCheckBox();
jCheckDisableTray = new javax.swing.JCheckBox();
jCheckMinOnClose = new javax.swing.JCheckBox();
jCheckCacheDelete = new javax.swing.JCheckBox();
jCheckDisableNotify = new javax.swing.JCheckBox();
jCheckHideMin = new javax.swing.JCheckBox();
jCheckGeoUpdate = new javax.swing.JCheckBox();
jPanelAdvancedPrefs = new javax.swing.JPanel();
jPanelTorPrefs = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jSpinnerMainPort = new javax.swing.JSpinner();
jLabelPortRanges = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jTextTorBridge = new javax.swing.JTextField();
jButtonGetBridges = new javax.swing.JButton();
jCheckSafeSocks = new javax.swing.JCheckBox();
jLabel12 = new javax.swing.JLabel();
jCheckTestSocks = new javax.swing.JCheckBox();
jLabel13 = new javax.swing.JLabel();
jTextTorArgs = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
jCheckAvoidDisk = new javax.swing.JCheckBox();
jLabel15 = new javax.swing.JLabel();
jComboLogLev = new javax.swing.JComboBox<>();
jCheckSafeLog = new javax.swing.JCheckBox();
jPanel1 = new javax.swing.JPanel();
jLabel16 = new javax.swing.JLabel();
jTextHTTPProxy = new javax.swing.JTextField();
jButtonCancel = new javax.swing.JButton();
jButtonApply = new javax.swing.JButton();
jButtonDefaults = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(null);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
jTabPrefs.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jTabPrefsStateChanged(evt);
}
});
jPanelBasicPrefs.setFont(jPanelBasicPrefs.getFont().deriveFont(jPanelBasicPrefs.getFont().getStyle() | java.awt.Font.BOLD));
jPanelGeneralPrefs.setBorder(javax.swing.BorderFactory.createTitledBorder(null, LOCAL.getString("panel_general"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, jPanelBasicPrefs.getFont(), jPanelBasicPrefs.getForeground())); // NOI18N
jCheckHideTray.setText(LOCAL.getString("chkbox_hidetotray")); // NOI18N
jCheckHideTray.setToolTipText(LOCAL.getString("ttip_hidetotray")); // NOI18N
jCheckAppUpdate.setSelected(true);
jCheckAppUpdate.setText(LOCAL.getString("chkbox_checkforupdates")); // NOI18N
jCheckAppUpdate.setToolTipText(LOCAL.getString("ttip_checkforupdates")); // NOI18N
jCheckAutostart.setText(LOCAL.getString("chkbox_autostart")); // NOI18N
jCheckAutostart.setToolTipText(LOCAL.getString("ttip_autostart")); // NOI18N
jCheckDisableTray.setText(LOCAL.getString("chkbox_disabletray")); // NOI18N
jCheckDisableTray.setToolTipText(LOCAL.getString("ttip_disabletray")); // NOI18N
jCheckDisableTray.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jCheckDisableTrayItemStateChanged(evt);
}
});
jCheckMinOnClose.setText(LOCAL.getString("chkbox_minonclose")); // NOI18N
jCheckMinOnClose.setToolTipText(LOCAL.getString("ttip_minonclose")); // NOI18N
jCheckCacheDelete.setText(LOCAL.getString("chkbox_securedelete")); // NOI18N
jCheckCacheDelete.setToolTipText(LOCAL.getString("ttip_securedelete")); // NOI18N
jCheckDisableNotify.setText(LOCAL.getString("chkbox_disablenotify")); // NOI18N
jCheckDisableNotify.setToolTipText(LOCAL.getString("ttip_disablenotify")); // NOI18N
jCheckHideMin.setText(LOCAL.getString("chkbox_hidemin")); // NOI18N
jCheckHideMin.setToolTipText(LOCAL.getString("ttip_hidemin")); // NOI18N
jCheckGeoUpdate.setSelected(true);
jCheckGeoUpdate.setText(LOCAL.getString("chkbox_geocheck")); // NOI18N
jCheckGeoUpdate.setToolTipText(LOCAL.getString("ttip_geocheck")); // NOI18N
javax.swing.GroupLayout jPanelGeneralPrefsLayout = new javax.swing.GroupLayout(jPanelGeneralPrefs);
jPanelGeneralPrefs.setLayout(jPanelGeneralPrefsLayout);
jPanelGeneralPrefsLayout.setHorizontalGroup(
jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelGeneralPrefsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jCheckAutostart)
.addComponent(jCheckHideTray)
.addComponent(jCheckCacheDelete)
.addComponent(jCheckHideMin)
.addComponent(jCheckDisableNotify))
.addGap(18, 18, 18)
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jCheckAppUpdate)
.addComponent(jCheckGeoUpdate)
.addComponent(jCheckDisableTray)
.addComponent(jCheckMinOnClose))
.addContainerGap(39, Short.MAX_VALUE))
);
jPanelGeneralPrefsLayout.setVerticalGroup(
jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelGeneralPrefsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jCheckAutostart)
.addComponent(jCheckGeoUpdate))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jCheckHideTray)
.addComponent(jCheckDisableTray))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jCheckHideMin)
.addComponent(jCheckMinOnClose))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelGeneralPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jCheckCacheDelete)
.addComponent(jCheckAppUpdate))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckDisableNotify)
.addContainerGap(132, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanelBasicPrefsLayout = new javax.swing.GroupLayout(jPanelBasicPrefs);
jPanelBasicPrefs.setLayout(jPanelBasicPrefsLayout);
jPanelBasicPrefsLayout.setHorizontalGroup(
jPanelBasicPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelBasicPrefsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanelGeneralPrefs, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanelBasicPrefsLayout.setVerticalGroup(
jPanelBasicPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelBasicPrefsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanelGeneralPrefs, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jTabPrefs.addTab(LOCAL.getString("tab_basic"), jPanelBasicPrefs); // NOI18N
jPanelTorPrefs.setBorder(javax.swing.BorderFactory.createTitledBorder(null, LOCAL.getString("panel_torclientset"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, jPanelBasicPrefs.getFont(), jPanelBasicPrefs.getForeground())); // NOI18N
jLabel6.setText(LOCAL.getString("label_listenport")); // NOI18N
jSpinnerMainPort.setModel(new javax.swing.SpinnerNumberModel(9050, 9050, 9999, 1));
jSpinnerMainPort.setToolTipText(LOCAL.getString("ttip_listenport")); // NOI18N
jLabelPortRanges.setText("Currently active port ranges, 9052 to 9063");
jLabel11.setText(LOCAL.getString("label_bridgeaddress")); // NOI18N
jTextTorBridge.setToolTipText(LOCAL.getString("ttip_bridgeaddress")); // NOI18N
jButtonGetBridges.setText(LOCAL.getString("button_getbridges")); // NOI18N
jButtonGetBridges.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonGetBridgesActionPerformed(evt);
}
});
jCheckSafeSocks.setText(LOCAL.getString("chkbox_safesocks")); // NOI18N
jCheckSafeSocks.setToolTipText(LOCAL.getString("ttip_safesocks")); // NOI18N
jLabel12.setText(LOCAL.getString("label_torlogging")); // NOI18N
jCheckTestSocks.setText(LOCAL.getString("chkbox_testsocks")); // NOI18N
jCheckTestSocks.setToolTipText(LOCAL.getString("ttip_testsocks")); // NOI18N
jLabel13.setText(LOCAL.getString("label_torargs")); // NOI18N
jTextTorArgs.setToolTipText(LOCAL.getString("ttip_extraargs")); // NOI18N
jLabel14.setText(LOCAL.getString("label_torsocks")); // NOI18N
jCheckAvoidDisk.setText(LOCAL.getString("chkbox_diskavoid")); // NOI18N
jCheckAvoidDisk.setToolTipText(LOCAL.getString("ttip_avoiddisk")); // NOI18N
jLabel15.setText(LOCAL.getString("label_diskoptions")); // NOI18N
jComboLogLev.setModel(new DefaultComboBoxModel<>(new String[] {LOCAL.getString("combo_loglev1"),LOCAL.getString("combo_loglev2"),LOCAL.getString("combo_loglev3")}));
jComboLogLev.setToolTipText(LOCAL.getString("ttip_combo_loglevel")); // NOI18N
jCheckSafeLog.setText(LOCAL.getString("chkbox_safelog")); // NOI18N
jCheckSafeLog.setToolTipText(LOCAL.getString("ttip_safelogging")); // NOI18N
javax.swing.GroupLayout jPanelTorPrefsLayout = new javax.swing.GroupLayout(jPanelTorPrefs);
jPanelTorPrefs.setLayout(jPanelTorPrefsLayout);
jPanelTorPrefsLayout.setHorizontalGroup(
jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelTorPrefsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel14)
.addComponent(jLabel15)
.addComponent(jLabel12)
.addComponent(jLabel13)
.addComponent(jLabel11)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(jPanelTorPrefsLayout.createSequentialGroup()
.addComponent(jCheckSafeSocks)
.addGap(18, 18, 18)
.addComponent(jCheckTestSocks))
.addComponent(jCheckAvoidDisk)
.addGroup(jPanelTorPrefsLayout.createSequentialGroup()
.addComponent(jComboLogLev, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jCheckSafeLog))
.addGroup(jPanelTorPrefsLayout.createSequentialGroup()
.addComponent(jTextTorBridge, javax.swing.GroupLayout.PREFERRED_SIZE, 259, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonGetBridges))
.addGroup(jPanelTorPrefsLayout.createSequentialGroup()
.addComponent(jSpinnerMainPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabelPortRanges))
.addComponent(jTextTorArgs))
.addContainerGap())
);
jPanelTorPrefsLayout.setVerticalGroup(
jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelTorPrefsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabelPortRanges)
.addComponent(jSpinnerMainPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(jTextTorBridge, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonGetBridges))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel14)
.addComponent(jCheckSafeSocks)
.addComponent(jCheckTestSocks))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(jComboLogLev, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jCheckSafeLog))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel15)
.addComponent(jCheckAvoidDisk))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanelTorPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(jTextTorArgs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, LOCAL.getString("panel_network"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, jPanelBasicPrefs.getFont(), jPanelBasicPrefs.getForeground())); // NOI18N
jLabel16.setText(LOCAL.getString("label_defaultproxy")); // NOI18N
jTextHTTPProxy.setToolTipText(LOCAL.getString("ttip_defaultproxy")); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel16)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextHTTPProxy)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel16)
.addComponent(jTextHTTPProxy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
javax.swing.GroupLayout jPanelAdvancedPrefsLayout = new javax.swing.GroupLayout(jPanelAdvancedPrefs);
jPanelAdvancedPrefs.setLayout(jPanelAdvancedPrefsLayout);
jPanelAdvancedPrefsLayout.setHorizontalGroup(
jPanelAdvancedPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelAdvancedPrefsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelAdvancedPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanelTorPrefs, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanelAdvancedPrefsLayout.setVerticalGroup(
jPanelAdvancedPrefsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelAdvancedPrefsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanelTorPrefs, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jTabPrefs.addTab(LOCAL.getString("tab_advanced"), jPanelAdvancedPrefs); // NOI18N
jButtonCancel.setText(LOCAL.getString("button_close")); // NOI18N
jButtonCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonCancelActionPerformed(evt);
}
});
jButtonApply.setText(LOCAL.getString("button_apply")); // NOI18N
jButtonApply.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonApplyActionPerformed(evt);
}
});
jButtonDefaults.setText(LOCAL.getString("button_prefdefaults")); // NOI18N
jButtonDefaults.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonDefaultsActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButtonDefaults)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonCancel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonApply)
.addContainerGap())
.addComponent(jTabPrefs)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jTabPrefs)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonApply)
.addComponent(jButtonCancel)
.addComponent(jButtonDefaults))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButtonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonApplyActionPerformed
savePreferences();
updatePortRanges(sp.getInt("PREF_TOR_TESTHREADS"));
doClose(APPLY);
}//GEN-LAST:event_jButtonApplyActionPerformed
private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelActionPerformed
doClose(CANCEL);
}//GEN-LAST:event_jButtonCancelActionPerformed
/**
* Closes the dialog
*/
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose(CANCEL);
}//GEN-LAST:event_closeDialog
private void jButtonGetBridgesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGetBridgesActionPerformed
Utilities.openFileExternally("https://bridges.torproject.org/bridges?lang="
+ LOCAL.toWebLanguageTag());
}//GEN-LAST:event_jButtonGetBridgesActionPerformed
private void jButtonDefaultsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDefaultsActionPerformed
switch (jTabPrefs.getSelectedIndex()) {
// Basic tab
case 0:
loadBasicPrefs(true);
break;
// Advanced tab
case 1:
loadAdvancedPrefs(true);
break;
}
}//GEN-LAST:event_jButtonDefaultsActionPerformed
private void jTabPrefsStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabPrefsStateChanged
switch (jTabPrefs.getSelectedIndex()) {
case 0:
jButtonDefaults.setToolTipText(LOCAL.getString("ttip_resetbasicprefs"));
break;
case 1:
jButtonDefaults.setToolTipText(LOCAL.getString("ttip_resetadvprefs"));
break;
}
}//GEN-LAST:event_jTabPrefsStateChanged
private void jCheckDisableTrayItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCheckDisableTrayItemStateChanged
jCheckHideMin.setEnabled(!jCheckDisableTray.isSelected());
}//GEN-LAST:event_jCheckDisableTrayItemStateChanged
private void doClose(int retStatus) {
returnStatus = retStatus;
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonApply;
private javax.swing.JButton jButtonCancel;
private javax.swing.JButton jButtonDefaults;
private javax.swing.JButton jButtonGetBridges;
private javax.swing.JCheckBox jCheckAppUpdate;
private javax.swing.JCheckBox jCheckAutostart;
private javax.swing.JCheckBox jCheckAvoidDisk;
private javax.swing.JCheckBox jCheckCacheDelete;
private javax.swing.JCheckBox jCheckDisableNotify;
private javax.swing.JCheckBox jCheckDisableTray;
private javax.swing.JCheckBox jCheckGeoUpdate;
private javax.swing.JCheckBox jCheckHideMin;
private javax.swing.JCheckBox jCheckHideTray;
private javax.swing.JCheckBox jCheckMinOnClose;
private javax.swing.JCheckBox jCheckSafeLog;
private javax.swing.JCheckBox jCheckSafeSocks;
private javax.swing.JCheckBox jCheckTestSocks;
private javax.swing.JComboBox<String> jComboLogLev;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabelPortRanges;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanelAdvancedPrefs;
private javax.swing.JPanel jPanelBasicPrefs;
private javax.swing.JPanel jPanelGeneralPrefs;
private javax.swing.JPanel jPanelTorPrefs;
private javax.swing.JSpinner jSpinnerMainPort;
private javax.swing.JTabbedPane jTabPrefs;
private javax.swing.JTextField jTextHTTPProxy;
private javax.swing.JTextField jTextTorArgs;
private javax.swing.JTextField jTextTorBridge;
// End of variables declaration//GEN-END:variables
private int returnStatus = CANCEL;
}