国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > TextViewer實現原理簡單分析

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

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

 

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

 

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

 

Token和分割后得到的各種類型的區塊相關聯,但是它本身并不包含文本內容,也不具有區塊的位置信息,而對于不同類型區塊在顯示的時候將使用何種顏色這種信息則由Token來提供,從而在整個文檔中Token能被重用。

 

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

 

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

 

要對文檔進行分割,需要先創建一個分割掃描器,然后再將分割掃描器作為參數創建文檔分割器,接著將文檔的分割器設置為前面創建的文檔分割器(此時將對文檔進行分割操作),最后將分割器與文檔關聯。

 

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

 

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

 

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


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费
<button id="0mgmq"><pre id="0mgmq"></pre></button>
  • <tr id="0mgmq"></tr>
  • <abbr id="0mgmq"><source id="0mgmq"></source></abbr> <button id="0mgmq"></button>
  • 粉嫩高清一区二区三区精品视频| 亚洲二区三区四区| 亚洲精品久久久久久一区二区| 欧美国产视频在线观看| 亚洲色图自拍| 韩国欧美一区| 欧美午夜精品| 亚洲最大色综合成人av| 欧洲一区二区日韩在线视频观看免费| 99九九视频| 免费精品视频| 久久久xxx| 久久精品男女| 乱码第一页成人| 国产九区一区在线| 国产精品婷婷| 亚洲一区激情| 久久视频一区| 91pron在线| 91丨九色丨国产| 久久综合九色综合欧美狠狠| 国产精品资源| 久久天堂精品| 国产日韩在线一区二区三区| 国产伦精品一区二区三区高清| 91在线观看网站| 国产精品区二区三区日本| 国产一区二区精品免费| 久久国产精品久久| 五月天亚洲综合小说网| 亚洲自拍的二区三区| 欧美精品黄色| 国产人成精品一区二区三| aa级大片欧美三级| 老鸭窝91久久精品色噜噜导演| 麻豆精品视频| 好吊色欧美一区二区三区视频| 久久国产精品亚洲va麻豆| 日韩久久久久久久| 欧美日韩视频在线一区二区观看视频 | 一区二区不卡在线视频 午夜欧美不卡'| 亚洲v国产v在线观看| 欧美天天在线| 欧美中文字幕| 久久精品女人的天堂av| 天天久久人人| 国产精品试看| 久久婷婷人人澡人人喊人人爽| 亚洲高清在线观看一区| 亚洲国产专区| 精品福利影视| 欧美午夜精品| 999久久久| 致1999电视剧免费观看策驰影院| 99视频+国产日韩欧美| 国产亚洲精品久久飘花| 欧美黄色aaaa| 99国产盗摄| 亚洲精品乱码视频| 免费国产自线拍一欧美视频| 日本不卡二区高清三区| 在线 亚洲欧美在线综合一区| 成人av网站观看| 一区二区免费在线视频| 先锋影音一区二区三区| 日本中文不卡| 久久精品观看| 欧美va亚洲va日韩∨a综合色| 久久久久久穴| 午夜亚洲福利| 国产综合av一区二区三区| 国产在线成人| 欧美系列一区| 蜜乳av另类精品一区二区| 亚洲欧洲国产精品久久| 老司机免费视频久久 | 国产伦一区二区三区色一情| 一区二区三区在线视频111| 91九色蝌蚪嫩草| 欧美不卡在线| 欧美日韩国产高清视频| 性刺激综合网| 亚洲国产一区二区三区在线播| 欧美一区少妇| 国产精品一区二| 一区二区三区四区五区精品| 四虎永久国产精品| 国产91一区二区三区| 亚洲香蕉网站| 欧美在线三级| 欧美日韩综合另类| 国产欧美日韩视频一区二区三区| 亚洲国产日韩欧美| 伊甸园精品99久久久久久| 黑人另类av| 成人黄色片视频网站| 国产亚洲在线| 亚洲精选久久| 亚洲高清资源| 久久精品日韩欧美| 亚洲欧美日韩综合一区| 亚洲国内精品| 激情综合视频| 欧美日韩免费高清| 一区二区欧美日韩| 午夜免费电影一区在线观看| 久久久精彩视频| 国产伦理一区二区三区| 久久综合久久久| 久久久人人人| 5566中文字幕一区二区| 国产精品久久久亚洲一区| 日韩一级免费| 99在线|亚洲一区二区| 亚洲国产精品综合| 国产欧美日韩一级| 国产免费成人| 久久精品三级| 国产精品theporn88| 成人一区二区三区四区| 粉嫩av一区二区三区免费观看| 动漫精品视频| 久久伊人一区二区| 日韩视频专区| 一区二区三区四区国产| 欧美a级在线| 亚洲九九精品| 久久国产精品99国产| 99久久久精品免费观看国产| 5566中文字幕一区二区| 激情小说网站亚洲综合网 | 黑人中文字幕一区二区三区| 精品亚洲欧美日韩| 色乱码一区二区三在线看| 欧美性天天影院| 欧美日韩一区二区视频在线观看 | 欧美日韩在线精品| 亚洲看片网站| 日韩视频三区| 国产视频精品网| 午夜精品福利一区二区| 欧美日韩在线播放一区二区| 亚洲激情社区| 国产精品一区二区三区在线| 人禽交欧美网站免费| 国外成人免费视频| 久色成人在线| 新呦u视频一区二区| 影音先锋亚洲精品| 久久综合中文色婷婷| 欧美精品一区二区三区久久| 午夜亚洲福利| 91沈先生播放一区二区| 日本在线观看一区二区三区| 在线精品在线| 国产一区视频观看| 国产精品二区影院| 高清国语自产拍免费一区二区三区| 免费国产一区二区| 99精品热视频只有精品10| 国产亚洲自拍偷拍| 国产精品扒开腿做爽爽爽软件| 蜜桃久久精品乱码一区二区| 日韩精品一区二区三区丰满| 99精品国产在热久久婷婷| 国产一区高清视频| 黄色成人在线网址| 黑人中文字幕一区二区三区| 国产在线欧美日韩| 精品国产乱码久久久久久郑州公司| 欧美极品一区二区三区| caoporen国产精品| 国产在线精品二区| 欧美不卡三区| 亚洲综合欧美| 亚洲一区免费看| y111111国产精品久久婷婷| 欧美日韩亚洲一区二区三区四区| 99爱精品视频| 99xxxx成人网| 亚洲视频电影| 国产一区国产精品| 国产精品永久入口久久久| 在线免费观看成人网| 成人资源av| 国产精品日韩欧美一区二区三区| 神马影院午夜我不卡影院| 97人人模人人爽人人喊38tv| 国产伊人精品| 亚洲一区bb| 欧美一区二区视频在线| 91丨九色丨国产| 99re6热在线精品视频播放速度| 日韩久久在线| 欧美日韩国产精品一卡| 成人三级在线| 成人动漫视频在线观看免费| 国产精品夜夜夜| 亚洲青色在线| 欧美日韩国产综合视频在线|