📄 settingsdialog.java
字号:
/** * JHylaFax - A java client for HylaFAX. * * Copyright (C) 2005 by Steffen Pingel <steffenp@gmx.de> * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */package net.sf.jhylafax;import static net.sf.jhylafax.JHylaFAX.i18n;import java.awt.Color;import java.util.Locale;import javax.swing.ButtonGroup;import javax.swing.DefaultComboBoxModel;import javax.swing.DefaultListCellRenderer;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JRadioButton;import javax.swing.JSpinner;import javax.swing.JTabbedPane;import javax.swing.JTextField;import javax.swing.SpinnerNumberModel;import org.xnap.commons.gui.DefaultDialog;import org.xnap.commons.gui.FileChooserPanel;import org.xnap.commons.gui.completion.CompletionModeFactory;import org.xnap.commons.gui.completion.CompletionModeFactory.CompletionModeInfo;import org.xnap.commons.gui.settings.SettingComponentMediator;import org.xnap.commons.gui.util.EnableListener;import org.xnap.commons.gui.util.WhatsThis;import org.xnap.commons.util.PortRange;import com.jgoodies.forms.builder.DefaultFormBuilder;import com.jgoodies.forms.layout.FormLayout;/** * A dialog for editing of global settings. * * @author Steffen Pingel */public class SettingsDialog extends DefaultDialog implements LocaleChangeListener { private JPanel connectionPanel; private JLabel hostnameLabel; private JTextField hostnameTextField; private JPanel jobPanel; private JobPanel jobParameterPanel; private JTabbedPane mainTabbedPane; private JLabel passwordLabel; private JTextField passwordTextField; private JLabel portLabel; private JSpinner portSpinner; private JLabel usernameLabel; private JTextField usernameTextField; private JLabel languageLabel; private DefaultComboBoxModel languageModel; private JCheckBox confirmNonPSCheckBox; private JCheckBox confirmDeleteCheckBox; private JRadioButton internalCoverRadionButton; private JLabel viewerPathLabel; private JLabel docViewerPathLabel; private JPanel pathsPanel; private JPanel monitorPanel; private JRadioButton externalCoverRadionButton; private FileChooserPanel externalCoverPathFileChooserPanel; private ExecutableChooserPanel viewerPathFileChooserPanel; private ExecutableChooserPanel docViewerPathFileChooserPanel; private JLabel passwordInfoLabel; private JCheckBox usePassiveCheckBox; private JPanel generalPanel; private SpinnerNumberModel portSpinnerModel; private DefaultComboBoxModel completionModeModel; private JLabel completionModeLabel; private JCheckBox sendCoverAsDocumentCheckBox; private JCheckBox updateOnStartupCheckBox; private JCheckBox showPollqCheckBox; private SettingComponentMediator settingMediator = new SettingComponentMediator(); private JCheckBox adminModeCheckBox; private JPasswordField adminPasswordTextField; private JCheckBox autoUpdateCheckBox; private SpinnerNumberModel autoUpdateIntervalModel; private JSpinner autoUpdateIntervalSpinner; private JLabel autoUpdateIntervalLabel; private JCheckBox monitorPathCheckBox; private SpinnerNumberModel monitorPathIntervalModel; private JSpinner monitorPathIntervalSpinner; private JLabel monitorPathIntervalLabel; private ExecutableChooserPanel monitorPathFileChooserPanel; private JLabel monitorPathLabel; private FileChooserPanel addressBookPathFileChooserPanel; private JCheckBox customizeAddressBookCheckBox; public SettingsDialog(JFrame owner) { super(owner, BUTTON_OKAY | BUTTON_APPLY | BUTTON_CANCEL | BUTTON_CONTEXT_HELP); mainTabbedPane = new JTabbedPane(); setMainComponent(mainTabbedPane); initializeConnectionForm(); initializeGeneralForm(); initializeJobForm(); initializePathForm(); initializeMonitorForm(); updateLabels(); revert(); pack(); } @Override public boolean apply() { settingMediator.apply(); Settings.LOCALE.setValue((Locale)languageModel.getSelectedItem()); Settings.DEFAULT_COMPLETION_MODE.setValue(((CompletionModeInfo)completionModeModel.getSelectedItem()).getClassName()); jobParameterPanel.applyToSettings(); Settings.VIEWER_PATH.setValue(viewerPathFileChooserPanel.getTextField().getText()); Settings.DOC_VIEWER_PATH.setValue(docViewerPathFileChooserPanel.getTextField().getText()); Settings.USE_INTERNAL_COVER.setValue(internalCoverRadionButton.isSelected()); Settings.COVER_PATH.setValue(externalCoverPathFileChooserPanel.getTextField().getText()); Settings.MONITOR_PATH_INTERVAL.setValue(monitorPathIntervalModel.getNumber().intValue()); // XXX this is so wrong JHylaFAX.getInstance().settingsUpdated(); return true; } private DefaultFormBuilder createForm() { FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, pref, pref:grow(0.5), pref:grow(0.5)", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder(); return builder; } public void initializeConnectionForm() { DefaultFormBuilder builder = createForm(); connectionPanel = builder.getPanel(); mainTabbedPane.add(connectionPanel); builder.appendSeparator(i18n.tr("HylaFAX Server")); hostnameTextField = new JTextField(Constants.DEFAULT_COLUMNS); settingMediator.add(Settings.HOSTNAME, hostnameTextField); hostnameLabel = builder.append("", hostnameTextField, 3); builder.nextLine(); portSpinnerModel = new SpinnerNumberModel(); portSpinnerModel.setMinimum(PortRange.MIN_PORT); portSpinnerModel.setMaximum(PortRange.MAX_PORT); settingMediator.add(Settings.PORT, portSpinnerModel); portSpinner = new JSpinner(portSpinnerModel); portSpinner.setEditor(new JSpinner.NumberEditor(portSpinner, "#")); portLabel = builder.append("", portSpinner); builder.nextLine(); usePassiveCheckBox = new JCheckBox(); settingMediator.add(Settings.USE_PASSIVE, usePassiveCheckBox); builder.append("", usePassiveCheckBox, 3); builder.nextLine(); builder.appendSeparator(i18n.tr("Authentication")); usernameTextField = new JTextField(Constants.DEFAULT_COLUMNS); settingMediator.add(Settings.USERNAME, usernameTextField); usernameLabel = builder.append("", usernameTextField, 3); builder.nextLine(); passwordInfoLabel = new JLabel(); passwordInfoLabel.setForeground(Color.RED); builder.append(passwordInfoLabel, 5); builder.nextLine(); passwordTextField = new JPasswordField(Constants.DEFAULT_COLUMNS); settingMediator.add(Settings.PASSWORD, passwordTextField); passwordLabel = builder.append("", passwordTextField, 3); builder.nextLine(); adminModeCheckBox = new JCheckBox(); settingMediator.add(Settings.ADMIN_MODE, adminModeCheckBox); adminPasswordTextField = new JPasswordField(Constants.DEFAULT_COLUMNS); settingMediator.add(Settings.ADMIN_PASSWORD, adminPasswordTextField); builder.append(adminModeCheckBox); builder.append(adminPasswordTextField, 3); builder.nextLine(); adminModeCheckBox.addItemListener(new EnableListener(adminPasswordTextField)); builder.appendSeparator(i18n.tr("Status Update")); updateOnStartupCheckBox = new JCheckBox(); settingMediator.add(Settings.UPDATE_ON_STARTUP, updateOnStartupCheckBox); builder.append(updateOnStartupCheckBox, 4); builder.nextLine(); autoUpdateCheckBox = new JCheckBox(); autoUpdateCheckBox.setEnabled(false); settingMediator.add(Settings.DO_AUTO_UPDATE, autoUpdateCheckBox); // the auto updater is error prone, therefore it has been disabled // until fixed //builder.append(autoUpdateCheckBox, 4); builder.nextLine(); autoUpdateIntervalModel = new SpinnerNumberModel(1, 1, Integer.MAX_VALUE, 30); settingMediator.add(Settings.AUTO_UPDATE_INTERVAL, autoUpdateIntervalModel); autoUpdateIntervalSpinner = new JSpinner(autoUpdateIntervalModel); autoUpdateIntervalSpinner.setEditor(new JSpinner.NumberEditor(autoUpdateIntervalSpinner, "# s")); //autoUpdateIntervalLabel = builder.append("", autoUpdateIntervalSpinner); autoUpdateIntervalLabel = new JLabel(); builder.nextLine(); autoUpdateCheckBox.addItemListener(new EnableListener(autoUpdateIntervalSpinner)); } public void initializeGeneralForm() { DefaultFormBuilder builder = createForm(); generalPanel = builder.getPanel();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -