KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * MailboxMode.java
3  *
4  * Copyright (C) 1998-2002 Peter Graves
5  * $Id: MailboxMode.java,v 1.3 2002/11/15 20:23: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 java.awt.event.KeyEvent JavaDoc;
25 import javax.swing.JCheckBoxMenuItem JavaDoc;
26 import org.armedbear.j.AbstractMode;
27 import org.armedbear.j.Buffer;
28 import org.armedbear.j.Constants;
29 import org.armedbear.j.Dispatcher;
30 import org.armedbear.j.Editor;
31 import org.armedbear.j.Formatter;
32 import org.armedbear.j.Frame;
33 import org.armedbear.j.KeyMap;
34 import org.armedbear.j.Line;
35 import org.armedbear.j.Menu;
36 import org.armedbear.j.Mode;
37 import org.armedbear.j.NavigationComponent;
38 import org.armedbear.j.Position;
39 import org.armedbear.j.Property;
40 import org.armedbear.j.ToolBar;
41 import org.armedbear.j.View;
42
43 public class MailboxMode extends AbstractMode implements Constants, Mode
44 {
45     private static final MailboxMode mode = new MailboxMode();
46
47     private MailboxMode()
48     {
49         this(MAILBOX_MODE, MAILBOX_MODE_NAME);
50     }
51
52     protected MailboxMode(int id, String JavaDoc displayName)
53     {
54         super(id, displayName);
55         setProperty(Property.VERTICAL_RULE, 0);
56         setProperty(Property.SHOW_LINE_NUMBERS, false);
57         setProperty(Property.SHOW_CHANGE_MARKS, false);
58         setProperty(Property.HIGHLIGHT_MATCHING_BRACKET, false);
59         setProperty(Property.HIGHLIGHT_BRACKETS, false);
60     }
61
62     public static Mode getMode()
63     {
64         return mode;
65     }
66
67     public NavigationComponent getSidebarComponent(Editor editor)
68     {
69         View view = editor.getCurrentView();
70         if (view == null)
71             return null; // Shouldn't happen.
72
if (view.getSidebarComponent() == null)
73             view.setSidebarComponent(FolderTree.getInstance(editor.getFrame()));
74         return view.getSidebarComponent();
75     }
76
77     public Formatter getFormatter(Buffer buffer)
78     {
79         return new MailboxFormatter(buffer);
80     }
81
82     protected void setKeyMapDefaults(KeyMap km)
83     {
84         km.mapKey(KeyEvent.VK_HOME, 0, "bol");
85         km.mapKey(KeyEvent.VK_END, CTRL_MASK, "mailboxLastMessage");
86         km.mapKey(KeyEvent.VK_ENTER, 0, "mailboxReadMessageOtherWindow");
87         km.mapKey(KeyEvent.VK_ENTER, CTRL_MASK, "mailboxReadMessage");
88         km.mapKey(KeyEvent.VK_G, CTRL_MASK | SHIFT_MASK, "mailboxReadMessage");
89         km.mapKey(VK_DOUBLE_MOUSE_1, 0, "mailboxReadMessageOtherWindow");
90         km.mapKey(VK_MOUSE_2, 0, "mailboxReadMessageOtherWindow");
91         km.mapKey('G', "mailboxGetNewMessages");
92         km.mapKey('s', "mailboxSaveToFolder");
93         km.mapKey('m', "mailboxMoveToFolder");
94         km.mapKey('d', "mailboxDelete");
95         km.mapKey('u', "mailboxUndelete");
96         km.mapKey('M', "mailboxMarkRead");
97         km.mapKey(KeyEvent.VK_M, CTRL_MASK | SHIFT_MASK, "mailboxMarkUnread");
98         km.mapKey('t', "mailboxTag");
99         km.mapKey(KeyEvent.VK_T, CTRL_MASK, "mailboxTagPattern");
100         km.mapKey('T', "mailboxUntagAll");
101         km.mapKey('R', "mailboxToggleRaw");
102         km.mapKey('$', "mailboxExpunge");
103         km.mapKey('c', "compose");
104         km.mapKey('l', "mailboxLimit");
105         km.mapKey('L', "mailboxUnlimit");
106         km.mapKey('b', "bounce");
107         km.mapKey('F', "mailboxFlag");
108     }
109
110     public void populateMenu(Editor editor, Menu menu)
111     {
112         final String JavaDoc text = menu.getText();
113         if (text == "View") {
114             final Dispatcher dispatcher = editor.getDispatcher();
115             JCheckBoxMenuItem JavaDoc toolbarMenuItem = new JCheckBoxMenuItem JavaDoc("Toolbar");
116             toolbarMenuItem.setMnemonic('T');
117             toolbarMenuItem.setActionCommand("toggleToolbar");
118             toolbarMenuItem.addActionListener(dispatcher);
119             toolbarMenuItem.setSelected(editor.getFrame().getShowToolbar());
120             menu.add(toolbarMenuItem);
121             JCheckBoxMenuItem JavaDoc sidebarMenuItem = new JCheckBoxMenuItem JavaDoc("Sidebar");
122             sidebarMenuItem.setMnemonic('S');
123             sidebarMenuItem.setActionCommand("toggleSidebar");
124             sidebarMenuItem.addActionListener(dispatcher);
125             sidebarMenuItem.setSelected(editor.getSidebar() != null);
126             menu.add(sidebarMenuItem);
127             menu.addSeparator();
128             JCheckBoxMenuItem JavaDoc groupByThread =
129                 new JCheckBoxMenuItem JavaDoc("Group Messages By Thread");
130             groupByThread.setMnemonic('G');
131             groupByThread.setActionCommand("toggleGroupByThread");
132             groupByThread.addActionListener(dispatcher);
133             if (editor.getBuffer() instanceof Mailbox) {
134                 groupByThread.setSelected(editor.getBuffer().
135                     getBooleanProperty(Property.GROUP_BY_THREAD));
136             }
137             menu.add(groupByThread);
138             menu.addSeparator();
139             menu.add(editor, "Split Window", 'W', "splitWindow");
140             menu.add(editor, "Unsplit Window", 'U', "unsplitWindow");
141             menu.add(editor, "Close Window", 'C', "killWindow");
142         } else
143             super.populateMenu(editor, menu);
144     }
145
146     protected ToolBar getDefaultToolBar(Frame frame)
147     {
148         return new MailboxModeToolBar(frame);
149     }
150
151     public String JavaDoc getContextString(Editor editor, boolean verbose)
152     {
153         Position dot = editor.getDot();
154         if (dot != null) {
155             final Line dotLine = dot.getLine();
156             if (dotLine instanceof MailboxLine) {
157                 MailboxEntry entry = ((MailboxLine)dotLine).getMailboxEntry();
158                 if (entry != null)
159                     return entry.getSubject();
160             }
161         }
162         return null;
163     }
164 }
165
Popular Tags