| 1 31 32 package org.antlr.works.completion; 33 34 import org.antlr.xjlib.appkit.frame.XJFrameInterface; 35 36 import javax.swing.*; 37 import javax.swing.text.JTextComponent ; 38 import java.awt.event.*; 39 import java.util.ArrayList ; 40 import java.util.List ; 41 42 public class RuleTemplates extends AutoCompletionMenu { 43 44 private List <String > templateRuleNames = new ArrayList <String >(); 45 private List <String > templateRuleTexts = new ArrayList <String >(); 46 47 public RuleTemplates(AutoCompletionMenuDelegate delegate, JTextComponent textComponent, XJFrameInterface frame) { 48 super(delegate, textComponent, frame); 49 50 this.list.addMouseMotionListener(new ListMouseMotionAdapter()); 51 this.list.addMouseListener(new ListMouseAdapter()); 52 53 initTemplateRules(); 54 } 55 56 public void initTemplateRules() { 57 templateRuleNames.add("INTEGER"); 58 templateRuleNames.add("ID"); 59 templateRuleNames.add("DIGIT"); 60 templateRuleNames.add("LETTER"); 61 templateRuleNames.add("WS (ignore)"); 62 templateRuleNames.add("WS"); 63 64 templateRuleTexts.add("INTEGER\n\t:\tDIGIT (DIGIT)*\n\t;\n"); 65 templateRuleTexts.add("ID\t:\tLETTER (LETTER | DIGIT)*\n\t;\n"); 66 templateRuleTexts.add("DIGIT\t:\t'0'..'9'\n\t;\n"); 67 templateRuleTexts.add("LETTER\n\t:\t'a'..'z' | 'A'..'Z'\n\t;\n"); 68 templateRuleTexts.add("WS\t:\t(' ' | '\\t' | '\\n' | '\\r') { $setType(Token.SKIP); }\n\t;\n"); 69 templateRuleTexts.add("WS\t:\t(' ' | '\\t' | '\\n' | '\\r')\n\t;\n"); 70 } 71 72 public KeyStroke overlayDisplayKeyStroke() { 73 return KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.META_MASK); 74 } 75 76 public String overlayDisplayKeyStrokeMappingName() { 77 return "META-T"; 78 } 79 80 public boolean overlayWillDisplay() { 81 int position = getTextComponent().getCaretPosition(); 82 setDisplayIndex(position); 83 setWordLists(templateRuleNames, templateRuleTexts); 84 setInsertionStartIndex(position); 85 setInsertionEndIndex(position); 86 return true; 87 } 88 89 public class ListMouseMotionAdapter extends MouseMotionAdapter { 90 public void mouseMoved(MouseEvent e) { 91 list.setSelectedIndex(list.locationToIndex(e.getPoint())); 92 } 93 } 94 95 public class ListMouseAdapter extends MouseAdapter { 96 public void mousePressed(MouseEvent e) { 97 autoComplete(); 98 hide(); 99 } 100 } 101 102 } 103 | Popular Tags |