KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > j > mail > MailboxFormatter


1 /*
2  * MailboxFormatter.java
3  *
4  * Copyright (C) 1998-2002 Peter Graves
5  * $Id: MailboxFormatter.java,v 1.1.1.1 2002/09/24 16:10:09 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.j.mail;
23
24 import org.armedbear.j.Formatter;
25 import org.armedbear.j.Buffer;
26 import org.armedbear.j.Editor;
27 import org.armedbear.j.Line;
28 import org.armedbear.j.LineSegment;
29 import org.armedbear.j.LineSegmentList;
30 import org.armedbear.j.Property;
31 import org.armedbear.j.Utilities;
32 import org.armedbear.j.FormatTable;
33
34 public final class MailboxFormatter extends Formatter
35 {
36     private static final boolean SHOW_MESSAGE_NUMBERS =
37         Editor.preferences().getBooleanProperty(Property.SHOW_MESSAGE_NUMBERS);
38
39     private static final byte FORMAT_TEXT = 0;
40     private static final byte FORMAT_DELETED = 1;
41     private static final byte FORMAT_TAGGED = 2;
42
43     private static final byte FORMAT_TO = 3; // '+', 'T', 'C', 'F', '!'
44
private static final byte FORMAT_FLAGS = 4;
45     private static final byte FORMAT_DATE = 5;
46     private static final byte FORMAT_FROM = 6;
47     private static final byte FORMAT_SIZE = 7;
48     private static final byte FORMAT_SUBJECT = 8;
49
50     private static final byte FORMAT_FLAGGED_TO = 9;
51     private static final byte FORMAT_FLAGGED_FLAGS = 10;
52     private static final byte FORMAT_FLAGGED_DATE = 11;
53     private static final byte FORMAT_FLAGGED_FROM = 12;
54     private static final byte FORMAT_FLAGGED_SIZE = 13;
55     private static final byte FORMAT_FLAGGED_SUBJECT = 14;
56
57     private static final int TO_COLUMN_WIDTH = 2;
58     private static final int FLAGS_COLUMN_WIDTH = 3;
59     private static final int DATE_COLUMN_WIDTH = 14;
60     private static final int FROM_COLUMN_WIDTH = 22;
61     private static final int SIZE_COLUMN_WIDTH = 6;
62
63     private static final int TO_COLUMN = SHOW_MESSAGE_NUMBERS ? 6 : 0;
64     private static final int FLAGS_COLUMN = TO_COLUMN + TO_COLUMN_WIDTH;
65     private static final int DATE_COLUMN = FLAGS_COLUMN + FLAGS_COLUMN_WIDTH;
66     private static final int FROM_COLUMN = DATE_COLUMN + DATE_COLUMN_WIDTH;
67     private static final int SIZE_COLUMN = FROM_COLUMN + FROM_COLUMN_WIDTH;
68     private static final int SUBJECT_COLUMN = SIZE_COLUMN + SIZE_COLUMN_WIDTH;
69
70     public MailboxFormatter(Buffer buffer)
71     {
72         this.buffer = buffer;
73     }
74
75     public LineSegmentList formatLine(Line line)
76     {
77         String JavaDoc text;
78         if (Editor.tabsAreVisible())
79             text = Utilities.makeTabsVisible(line.getText(), buffer.getTabWidth());
80         else
81             text = Utilities.detab(line.getText(), buffer.getTabWidth());
82         clearSegmentList();
83         if (line instanceof MailboxLine) {
84             MailboxEntry entry = ((MailboxLine) line).getMailboxEntry();
85             if (entry.isTagged()) {
86                 addSegment(text, FORMAT_TAGGED);
87             } else if (entry.isDeleted()) {
88                 addSegment(text, FORMAT_DELETED);
89             } else if (entry.isFlagged()) {
90                 if (TO_COLUMN > 0)
91                     addSegment(text, 0, TO_COLUMN, FORMAT_TEXT);
92                 addSegment(text, TO_COLUMN, FLAGS_COLUMN, FORMAT_FLAGGED_TO);
93                 addSegment(text, FLAGS_COLUMN, DATE_COLUMN, FORMAT_FLAGGED_FLAGS);
94                 addSegment(text, DATE_COLUMN, FROM_COLUMN, FORMAT_FLAGGED_DATE);
95                 addSegment(text, FROM_COLUMN, SIZE_COLUMN, FORMAT_FLAGGED_FROM);
96                 addSegment(text, SIZE_COLUMN, SUBJECT_COLUMN, FORMAT_FLAGGED_SIZE);
97                 addSegment(text, SUBJECT_COLUMN, FORMAT_FLAGGED_SUBJECT);
98             } else {
99                 // Not flagged.
100
if (TO_COLUMN > 0)
101                     addSegment(text, 0, TO_COLUMN, FORMAT_TEXT);
102                 addSegment(text, TO_COLUMN, FLAGS_COLUMN, FORMAT_TO);
103                 addSegment(text, FLAGS_COLUMN, DATE_COLUMN, FORMAT_FLAGS);
104                 addSegment(text, DATE_COLUMN, FROM_COLUMN, FORMAT_DATE);
105                 addSegment(text, FROM_COLUMN, SIZE_COLUMN, FORMAT_FROM);
106                 addSegment(text, SIZE_COLUMN, SUBJECT_COLUMN, FORMAT_SIZE);
107                 addSegment(text, SUBJECT_COLUMN, FORMAT_SUBJECT);
108             }
109         } else
110             addSegment(text, FORMAT_TEXT);
111         return segmentList;
112     }
113
114     public FormatTable getFormatTable()
115     {
116         if (formatTable == null) {
117             formatTable = new FormatTable("MailboxMode");
118             formatTable.addEntryFromPrefs(FORMAT_TEXT, "text");
119             formatTable.addEntryFromPrefs(FORMAT_DELETED, "deleted", "disabled");
120             formatTable.addEntryFromPrefs(FORMAT_TAGGED, "marked");
121             formatTable.addEntryFromPrefs(FORMAT_TO, "to", "function");
122             formatTable.addEntryFromPrefs(FORMAT_FLAGS, "flags", "text");
123             formatTable.addEntryFromPrefs(FORMAT_DATE, "date", "keyword");
124             formatTable.addEntryFromPrefs(FORMAT_FROM, "from", "function");
125             formatTable.addEntryFromPrefs(FORMAT_SIZE, "size", "text");
126             formatTable.addEntryFromPrefs(FORMAT_SUBJECT, "subject", "string");
127             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_TO, "flaggedTo", "to");
128             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_FLAGS, "flaggedFlags", "flags");
129             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_DATE, "flaggedDate", "date");
130             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_FROM, "flaggedFrom", "from");
131             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_SIZE, "flaggedSize", "size");
132             formatTable.addEntryFromPrefs(FORMAT_FLAGGED_SUBJECT, "flaggedSubject", "subject");
133         }
134         return formatTable;
135     }
136 }
137
Popular Tags