双击lumaqq
lumaqq 时间:2021-02-26 阅读:(
)
版权所有IBM公司2008商标基于JFaceTextFramework构建全功能代码编辑器:第3部分第1页,共7基于JFaceTextFramework构建全功能代码编辑器:第3部分DoubleClick和TripleClick马若劼(maruojie@cn.
ibm.
com)软件工程师IBM中国软件开发中心2008年3月27日DoubleClick(双击)和TripleClick(三击)是方便用户选择文本(当然不一定非得是选择文本)的辅助功能.
本文介绍在JTF里面如何自定义双击行为,以及如何为JTF添加三击支持.
查看本系列更多内容DoubleClick(双击)和TripleClick(三击)是方便用户选择文本(当然不一定非得是选择文本)的辅助功能.
本文介绍在JTF里面如何自定义双击行为,以及如何为JTF添加三击支持.
DoubleClick在Eclipse的Java编辑器中,用户用鼠标在编辑区域双击时,可以看到双击处的单词会被选中,这就是JTF的DoubleClick(双击)特性.
双击时触发的动作是可以自定义的,不一定非要选择一段文本.
与双击相关的接口是ITextDoubleClickStrategy,它只有一个方法叫做doubleClicked,只要实现这个接口就可以了,在例子中,我添加了ExprDoubleClickStrategy类:清单1.
ExprDoubleClickStrategy实现了ITextDoubleClickStrategy接口publicclassExprDoubleClickStrategyimplementsITextDoubleClickStrategy{publicvoiddoubleClicked(ITextViewerviewer){//getdocIDocumentdoc=viewer.
getDocument();//gettokenlistTokenListtokenList=TokenManager.
getTokenList(doc);//getdoubleclickpositionintoffset=viewer.
getSelectedRange().
x;//gettokeninthatoffsetCommonTokentoken=tokenList.
getToken(offset);//selectwholetokeniftokenisnotnulldeveloperWorksibm.
com/developerWorks/cn/基于JFaceTextFramework构建全功能代码编辑器:第3部分第2页,共7if(token!
=null&&token.
getType()!
=Token.
EOF){//selectdoubleclickedtokenviewer.
setSelectedRange(token.
getStartIndex(),token.
getStopIndex()-token.
getStartIndex()+1);}}}这个流程非常直接,得到被点击的位置,通过位置得到相应的符号,然后选择整个符号.
我们再次利用了TokenList来得到指定字符偏移处的符号.
和本系列第二部分一样,有了实现还得让JTF知道你的实现,我们再来修改ExprConfiguation,覆盖一个getDoubleClickStrategy方法:清单2.
让JTF知道你的DoubleClick实现publicITextDoubleClickStrategygetDoubleClickStrategy(ISourceViewersourceViewer,StringcontentType){returnnewExprDoubleClickStrategy();}只是简单的返回我们实现的ITextDoubleClickStrategy而已,这样JTF就知道我们的双击行为了,注意双击行为也是和文本类型绑定到一起的,但是我们只有一种类型,所以没有利用这个信息.
读者可以尝试本文的例子,双击某个变量,看看是否这个变量被全部选中了.
TripleClick有了双击,可能自然就会想到三击.
但是JTF本身是不支持三击行为的.
我们需要自己实现,只要模仿双击的机制来做就可以了.
接口模仿双击的处理方式,我们也添加一个ITextTripleClickStrategy接口,如下所示:清单3.
模仿DoubleClick,创建ITextTripleClickStrategy接口publicinterfaceITextTripleClickStrategy{/***Invokedwhentripleclickingdetected*/publicvoidtripleClicked(ITextViewerviewer);}然后我定义了ExprTripleClickStrategy,它实现了ITextTripleClickStrategy接口.
为了简单起见,我不添加具体代码了,只是显示一个对话框表示三击事件被我们捕捉到了.
三击的时候具体做什么,读者有兴趣可以自己完成.
配置下一步就是让JTF知道我们的三击策略,不过SourceViewerConfiguration没有和三击有关的方法,我们可以模仿getDoubleClickStrategy的形式添加一个getTripleClickStrategy方法,然后修改ibm.
com/developerWorks/cn/developerWorks基于JFaceTextFramework构建全功能代码编辑器:第3部分第3页,共7ExprViewer的configure方法,把三击策略安装上去.
其实就是一个哈希表,里面把文本类型和三击策略映射了起来.
这些代码都是模仿SourceViewer中对双击策略的处理方式写的,所以就不一一列举了.
事件的触发最后的一步是触发三击事件,不然你装多少个三击策略也没用.
从原理上说,三击事件就是鼠标双击之后又点了一下,我们可以监听双击事件,然后在下一次鼠标单击时检查其和双击事件的时间间隔,如果小于一个阈值,就触发三击事件.
所以为了触发三击事件,我们需要给ExprViewer安装一个鼠标事件监听器:清单4.
给ExprViewer添加三击事件触发机制//HowlongwecanwaitfortripleclickafterdoubleclickpublicstaticfinallongTRIPLE_CLICK_THRESHOLD=500;privateclassTripleClickStrategyConnectorextendsMouseAdapter{privatelongdoubleClickTime;publicTripleClickStrategyConnector(){doubleClickTime=0;}@OverridepublicvoidmouseDoubleClick(MouseEvente){doubleClickTime=System.
currentTimeMillis();}@OverridepublicvoidmouseDown(MouseEvente){//comparetimeintervalwiththresholdif(System.
currentTimeMillis()-doubleClickTimeLumaQQ的创立者版权所有IBM公司2008(www.
ibm.
com/legal/copytrade.
shtml)商标(www.
ibm.
com/developerworks/cn/ibm/trademarks/)
成立于2006年的荷兰Access2.IT Group B.V.(可查:VAT: NL853006404B01,CoC: 58365400) 一直运作着主机周边的业务,当前正在对荷兰的高性能AMD平台的VPS进行5折优惠,所有VPS直接砍一半。自有AS208258,vps母鸡配置为Supermicro 1024US-TRT 1U,2*AMD Epyc 7452(64核128线程),16条32G D...
数脉科技怎么样?数脉科技品牌创办于2019,由一家从2012年开始从事idc行业的商家创办,目前主营产品是香港服务器,线路有阿里云线路和自营CN2线路,均为中国大陆直连带宽,适合建站及运行各种负载较高的项目,同时支持人民币、台币、美元等结算,提供支付宝、微信、PayPal付款方式。本次数脉科技给发来了新的7月促销活动,CN2+BGP线路的香港服务器,带宽10m起,配置E3-16G-30M-3IP,...
profitserver正在对德国vps(法兰克福)、西班牙vps(马德里)、荷兰vps(杜廷赫姆)这3处数据中心内的VPS进行5折优惠促销。所有VPS基于KVM虚拟,纯SSD阵列,自带一个IPv4,不限制流量,在后台支持自定义ISO文件,方便大家折腾!此外还有以下数据中心:俄罗斯(多机房)、捷克、保加利亚、立陶宛、新加坡、美国(洛杉矶、锡考克斯、迈阿密)、瑞士、波兰、乌克兰,VPS和前面的一样性...
lumaqq为你推荐
iphone360手机卫士苹果手机360安全卫士怎么用ovOV摄像头是哪个国家的ip地址是什么什么是IP地址和DNS地址?解压程序软件怎么解压网页解密如何给网页解密yy频道中心YY频道管理中心怎么登录?如何免费开通黄钻如何免费开通黄钻暴风影音怎么截图暴风影音3 如何截图今日热点怎么删除怎样删除实时热点镜像文件是什么什么是镜像文件啊
俄罗斯vps linuxapache虚拟主机 西安电信测速 韩国俄罗斯 themeforest paypal认证 softbank官网 realvnc asp免费空间申请 169邮箱 酷番云 33456 怎么建立邮箱 cloudlink 阿里云免费邮箱 atom处理器 免费网络空间 国外代理服务器 架设代理服务器 什么是dns 更多