亚洲人成网站在线播放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 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
7777精品久久久大香线蕉小说| 国产成人久久777777| 久久伊人一区二区| 在线国产精品网| 国产一区二区三区黄| 久久精品亚洲一区| 日韩免费观看av| 久久免费视频这里只有精品| 国产99久久精品一区二区 夜夜躁日日躁| 欧美综合在线观看视频| 久久99精品久久久久久青青日本| 亚洲97在线观看| 91精品国产一区二区三区动漫| 自拍视频一区二区三区| 国产精品自拍偷拍| 久久久久成人精品| 成人免费aaa| 亚洲综合精品伊人久久| 草莓视频一区| 亚洲精品第一区二区三区| 99www免费人成精品| 亚洲中文字幕无码一区二区三区| 国产精品影院在线观看| 精品自在线视频| 成人国产亚洲精品a区天堂华泰| 在线免费一区| 91免费精品国偷自产在线| 五码日韩精品一区二区三区视频| 久久综合久久久久| 日韩欧美视频网站| 国产精品日韩二区| 国产一区二区自拍| 九九九热精品免费视频观看网站| 高清在线观看免费| 午夜精品久久久久久久99热浪潮| 久久国产一区| 激情伦成人综合小说| 久久国产精品久久国产精品| 成人av中文| 日韩av免费在线看| 久久久国产视频91| 国产精品一区二区三区在线| 亚洲精品视频一二三| 久久99精品久久久久久久青青日本| 欧美在线视频一区| 欧美激情网友自拍| 久久婷婷人人澡人人喊人人爽| 日本999视频| 欧美另类99xxxxx| 国产精品99久久99久久久二8| 日韩国产欧美一区| 久久成人这里只有精品| 波多野结衣精品久久| 日本中文字幕亚洲| 国产精品久久久久久久7电影| 成人精品视频在线| 人妻久久久一区二区三区| 久久中国妇女中文字幕| 久久日韩精品| 国产视频福利一区| 日本一级黄视频| 另类美女黄大片| 国产福利成人在线| 国产真实乱子伦| 日本特级黄色大片| 精品高清视频| 久久99精品久久久久久三级| 国产原创欧美精品| 色一情一乱一乱一区91| 久久视频精品在线| 91精品国产高清| 国产在线98福利播放视频| 色噜噜一区二区| 欧美精品日韩三级| 久久久久久网站| 99在线观看视频网站| 欧美 日韩 国产一区| 日韩一区国产在线观看| 美女av一区二区| 久久精品男人天堂| 久久久天堂国产精品女人 | 蜜桃91精品入口| 亚洲 日韩 国产第一| 国产精品国产三级国产aⅴ浪潮 | 日韩色av导航| 久久综合久久久久| 国产精品一区二区三区在线播放| 欧美亚洲一级片| 欧美一乱一性一交一视频| 九色精品美女在线| 国产精品视频播放| 久久久久久中文字幕| 99伊人久久| 精品一区2区三区| 欧美性大战久久久久xxx| 日本亚洲欧洲色α| 亚洲国产欧美日韩| 中文字幕在线中文字幕日亚韩一区| 国产精品极品在线| 久久视频精品在线| 久久久久久久久久久视频| 久久久亚洲精选| 99久久久精品免费观看国产| 国产欧美日本在线| 国产日韩在线一区二区三区| 欧美日韩精品久久| 青青草综合在线| 日韩在线国产| 亚洲中文字幕无码专区| 一区二区在线观看网站| 色综合老司机第九色激情| 久久亚洲精品网站| 久久综合五月天| 国产精品国产对白熟妇| 国产精品免费一区| 国产精品日日做人人爱| 国产精品无码一本二本三本色| 深夜福利一区二区| 久久大香伊蕉在人线观看热2| 久久久www免费人成黑人精品 | 日韩在线视频免费观看| 久久66热这里只有精品| 久久精品日产第一区二区三区精品版| 91免费精品视频| 91免费人成网站在线观看18| 91精品视频在线看| 久久这里只有精品23| 国产成人av在线播放| 久久久久五月天| 日韩中文字幕久久| 久热99视频在线观看| 国产精品网红福利| 国产精品精品视频| 欧美精品在线观看91| 色综合视频网站| 久久久久久国产| 大波视频国产精品久久| 日本a在线免费观看| 欧美亚洲第一页| 麻豆成人小视频| 国产欧美高清在线| 91九色单男在线观看| 久久欧美在线电影| 精品久久久av| 久热精品视频在线观看| 伊人久久大香线蕉成人综合网| 亚洲一区亚洲二区| 日韩理论片在线观看| 黄页网站在线观看视频| 国产一区二区在线免费视频 | 国产精品久久不能| 欧美激情亚洲视频| 午夜久久资源| 欧美一区二区影视| 国产情侣第一页| 国产精品91视频| www.欧美免费| 欧美激情在线观看视频| 欧美一级免费看| 黄色大片在线免费看| 国产美女精品免费电影| 久久亚洲国产成人精品无码区| 久久久久久噜噜噜久久久精品| 国产精品男人的天堂| 亚洲一区精品电影| 欧美日韩另类综合| av免费中文字幕| 久久久精品免费| 亚洲在线免费看| 欧美精品99久久| www.av一区视频| 久久精品国产欧美激情| 亚洲一区二区三区乱码aⅴ| 欧美一性一乱一交一视频| 不卡一区二区三区视频| 色噜噜狠狠狠综合曰曰曰88av| 欧美日韩国产成人在线观看| 日本免费不卡一区二区| 国产欧美日本在线| 日韩视频在线免费| 亚洲一区免费看| 国内精品久久国产| 国产福利精品在线| 欧美激情视频一区| 欧美亚洲一级二级| 国产精品9999| 欧美日韩高清区| 欧美日韩午夜爽爽| 国产精品a久久久久久| 日韩精品久久久免费观看| 成人av播放| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲黄色成人久久久| 国产一区二区四区| 久久久999免费视频| 九九精品在线观看| 欧美久久久久久久| 久久久综合av| 亚洲一区二区三区在线观看视频| 欧美,日韩,国产在线|