| 1 19 package org.lucane.applications.forum.gui; 20 21 import java.awt.*; 22 import javax.swing.*; 23 import javax.swing.tree.*; 24 25 import org.lucane.applications.forum.ForumPlugin; 26 import org.lucane.applications.forum.model.ForumMessage; 27 28 public class MessageRenderer extends DefaultTreeCellRenderer 29 { 30 private long lastRefresh; 31 32 private Icon normalIcon; 33 private Icon newIcon; 34 private Icon deletedIcon; 35 36 public MessageRenderer(ForumPlugin plugin, String forum) 37 { 38 this.lastRefresh = plugin.getLastRefreshTime(forum); 39 40 this.normalIcon = plugin.getImageIcon("normal.png"); 41 this.newIcon = plugin.getImageIcon("new.png"); 42 this.deletedIcon = plugin.getImageIcon("deleted.png"); 43 } 44 45 public Component getTreeCellRendererComponent(JTree tree, 46 Object value, boolean sel, boolean expanded, boolean leaf, 47 int row, boolean hasFocus) 48 { 49 JLabel label = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); 50 51 if(! (value instanceof DefaultMutableTreeNode)) 53 return label; 54 55 DefaultMutableTreeNode node = (DefaultMutableTreeNode)value; 56 if(! (node.getUserObject() instanceof ForumMessage)) 57 return label; 58 59 ForumMessage message = (ForumMessage)node.getUserObject(); 61 if(message.isVisible()) 62 { 63 if(message.getDate().getTime() > lastRefresh) 64 label.setIcon(newIcon); 65 else 66 label.setIcon(normalIcon); 67 } 68 else 69 label.setIcon(deletedIcon); 70 71 JLabel author = new JLabel("[" + message.getAuthor() + "]"); 72 author.setFont(label.getFont()); 73 author.setForeground(Color.GRAY); 74 75 JPanel pnl = new JPanel(new BorderLayout()); 76 pnl.add(label, BorderLayout.CENTER); 77 pnl.add(author, BorderLayout.EAST); 78 pnl.setOpaque(false); 79 80 return pnl; 81 } 82 } | Popular Tags |