📄 privacypreferencespanel.java
字号:
/* Copyright (C) 2003 Adam Olsen 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 1, 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 com.valhalla.jbother.preferences;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Hashtable;import java.util.Iterator;import java.util.Locale;import java.util.ResourceBundle;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.ListSelectionModel;import com.valhalla.gui.Standard;import com.valhalla.jbother.BuddyList;import com.valhalla.jbother.JBother;import com.valhalla.settings.TempSettings;/** * Allows the user to manage the User IDs mantained in the blocked user * Hashtable. If any user in this list sends us a message, it will be ignored * * @author Adam Olsen * @version 1.0 */class PrivacyPreferencesPanel extends JPanel implements PreferencesPanel { private ResourceBundle resources = ResourceBundle.getBundle( "JBotherBundle", Locale.getDefault()); private JList blockedList = new JList(); private PreferencesDialog prefs; private GridBagLayout grid = new GridBagLayout(); private GridBagConstraints c = new GridBagConstraints(); private JLabel label = new JLabel(resources.getString("blockedUsers") + " "); private JButton addButton = new JButton(resources.getString("addButton")), removeButton = new JButton(resources.getString("deleteButton")); // we use a clone of the blocked users so that no changes are written or // used // unless the user clicks OK or Apply in the preferences dialog. private Hashtable users = (Hashtable) BuddyList.getInstance() .getBlockedUsers().clone(); /** * Sets up the panel * * @param dialog * the enclosing PreferencesDialog */ public PrivacyPreferencesPanel(PreferencesDialog dialog) { this.prefs = dialog; setBorder(BorderFactory.createTitledBorder(resources .getString("privacySettings"))); c.gridx = 0; c.gridy = 0; c.fill = GridBagConstraints.BOTH; c.gridwidth = 2; blockedList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); blockedList.setBorder(BorderFactory.createEtchedBorder()); setLayout(grid); getBlocked(); grid.setConstraints(label, c); add(label); c.weightx = 1.0; c.weighty = 1.0; c.gridy++; grid.setConstraints(blockedList, c); add(blockedList); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS)); buttonPanel.add(addButton); buttonPanel.add(removeButton); buttonPanel.add(Box.createHorizontalGlue()); c.gridy++; c.weightx = 0; c.weighty = 0; grid.setConstraints(buttonPanel, c); add(buttonPanel); addListeners(); } /** * Adds listeners to different events in the panel */ private void addListeners() { removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String item = (String) blockedList.getSelectedValue(); if (item != null) users.remove(item); getBlocked(); } }); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // grab a user id to add to the list String result = (String) JOptionPane.showInputDialog(prefs, resources.getString("enterIdToBlock"), resources .getString("blockUser"), JOptionPane.QUESTION_MESSAGE, null, null, null); if (result != null && !result.equals("")) { users.put(result, "blocked"); getBlocked(); } } }); } /** * Set up the blocked users list */ private void getBlocked() { ArrayList list = new ArrayList(); Iterator i = users.keySet().iterator(); while (i.hasNext()) list.add(i.next()); blockedList.setListData(list.toArray()); blockedList.validate(); } /** * This PreferencesPanel is different than the others in that it doesn't * actually change anything in Settings. Here we just return the same * Settings that were passed in, and write the new blocked users to the * blocked file */ public TempSettings getSettings() { File blockedFile = new File(JBother.profileDir + File.separator + "blocked"); try { FileWriter fw = new FileWriter(blockedFile); PrintWriter out = new PrintWriter(fw); Iterator i = users.keySet().iterator(); while (i.hasNext()) { // write each user id on a new line out.println((String) i.next()); } fw.close(); } catch (IOException ex) { Standard.warningMessage(prefs, resources.getString("blockUser"), resources.getString("problemWritingBlockedFile")); } BuddyList.getInstance().setBlockedUsers(users); return new TempSettings(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -