Eclipse CDT插件-根据在编辑器中单击鼠标的X和Y位置获取AST元素

时间:2018-08-06 15:23:19

标签: eclipse eclipse-plugin editor mouseevent eclipse-cdt

我目前正在开发一个Eclipse CDT插件,其中基于在当前活动的编辑器上的鼠标单击,我想进行一些过滤-我想仅在所单击的元素是“函数名”(IFunction实例)时显示操作。

我设法做到了这一点,但仅针对活动编辑器中光标的当前插入符位置(通过ISelection对象)。 但是,我想这样做的原因是发生右键单击时,而不是插入符号位于的位置。

到目前为止,我已经设法获取了鼠标单击事件(类型为org.eclipse.swt.events.MouseEvent的对象)并保存了它。但是,我还没有找到一种方法来通过此对象中的任何信息获取当前选定的AST元素-小部件,点击的X,Y位置。

虽然可以通过某种方式更改插入符号的位置来更改当前选择,但是却找不到如何执行此操作的方法,或者这是否可行。

任何想法和帮助将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:2)

似乎StyledText.getOffsetAtPoint()可用于将点击的坐标转换为插入标记的偏移量。

该方法的说明专门说:

  

返回值反映插入符号将是的字符偏移量   如果在指定点单击鼠标,则放置在该位置。

可以根据StyledText如下获得用于编辑器的IEditorInput对象:

IEditorPart editor = CUIPlugin.getActivePage().findEditor(editorInput);
StyledText textWidget = (StyledText) editor.getAdapter(Control.class);