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

📄 bsrostertreeview.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     * It includes information about resources and about all tree nodes which
     * are diplayed for this jid.
     */
    public class BSJIDItem {
        protected RosterItem ri = null;
        protected BSPresenceInfo pi = null;
        protected boolean message = false;
        protected Vector nodes = null;
        protected Vector resources = null;
        
        /** Constructor */
        public BSJIDItem(RosterItem ri, BSPresenceInfo pi, boolean messageWaiting) {
            this.ri = ri;
            this.pi = pi;
            message = messageWaiting;
            nodes = new Vector();
            resources = new Vector();
        }
        
        /** Adds tree node into hashtable */
        public void addNode(DefaultMutableTreeNode n) {
            nodes.add(n);
        }
        
        /** Updates information about resources */
        public void updateResources() {
            // gets resources from presence bean
            Enumeration pis = presenceBean.getAllPresences(ri.getJID());
            resources.clear();
            while (pis.hasMoreElements()) {
                resources.add(pis.nextElement());
            }
            
            // for all tree nodes updates the resources
            Enumeration nodeEnum = nodes.elements();
            while (nodeEnum.hasMoreElements()) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodeEnum.nextElement();
                node.removeAllChildren();
                pis = resources.elements();
                while (pis.hasMoreElements()) {
                    BSPresenceInfo pi = (BSPresenceInfo) pis.nextElement();
                    JID jid;
                    if (pi != null && pi.isOnline() && 
                        (jid = pi.getJID()) != null &&
                        jid.getResource() != null) {
                            
                        BSResourceNode resNode = new BSResourceNode(pi);
                        node.add(resNode);
                    }
                }
            }
        }
        
        /** Returns text displayed in tree */
        public String toString() {
            /*String fn = ri.getFriendlyName();
            if (fn == null || fn.equals(""))
                fn = ri.getJID().toString();
            String subscr = ri.getSubscriptionType();
            if (subscr != null && (subscr.equals("to") || subscr.equals("both")))
                return fn + " (" + pi.show + "-" + pi.status + ")";
            else
                return fn + " (not subscribed)";*/
            
            String fn = ri.getFriendlyName();
            if (fn == null || fn.equals(""))
                fn = ri.getJID().toString();
            return fn;
            
            /*String jidStr = ri.getJID().toString();
            String subscr = ri.getSubscriptionType();
            if (subscr != null && (subscr.equals("to") || subscr.equals("both")))
                return jidStr + " (" + pi.show + "-" + pi.status + ")";
            else
                return jidStr + " (not subscribed)";*/
        }
        
        /** Returns hash code used by tree */
        public String getHashString() {
            //return BSPresenceBean.getJIDHashString(ri.getJID(), false);
            return ri.getJID().getSimpleJID().normalize();
        }
        
        /** Returns JID */
        public JID getJID() {
            return ri.getJID();
        }
        
        /** Returns if node is available / on-line */
        public boolean isOnline() {
            return (pi != null)? pi.isOnline() : false;
        }
        
        /** Returns friendly name of JID */
        public String getFriendlyName() {
            return ri.getFriendlyName();
        }
        
        /** Returns subscription type */
        public String getSubscriptionType() {
            return ri.getSubscriptionType();
        }
        
        /** Returns presence show */
        public String getShow() {
            return (pi != null)? pi.getShow() : null;
        }
        
        /** Returns presence show */
        public String getFriendlyShow() {
            return (pi != null)? pi.getFriendlyShow() : null;
        }
        
        /** Returns presence status */
        public String getStatus() {
            return (pi != null)? pi.getStatus() : null;
        }
        
        /** Returns if the node represents currently logged user */
        public boolean isMyself() {
            return (pi != null)? pi.isMyself() : false;
        }
        
        /** Updates inner flag for unread messages */
        public void updateMessageWaiting() {
            message = messengerBean.isMessageWaiting(ri.getJID());
            
            Enumeration nodeEnum = nodes.elements();
            while (nodeEnum.hasMoreElements()) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodeEnum.nextElement();
                Enumeration children = node.children();
                while (children.hasMoreElements()) {
                    BSResourceNode resNode = (BSResourceNode) children.nextElement();
                    resNode.updateMessageWaiting();
                }
            }
        }
        
        /** Returns if there is an unread message for this JID */
        public boolean isMessageWaiting() {
            return message;
        }
        
    } // BSJIDItem
    
    /**
     * <code>BSResourceNode</code> is a tree node representing resource of
     * a JID.
     */
    public class BSResourceNode extends DefaultMutableTreeNode {
        protected BSPresenceInfo pi = null;
        protected boolean message = false;
        
        /** Constructor */
        public BSResourceNode(BSPresenceInfo pi) {
            this.pi = pi;
        }
        
        /** Returns text displayed in tree */
        public String toString() {
            return (pi != null && pi.getJID() != null)? 
                pi.getJID().getResource() : "";
        }
        
        /** Returns jid */
        public JID getJID() {
            return (pi != null)? pi.getJID() : null;
        }
        
        /** Returns if node is available / on-line */
        public boolean isOnline() {
            return (pi != null)? pi.isOnline() : false;
        }
        
        /** Returns presence show */
        public String getShow() {
            return (pi != null)? pi.getShow() : null;
        }
        
        /** Returns presence show */
        public String getFriendlyShow() {
            return (pi != null)? pi.getFriendlyShow() : null;
        }
        
        /** Returns presence status */
        public String getStatus() {
            return (pi != null)? pi.getStatus() : null;
        }
        
        /** Returns if the node represents currently logged user */
        public boolean isMyself() {
            return (pi != null)? pi.isMyself() : false;
        }
        
        /** Updates unread message for this resource flag*/
        public void updateMessageWaiting() {
            if (pi != null && pi.getJID() != null)
                message = messengerBean.isMessageWaiting(pi.getJID());
        }
        
        /** Returns if any unread message for this resource */
        public boolean isMessageWaiting() {
            return message;
        }
    } // BSResourceItem
    
    
    /**
     * <code>BSComponentNode</code> is a tree node representing resource of
     * a JID.
     */
    public class BSComponentNode extends DefaultMutableTreeNode {
        protected RosterItem ri = null;
        protected BSPresenceInfo pi = null;
        protected boolean message = false;
        
        /** Constructor */
        public BSComponentNode(RosterItem ri, BSPresenceInfo pi) {
            this.ri = ri;
            this.pi = pi;
        }
        
        /** Returns text displayed in tree */
        public String toString() {
            String fn = ri.getFriendlyName();
            if (fn == null || fn.equals(""))
                fn = ri.getJID().getServer();
            return fn;
        }
        
        /** Returns jid */
        public JID getJID() {
            return (pi != null)? pi.getJID() : null;
        }
        
        /** Returns if node is available / on-line */
        public boolean isOnline() {
            return (pi != null)? pi.isOnline() : false;
        }
        
        /** Returns friendly name of JID */
        public String getFriendlyName() {
            return ri.getFriendlyName();
        }
        
        /** Returns subscription type */
        public String getSubscriptionType() {
            return ri.getSubscriptionType();
        }
        
        /** Returns presence show */
        public String getShow() {
            return (pi != null)? pi.getShow() : null;
        }
        
        /** Returns presence show */
        public String getFriendlyShow() {
            return (pi != null)? pi.getFriendlyShow() : null;
        }
        
        /** Returns presence status */
        public String getStatus() {
            return (pi != null)? pi.getStatus() : null;
        }
        
        /** Updates unread message for this resource flag*/
        public void updateMessageWaiting() {
            if (pi != null && pi.getJID() != null)
                message = messengerBean.isMessageWaiting(pi.getJID());
        }
        
        /** Returns if any unread message for this resource */
        public boolean isMessageWaiting() {
            return message;
        }
    } // BSComponentItem
    
    
    /**
     * <code>BSRosterRenderer</code> provides roster tree specific rendering.
     */
    public class BSRosterRenderer extends DefaultTreeCellRenderer {
        protected ImageIcon onlineIcon = null;
        protected ImageIcon offlineIcon = null;
        protected ImageIcon awayIcon = null;
        protected ImageIcon lurkerIcon = null;
        protected ImageIcon groupCollapsedIcon = null;
        protected ImageIcon groupExpandedIcon = null;
        protected ImageIcon groupCollapsedAwayIcon = null;
        protected ImageIcon groupExpandedAwayIcon = null;
        protected ImageIcon groupCollapsedOnlineIcon = null;
        protected ImageIcon groupExpandedOnlineIcon = null;
        protected ImageIcon groupCollapsedOfflineIcon = null;
        protected ImageIcon groupExpandedOfflineIcon = null;
        protected ImageIcon transportOnIcon = null;
        protected ImageIcon transportAwayIcon = null;
        protected ImageIcon transportOffIcon = null;
        protected ImageIcon onlineMsgIcon = null;
        protected ImageIcon offlineMsgIcon = null;
        protected ImageIcon awayMsgIcon = null;
        protected ImageIcon lurkerMsgIcon = null;
        protected ImageIcon xaIcon = null;
        protected ImageIcon dndIcon = null;
        protected ImageIcon chatIcon = null;
        protected ImageIcon myselfIcon = null;
        protected ImageIcon busyIcon = null;
        protected ImageIcon elseIcon = null;
        //protected ImageIcon messageIcon = null;
        
        /** Constructor */
        public BSRosterRenderer() {
            onlineIcon = new ImageIcon(ClassLoader.getSystemResource("images/green_light.gif"));
            offlineIcon = new ImageIcon(ClassLoader.getSystemResource("images/red_light.gif"));
            awayIcon = new ImageIcon(ClassLoader.getSystemResource("images/yellow_light.gif"));
            lurkerIcon = new ImageIcon(ClassLoader.getSystemResource("images/question.gif"));
            groupCollapsedIcon = new ImageIcon(ClassLoader.getSystemResource("images/groupCol.gif"));
            groupExpandedIcon = new ImageIcon(ClassLoader.getSystemResource("images/arrow_down.gif"));
            groupCollapsedAwayIcon = new ImageIcon(ClassLoader.getSystemResource("images/groupCol-away.gif"));
            groupExpandedAwayIcon = new ImageIcon(ClassLoader.getSystemResource("images/arrow_down-away.gif"));
            groupCollapsedOnlineIcon = new ImageIcon(ClassLoader.getSystemResource("images/groupCol-online.gif"));
            groupExpandedOnlineIcon = new ImageIcon(ClassLoader.getSystemResource("images/arrow_down-online.gif")

⌨️ 快捷键说明

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