📄 notificationpreferencespanel.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.*;import java.awt.event.*;import java.net.URL;import java.util.Iterator;import java.util.Locale;import java.util.ResourceBundle;import java.util.Vector;import javax.swing.*;import javax.swing.event.*;import com.valhalla.gui.MJTextField;import com.valhalla.gui.Standard;import com.valhalla.jbother.BuddyList;import com.valhalla.jbother.ConversationPanel;import com.valhalla.jbother.MessageDelegator;import com.valhalla.settings.Settings;import com.valhalla.settings.TempSettings;/** * Allows the user to change General Preferences * * @author Adam Olsen * @version 1.0 */class NotificationPreferencesPanel extends JPanel implements PreferencesPanel { private ResourceBundle resources = ResourceBundle.getBundle( "JBotherBundle", Locale.getDefault()); private PreferencesDialog prefs; private GridBagLayout grid = new GridBagLayout(); private GridBagConstraints c = new GridBagConstraints(); private JCheckBox focusWindow = new JCheckBox(resources .getString("focusConversations")); private JCheckBox usePopup = new JCheckBox(resources.getString("usePopup")); private JCheckBox popupForSignOn = new JCheckBox(resources.getString("popupForSignOn")); private JCheckBox popupForSignOff = new JCheckBox(resources.getString("popupForSignOff")); private JCheckBox popupForGroupMessage = new JCheckBox(resources.getString("popupForGroupMessage")); private int npopupx = 100; private int npopupy = 100; private NotificationWindow nw = null; /** * Creates the PreferencesPanel * * @param dialog * the enclosing PreferencesDialog */ public NotificationPreferencesPanel(PreferencesDialog dialog) { this.prefs = dialog; setBorder(BorderFactory.createTitledBorder(resources .getString("generalPreferences"))); setLayout(grid); usePopup.addActionListener(new NPMouseListener()); c.gridx = 0; c.gridy = 0; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.weightx = .5; c.gridwidth = 2; grid.setConstraints(focusWindow, c); add(focusWindow); c.gridy++; grid.setConstraints(usePopup, c); add(usePopup); c.gridy++; grid.setConstraints(popupForSignOn, c); add(popupForSignOn); c.gridy++; grid.setConstraints(popupForSignOff, c); add(popupForSignOff); c.gridy++; grid.setConstraints(popupForGroupMessage, c); add(popupForGroupMessage); //this is the space taker JLabel blankLabel = new JLabel(""); c.weighty = .5; c.gridx = 0; c.gridwidth = 2; c.gridy++; grid.setConstraints(blankLabel, c); add(blankLabel); loadSettings(); } private void enableDisable(boolean selected) { popupForSignOn.setEnabled(selected); popupForSignOff.setEnabled(selected); popupForGroupMessage.setEnabled(selected); } private class NPMouseListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (usePopup.isSelected() && nw == null) { Standard.warningMessage(prefs, resources .getString("preferences"), resources .getString("usePopupDescription")); nw = new NotificationWindow(); } else if (!usePopup.isSelected() && nw != null) { nw.dispose(); nw = null; } enableDisable(usePopup.isSelected()); } } /** * Loads settings from the settings file and fills out the form for defaults */ private void loadSettings() { focusWindow.setSelected(Settings.getInstance() .getBoolean("focusWindow")); usePopup.setSelected(Settings.getInstance().getBoolean("usePopup")); try { npopupx = Integer.parseInt(Settings.getInstance().getProperty( "NPopupX")); npopupy = Integer.parseInt(Settings.getInstance().getProperty( "NPopupY")); } catch (Exception e) { } popupForSignOn.setSelected(Settings.getInstance().getBoolean("popupForSignOn")); popupForSignOff.setSelected(Settings.getInstance().getBoolean("popupForSignOff")); popupForGroupMessage.setSelected(Settings.getInstance().getBoolean("popupForGroupMessage")); enableDisable(usePopup.isSelected()); } /** * Returns the currently chosen settings */ public TempSettings getSettings() { TempSettings mySettings = new TempSettings(); mySettings.setBoolean("focusWindow", focusWindow.isSelected()); mySettings.setBoolean("usePopup", usePopup.isSelected()); mySettings.setBoolean("popupForSignOn", popupForSignOn.isSelected()); mySettings.setBoolean("popupForSignOff", popupForSignOff.isSelected()); mySettings.setBoolean("popupForGroupMessage", popupForGroupMessage.isSelected()); if (nw != null) { nw.saveLocation(); nw.dispose(); } mySettings.setProperty("NPopupX", "" + npopupx); mySettings.setProperty("NPopupY", "" + npopupy); return mySettings; } class NotificationWindow extends JFrame { public NotificationWindow() { super("Drag & Close"); JPanel panel = (JPanel) getContentPane(); panel.setLayout(new BorderLayout()); URL light = getClass().getClassLoader().getResource( "images/lightbulb.png"); StringBuffer mess = new StringBuffer(); mess.append("<html><table><tr><td valign='top' width='2%'>") .append("<img src='").append(light.toString()).append( "'></td>").append( "<td valign='top'><b>Notification").append( "</b><br>Drag & Close").append( "</td></tr></table></html>"); panel.add(new JLabel(mess.toString()), BorderLayout.CENTER); panel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); panel.setBackground(new Color(247, 255, 117)); pack(); setSize(new Dimension(200, 82)); setLocation(npopupx, npopupy); setResizable(false); setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ex) { nw = null; saveLocation(); } }); toFront(); } public void saveLocation() { Point p = getLocation(); npopupx = (int) p.getX(); npopupy = (int) p.getY(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -