KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > composer > SignatureView


1 package org.columba.mail.gui.composer;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Color JavaDoc;
5 import java.awt.Font JavaDoc;
6 import java.awt.event.ActionEvent JavaDoc;
7 import java.awt.event.ActionListener JavaDoc;
8 import java.awt.event.ItemEvent JavaDoc;
9 import java.awt.event.ItemListener JavaDoc;
10 import java.awt.event.MouseEvent JavaDoc;
11 import java.awt.event.MouseListener JavaDoc;
12 import java.io.BufferedReader JavaDoc;
13 import java.io.File JavaDoc;
14 import java.io.FileReader JavaDoc;
15 import java.io.IOException JavaDoc;
16 import java.util.Observable JavaDoc;
17 import java.util.Observer JavaDoc;
18
19 import javax.swing.BorderFactory JavaDoc;
20 import javax.swing.JButton JavaDoc;
21 import javax.swing.JPanel JavaDoc;
22 import javax.swing.JTextArea JavaDoc;
23 import javax.swing.UIManager JavaDoc;
24 import javax.swing.text.JTextComponent JavaDoc;
25
26 import org.columba.core.config.Config;
27 import org.columba.core.gui.base.RoundedBorder;
28 import org.columba.core.gui.util.FontProperties;
29 import org.columba.core.xml.XmlElement;
30 import org.columba.mail.config.AccountItem;
31 import org.columba.mail.gui.config.account.EditSignatureAction;
32
33 public class SignatureView extends JPanel JavaDoc implements MouseListener JavaDoc,
34         ItemListener JavaDoc, Observer JavaDoc {
35
36     private ComposerController controller;
37
38     private AccountItem item;
39
40     private JTextComponent JavaDoc textPane;
41
42     private JButton JavaDoc button;
43
44     public SignatureView(ComposerController controller) {
45         super();
46
47         this.controller = controller;
48
49         setLayout(new BorderLayout JavaDoc());
50
51         setBackground(UIManager.getColor("TextArea.background"));
52
53         setBorder(BorderFactory
54                 .createEmptyBorder(8,8,8,8));
55
56         JPanel JavaDoc centerPanel = new JPanel JavaDoc();
57         centerPanel.setBackground(UIManager.getColor("TextArea.background"));
58         
59         centerPanel.setBorder(BorderFactory.createCompoundBorder( new RoundedBorder(new Color JavaDoc(
60                         220, 220, 220)), BorderFactory
61                         .createEmptyBorder(8,8,8,8)));
62         centerPanel.setLayout(new BorderLayout JavaDoc());
63         
64         add(centerPanel, BorderLayout.CENTER);
65         
66         // setBorder(BorderFactory.createCompoundBorder(BorderFactory
67
// .createEmptyBorder(5, 5, 5, 5), BorderFactory
68
// .createCompoundBorder(new RoundedBorder(
69
// new Color(220, 220, 220)), BorderFactory
70
// .createEmptyBorder(5, 5, 5, 5))));
71

72         button = new JButton JavaDoc("Edit Signature...");
73         button.addActionListener(new ActionListener JavaDoc() {
74             public void actionPerformed(ActionEvent JavaDoc event) {
75                 new EditSignatureAction(SignatureView.this.controller, item)
76                         .actionPerformed(null);
77             }
78         });
79
80         JPanel JavaDoc topPanel = new JPanel JavaDoc();
81
82         topPanel.setBackground(UIManager.getColor("TextArea.background"));
83         topPanel.setLayout(new BorderLayout JavaDoc());
84         topPanel.setBorder(BorderFactory.createEmptyBorder(0,0,8,0));
85
86         topPanel.add(button, BorderLayout.WEST);
87
88         centerPanel.add(topPanel, BorderLayout.NORTH);
89
90         textPane = new JTextArea JavaDoc();
91
92         centerPanel.add(textPane, BorderLayout.CENTER);
93
94         textPane.setEditable(false);
95         textPane.setBackground(UIManager.getColor("TextArea.background"));
96         // textPane.setEnabled(false);
97
textPane.addMouseListener(this);
98
99         Font JavaDoc font = FontProperties.getTextFont();
100         setFont(font);
101
102         XmlElement options = Config.getInstance().get("options").getElement(
103                 "/options");
104         XmlElement gui = options.getElement("gui");
105         XmlElement fonts = gui.getElement("fonts");
106
107         if (fonts == null) {
108             fonts = gui.addSubElement("fonts");
109         }
110
111         // register interest on configuration changes
112
fonts.addObserver(this);
113
114         item = (AccountItem) controller.getAccountController().getView()
115                 .getSelectedItem();
116
117         if (item.getIdentity().getSignature() != null)
118             readSignature(item.getIdentity().getSignature());
119
120         // if account selection changes, reload signature file
121
controller.getAccountController().getView().addItemListener(this);
122
123         // add listener to changes
124
item.getIdentity().addObserver(this);
125
126     }
127
128     public void itemStateChanged(ItemEvent JavaDoc e) {
129         if (e.getStateChange() == ItemEvent.SELECTED) {
130
131             // remove listener from old account selection
132
item.getIdentity().removeObserver(this);
133
134             item = (AccountItem) controller.getAccountController().getView()
135                     .getSelectedItem();
136             if (item.getIdentity().getSignature() != null) {
137                 readSignature(item.getIdentity().getSignature());
138             } else {
139                 textPane.setText("");
140             }
141
142             // add listener to changes
143
item.getIdentity().addObserver(this);
144
145         }
146
147     }
148
149     /**
150      * Read signature from file.
151      *
152      * @param signatureFile
153      * signature file
154      */

155     private void readSignature(File JavaDoc signatureFile) {
156         StringBuffer JavaDoc strbuf = new StringBuffer JavaDoc();
157
158         try {
159             BufferedReader JavaDoc in = new BufferedReader JavaDoc(
160                     new FileReader JavaDoc(signatureFile));
161             String JavaDoc str;
162
163             while ((str = in.readLine()) != null) {
164                 strbuf.append(str + "\n");
165             }
166
167             in.close();
168
169             textPane.setText(strbuf.toString());
170
171         } catch (IOException JavaDoc ex) {
172             textPane.setText("");
173         }
174     }
175
176     public void mouseClicked(MouseEvent JavaDoc event) {
177         if ((event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0
178                 && item != null) {
179             if (event.getClickCount() >= 2) {
180                 new EditSignatureAction(controller, item).actionPerformed(null);
181             }
182         }
183     }
184
185     public void mouseEntered(MouseEvent JavaDoc e) {
186         // TODO Auto-generated method stub
187

188     }
189
190     public void mouseExited(MouseEvent JavaDoc e) {
191         // TODO Auto-generated method stub
192

193     }
194
195     public void mousePressed(MouseEvent JavaDoc e) {
196         // TODO Auto-generated method stub
197

198     }
199
200     public void mouseReleased(MouseEvent JavaDoc e) {
201         // TODO Auto-generated method stub
202

203     }
204
205     /**
206      *
207      * @see org.columba.mail.gui.config.general.MailOptionsDialog
208      *
209      * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
210      */

211     public void update(Observable JavaDoc arg0, Object JavaDoc arg1) {
212         Font JavaDoc font = FontProperties.getTextFont();
213         setFont(font);
214
215         readSignature(item.getIdentity().getSignature());
216     }
217
218 }
219
Popular Tags