1 21 22 package org.armedbear.j.mail; 23 24 import java.awt.event.KeyEvent ; 25 import javax.swing.JCheckBoxMenuItem ; 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 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; 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 text = menu.getText(); 113 if (text == "View") { 114 final Dispatcher dispatcher = editor.getDispatcher(); 115 JCheckBoxMenuItem toolbarMenuItem = new JCheckBoxMenuItem ("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 sidebarMenuItem = new JCheckBoxMenuItem ("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 groupByThread = 129 new JCheckBoxMenuItem ("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 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 |