1 package org.columba.chat.ui.roaster; 19 20 import java.awt.Component ; 21 import java.awt.Font ; 22 23 import javax.swing.ImageIcon ; 24 import javax.swing.JTree ; 25 import javax.swing.tree.DefaultMutableTreeNode ; 26 import javax.swing.tree.DefaultTreeCellRenderer ; 27 28 import org.columba.chat.model.BuddyStatus; 29 import org.columba.chat.model.api.IBuddyStatus; 30 import org.columba.chat.resourceloader.ResourceLoader; 31 import org.jivesoftware.smack.RosterGroup; 32 import org.jivesoftware.smack.packet.Presence; 33 34 38 public class RoasterTreeRenderer extends DefaultTreeCellRenderer { 39 40 private ImageIcon available = ResourceLoader.getMiscIcon("available.png"); 41 42 private ImageIcon extendedaway = ResourceLoader 43 .getMiscIcon("extended-away.png"); 44 45 private ImageIcon busy = ResourceLoader.getMiscIcon("busy.png"); 46 47 private ImageIcon offline = ResourceLoader.getMiscIcon("offline.png"); 48 49 52 public RoasterTreeRenderer() { 53 super(); 54 55 } 56 57 61 public Component getTreeCellRendererComponent(JTree arg0, Object arg1, 62 boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) { 63 64 super.getTreeCellRendererComponent(arg0, arg1, arg2, arg3, arg4, arg5, 65 arg6); 66 67 Object o = ((DefaultMutableTreeNode ) arg1).getUserObject(); 68 69 setIcon(null); 70 71 if (o instanceof BuddyStatus) { 72 IBuddyStatus entry = (IBuddyStatus) o; 74 75 76 String name = entry.getName(); 77 Presence.Mode presence = entry.getPresenceMode(); 78 79 setFont(getFont().deriveFont(Font.PLAIN)); 80 81 if (presence != null) { 82 if (presence.equals(Presence.Mode.AVAILABLE)) { 83 setIcon(available); 84 } else if (presence.equals(Presence.Mode.AWAY)) { 85 setIcon(offline); 86 } 87 if (presence.equals(Presence.Mode.EXTENDED_AWAY)) { 88 setIcon(extendedaway); 89 } 90 if (presence.equals(Presence.Mode.CHAT)) { 91 92 } 93 if (presence.equals(Presence.Mode.DO_NOT_DISTURB)) { 94 setIcon(busy); 95 } 96 97 } 98 99 StringBuffer buf = new StringBuffer (); 100 if (name != null) 101 buf.append(name + " (" + entry.getJabberId() + ")"); 102 else 103 buf.append(entry.getJabberId()); 104 105 if (presence != null) { 106 buf.append(" - " + presence.toString()); 107 if (presence.equals(Presence.Mode.EXTENDED_AWAY)) { 108 setToolTipText(entry.getStatusMessage()); 109 } else { 110 setToolTipText(presence.toString()); 111 } 112 } 113 114 setText(buf.toString()); 115 } else if (o instanceof RosterGroup) { 116 RosterGroup group = (RosterGroup) o; 118 119 setFont(getFont().deriveFont(Font.BOLD)); 120 setText(group.getName()); 121 122 } else { 123 setFont(getFont().deriveFont(Font.BOLD)); 124 setText(arg1.toString()); 125 } 126 127 return this; 128 } 129 } 130 | Popular Tags |