📄 bsrostertreeview.java
字号:
* 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 + -