rosterdialog.java.svn-base
来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 546 行 · 第 1/2 页
SVN-BASE
546 行
/** * $Revision: $ * $Date: $ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Lesser Public License (LGPL), * a copy of which is included in this distribution. */package org.jivesoftware.spark.ui;import org.jivesoftware.resource.Res;import org.jivesoftware.smack.Roster;import org.jivesoftware.smack.RosterEntry;import org.jivesoftware.smack.RosterGroup;import org.jivesoftware.smack.XMPPException;import org.jivesoftware.smack.util.StringUtils;import org.jivesoftware.smackx.packet.VCard;import org.jivesoftware.spark.SparkManager;import org.jivesoftware.spark.UserManager;import org.jivesoftware.spark.component.TitlePanel;import org.jivesoftware.spark.component.borders.ComponentTitledBorder;import org.jivesoftware.spark.component.renderer.JPanelRenderer;import org.jivesoftware.spark.util.ModelUtil;import org.jivesoftware.spark.util.ResourceUtils;import org.jivesoftware.spark.util.SwingWorker;import org.jivesoftware.spark.util.log.Log;import org.jivesoftware.sparkimpl.plugin.gateways.Gateway;import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportUtils;import javax.swing.BorderFactory;import javax.swing.Icon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.util.ArrayList;import java.util.List;import java.util.Vector;/** * The RosterDialog is used to add new users to the users XMPP Roster. */public class RosterDialog implements PropertyChangeListener, ActionListener { private JPanel panel; private JTextField jidField; private JTextField nicknameField; private final Vector<String> groupModel = new Vector<String>(); private final JPanel networkPanel = new JPanel(new GridBagLayout()); private JComboBox groupBox; private JComboBox accounts; private JOptionPane pane; private JDialog dialog; private ContactList contactList; private JCheckBox publicBox; /** * Create a new instance of RosterDialog. */ public RosterDialog() { contactList = SparkManager.getWorkspace().getContactList(); panel = new JPanel(); JLabel contactIDLabel = new JLabel(); jidField = new JTextField(); JLabel nicknameLabel = new JLabel(); nicknameField = new JTextField(); JLabel groupLabel = new JLabel(); groupBox = new JComboBox(groupModel); JButton newGroupButton = new JButton(); JLabel accountsLabel = new JLabel(); accounts = new JComboBox(); publicBox = new JCheckBox(Res.getString("label.user.on.public.network")); ResourceUtils.resLabel(accountsLabel, publicBox, Res.getString("label.network")); pane = null; dialog = null; panel.setLayout(new GridBagLayout()); panel.add(contactIDLabel, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); panel.add(jidField, new GridBagConstraints(1, 0, 1, 1, 1.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); panel.add(nicknameLabel, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); panel.add(nicknameField, new GridBagConstraints(1, 1, 1, 1, 1.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); ComponentTitledBorder componentBorder = new ComponentTitledBorder(publicBox, networkPanel , BorderFactory.createEtchedBorder()); networkPanel.add(accountsLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); networkPanel.add(accounts, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); networkPanel.setBorder(componentBorder); networkPanel.setVisible(false); accounts.setEnabled(false); panel.add(groupLabel, new GridBagConstraints(0, 4, 1, 1, 0.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); panel.add(groupBox, new GridBagConstraints(1, 4, 1, 1, 1.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); panel.add(newGroupButton, new GridBagConstraints(2, 4, 1, 1, 0.0D, 0.0D, 17, 2, new Insets(5, 5, 5, 5), 0, 0)); newGroupButton.addActionListener(this); panel.add(networkPanel, new GridBagConstraints(0, 5, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); ResourceUtils.resLabel(contactIDLabel, jidField, Res.getString("label.username") + ":"); ResourceUtils.resLabel(nicknameLabel, nicknameField, Res.getString("label.nickname") + ":"); ResourceUtils.resLabel(groupLabel, groupBox, Res.getString("label.group") + ":"); ResourceUtils.resButton(newGroupButton, Res.getString("button.new")); accounts.setRenderer(new JPanelRenderer()); for (ContactGroup group : contactList.getContactGroups()) { if (!group.isOfflineGroup() && !"Unfiled".equalsIgnoreCase(group.getGroupName()) && !group.isSharedGroup()) { groupModel.add(group.getGroupName()); } } groupBox.setEditable(true); if (groupModel.size() == 0) { groupBox.addItem("Friends"); } if (groupModel.size() > 0) { groupBox.setSelectedIndex(0); } jidField.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { String jid = getJID(); String vcardNickname = null; if (!publicBox.isSelected()) { // This is not a transport. String fullJID = getJID(); if (fullJID.indexOf("@") == -1) { fullJID = fullJID + "@" + SparkManager.getConnection().getServiceName(); } VCard vCard = SparkManager.getVCardManager().getVCard(fullJID); if (vCard != null && vCard.getError() == null) { String firstName = vCard.getFirstName(); String lastName = vCard.getLastName(); String nickname = vCard.getNickName(); if (ModelUtil.hasLength(nickname)) { vcardNickname = nickname; } else if (ModelUtil.hasLength(firstName) && ModelUtil.hasLength(lastName)) { vcardNickname = firstName + " " + lastName; } else if (ModelUtil.hasLength(firstName)) { vcardNickname = firstName; } } } String nickname = nicknameField.getText(); if (!ModelUtil.hasLength(nickname) && ModelUtil.hasLength(jid)) { nickname = StringUtils.parseName(jid); if (!ModelUtil.hasLength(nickname)) { nickname = jid; } nicknameField.setText(vcardNickname != null ? vcardNickname : nickname); } } }); final List<AccountItem> accountCol = getAccounts(); for (AccountItem item : accountCol) { accounts.addItem(item); } if (accountCol.size() > 0) { accountsLabel.setVisible(true); accounts.setVisible(true); publicBox.setVisible(true); networkPanel.setVisible(true); } publicBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { accounts.setEnabled(publicBox.isSelected()); } }); } /** * Sets the default <code>ContactGroup</code> to display in the combo box. * * @param contactGroup the default ContactGroup. */ public void setDefaultGroup(ContactGroup contactGroup) { String groupName = contactGroup.getGroupName(); if (groupModel.contains(groupName)) { groupBox.setSelectedItem(groupName); } else if (groupModel.size() > 0) { groupBox.addItem(groupName); groupBox.setSelectedItem(groupName); } } /** * Sets the default jid to show in the jid field. * * @param jid the jid. */ public void setDefaultJID(String jid) { jidField.setText(jid); } /** * Sets the default nickname to show in the nickname field. * * @param nickname the nickname. */ public void setDefaultNickname(String nickname) { nicknameField.setText(nickname); } public void actionPerformed(ActionEvent e) { String group = JOptionPane.showInputDialog(dialog, Res.getString("label.enter.group.name") + ":", Res.getString("title.new.roster.group"), 3); if (group != null && group.length() > 0 && !groupModel.contains(group)) { SparkManager.getConnection().getRoster().createGroup(group); groupModel.add(group); int size = groupModel.size(); groupBox.setSelectedIndex(size - 1); } } /** * Display the RosterDialog using a parent container. * * @param parent the parent Frame. */ public void showRosterDialog(JFrame parent) { TitlePanel titlePanel = new TitlePanel(Res.getString("title.add.contact"), Res.getString("message.add.contact.to.list"), null, true);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?