usermanager.java
来自「开源项目openfire的完整源程序」· Java 代码 · 共 524 行 · 第 1/2 页
JAVA
524 行
/**
* Returns a Collection of all <code>ChatUsers</code> in a ChatRoom.
*
* @param chatRoom the ChatRoom to inspect.
* @return the Collection of all ChatUsers.
* @see <code>ChatUser</code>
*/
public Collection getAllParticipantsInRoom(ChatRoom chatRoom) {
final String room = chatRoom.getRoomname();
final List returnList = new ArrayList();
return returnList;
}
public String getUserNicknameFromJID(String jid) {
ContactList contactList = SparkManager.getWorkspace().getContactList();
ContactItem item = contactList.getContactItemByJID(jid);
if (item != null) {
return item.getNickname();
}
return unescapeJID(jid);
}
/**
* Escapes a complete JID by examing the Node itself and escaping
* when neccessary.
*
* @param jid the users JID
* @return the escaped JID.
*/
public static String escapeJID(String jid) {
if (jid == null) {
return null;
}
final StringBuilder builder = new StringBuilder();
String node = StringUtils.parseName(jid);
String restOfJID = jid.substring(node.length());
builder.append(StringUtils.escapeNode(node));
builder.append(restOfJID);
return builder.toString();
}
/**
* Unescapes a complete JID by examing the node itself and unescaping when necessary.
*
* @param jid the users jid.
* @return the unescaped JID.
*/
public static String unescapeJID(String jid) {
if (jid == null) {
return null;
}
final StringBuilder builder = new StringBuilder();
String node = StringUtils.parseName(jid);
String restOfJID = jid.substring(node.length());
builder.append(StringUtils.unescapeNode(node));
builder.append(restOfJID);
return builder.toString();
}
/**
* Returns the full jid w/ resource of a user by their nickname
* in the ContactList.
*
* @param nickname the nickname of the user.
* @return the full jid w/ resource of the user.
*/
public String getJIDFromNickname(String nickname) {
ContactList contactList = SparkManager.getWorkspace().getContactList();
ContactItem item = contactList.getContactItemByNickname(nickname);
if (item != null) {
return getFullJID(item.getJID());
}
return null;
}
/**
* Returns the full jid (with resource) based on the user's jid.
*
* @param jid the users bare jid.
* @return the full jid with resource.
*/
public String getFullJID(String jid) {
Presence presence = PresenceManager.getPresence(jid);
return presence.getFrom();
}
public void searchContacts(String contact, final JFrame parent) {
if (parents.get(parent) == null) {
parents.put(parent, parent.getGlassPane());
}
// Make sure we are using the default glass pane
final Component glassPane = (Component)parents.get(parent);
parent.setGlassPane(glassPane);
final Map<String, ContactItem> contactMap = new HashMap<String, ContactItem>();
final List<ContactItem> contacts = new ArrayList<ContactItem>();
final ContactList contactList = SparkManager.getWorkspace().getContactList();
final Iterator groups = contactList.getContactGroups().iterator();
while (groups.hasNext()) {
ContactGroup group = (ContactGroup)groups.next();
Iterator contactItems = group.getContactItems().iterator();
while (contactItems.hasNext()) {
ContactItem item = (ContactItem)contactItems.next();
if (!contactMap.containsKey(item.getJID())) {
contacts.add(item);
contactMap.put(item.getJID(), item);
}
}
}
// Sort
Collections.sort(contacts, itemComparator);
final JContactItemField contactField = new JContactItemField(new ArrayList<ContactItem>(contacts));
JPanel layoutPanel = new JPanel();
layoutPanel.setLayout(new GridBagLayout());
JLabel enterLabel = new JLabel(Res.getString("label.contact.to.find"));
enterLabel.setFont(new Font("dialog", Font.BOLD, 10));
layoutPanel.add(enterLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
layoutPanel.add(contactField, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 50, 0));
layoutPanel.setBorder(BorderFactory.createBevelBorder(0));
contactField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent keyEvent) {
if (keyEvent.getKeyChar() == KeyEvent.VK_ENTER) {
if (ModelUtil.hasLength(contactField.getText())) {
ContactItem item = (ContactItem)contactMap.get(contactField.getText());
if (item == null) {
item = contactField.getSelectedContactItem();
}
if (item != null) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
SparkManager.getChatManager().activateChat(item.getJID(), item.getNickname());
}
}
}
else if (keyEvent.getKeyChar() == KeyEvent.VK_ESCAPE) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
}
}
});
contactField.getList().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (ModelUtil.hasLength(contactField.getText())) {
ContactItem item = (ContactItem)contactMap.get(contactField.getText());
if (item == null) {
item = contactField.getSelectedContactItem();
}
if (item != null) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
SparkManager.getChatManager().activateChat(item.getJID(), item.getNickname());
}
}
}
}
});
final JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.setLayout(new GridBagLayout());
mainPanel.add(layoutPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 200, 0));
mainPanel.setOpaque(false);
contactField.setText(contact);
parent.setGlassPane(mainPanel);
parent.getGlassPane().setVisible(true);
contactField.focus();
mainPanel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent mouseEvent) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
}
});
parent.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
parent.removeWindowListener(this);
}
public void windowDeactivated(final WindowEvent windowEvent) {
TimerTask task = new SwingTimerTask() {
public void doRun() {
if (contactField.canClose()) {
windowClosing(windowEvent);
}
}
};
TaskEngine.getInstance().schedule(task, 250);
}
});
}
/**
* Returns the correct JID based on the number of resources signed in.
*
* @param jid the users jid.
* @return the valid jid to use.
*/
public static String getValidJID(String jid) {
Roster roster = SparkManager.getConnection().getRoster();
Iterator<Presence> presences = roster.getPresences(jid);
int count = 0;
Presence p = null;
if (presences.hasNext()) {
p = presences.next();
count++;
}
if (count == 1 && p != null) {
return p.getFrom();
}
else {
return jid;
}
}
/**
* Sorts ContactItems.
*/
final Comparator<ContactItem> itemComparator = new Comparator() {
public int compare(Object contactItemOne, Object contactItemTwo) {
final ContactItem item1 = (ContactItem)contactItemOne;
final ContactItem item2 = (ContactItem)contactItemTwo;
return item1.getNickname().toLowerCase().compareTo(item2.getNickname().toLowerCase());
}
};
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?