1 package org.columba.mail.gui.message.viewer; 19 20 import java.awt.BorderLayout ; 21 import java.awt.Color ; 22 import java.awt.Font ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 26 import javax.swing.BorderFactory ; 27 import javax.swing.JButton ; 28 import javax.swing.JComponent ; 29 import javax.swing.JLabel ; 30 import javax.swing.JPanel ; 31 import javax.swing.border.Border ; 32 33 import org.columba.core.command.CommandProcessor; 34 import org.columba.mail.command.IMailFolderCommandReference; 35 import org.columba.mail.folder.IMailbox; 36 import org.columba.mail.folder.command.MarkMessageCommand; 37 import org.columba.mail.folder.command.ToggleMarkCommand; 38 import org.columba.mail.gui.frame.MailFrameMediator; 39 import org.columba.mail.gui.message.IMessageController; 40 41 47 public class SpamStatusViewer extends JPanel implements ICustomViewer, 48 ActionListener { 49 50 51 private boolean visible; 52 53 private IMessageController mediator; 54 55 private JLabel label; 56 57 private JButton button; 58 59 private JPanel panel; 60 61 public SpamStatusViewer(IMessageController mediator) { 62 super(); 63 64 this.mediator = mediator; 65 setBackground(Color.white); 66 67 panel = new JPanel (); 68 label = new JLabel (""); 69 label.setFont(label.getFont().deriveFont(Font.BOLD)); 70 button = new JButton ("No Spam"); 71 72 setLayout(new BorderLayout ()); 73 setBorder(BorderFactory.createEmptyBorder(5, 5, 2, 5)); 74 panel.setBackground(new Color (0xFABB48)); 75 panel.setLayout(new BorderLayout ()); 76 77 Border border = BorderFactory.createLineBorder(Color.gray); 78 79 panel.setBorder(BorderFactory.createCompoundBorder(border, 80 BorderFactory.createEmptyBorder(2, 5, 2, 2))); 81 82 add(panel, BorderLayout.CENTER); 83 84 panel.add(label, BorderLayout.WEST); 85 86 panel.add(button, BorderLayout.EAST); 87 88 button.addActionListener(this); 89 90 visible = false; 91 } 92 93 protected void layoutComponents(boolean isSpam) { 94 95 if (isSpam) { 96 panel.removeAll(); 97 98 setLayout(new BorderLayout ()); 99 setBorder(BorderFactory.createEmptyBorder(5, 5, 2, 5)); 100 panel.setBackground(new Color (1.0f, 0.8f, 0.5f)); 101 panel.setLayout(new BorderLayout ()); 102 panel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); 103 104 add(panel, BorderLayout.CENTER); 105 106 panel.add(label, BorderLayout.WEST); 107 108 panel.add(button, BorderLayout.EAST); 109 110 } else { 111 removeAll(); 112 } 113 114 revalidate(); 115 updateUI(); 116 } 117 118 121 public void updateUI() { 122 super.updateUI(); 123 124 setBorder(new MessageBorder(new Color (255, 176, 100), 1, true)); 125 126 Color color = new Color (255, 255, 160); 127 128 if (panel != null) 129 panel.setBackground(color); 130 131 132 } 133 134 private void setSpam(boolean isSpam) { 135 136 if (label != null) { 137 if (isSpam == true) 138 label.setText("Message is marked as spam"); 139 else 140 label.setText(""); 141 142 } 144 } 145 146 150 public void view(IMailbox folder, Object uid, MailFrameMediator mediator) 151 throws Exception { 152 Boolean spam = (Boolean ) folder.getAttribute(uid, "columba.spam"); 153 154 visible = spam.booleanValue(); 155 156 } 157 158 161 public JComponent getView() { 162 return label; 163 } 164 165 168 public boolean isVisible() { 169 return visible; 171 } 172 173 176 public void actionPerformed(ActionEvent arg0) { 177 IMailFolderCommandReference r = mediator.getSelectedReference(); 179 180 r.setMarkVariant(MarkMessageCommand.MARK_AS_NOTSPAM); 182 183 ToggleMarkCommand c = new ToggleMarkCommand(r); 184 CommandProcessor.getInstance().addOp(c); 185 } 186 187 190 public void updateGUI() throws Exception { 191 setSpam(visible); 192 193 } 194 } | Popular Tags |