KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > chat > ui > roaster > RoasterTreeRenderer


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.chat.ui.roaster;
19
20 import java.awt.Component JavaDoc;
21 import java.awt.Font JavaDoc;
22
23 import javax.swing.ImageIcon JavaDoc;
24 import javax.swing.JTree JavaDoc;
25 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
26 import javax.swing.tree.DefaultTreeCellRenderer JavaDoc;
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 /**
35  * @author fdietz
36  *
37  */

38 public class RoasterTreeRenderer extends DefaultTreeCellRenderer JavaDoc {
39
40     private ImageIcon JavaDoc available = ResourceLoader.getMiscIcon("available.png");
41
42     private ImageIcon JavaDoc extendedaway = ResourceLoader
43             .getMiscIcon("extended-away.png");
44
45     private ImageIcon JavaDoc busy = ResourceLoader.getMiscIcon("busy.png");
46
47     private ImageIcon JavaDoc offline = ResourceLoader.getMiscIcon("offline.png");
48
49     /**
50      *
51      */

52     public RoasterTreeRenderer() {
53         super();
54
55     }
56
57     /**
58      * @see javax.swing.tree.TreeCellRenderer#getTreeCellRendererComponent(javax.swing.JTree,
59      * java.lang.Object, boolean, boolean, boolean, int, boolean)
60      */

61     public Component JavaDoc getTreeCellRendererComponent(JTree JavaDoc arg0, Object JavaDoc 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 JavaDoc o = ((DefaultMutableTreeNode JavaDoc) arg1).getUserObject();
68
69         setIcon(null);
70
71         if (o instanceof BuddyStatus) {
72             // contact
73
IBuddyStatus entry = (IBuddyStatus) o;
74         
75
76             String JavaDoc 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 JavaDoc buf = new StringBuffer JavaDoc();
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             // group
117
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