1 package org.antlr.works.menu; 2 3 import org.antlr.works.ate.syntax.misc.ATEToken; 4 import org.antlr.works.components.grammar.CEditorGrammar; 5 import org.antlr.works.find.Usages; 6 import org.antlr.works.stats.StatisticsAW; 7 import org.antlr.works.syntax.element.ElementRule; 8 9 import java.util.Iterator ; 10 40 41 public class MenuFind extends MenuAbstract { 42 43 public MenuFind(CEditorGrammar editor) { 44 super(editor); 45 } 46 47 public void find() { 48 StatisticsAW.shared().recordEvent(StatisticsAW.EVENT_FIND_DIALOG); 49 editor.findAndReplace.find(); 50 } 51 52 public void findNext() { 53 StatisticsAW.shared().recordEvent(StatisticsAW.EVENT_FIND_NEXT); 54 editor.findAndReplace.next(); 55 } 56 57 public void findPrev() { 58 StatisticsAW.shared().recordEvent(StatisticsAW.EVENT_FIND_PREVIOUS); 59 editor.findAndReplace.prev(); 60 } 61 62 public void findSelection() { 63 StatisticsAW.shared().recordEvent(StatisticsAW.EVENT_FIND_TEXT_AT_CARET); 64 editor.findAndReplace.setFindString(editor.getTextPane().getSelectedText()); 65 editor.findAndReplace.next(); 66 } 67 68 public void findUsage() { 69 StatisticsAW.shared().recordEvent(StatisticsAW.EVENT_FIND_USAGES); 70 71 ATEToken token = editor.getCurrentToken(); 72 if(token == null) 73 return; 74 75 Usages usage = new Usages(editor, token); 76 editor.addTab(usage); 77 78 Iterator <ATEToken> iterator = editor.getTokens().iterator(); 79 while(iterator.hasNext()) { 80 ATEToken candidate = iterator.next(); 81 if(candidate.getAttribute().equals(token.getAttribute())) { 82 ElementRule matchedRule = editor.rules.getEnclosingRuleAtPosition(candidate.getStartIndex()); 83 if(matchedRule != null) 84 usage.addMatch(matchedRule, candidate); 85 } 86 } 87 88 editor.makeBottomComponentVisible(); 89 } 90 91 } 92 | Popular Tags |