⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 applestatusmenu.java

📁 开源项目openfire的完整源程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * Copyright (C) 1999-2004 Jive Software. All rights reserved. * * This software is the proprietary information of Jive Software. Use is subject to license terms. */package com.jivesoftware.spark.plugin.apple;import com.apple.cocoa.application.*;import com.apple.cocoa.foundation.NSSelector;import org.jivesoftware.smack.Roster;import org.jivesoftware.smack.RosterEntry;import org.jivesoftware.smack.RosterListener;import org.jivesoftware.smack.packet.Presence;import org.jivesoftware.smack.util.StringUtils;import org.jivesoftware.spark.ChatManager;import org.jivesoftware.spark.SparkManager;import org.jivesoftware.spark.Workspace;import org.jivesoftware.spark.ui.ChatFrame;import org.jivesoftware.spark.ui.ChatRoom;import org.jivesoftware.spark.ui.PresenceListener;import org.jivesoftware.spark.ui.status.StatusItem;import org.jivesoftware.spark.util.log.Log;import java.awt.Frame;import java.util.Collection;import java.util.Hashtable;import java.util.Iterator;import javax.swing.SwingUtilities;/** * @author Andrew Wright */public class AppleStatusMenu implements RosterListener, PresenceListener {    private final NSMenu contactMenu;    private final Hashtable entries;    private final NSStatusItem statusItem;    private final NSMenuItem freeToChatItem;    private final NSMenuItem availableItem;    private final NSMenuItem awayItem;    private final NSMenuItem extendedAwayItem;    private final NSMenuItem doNotDisturbItem;    private NSStatusBar bar;    public AppleStatusMenu() {        entries = new Hashtable();        Roster roster = SparkManager.getConnection().getRoster();        roster.addRosterListener(this);        this.contactMenu = new NSMenu();        NSMenuItem item = new NSMenuItem();        item.setTitle("My Status:");        item.setEnabled(false);        contactMenu.addItem(item);        freeToChatItem = new NSMenuItem();        freeToChatItem.setEnabled(true);        freeToChatItem.setTitle("Free To Chat");        freeToChatItem.setTarget(this);        freeToChatItem.setAction(new NSSelector("handleStatusChange", new Class[]{NSMenuItem.class}));        freeToChatItem.setImage(AppleUtils.getImage("/images/im_free_chat.png"));        contactMenu.addItem(freeToChatItem);        availableItem = new NSMenuItem();        availableItem.setEnabled(true);        availableItem.setTitle("Available");        availableItem.setTarget(this);        availableItem.setAction(new NSSelector("handleStatusChange", new Class[]{NSMenuItem.class}));        availableItem.setImage(AppleUtils.getImage("/images/green-ball.png"));        contactMenu.addItem(availableItem);        awayItem = new NSMenuItem();        awayItem.setEnabled(true);        awayItem.setTitle("Away");        awayItem.setTarget(this);        awayItem.setAction(new NSSelector("handleStatusChange", new Class[]{NSMenuItem.class}));        awayItem.setImage(AppleUtils.getImage("/images/im_away.png"));        contactMenu.addItem(awayItem);        extendedAwayItem = new NSMenuItem();        extendedAwayItem.setEnabled(true);        extendedAwayItem.setTitle("Extended Away");        extendedAwayItem.setTarget(this);        extendedAwayItem.setAction(new NSSelector("handleStatusChange", new Class[]{NSMenuItem.class}));        extendedAwayItem.setImage(AppleUtils.getImage("/images/im_away.png"));        contactMenu.addItem(extendedAwayItem);        doNotDisturbItem = new NSMenuItem();        doNotDisturbItem.setEnabled(true);        doNotDisturbItem.setTitle("Do Not Disturb");        doNotDisturbItem.setTarget(this);        doNotDisturbItem.setAction(new NSSelector("handleStatusChange", new Class[]{NSMenuItem.class}));        doNotDisturbItem.setImage(AppleUtils.getImage("/images/im_dnd.png"));        contactMenu.addItem(doNotDisturbItem);        Workspace workspace = SparkManager.getWorkspace();        Presence presence = workspace.getStatusBar().getPresence();        if (workspace != null) {            if (Presence.Mode.chat.equals(presence.getMode())) {                freeToChatItem.setState(NSCell.OnState);                availableItem.setState(NSCell.OffState);                awayItem.setState(NSCell.OffState);                extendedAwayItem.setState(NSCell.OffState);                doNotDisturbItem.setState(NSCell.OffState);            }            else if (Presence.Mode.available.equals(presence.getMode())) {                freeToChatItem.setState(NSCell.OffState);                availableItem.setState(NSCell.OnState);                awayItem.setState(NSCell.OffState);                extendedAwayItem.setState(NSCell.OffState);                doNotDisturbItem.setState(NSCell.OffState);            }            else if (Presence.Mode.away.equals(presence.getMode())) {                freeToChatItem.setState(NSCell.OffState);                availableItem.setState(NSCell.OffState);                awayItem.setState(NSCell.OnState);                extendedAwayItem.setState(NSCell.OffState);                doNotDisturbItem.setState(NSCell.OffState);            }            else if (Presence.Mode.xa.equals(presence.getMode())) {                freeToChatItem.setState(NSCell.OffState);                availableItem.setState(NSCell.OffState);                awayItem.setState(NSCell.OffState);                extendedAwayItem.setState(NSCell.OnState);                doNotDisturbItem.setState(NSCell.OffState);            }            else if (Presence.Mode.dnd.equals(presence.getMode())) {                freeToChatItem.setState(NSCell.OffState);                availableItem.setState(NSCell.OffState);                awayItem.setState(NSCell.OffState);                extendedAwayItem.setState(NSCell.OffState);                doNotDisturbItem.setState(NSCell.OnState);            }        }        contactMenu.addItem(item.separatorItem());        populateMenu(roster);        bar = NSStatusBar.systemStatusBar();        statusItem = bar.statusItem(NSStatusBar.VariableStatusItemLength);        statusItem.setImage(AppleUtils.getImage("/images/black-spark.gif"));        statusItem.setHighlightMode(true);        statusItem.setMenu(contactMenu);        statusItem.setEnabled(false);        SparkManager.getSessionManager().addPresenceListener(this);    }    public void display() {        statusItem.setEnabled(true);    }    public void showBlackIcon() {        statusItem.setImage(AppleUtils.getImage("/images/black-spark.gif"));    }    public void showActiveIcon() {        statusItem.setImage(AppleUtils.getImage("/images/spark-16x16.png"));    }    /**     * Called when NEW entries are added.     *     * @param addresses the addressss added.     */    public void entriesAdded(final Collection addresses) {        SwingUtilities.invokeLater(new Runnable() {            public void run() {                Roster roster = SparkManager.getConnection().getRoster();                Iterator jids = addresses.iterator();                while (jids.hasNext()) {                    String jid = (String)jids.next();                    RosterEntry entry = roster.getEntry(jid);                    addEntry(entry);                }            }        });    }    public void entriesUpdated(final Collection addresses) {    }    public void entriesDeleted(final Collection addresses) {        SwingUtilities.invokeLater(new Runnable() {            public void run() {                Roster roster = SparkManager.getConnection().getRoster();                Iterator jids = addresses.iterator();                while (jids.hasNext()) {                    String jid = (String)jids.next();                    RosterEntry entry = roster.getEntry(jid);                    removeEntry(entry);                }            }        });    }    public void presenceChanged(final String user) {        SwingUtilities.invokeLater(new Runnable() {            public void run() {                Roster roster = SparkManager.getConnection().getRoster();                Presence presence = roster.getPresence(user);                if (Presence.Mode.away.equals(presence.getMode())) {                    RosterEntry entry = roster.getEntry(user);                    removeEntry(entry);                }                else if (Presence.Mode.available.equals(presence.getMode()) ||

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -