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

日本CN2、香港CTG(150元/月) E5 2650 16G内存 20M CN2带宽 1T硬盘

提速啦简单介绍下提速啦 是成立于2012年的IDC老兵 长期以来是很多入门级IDC用户的必选商家 便宜 稳定 廉价 是你创业分销的不二之选,目前市场上很多的商家都是从提速啦拿货然后去分销的。提速啦最新物理机活动 爆炸便宜的香港CN2物理服务器 和 日本CN2物理服务器香港CTG E5 2650 16G内存 20M CN2带宽 1T硬盘 150元/月日本CN2 E5 2650 16G内存 20M C...

德阳电信高防物理机 16核16G 50M 260元/月 达州创梦网络

达州创梦网络怎么样,达州创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,一手四川托管服务商,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网封UDP,无视UDP攻击,机房集群高达1.2TB,单机可提供1...

Friendhosting四五折促销,VPS半年付7.5欧元起

Friendhosting发布了针对“系统管理日”(每年7月的最后一个星期五)的优惠活动,针对VPS主机提供55%的优惠(相当于四五折),支持1-6个月付款使用,首付折扣非永久,优惠后最低套餐首半年7.18欧元起。这是一家保加利亚主机商,成立于2009年4月,商家提供VDS和独立服务器租用等,数据中心目前可选美国洛杉矶、保加利亚、乌克兰、荷兰、拉脱维亚、捷克和波兰等8个地区机房。下面以最低套餐为例...

lumaqq为你推荐
伪装微信地理位置微信地理位置伪装软件怎么定位到微信吴晓波频道买粉《吴晓波频道》《罗辑思维》《专栏精粹》怎么评价?今日热点怎么删除如何彻底删除今日热点中小企业信息化什么是企业信息化,应该这样实施godaddygodaddy域名怎样使用怎么点亮qq空间图标QQ空间图标怎么点亮?安装迅雷看看播放器怎样安装迅雷看看播放器免费免费建站我想建一个自己的免费网站,但不知道那里有..idc前线穿越火线河北的服务器好卡 有人知道怎么回事嘛 知道的速回mate8价格手机华为mat8售价多少
域名劫持 fc2新域名 域名备案号查询 如何注销域名备案 互联网域名管理办法 视频存储服务器 koss 服务器怎么绑定域名 镇江联通宽带 亚洲小于500m ca4249 微信收钱 cn3 美国在线代理服务器 服务器合租 爱奇艺vip免费领取 免费dns解析 卡巴斯基免费试用版 空间首页登陆 ebay注册 更多