1 21 22 package org.armedbear.j; 23 24 import java.util.ArrayList ; 25 import java.util.HashMap ; 26 import java.util.Iterator ; 27 import java.util.List ; 28 29 public class CommandTable 30 { 31 private static final int INITIAL_CAPACITY = 600; 34 35 private static HashMap map; 36 37 public static final Command getCommand(String name) 38 { 39 if (name == null) 40 return null; 41 if (map == null) 42 init(); 43 return (Command) map.get(name.toLowerCase()); 44 } 45 46 private static synchronized void init() 47 { 48 if (map == null) { 49 map = new HashMap (INITIAL_CAPACITY); 50 51 addCommand("backspace"); 53 addCommand("bob"); 54 addCommand("bol"); 55 addCommand("bottom"); 56 addCommand("cancelBackgroundProcess"); 57 addCommand("closeAll"); 58 addCommand("closeOthers"); 59 addCommand("closeParen"); 60 addCommand("commentRegion"); 61 addCommand("copyAppend"); 62 addCommand("copyPath"); 63 addCommand("copyRegion"); 64 addCommand("cppFindMatch"); 65 addCommand("cycleIndentSize"); 66 addCommand("cyclePaste"); 67 addCommand("cycleTabWidth"); 68 addCommand("defaultMode"); 69 addCommand("delete"); 70 addCommand("deleteWordLeft"); 71 addCommand("deleteWordRight"); 72 addCommand("dirBrowseFile"); 73 addCommand("dirCopyFile"); 74 addCommand("dirDeleteFiles"); 75 addCommand("dirDoShellCommand"); 76 addCommand("dirGetFile"); 77 addCommand("dirHome"); 78 addCommand("dirHomeDir"); 79 addCommand("dirMoveFile"); 80 addCommand("dirRescan"); 81 addCommand("dirTagFile"); 82 addCommand("dirUpDir"); 83 addCommand("doShellCommandOnRegion"); 84 addCommand("down"); 85 addCommand("dropBookmark"); 86 addCommand("dropTemporaryMarker"); 87 addCommand("electricCloseAngleBracket"); 88 addCommand("electricCloseBrace"); 89 addCommand("electricColon"); 90 addCommand("electricOpenBrace"); 91 addCommand("electricPound"); 92 addCommand("electricSemi"); 93 addCommand("electricStar"); 94 addCommand("end"); 95 addCommand("eob"); 96 addCommand("eol"); 97 addCommand("escape"); 98 addCommand("executeCommand"); 99 addCommand("findFirstOccurrence"); 100 addCommand("findMatchingChar"); 101 addCommand("findNext"); 102 addCommand("findNextWord"); 103 addCommand("findPrev"); 104 addCommand("findPrevWord"); 105 addCommand("fold"); 106 addCommand("foldMethods"); 107 addCommand("foldRegion"); 108 addCommand("gotoBookmark"); 109 addCommand("gotoTemporaryMarker"); 110 addCommand("help"); 111 addCommand("home"); 112 addCommand("httpDeleteCookies"); 113 addCommand("incrementalFind"); 114 addCommand("indentLine"); 115 addCommand("indentLineOrRegion"); 116 addCommand("indentRegion"); 117 addCommand("insertBraces"); 118 addCommand("insertByte"); 119 addCommand("insertChar"); 120 addCommand("insertKeyText"); 121 addCommand("insertParentheses"); 122 addCommand("insertString"); 123 addCommand("insertTab"); 124 addCommand("jmips"); 125 addCommand("killAppend"); 126 addCommand("killBuffer"); 127 addCommand("killFrame"); 128 addCommand("killLine"); 129 addCommand("killRegion"); 130 addCommand("killWordLeft"); 131 addCommand("killWordRight"); 132 addCommand("left"); 133 addCommand("mode"); 134 addCommand("movePastCloseAndReindent"); 135 addCommand("newBuffer"); 136 addCommand("newFrame"); 137 addCommand("newline"); 138 addCommand("newlineAndIndent"); 139 addCommand("nextBuffer"); 140 addCommand("nextFrame"); 141 addCommand("offset"); 142 addCommand("openFile"); 143 addCommand("openFileInOtherWindow"); 144 addCommand("otherWindow"); 145 addCommand("pageDown"); 146 addCommand("pageDownOtherWindow"); 147 addCommand("pageUp"); 148 addCommand("pageUpOtherWindow"); 149 addCommand("paste"); 150 addCommand("pasteColumn"); 151 addCommand("popPosition"); 152 addCommand("prevBuffer"); 153 addCommand("pushPosition"); 154 addCommand("quit"); 155 addCommand("redo"); 156 addCommand("resetDisplay"); 157 addCommand("revertBuffer"); 158 addCommand("right"); 159 addCommand("save"); 160 addCommand("saveAll"); 161 addCommand("saveAllExit"); 162 addCommand("saveAs"); 163 addCommand("saveCopy"); 164 addCommand("selectAll"); 165 addCommand("selectBob"); 166 addCommand("selectDown"); 167 addCommand("selectEnd"); 168 addCommand("selectEob"); 169 addCommand("selectHome"); 170 addCommand("selectLeft"); 171 addCommand("selectPageDown"); 172 addCommand("selectPageUp"); 173 addCommand("selectRight"); 174 addCommand("selectSyntax"); 175 addCommand("selectUp"); 176 addCommand("selectWord"); 177 addCommand("selectWordLeft"); 178 addCommand("selectWordRight"); 179 addCommand("setEncoding"); 180 addCommand("sidebarListBuffers"); 181 addCommand("sidebarListTags"); 182 addCommand("slideIn"); 183 addCommand("slideOut"); 184 addCommand("splitWindow"); 185 addCommand("stamp"); 186 addCommand("tab"); 187 addCommand("textMode"); 188 addCommand("toCenter"); 189 addCommand("toTop"); 190 addCommand("toggleSidebar"); 191 addCommand("top"); 192 addCommand("uncommentRegion"); 193 addCommand("undo"); 194 addCommand("unfold"); 195 addCommand("unfoldAll"); 196 addCommand("unsplitWindow"); 197 addCommand("unwrapParagraph"); 198 addCommand("up"); 199 addCommand("visibleTabs"); 200 addCommand("whatChar"); 201 addCommand("windowDown"); 202 addCommand("windowUp"); 203 addCommand("wordLeft"); 204 addCommand("wordRight"); 205 addCommand("wrapParagraph"); 206 addCommand("wrapParagraphsInRegion"); 207 addCommand("wrapRegion"); 208 209 addCommand("about", "AboutDialog"); 211 addCommand("alias", "AliasDialog"); 212 addCommand("alignStrings", "AlignStrings"); 213 addCommand("apropos", "Help"); 214 addCommand("archiveOpenFile", "ArchiveMode"); 215 addCommand("backwardSexp", "LispMode"); 216 addCommand("backwardUpList", "LispMode"); 217 addCommand("binaryMode", "BinaryMode"); 218 addCommand("browseFileAtDot", "BrowseFile"); 219 addCommand("centerTag", "TagCommands"); 220 addCommand("changes", "ChangeMarks"); 221 addCommand("checkPath", "CheckPath"); 222 addCommand("chmod", "Directory"); 223 addCommand("clearRegister", "Registers"); 224 addCommand("compile", "CompilationCommands"); 225 addCommand("compileAndLoadLispFile", "LispMode"); 226 addCommand("compileLispFile", "LispMode"); 227 addCommand("copyLink", "WebBuffer"); 228 addCommand("copyXPath", "XmlMode"); 229 addCommand("cvs", "CVS", "cvs"); 230 addCommand("cvsAdd", "CVS", "add"); 231 addCommand("cvsCommit", "CVS", "commit"); 232 addCommand("cvsDiff", "CVS", "diff"); 233 addCommand("cvsDiffDir", "CVS", "diffDir"); 234 addCommand("cvsLog", "CVS", "log"); 235 addCommand("decodeRegion", "RegionCommands"); 236 addCommand("defaultKeyMaps", "KeyMap"); 237 addCommand("describeKey", "DescribeKeyDialog"); 238 addCommand("detabRegion", "RegionCommands"); 239 addCommand("diff", "DiffMode"); 240 addCommand("diffGotoFile", "DiffMode", "gotoFile"); 241 addCommand("dir", "Directory"); 242 addCommand("dirBack", "Directory"); 243 addCommand("dirCycleSortBy", "Directory"); 244 addCommand("dirDoShellCommand", "Directory"); 245 addCommand("dirForward", "Directory"); 246 addCommand("dirLimit", "Directory"); 247 addCommand("dirOpenFile", "Directory"); 248 addCommand("dirOpenFileAndKillDirectory", "Directory"); 249 addCommand("dirUnlimit", "Directory"); 250 addCommand("doShellCommandOnRegion", "RegionCommands"); 251 addCommand("downList", "LispMode"); 252 addCommand("editRegister", "Registers"); 253 addCommand("entabRegion", "RegionCommands"); 254 addCommand("evalDefunLisp", "LispMode"); 255 addCommand("compileDefunLisp", "LispMode"); 256 addCommand("evalRegionLisp", "LispMode"); 257 addCommand("expand", "Expansion"); 258 addCommand("find", "FindDialog"); 259 addCommand("findInFiles", "FindInFiles"); 260 addCommand("findOccurrenceAtDot", "ListOccurrences"); 261 addCommand("findOccurrenceAtDotAndKillList", "ListOccurrences"); 262 addCommand("findTag", "TagCommands"); 263 addCommand("findTagAtDot", "TagCommands"); 264 addCommand("findTagAtDotOtherWindow", "TagCommands"); 265 addCommand("finish", "CheckinBuffer"); 266 addCommand("followContext", "FollowContextTask"); 267 addCommand("forwardSexp", "LispMode"); 268 addCommand("google", "WebMode"); 269 addCommand("gotoFile", "GotoFile"); 270 addCommand("help", "Help"); 271 addCommand("htmlBold", "HtmlMode"); 272 addCommand("htmlElectricEquals", "HtmlMode"); 273 addCommand("htmlEndTag", "HtmlMode"); 274 addCommand("htmlFindMatch", "HtmlMode"); 275 addCommand("htmlInsertMatchingEndTag", "HtmlMode"); 276 addCommand("htmlInsertTag", "HtmlMode"); 277 addCommand("htmlStartTag", "HtmlMode"); 278 addCommand("httpShowHeaders", "HttpLoadProcess"); 279 addCommand("hyperspec", "LispMode"); 280 addCommand("iList", "IList"); 281 addCommand("imageCycleBackground", "ImageMode"); 282 addCommand("imageFit", "ImageMode"); 283 addCommand("imageRestore", "ImageMode"); 284 addCommand("imageZoomIn", "ImageMode"); 285 addCommand("imageZoomOut", "ImageMode"); 286 addCommand("insertRegister", "Registers"); 287 addCommand("jdkHelp", "JDKHelp"); 288 addCommand("jlisp", "JLisp"); 289 addCommand("jumpToColumn", "JumpCommands"); 290 addCommand("jumpToLine", "JumpCommands"); 291 addCommand("jumpToOffset", "JumpCommands"); 292 addCommand("jumpToTag", "ListTagsMode"); 293 addCommand("jumpToTagAndKillList", "ListTagsMode"); 294 addCommand("killCompilation", "CompilationBuffer"); 295 addCommand("lisp", "LispShell"); 296 addCommand("listBindings", "Help"); 297 addCommand("listFiles", "FindInFiles"); 298 addCommand("lispFindMatchingChar", "LispMode"); 299 addCommand("lispSelectSyntax", "LispMode"); 300 addCommand("listIncludes", "CheckPath"); 301 addCommand("listMatchingTags", "TagCommands"); 302 addCommand("listMatchingTagsAtDot", "TagCommands"); 303 addCommand("listOccurrences", "ListOccurrences"); 304 addCommand("listOccurrencesOfPatternAtDot", "ListOccurrences"); 305 addCommand("listProperties", "PropertiesDialog"); 306 addCommand("listRegisters", "Registers"); 307 addCommand("listTags", "ListTagsDialog"); 308 addCommand("listThreads", "Debug"); 309 addCommand("loadLispFile", "LispMode"); 310 addCommand("loadSession", "Session"); 311 addCommand("lowerCaseRegion", "RegionCommands"); 312 addCommand("makeTagFile", "TagCommands"); 313 addCommand("man", "ManMode"); 314 addCommand("manFollowLink", "ManMode"); 315 addCommand("mouseFindOccurrence", "ListOccurrences"); 316 addCommand("mouseFindTag", "TagCommands"); 317 addCommand("mouseJumpToTag", "ListTagsMode"); 318 addCommand("nextChange", "ChangeMarks"); 319 addCommand("nextComment", "CheckinBuffer"); 320 addCommand("nextError", "CompilationCommands"); 321 addCommand("nextTag", "TagCommands"); 322 addCommand("openFileInOtherFrame", "OpenFileDialog"); 323 addCommand("p4", "P4"); 324 addCommand("p4Add", "P4", "add"); 325 addCommand("p4Change", "P4", "change"); 326 addCommand("p4Diff", "P4", "diff"); 327 addCommand("p4DiffDir", "P4", "diffDir"); 328 addCommand("p4Edit", "P4", "edit"); 329 addCommand("p4Log", "P4", "log"); 330 addCommand("p4Revert", "P4", "revert"); 331 addCommand("p4Submit", "P4", "submit"); 332 addCommand("pastePrimarySelection", "SystemSelection"); 333 addCommand("phpHelp", "PHPMode"); 334 addCommand("playbackMacro", "Macro"); 335 addCommand("previousChange", "ChangeMarks"); 336 addCommand("previousComment", "CheckinBuffer"); 337 addCommand("previousError", "CompilationCommands"); 338 addCommand("previousTag", "TagCommands"); 339 addCommand("print", "PrintCommands"); 340 addCommand("printBuffer", "PrintCommands"); 341 addCommand("printRegion", "PrintCommands"); 342 addCommand("properties", "PropertiesDialog"); 343 addCommand("recentFiles", "RecentFilesDialog"); 344 addCommand("recompile", "CompilationCommands"); 345 addCommand("recordMacro", "Macro"); 346 addCommand("reloadKeyMaps", "KeyMap"); 347 addCommand("renumberRegion", "RegionCommands"); 348 addCommand("replace", "ReplaceDialog"); 349 addCommand("replaceInFiles", "FindInFiles"); 350 addCommand("resetLisp", "LispShellMode"); 351 addCommand("saveSession", "Session"); 352 addCommand("saveToRegister", "Registers"); 353 addCommand("selectToMarker", "Marker"); 354 addCommand("selectToTemporaryMarker", "Marker"); 355 addCommand("shellCommand", "ShellCommand"); 356 addCommand("shell", "Shell"); 357 addCommand("shellBackspace", "CommandInterpreter"); 358 addCommand("shellEnter", "CommandInterpreter"); 359 addCommand("shellEscape", "CommandInterpreter"); 360 addCommand("shellHome", "CommandInterpreter"); 361 addCommand("shellInterrupt", "Shell"); 362 addCommand("shellNextInput", "CommandInterpreter"); 363 addCommand("shellNextPrompt", "CommandInterpreter"); 364 addCommand("shellPreviousInput", "CommandInterpreter"); 365 addCommand("shellPreviousPrompt", "CommandInterpreter"); 366 addCommand("shellTab", "Shell"); 367 addCommand("showMessage", "CompilationCommands"); 368 addCommand("slime", "LispShell"); 369 addCommand("sortLines", "Sort"); 370 addCommand("source", "JDKHelp"); 371 addCommand("ssh", "RemoteShell"); 372 addCommand("tagDown", "ListTagsMode"); 373 addCommand("tagUp", "ListTagsMode"); 374 addCommand("telnet", "RemoteShell"); 375 addCommand("thisError", "CompilationCommands"); 376 addCommand("toggleWrap", "WrapText"); 377 addCommand("upperCaseRegion", "RegionCommands"); 378 addCommand("whereIs", "ExecuteCommandDialog"); 379 addCommand("wrapComment", "WrapText"); 380 addCommand("writeGlobalKeyMap", "SaveFileDialog"); 381 addCommand("writeLocalKeyMap", "SaveFileDialog"); 382 addCommand("xmlElectricEquals", "XmlMode"); 383 addCommand("xmlElectricSlash", "XmlMode"); 384 addCommand("xmlFindCurrentNode", "XmlMode"); 385 addCommand("xmlFindMatch", "XmlMode"); 386 addCommand("xmlInsertEmptyElementTag", "XmlMode"); 387 addCommand("xmlInsertMatchingEndTag", "XmlMode"); 388 addCommand("xmlInsertTag", "XmlMode"); 389 addCommand("xmlParseBuffer", "XmlMode"); 390 addCommand("xmlValidateBuffer", "XmlMode"); 391 392 addCommand("attachFile", "mail.MailCommands"); 394 addCommand("bounce", "mail.MailCommands"); 395 addCommand("ccGroup", "mail.MailCommands"); 396 addCommand("compose", "mail.MailCommands"); 397 addCommand("foldThread", "mail.MailCommands"); 398 addCommand("foldThreads", "mail.MailCommands"); 399 addCommand("inbox", "mail.MailCommands"); 400 addCommand("mailboxCreateFolder", "mail.MailCommands"); 401 addCommand("mailboxDelete", "mail.MailCommands"); 402 addCommand("mailboxDeleteFolder", "mail.MailCommands"); 403 addCommand("mailboxExpunge", "mail.MailCommands"); 404 addCommand("mailboxFlag", "mail.MailCommands"); 405 addCommand("mailboxGetNewMessages", "mail.MailCommands"); 406 addCommand("mailboxLastMessage", "mail.MailCommands"); 407 addCommand("mailboxLimit", "mail.MailCommands"); 408 addCommand("mailboxMarkRead", "mail.MailCommands"); 409 addCommand("mailboxMarkUnread", "mail.MailCommands"); 410 addCommand("mailboxMoveToFolder", "mail.MailCommands"); 411 addCommand("mailboxReadMessage", "mail.MailCommands"); 412 addCommand("mailboxReadMessageOtherWindow", "mail.MailCommands"); 413 addCommand("mailboxSaveToFolder", "mail.MailCommands"); 414 addCommand("mailboxStop", "mail.MailCommands"); 415 addCommand("mailboxTag", "mail.MailCommands"); 416 addCommand("mailboxTagPattern", "mail.MailCommands"); 417 addCommand("mailboxToggleRaw", "mail.MailCommands"); 418 addCommand("mailboxUndelete", "mail.MailCommands"); 419 addCommand("mailboxUnlimit", "mail.MailCommands"); 420 addCommand("mailboxUntagAll", "mail.MailCommands"); 421 addCommand("messageDelete", "mail.MailCommands"); 422 addCommand("messageFlag", "mail.MailCommands"); 423 addCommand("messageForward", "mail.MailCommands"); 424 addCommand("messageIndex", "mail.MailCommands"); 425 addCommand("messageMoveToFolder", "mail.MailCommands"); 426 addCommand("messageNext", "mail.MailCommands"); 427 addCommand("messageNextInThread", "mail.MailCommands"); 428 addCommand("messageParent", "mail.MailCommands"); 429 addCommand("messagePrevious", "mail.MailCommands"); 430 addCommand("messagePreviousInThread", "mail.MailCommands"); 431 addCommand("messageReplyToGroup", "mail.MailCommands"); 432 addCommand("messageReplyToSender", "mail.MailCommands"); 433 addCommand("messageSaveAttachment", "mail.MailCommands"); 434 addCommand("messageToggleHeaders", "mail.MailCommands"); 435 addCommand("messageToggleRaw", "mail.MailCommands"); 436 addCommand("messageToggleWrap", "mail.MailCommands"); 437 addCommand("messageViewAttachment", "mail.MailCommands"); 438 addCommand("openMailbox", "mail.MailCommands"); 439 addCommand("send", "mail.MailCommands"); 440 addCommand("sendMailBackTab", "mail.MailCommands"); 441 addCommand("sendMailElectricColon", "mail.MailCommands"); 442 addCommand("sendMailTab", "mail.MailCommands"); 443 addCommand("toggleGroupByThread", "mail.MailCommands"); 444 445 addCommand("news", "mail.NewsCommands"); 447 addCommand("openGroup", "mail.NewsCommands"); 448 addCommand("openGroupAtDot", "mail.NewsCommands"); 449 addCommand("readArticle", "mail.NewsCommands"); 450 addCommand("readArticleOtherWindow", "mail.NewsCommands"); 451 452 addCommand("jdb", "jdb.JdbCommands"); 454 addCommand("jdbContinue", "jdb.JdbCommands"); 455 addCommand("jdbDeleteBreakpoint", "jdb.Jdb"); 456 addCommand("jdbFinish", "jdb.JdbCommands"); 457 addCommand("jdbLocals", "jdb.JdbCommands"); 458 addCommand("jdbNext", "jdb.JdbCommands"); 459 addCommand("jdbQuit", "jdb.JdbCommands"); 460 addCommand("jdbRestart", "jdb.JdbCommands"); 461 addCommand("jdbRunToCurrentLine", "jdb.Jdb"); 462 addCommand("jdbSetBreakpoint", "jdb.Jdb"); 463 addCommand("jdbStep", "jdb.JdbCommands"); 464 addCommand("jdbSuspend", "jdb.JdbCommands"); 465 addCommand("jdbToggleBreakpoint", "jdb.Jdb"); 466 467 addCommand("webBack", "WebBuffer", "back"); 469 addCommand("webForward", "WebBuffer", "forward"); 470 addCommand("webReload", "WebBuffer", "refresh"); 471 addCommand("followLink", "WebBuffer"); 472 addCommand("mouseFollowLink", "WebBuffer"); 473 addCommand("viewPage", "WebBuffer"); 474 addCommand("viewSource", "WebBuffer"); 475 476 addCommand("sr", "Registers", "saveToRegister"); 478 addCommand("ir", "Registers", "insertRegister"); 479 addCommand("lr", "Registers", "listRegisters"); 480 addCommand("hs", "LispMode", "hyperspec"); 481 addCommand("clhs", "LispMode", "hyperspec"); 482 addCommand("abcl", "LispShell", "lisp"); 483 484 if (Editor.isDebugEnabled() && map.size() > INITIAL_CAPACITY * 0.75) { 485 Log.error("CommandTable.init need to increase initial capacity!"); 486 Log.error("CommandTable.init size = " + map.size()); 487 } 488 } 489 } 490 491 private static final void addCommand(String commandName) 494 { 495 map.put(commandName.toLowerCase(), new Command(commandName)); 496 } 497 498 private static final void addCommand(String commandName, String className) 501 { 502 map.put(commandName.toLowerCase(), new Command(commandName, className, commandName)); 503 } 504 505 private static final void addCommand(String commandName, String className, String methodName) 506 { 507 map.put(commandName.toLowerCase(), new Command(commandName, className, methodName)); 508 } 509 510 public static List getCompletionsForPrefix(String prefix) 511 { 512 String lower = prefix.toLowerCase(); 513 Iterator it = map.values().iterator(); 514 ArrayList list = new ArrayList (); 515 while (it.hasNext()) { 516 Command command = (Command) it.next(); 517 if (command.getName().toLowerCase().startsWith(lower)) 518 list.add(command.getName()); 519 } 520 return list; 521 } 522 523 public static List apropos(String s) 524 { 525 String lower = s.toLowerCase(); 526 Iterator it = map.values().iterator(); 527 ArrayList list = new ArrayList (); 528 while (it.hasNext()) { 529 String name = ((Command)it.next()).getName(); 530 if (name.toLowerCase().indexOf(lower) >= 0) 531 list.add(name); 532 } 533 return list; 534 } 535 } 536 | Popular Tags |