亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 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.


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
少妇特黄a一区二区三区| 国产精品精品一区二区三区午夜版| 久久伊人一区二区| 欧美日韩国产二区| 免费国产一区| 国产精品丝袜白浆摸在线| 日韩久久一级片| 91久久久久久久久| 中文字幕一区二区三区四区五区人 | 日日狠狠久久偷偷四色综合免费 | 91精品美女在线| 中文字幕日韩精品一区二区| 国产一区二区三区四区五区加勒比| 久久久国产视频91| 欧美日韩亚洲一区二区三区四区 | 婷婷五月色综合| 99国产视频| 亚洲色图自拍| av在线播放亚洲| 欧美精品久久久久久久久| 国产男女猛烈无遮挡91| 不卡av日日日| 国模杨依粉嫩蝴蝶150p| 日韩在线小视频| 欧美在线国产精品| 国产成人精品在线观看| 青草视频在线观看视频| 色妞在线综合亚洲欧美| 欧美日韩精品综合| 国产精品国产精品国产专区蜜臀ah | 国产欧美在线视频| 欧美成aaa人片在线观看蜜臀| 国产制服91一区二区三区制服| 不卡av在线播放| 国产精品自产拍在线观看| 久久成人亚洲精品| 99久久久精品免费观看国产| 手机成人av在线| 久久久久天天天天| 欧美精品一区二区性色a+v| 国产精品美女呻吟| 二级片在线观看| 日韩.欧美.亚洲| 国产精品三级在线| 成人免费在线小视频| 色一情一乱一乱一区91| 国产成人精品视频在线观看| 国内精品国产三级国产在线专| 久久99精品久久久久久青青91| 成人国产一区二区三区| 亚洲人久久久| 日韩视频亚洲视频| 国产日本欧美在线| 日韩wuma| 欧美精品在线极品| 久久免费在线观看| 蜜桃精品久久久久久久免费影院| 久久久久国产精品一区| 国产成人综合av| 国产深夜精品福利| 三年中文高清在线观看第6集| www国产91| 91久久久久久久久久| 欧美日韩视频免费在线观看| 欧美激情精品久久久久久大尺度| 99视频在线免费| 欧美亚洲一二三区| 亚洲午夜激情| 国产精品日日摸夜夜添夜夜av| av无码精品一区二区三区| 日韩精品电影网站| 中文字幕在线乱| 久久精品一本久久99精品| 成人国产精品久久久| 欧美日韩系列| 亚洲va久久久噜噜噜久久狠狠| 国产精品无码一区二区在线| 99视频精品免费| 极品美女扒开粉嫩小泬| 日韩一区二区三区高清| 日韩亚洲精品电影| 99高清视频有精品视频| 欧美精品成人网| 欧美一区二区三区四区在线 | 欧美激情一二三| 精品国产视频在线| 高清在线观看免费| 国内精品久久久久久久久| 亚洲色图都市激情| 久久艳片www.17c.com| 久久艹中文字幕| 国产视频一区二区三区在线播放| 日本一区二区不卡高清更新| 欧美激情在线有限公司| 久久精品久久久久| 久久精品一区二| 99视频精品免费| 国产欧美日韩中文字幕在线| 欧美有码在线观看| 五月天国产一区| 一本久道中文无码字幕av| 另类专区欧美制服同性| 久久久精品中文字幕| 久久精品日产第一区二区三区 | 高清欧美性猛交xxxx| 黄色高清无遮挡| 欧美在线视频一二三| 亚洲免费视频播放| 亚洲aⅴ日韩av电影在线观看| 久久精品国产一区二区电影| 日韩网址在线观看| 中文字幕精品一区日韩| 欧美性资源免费| 国产精品日本精品| 91国产在线播放| 国产啪精品视频网站| 欧美在线观看黄| 亚洲午夜精品久久| 日韩在线免费高清视频| 国产一区二区高清不卡| 欧美专区在线观看| 亚洲精品欧美日韩专区| 不卡av在线播放| 91精品国产综合久久男男| 精品视频第一区| 日本a在线天堂| 亚洲国产成人不卡| 一区二区三区国产福利| 国产精品极品美女在线观看免费| 久久婷婷开心| 久久久久久一区| 81精品国产乱码久久久久久| 国产精品一区二区你懂得| 男人天堂成人在线| 人妻无码久久一区二区三区免费| 午夜久久久久久久久久久| 精品久久久久久无码国产| 国产av第一区| 精品免费国产| 欧美大肥婆大肥bbbbb| 国产精品男人爽免费视频1| 按摩亚洲人久久| 久草热视频在线观看| 深夜精品寂寞黄网站在线观看| 久久久女女女女999久久 | 中文字幕第一页亚洲| 国产精品久久99久久| 色偷偷9999www| 久久国产日韩欧美| 久久久久中文字幕| 日韩一区二区精品视频| www国产亚洲精品久久网站| 日韩中文综合网| 久久久精品国产| 久久精品人人爽| 国产精品成人v| 蜜月aⅴ免费一区二区三区| 色中色综合影院手机版在线观看| 色综合久久88| 亚洲一区高清| 亚洲淫片在线视频| 亚洲高清在线观看一区| 亚洲啊啊啊啊啊| 午夜精品在线观看| 欧美 日韩精品| 国内精品伊人久久| 国产欧美中文字幕| 91精品国产自产在线观看永久| 国产极品尤物在线| 久久99精品久久久水蜜桃| 国产精品成人在线| 中文字幕一区二区三区精彩视频| 亚洲精品日产aⅴ| 日韩国产精品一区二区| 欧美日韩视频免费| 日本a在线免费观看| 国产一区二区三区乱码| 国产伦精品一区二区三区在线| 99久久激情视频| 久久国产主播精品| 久久夜精品香蕉| 蜜臀久久99精品久久久无需会员 | 99在线影院| 国产精品入口日韩视频大尺度| 欧美成人一二三| 性欧美激情精品| 狠狠色综合色区| 99精品国产高清在线观看| 91精品国产自产在线观看永久 | 免费看黄色a级片| 久久综合中文色婷婷| 久久久精品电影| 亚洲一区二区免费在线| 日韩精品不卡| 日韩av一区二区三区在线| 国产欧美日韩免费看aⅴ视频| 久久黄色免费看| 欧美精品激情视频| 日韩国产小视频| 国产美女精品视频免费观看|