1 21 22 package org.armedbear.j.mail; 23 24 import java.awt.event.KeyEvent ; 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); 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; 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 getContextString(Editor editor, boolean verbose ) 105 { 106 return getContextString(editor.getDot()); 107 } 108 109 public final String getMouseMovedContextString(Editor editor, Position pos) 110 { 111 final String s = getContextString(pos); 114 return s != null ? s : ""; 115 } 116 117 private String 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 |