双击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/)

licloud:$39/月,香港物理服务器,30M带宽,e3-1230v3/16G内存/1T硬盘

licloud官方消息:当前对香港机房的接近100台物理机(香港服务器)进行打折处理,30Mbps带宽,低至不到40美元/月,速度快,性价比高,跑绝大多数项目都是绰绰有余了。该款香港服务器自带启动、关闭、一键重装功能,正常工作日内30~60分钟交货(不包括非工作日)。 官方网站:https://licloud.io 特价香港物理服务器 CPU:e3-1230v2(4核心、8线程、3.3GH...

盘点618年中大促中这款云服务器/VPS主机相对值得选择

昨天有在"盘点2021年主流云服务器商家618年中大促活动"文章中整理到当前年中大促618活动期间的一些国内国外的云服务商的促销活动,相对来说每年年中和年末的活动力度还是蛮大的,唯独就是活动太过于密集,而且商家比较多,导致我们很多新人不懂如何选择,当然对于我们这些老油条还是会选择的,估计没有比我们更聪明的进行薅爆款新人活动。有网友提到,是否可以整理一篇当前的这些活动商家中的促销产品。哪些商家哪款产...

CYUN(29元/月)美国、香港、台湾、日本、韩国CN2,续费原价

关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...

lumaqq为你推荐
google竞价排名谷歌SEO与谷歌竞价的区别和联系打开网页出现错误我打开网页老出现错误是怎么了?百度手写百度如何手写:硬盘人电脑对人有多大辐射?保护气球气球保护液可以用什么来代替?lockdowndios8.1怎么激活内置卡贴如何快速收录如何让百度快速收录网管工具网管软件好用吗?什么样的网管软件好呢?我想管理二十台电脑,让其中的四五台可以上网,其它的只能上局域网,谁能推荐一款软件吗?如果出钱买也可以!谢谢了!QzongQZONG怎么玩?php购物车php做购物车需要用到哪些技术,这些技术怎么实现
lunarpages 网通ip 台湾谷歌地址 阿里校园 中国网通测速 hkt linux使用教程 卡巴斯基免费试用版 最漂亮的qq空间 域名与空间 东莞idc 英雄联盟台服官网 卡巴斯基试用版下载 hostease tracker服务器 免费赚q币 winds alexa世界排名 dbank 冰盾ddos防火墙 更多