麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 設(shè)計軟件教程 > TextViewer實現(xiàn)原理簡單分析

TextViewer實現(xiàn)原理簡單分析
2010-01-14 22:51:57  作者:  來源:

以下內(nèi)容都是通過閱讀《The Definitive Guide to SWT and JFace》寫的。只涉及到語法著色部分,還有內(nèi)容自動完成,編輯器的Vertical Ruler等內(nèi)容這里不介紹,Eclipse的插件開發(fā)幫助里面介紹的很詳細。

 

TextViewer的輸入叫Document, TextViewer在顯示文檔之前,將對其分割(Partition)成各種類型的區(qū)塊(Region),每個區(qū)塊將具有以下屬性:區(qū)塊所使用的字體,字體風格(粗體、斜體、帶下劃線等等)、區(qū)塊所在的位置、區(qū)塊的內(nèi)容是數(shù)字還是括號,區(qū)塊上下的空格數(shù)等,不過TextViewer卻無法對不同的區(qū)塊使用不同的字體大小(這是因為TextViewer的底層是StyleText控件的緣故,一個文檔只能使用一種字體大小)

 

與一般的文字處理器不同,TextViewer沒法直接定義各個區(qū)塊(而文字處理器則可以選中的文字指定為區(qū)塊從而給其指定各種屬性),它是根據(jù)內(nèi)部定義的規(guī)則隱式的將文檔分割成不同的區(qū)塊。比如Java Editor,當我們把一段注釋添加到文檔中之后,編輯器就能將其判斷成注釋區(qū)塊,編輯器能做出這種判斷就是基于其內(nèi)部指定的分割規(guī)則。在TextViewer中由IDocumentPartitioner 來負責對Document進行解析和分割,一個IDocumentPartitioner 將跟一個Document關(guān)聯(lián)起來,其默認實現(xiàn)是DefaultPartitioner,不同類型的文檔需要使用不同的分割規(guī)則,顯然DefaultPartitioner 無法滿足要求,這就需要我們對DefaultPartitioner 的行為進行定制,不過我們一般不這樣做,而是通過使用一種所謂的分割掃描器和分割類型來構(gòu)造DefaultPartitioner 從而達到定制的目的。經(jīng)過分割掃描器分割后得到的僅僅只是一個很原始的區(qū)塊,它將是實現(xiàn)語法高亮這樣的功能的基礎(chǔ)。

 

Token和分割后得到的各種類型的區(qū)塊相關(guān)聯(lián),但是它本身并不包含文本內(nèi)容,也不具有區(qū)塊的位置信息,而對于不同類型區(qū)塊在顯示的時候?qū)⑹褂煤畏N顏色這種信息則由Token來提供,從而在整個文檔中Token能被重用。

 

IPartitionTokenScanner 也是一種分割掃描器,當文檔被修改時,DefaultPartitioner 將使用自帶的IPartitionTokenScanner實現(xiàn)去掃描指定的文檔區(qū)域來得到相關(guān)的Token和Partition信息

 

一般我們都通過繼承RuleBasedPartitionScanner 來實現(xiàn)自己的分割掃描器,通過給掃描器添加各種Rule就可以控制掃描器的分割行為,而每一種分割類型都會有對應(yīng)的一個Rule, JFace提供了多種Rule,在創(chuàng)建一個rule實例時,需要指定該rule使用的token,對應(yīng)的字符序列特征,在掃描的時候,當rule找到匹配的文檔的時候, 將使用該rule所附帶的token對匹配文字進行標識。

 

要對文檔進行分割,需要先創(chuàng)建一個分割掃描器,然后再將分割掃描器作為參數(shù)創(chuàng)建文檔分割器,接著將文檔的分割器設(shè)置為前面創(chuàng)建的文檔分割器(此時將對文檔進行分割操作),最后將分割器與文檔關(guān)聯(lián)。

 

經(jīng)過分割后的文檔將提供豐富的描述信息,不過為了將模型和視圖分離,分割后得到的所有區(qū)塊并不附帶視圖信息,為了告訴TextViewer如何顯示分割后的文檔,必須通過給TextViewer指定SourceViewerConfiguration ,而且必須在給TextViewer指定Document之前做這件事。

 

TextViewer的一個重要功能就是語法著色,要實現(xiàn)這個功能需要三個條件:一個就是表現(xiàn)協(xié)調(diào)器(Reconciler);一個是與需要著色的分割類型關(guān)聯(lián)的破壞器(Damager)和修復器(Repairer);還有一個就是需要著色的分割類型關(guān)聯(lián)的規(guī)則掃描器(RuleBasedScanner,不是分割掃描器)。破壞器用來響應(yīng)文檔的修改,修復器則對改動文檔的顯示進行調(diào)整,因此破壞器和修復器成對出現(xiàn)并與一個表現(xiàn)協(xié)調(diào)器關(guān)聯(lián),而協(xié)調(diào)器可以和多個破壞修復器關(guān)聯(lián),而每一組破壞修復器都和一個分割類型相關(guān)聯(lián),破壞修復器只會在他們配置類型的分割區(qū)發(fā)生變化起作用,破壞修復器包含一個掃描器,它被用來掃描所有相應(yīng)類型的分區(qū),掃描器中包含的規(guī)則將被修復器用來對文本進行著色。

 

Reconciler,Damager/Repairer, RuleBasedScanner三者之間的關(guān)系:給Reconciler設(shè)置Damager和Requirer并指定分割類型,當然還要給破壞修復器設(shè)置Scanner,而Scanner中也包含一些類,分別是TextAttribute(用來設(shè)置著色文本的前景色,背景色以及字體信息),Token(包含一系列TextAttribute),Rule又包含Token和相關(guān)字符序列信息,為了將Reconciler與TextViewer關(guān)聯(lián)起來,必須從TextViewer所配置的SourceViewerConfiguration 中來取得Reconciler.


安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
久久久久中文字幕2018| 日韩成人激情| 第一页在线观看| 一卡二卡三卡亚洲| 国产日韩欧美日韩大片| 国产成人精品av| 国产国产国产国产国产国产| 高清国语自产在线观看| 成视频免费在线看| 在线观看国产视频一二三| 桃乃木香奈av在线| 成人高潮成人免费观看| 美女国产在线| 国产免费拔擦拔擦8x高清在线人 | 国产91在线精品| 成人免费视频观看| 欧美高清一级片| 国产一区二区三区电影在线观看| 99re66热这里只有精品8| 国产精品videosex极品| 久久综合影视| 成人午夜碰碰视频| 国产精品久久久久久久久久久免费看| 一区二区三区在线观看动漫 | 欧美成人三级电影在线| 精品亚洲va在线va天堂资源站| 在线观看不卡av| 97视频在线观看免费高清完整版在线观看| 国产91在线播放| 国产日韩欧美电影在线观看| 一级毛片在线看| 欧美人与性动交α欧美精品图片| 日韩制服一区| 欧美一区二区三区激情视频| 免费亚洲婷婷| 国产午夜精品理论片a级大结局| 亚洲国产成人porn| 亚洲高清在线观看| 午夜精品久久久久久久久久久久久| 成人免费网站在线看| 99免在线观看免费视频高清| 欧美风情在线视频| 99久久婷婷| 国产成人日日夜夜| 亚洲线精品一区二区三区 | 精品欧美一区二区久久| 久久精品久久久久久| 国产日韩欧美自拍| 高潮毛片在线观看| 4438全国亚洲精品观看视频| 怡红院精品视频在线观看极品| 国产福利一区在线观看| 一区二区三区高清| 日韩高清av一区二区三区| 2019中文字幕在线| 欧美猛烈性xbxbxbxb| 精品国产乱码一区二区三区| 狠狠88综合久久久久综合网| 91亚洲精品久久久蜜桃| 欧美视频在线不卡| 欧美福利在线观看| 福利成人在线观看| 97人人澡人人爽91综合色| 久热精品在线| 亚洲一区二区视频| 中文字幕一区二区三区电影| 男人天堂午夜在线| 日本一区二区三区中文字幕| 99在线热播精品免费99热| 国产精品国产三级国产普通话蜜臀| 亚洲第一av网站| 国产字幕中文| 国产精品久久久久久妇女| 欧美日本在线| 最新久久zyz资源站| 亚洲另类欧美自拍| 台湾av在线二三区观看| 国产精品99久久免费观看| 免费人成网站在线观看欧美高清| 精品国产91久久久久久| 精品中文字幕在线观看| 麻豆影院在线| 久久久久久久久久久久久久久久久久 | 福利视频网站一区二区三区| 欧美日高清视频| 国产精品成人aaaaa网站| 电影网一区二区| 亚洲欧美日韩国产一区| 欧美日韩精品二区| 国产91精品青草社区| 大菠萝精品导航| 亚洲清纯自拍| 色诱视频网站一区| 国产精品极品在线| 国产激情精品一区二区三区| 国内精品写真在线观看| 精品久久久三级丝袜| 动漫成人在线观看| 婷婷综合一区| 国产精品美女久久久久aⅴ | 亚洲成人精品视频| 在线观看av片| 精品久久久久久久久久久下田| 国产欧美日韩卡一| 久久综合伊人77777| 羞羞的视频在线观看| 亚洲日本视频| 欧美系列亚洲系列| 一级片免费看| 精品国产一区二区三区噜噜噜 | 亚洲福利影视| 豆国产96在线|亚洲| 亚洲欧美日韩国产成人| 国产一区久久精品| 久久综合亚州| 欧美精品一区二区三区一线天视频| 色视频在线观看免费| 91综合久久| 日本韩国精品一区二区在线观看| 高清孕妇孕交╳╳交| 婷婷国产精品| 亚洲国产aⅴ成人精品无吗| 国产精品美女主播| 久操成人av| 91久久精品一区二区三| 日韩精品系列| 亚洲成人资源| 亚洲大胆美女视频| 丁香花在线高清完整版视频| 国产麻豆精品theporn| 中文字幕亚洲字幕| 精品福利在线| 欧美韩国日本综合| 国产精品久久久久久亚洲调教| 外国成人在线视频| 色综合久久精品| 可以免费看污视频的网站在线| 免费日韩精品中文字幕视频在线| 日韩精品一区二区视频| 成人片免费看| 国产精品久久久久久福利一牛影视 | www.xxxx精品| 国产精品日韩精品在线播放| 亚洲精品va在线观看| 日本免费一二区| 亚洲全部视频| 日韩在线观看你懂的| 亚洲精品乱码日韩| 亚洲国产欧美另类丝袜| 在线观看黄色小视频| 久久久久久久尹人综合网亚洲| 一区二区三区精品99久久 | 激情丁香综合五月| 欧美日本精品在线| 亚洲另类av| 91精品婷婷国产综合久久竹菊| gogo高清在线播放免费| 99久久伊人久久99| 国产欧美日韩91| 在线视频亚洲| 日韩中文字幕av| 欧美日日夜夜| 日韩欧美另类在线| 欧美天堂在线| 日韩欧美黄色动漫| 人交獸av完整版在线观看| 国产亚洲欧美色| 深夜福利视频在线观看| 成人少妇影院yyyy| 福利片免费在线观看| 日韩av电影一区| 欧洲永久精品大片ww免费漫画| 久久精品久久久| xxx一区二区| 91亚洲国产成人久久精品| 国产丝袜视频一区| 婷婷综合电影| 亚洲成人黄色在线观看| 波多野结衣欧美| 欧美不卡一区二区| 99久久人爽人人添人人澡 | 亚洲深夜福利网站| 亚洲成a人片77777在线播放| 亚洲精品97久久| 人人精品视频| 亚洲欧美变态国产另类| 牲欧美videos精品| 国产一区二区成人| 久久影院100000精品| 久久福利视频导航| 亚洲国产一区二区三区高清| 78色国产精品| 麻豆精品视频在线观看视频| 成视频在线观看免费观看| 国产寡妇亲子伦一区二区| 亚洲女人天堂在线| 国产精品久99| 竹内纱里奈兽皇系列在线观看| 欧美色成人综合| 国产精品成人自拍|