KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * MessageMode.java
3  *
4  * Copyright (C) 2000-2002 Peter Graves
5  * $Id: MessageMode.java,v 1.4 2003/04/18 16:55:45 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 java.awt.event.KeyEvent JavaDoc;
25 import org.armedbear.j.AbstractMode;
26 import org.armedbear.j.Buffer;
27 import org.armedbear.j.Constants;
28 import org.armedbear.j.Editor;
29 import org.armedbear.j.Formatter;
30 import org.armedbear.j.Frame;
31 import org.armedbear.j.HtmlLineSegment;
32 import org.armedbear.j.KeyMap;
33 import org.armedbear.j.Keywords;
34 import org.armedbear.j.Link;
35 import org.armedbear.j.Mode;
36 import org.armedbear.j.NavigationComponent;
37 import org.armedbear.j.Position;
38 import org.armedbear.j.Property;
39 import org.armedbear.j.ToolBar;
40 import org.armedbear.j.View;
41 import org.armedbear.j.WebLine;
42
43 public final class MessageMode extends AbstractMode implements Constants, Mode
44 {
45     private static final Mode mode = new MessageMode();
46
47     private MessageMode()
48     {
49         super(MESSAGE_MODE, MESSAGE_MODE_NAME);
50         keywords = new Keywords(this, true); // Ignore case.
51
setProperty(Property.VERTICAL_RULE, 0);
52         setProperty(Property.SHOW_LINE_NUMBERS, false);
53         setProperty(Property.HIGHLIGHT_MATCHING_BRACKET, false);
54         setProperty(Property.HIGHLIGHT_BRACKETS, false);
55     }
56
57     public static final Mode getMode()
58     {
59         return mode;
60     }
61
62     public NavigationComponent getSidebarComponent(Editor editor)
63     {
64         View view = editor.getCurrentView();
65         if (view == null)
66             return null; // Shouldn't happen.
67
if (view.getSidebarComponent() == null)
68             view.setSidebarComponent(FolderTree.getInstance(editor.getFrame()));
69         return view.getSidebarComponent();
70     }
71
72     public final Formatter getFormatter(Buffer buffer)
73     {
74         return new MessageFormatter(buffer);
75     }
76
77     protected void setKeyMapDefaults(KeyMap km)
78     {
79         km.mapKey('h', "messageToggleHeaders");
80         km.mapKey('f', "messageForward");
81         km.mapKey('F', "messageFlag");
82         km.mapKey('r', "messageReplyToSender");
83         km.mapKey('g', "messageReplyToGroup");
84         km.mapKey('d', "messageDelete");
85         km.mapKey('m', "messageMoveToFolder");
86         km.mapKey('n', "messageNext");
87         km.mapKey('p', "messagePrevious");
88         km.mapKey('N', "messageNextInThread");
89         km.mapKey('P', "messagePreviousInThread");
90         km.mapKey('i', "messageIndex");
91         km.mapKey('R', "messageToggleRaw");
92         km.mapKey('v', "messageViewAttachment");
93         km.mapKey(KeyEvent.VK_ENTER, 0, "messageViewAttachment");
94         km.mapKey('s', "messageSaveAttachment");
95         km.mapKey('b', "bounce");
96         km.mapKey(KeyEvent.VK_F12, CTRL_MASK, "messageToggleWrap");
97     }
98
99     protected final ToolBar getDefaultToolBar(Frame frame)
100     {
101         return new MessageModeToolBar(frame);
102     }
103
104     public final String JavaDoc getContextString(Editor editor, boolean verbose /*ignored*/)
105     {
106         return getContextString(editor.getDot());
107     }
108
109     public final String JavaDoc getMouseMovedContextString(Editor editor, Position pos)
110     {
111         // We want to clear the status text if the mouse is not over a link, so
112
// return "" instead of null.
113
final String JavaDoc s = getContextString(pos);
114         return s != null ? s : "";
115     }
116
117     private String JavaDoc getContextString(Position pos)
118     {
119         if (pos != null && pos.getLine() instanceof WebLine) {
120             HtmlLineSegment segment =
121                 ((WebLine)pos.getLine()).findSegment(pos.getOffset());
122             if (segment != null) {
123                 Link link = segment.getLink();
124                 if (link != null)
125                     return link.getTarget();
126             }
127         }
128         return null;
129     }
130 }
131
Popular Tags