我目前正在开发一个Eclipse CDT插件,其中基于在当前活动的编辑器上的鼠标单击,我想进行一些过滤-我想仅在所单击的元素是“函数名”(IFunction实例)时显示操作。
我设法做到了这一点,但仅针对活动编辑器中光标的当前插入符位置(通过ISelection对象)。 但是,我想这样做的原因是发生右键单击时,而不是插入符号位于的位置。
到目前为止,我已经设法获取了鼠标单击事件(类型为org.eclipse.swt.events.MouseEvent的对象)并保存了它。但是,我还没有找到一种方法来通过此对象中的任何信息获取当前选定的AST元素-小部件,点击的X,Y位置。
虽然可以通过某种方式更改插入符号的位置来更改当前选择,但是却找不到如何执行此操作的方法,或者这是否可行。
任何想法和帮助将不胜感激!
谢谢。
答案 0 :(得分:2)
似乎StyledText.getOffsetAtPoint()
可用于将点击的坐标转换为插入标记的偏移量。
该方法的说明专门说:
返回值反映插入符号将是的字符偏移量 如果在指定点单击鼠标,则放置在该位置。
可以根据StyledText
如下获得用于编辑器的IEditorInput
对象:
IEditorPart editor = CUIPlugin.getActivePage().findEditor(editorInput);
StyledText textWidget = (StyledText) editor.getAdapter(Control.class);