1 package org.antlr.works.editor; 2 3 import org.antlr.works.ate.syntax.misc.ATEToken; 4 import org.antlr.works.components.grammar.CEditorGrammar; 5 import org.antlr.works.tips.TipsManager; 6 import org.antlr.works.tips.TipsOverlay; 7 import org.antlr.works.tips.TipsProvider; 8 9 import javax.swing.*; 10 import javax.swing.text.BadLocationException ; 11 import java.awt.*; 12 import java.util.ArrayList ; 13 import java.util.List ; 14 44 45 public class EditorTips implements TipsProvider { 46 47 public TipsManager tipsManager; 48 public CEditorGrammar editor; 49 50 public EditorTips(CEditorGrammar editor) { 51 this.editor = editor; 52 } 53 54 public void awake() { 55 tipsManager = new TipsManager(); 56 tipsManager.setOverlay(new TipsOverlay(editor.getXJFrame(), editor.getTextPane())); 57 tipsManager.addProvider(this); 58 } 59 60 public void toggleEnabled() { 61 tipsManager.setEnabled(!tipsManager.enabled()); 62 } 63 64 public void hide() { 65 tipsManager.hide(); 66 } 67 68 public void display(Point relativePoint, Point absolutePoint) { 69 if(editor.getTokens() == null) 70 return; 71 72 int position = editor.getTextPane().viewToModel(relativePoint); 73 74 Point p = null; 75 try { 76 ATEToken token = editor.getTokenAtPosition(position); 77 if(token != null) { 78 Rectangle r1 = editor.getTextPane().modelToView(token.getStartIndex()); 82 Rectangle r2 = editor.getTextPane().modelToView(token.getEndIndex()); 83 if(r1.union(r2).contains(relativePoint)) { 84 p = SwingUtilities.convertPoint(editor.getTextPane(), new Point(relativePoint.x+2, r2.y-5), editor.getXJFrame().getJavaContainer()); 85 } 86 } 87 } catch (BadLocationException e) { 88 } 90 tipsManager.displayAnyTipsAvailable(position, p); 91 } 92 93 public List <String > tipsProviderGetTips(int position) { 94 List <String > tips = new ArrayList <String >(); 95 96 List <EditorInspectorItem> items = editor.editorInspector.getAllItemsAtIndex(position); 97 for(int index=0; index<items.size(); index++) { 98 EditorInspectorItem item = items.get(index); 99 tips.add(item.description); 100 } 101 102 return tips; 103 } 104 105 } 106 | Popular Tags |