/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * 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 org.jivesoftware.spark.plugins.transfersettings; import org.jivesoftware.spark.component.VerticalFlowLayout; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; import java.util.List; /** * UI for the file transfer preferences. It displays all the various preference settings for editing. */ public class TransferSettingsPanel extends JPanel { private static final long serialVersionUID = -2481011951921919518L; private BlockedTypesPanel pnlTypes = new BlockedTypesPanel(); private BlockedPeoplePanel pnlPeople = new BlockedPeoplePanel(); private FileSizePanel pnlSize = new FileSizePanel(); private CannedResponsePanel pnlResponse = new CannedResponsePanel(); public TransferSettingsPanel() { setLayout(new VerticalFlowLayout()); add(pnlTypes); add(pnlPeople); add(pnlSize); add(pnlResponse); } /** * Populates all the gui controls with values from the supplied {@link FileTransferSettings}. * @param settings the {@link FileTransferSettings} to populate the gui from. */ public void applySettings(FileTransferSettings settings) { pnlTypes.setBlockedTypes(settings.getBlockedExtensions()); pnlPeople.setBlockedPeople(settings.getBlockedJIDs()); pnlSize.setMaxFileSize(settings.getMaxFileSize()); pnlSize.setCheckFileSize(settings.getCheckFileSize()); pnlResponse.setCannedResponse(settings.getCannedRejectionMessage()); } /** * Populates the supplied {@link FileTransferSettings} from the values in the gui controls. * @param settings the {@link FileTransferSettings} to populate. */ public void storeSettings(FileTransferSettings settings) { settings.setBlockedExtensions(pnlTypes.getBlockedTypes()); settings.setBlockedJIDS(pnlPeople.getBlockedPeople()); settings.setMaxFileSize(pnlSize.getMaxFileSize()); settings.setCheckFileSize(pnlSize.getCheckFileSize()); settings.setCannedRejectionMessage(pnlResponse.getCannedResponse()); } private class BlockedTypesPanel extends JPanel { private static final long serialVersionUID = 6152402556852606706L; private JTextArea txtBlockedTypes = new JTextArea(2, 0); BlockedTypesPanel() { txtBlockedTypes.setBorder(UIManager.getLookAndFeelDefaults().getBorder("TextField.border")); txtBlockedTypes.setToolTipText(TGuardRes.getString("guard.settings.tooltips.blockedtypes")); setLayout(new BorderLayout()); setBorder(BorderFactory.createCompoundBorder(new TitledBorder(TGuardRes.getString("guard.settings.title.extensions")), new EmptyBorder(2,4,4,4))); add(txtBlockedTypes, BorderLayout.CENTER); } public void setBlockedTypes(List<String> types) { txtBlockedTypes.setText(FileTransferSettings.convertSettingsListToString(types)); } public List<String> getBlockedTypes() { return FileTransferSettings.convertSettingsStringToList(txtBlockedTypes.getText()); } } private class BlockedPeoplePanel extends JPanel { private static final long serialVersionUID = -1069560705582838620L; private JTextArea txtBlockedPeople = new JTextArea(2, 0); BlockedPeoplePanel() { txtBlockedPeople.setBorder(UIManager.getLookAndFeelDefaults().getBorder("TextField.border")); txtBlockedPeople.setToolTipText(TGuardRes.getString("guard.settings.tooltips.blockedperson")); setLayout(new BorderLayout()); setBorder(BorderFactory.createCompoundBorder(new TitledBorder(TGuardRes.getString("guard.settings.title.person")), new EmptyBorder(2,4,4,4))); add(txtBlockedPeople, BorderLayout.CENTER); } public void setBlockedPeople(List<String> people) { txtBlockedPeople.setText(FileTransferSettings.convertSettingsListToString(people)); } public List<String> getBlockedPeople() { return FileTransferSettings.convertSettingsStringToList(txtBlockedPeople.getText()); } } private class FileSizePanel extends JPanel { private static final long serialVersionUID = -8457074359832858639L; private JSpinner spinMaxSize = new JSpinner(); private JCheckBox chkMaxEnabled = new JCheckBox(TGuardRes.getString("guard.settings.limitcheck")); FileSizePanel() { setLayout(new VerticalFlowLayout()); setBorder(new TitledBorder(TGuardRes.getString("guard.settings.title.filesize"))); add(chkMaxEnabled); JPanel pnlSpinner = new JPanel(new GridBagLayout()); pnlSpinner.add(new JLabel(TGuardRes.getString(("guard.settings.label.maxsize"))), new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,0,0,2), 0, 0)); pnlSpinner.add(spinMaxSize, new GridBagConstraints(1, 0, 1, 1, 0.25, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0, 0)); pnlSpinner.add(new JPanel(), new GridBagConstraints(2, 0, 1, 1, 0.75, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0, 0)); add(pnlSpinner); chkMaxEnabled.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evnt) { if (spinMaxSize != null) { spinMaxSize.setEnabled(chkMaxEnabled.isSelected()); } } }); } public void setMaxFileSize(int kb) { spinMaxSize.setValue(kb); } public int getMaxFileSize() { return (Integer) spinMaxSize.getValue(); } public void setCheckFileSize(boolean check) { chkMaxEnabled.setSelected(check); } public boolean getCheckFileSize() { return chkMaxEnabled.isSelected(); } } private class CannedResponsePanel extends JPanel { private static final long serialVersionUID = -5992704440953686488L; private JTextArea txtMessage = new JTextArea(2, 0); CannedResponsePanel() { txtMessage.setBorder(UIManager.getLookAndFeelDefaults().getBorder("TextField.border")); txtMessage.setToolTipText(TGuardRes.getString(("guard.settings.tooltips.textarea"))); setLayout(new BorderLayout()); setBorder(BorderFactory.createCompoundBorder(new TitledBorder(TGuardRes.getString(("guard.settings.title.rejectresponse"))), new EmptyBorder(2,4,4,4))); add(txtMessage, BorderLayout.CENTER); } public void setCannedResponse(String message) { txtMessage.setText(message); } public String getCannedResponse() { return txtMessage.getText().trim(); } } }