基于 JFace Text Framework 构建全功能代码编辑器: 第 3 部分:Double Click 和 Triple Click
2010-03-18 00:00:00 来源:WEB开发网这个流程非常直接,得到被点击的位置,通过位置得到相应的符号,然后选择整个符号。我们再次利用了 TokenList 来得到指定字符偏移处的符号。
和本系列第二部分一样,有了实现还得让 JTF 知道你的实现,我们再来修改 ExprConfiguation,覆盖一个 getDoubleClickStrategy 方法:
清单2. 让 JTF 知道你的 Double Click 实现
public ITextDoubleClickStrategy getDoubleClickStrategy(
ISourceViewer sourceViewer, String contentType)
{
return new ExprDoubleClickStrategy();
}
只是简单的返回我们实现的 ITextDoubleClickStrategy 而已,这样 JTF 就知道我们的双击行为了,注意双击行为也是和文本类型绑定到一起的,但是我们只有一种类型,所以没有利用这个信息。
读者可以尝试本文的例子,双击某个变量,看看是否这个变量被全部选中了。
Triple Click
有了双击,可能自然就会想到三击。但是 JTF 本身是不支持三击行为的。我们需要自己实现,只要模仿双击的机制来做就可以了。
接口
模仿双击的处理方式,我们也添加一个 ITextTripleClickStrategy 接口,如下所示:
清单3. 模仿 Double Click,创建 ITextTripleClickStrategy 接口
public interface ITextTripleClickStrategy {
/**
* Invoked when triple clicking detected
*/
public void tripleClicked(ITextViewer viewer);
}
然后我定义了 ExprTripleClickStrategy,它实现了 ITextTripleClickStrategy 接口。为了简单起见,我不添加具体代码了,只是显示一个对话框表示三击事件被我们捕捉到了。三击的时候具体做什么,读者有兴趣可以自己完成。
更多精彩
赞助商链接