Java編輯器模塊概要設(shè)計文檔_第1頁
Java編輯器模塊概要設(shè)計文檔_第2頁
Java編輯器模塊概要設(shè)計文檔_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、JavaEditoi模塊設(shè)計文檔一、引言1.1 編寫目的本文檔是為了工具開發(fā)人員能系統(tǒng)化地進(jìn)行開發(fā)提供思路和方法, 避免大量 的重復(fù)工作, 為測試人員能快速查閱系統(tǒng)的設(shè)計思路和具體功能, 對系統(tǒng)的整體 架構(gòu)有大概的了解。1.2 參考資料Java編輯器源碼二、任務(wù)概述2.1 功能描述功能列表1關(guān)鍵字都呈紅色高亮顯示,注釋為綠色高亮,輸出引號內(nèi)容和聲明的變量為 藍(lán)色高亮,其他內(nèi)容顯示常規(guī)黑色;2左側(cè)標(biāo)尺中可右鍵顯示行號,添加斷點,根據(jù)函數(shù)行折疊代碼,打開當(dāng)前編 輯器的屬性框等;3編寫過程中不斷進(jìn)行語法驗證,檢測的錯誤代碼帶高亮下劃線,得到光標(biāo)時 彈出提示菜單; 4編輯過程中,使用未引入的包,高亮下

2、劃線提示,獲取光標(biāo)提供導(dǎo)入包選項; 5根據(jù)左括號,回車自動添加右括號,編寫代碼時,根據(jù)固定格式內(nèi)嵌縮進(jìn); 6雙擊時,自動匹配括號內(nèi)容選中,如果不是在括號左右雙擊,則選中單詞; 7在編輯區(qū)域中提供右鍵菜單,可實現(xiàn)復(fù)制、粘貼、剪切、撤銷、恢復(fù)、縮進(jìn)、打開、保存、運行、屬性框等功能;8保存的文件,編輯器中所有屬性都能保存,再次打開與保存前的狀態(tài)相一致包含功能:編輯、打開保存、語法高亮、內(nèi)容輔助。2.2運行環(huán)境Eclipse運行環(huán)境三、功能實現(xiàn)3.1設(shè)計問題格式化JavaEditor是怎么樣將文本安排到行和列上的?文本的縮進(jìn)如何按定 義的規(guī)則實現(xiàn),哪些對象負(fù)責(zé)執(zhí)行不同的格式策略?修飾用戶界面JavaE

3、ditor的用戶見面包括滾動條和邊界。這些修飾有可能隨 著用戶界面的演化而發(fā)生變化,因此在不影響其他方面的情況下,能自由 增加和除去這些修飾就十分重要了。用戶操作 用戶通過不同的用戶界面來控制JavaEditor包括按鈕和下拉菜單等。智能輔助JavaEditor定義不同關(guān)鍵字的顏色,如注釋的顏色、字符串的顏色 等。當(dāng)輸入代碼時,可以在提示java語法中內(nèi)置對象的內(nèi)容提示功能。本項目中已包含的類包名:org.eclipse.ui.examples.javaeditor包含的類JavaActi onCon tributor管理默認(rèn)文本編輯器的操作JavaA nno tati onH over提供懸

4、浮窗口注釋信息JavaC onten tOutl in ePage提供內(nèi)容大綱頁面JavaDocume ntSetupParticipa nt設(shè)置文檔的分區(qū)JavaEditor編輯器主窗口JavaEditorExamplePlugin提供基本插件服務(wù)JavaEditorMessages實現(xiàn)支持更多的語言環(huán)境JavaPartiti on Sca nner冋一類型的文本掃描JavaSourceViewerC on figurati on編輯器文本控件的配置對象JavaTextHover懸浮提示窗口Prese ntati onAction文本操作包名:org.eclipse.ui.examples.

5、javaeditor.java包含的類JavaAuto Inden tStrategyJava編輯器自動縮進(jìn)策略JavaCodeSca nner建立掃描規(guī)則,JavaCompletion Processor內(nèi)容輔助提示JavaDoubleClickSelector雙擊括號匹配選擇和單詞選擇JavaEditorMessages資源綁定包名:org.eclipse.ui.examples.javaeditor.javadocJavaDocCompletio nProcessor內(nèi)容提示JavaDocSca nner文本掃描包名:org.eclipse.ui.examples.javaeditor.

6、utilJavaColorProvider顏色提供JavaWhitespaceDetector分析空白字符JavaWordDetector單詞判斷3.2格式化內(nèi)容格式化格式化就是按照特定的規(guī)則對文檔重新排版使之更具可讀性。因為格式化算法趨于復(fù)雜,我們將算法獨立出來,并把它封裝到對象中使其便于替代。JavaAutol nde ntStrategy實現(xiàn)該功能,定義格式化策略,然后通過SourceViewerConfiguration實現(xiàn)類給 ISourceViewer 添加策略,重載SourceViewerConfiguration的 getAutoEditStrategies 方法可以將格式化操

7、作添加到編輯器中。JavaAutoIndentStrategy中制定了縮進(jìn)格式的算法,通過獲取光 標(biāo)的位置判斷是否在預(yù)設(shè)的括號內(nèi),當(dāng)回車后,光標(biāo)自動縮進(jìn)規(guī)定的位置上。類名稱JavaAuto Inden tStrateg所屬包名稱org.eclipse.ui.examples.jayvaeditor.java描述繼承了 Default In de ntLi neAutoEditStrategy類,為圭寸裝了編輯器自動縮進(jìn)仃的算法,換行時根據(jù)光標(biāo)所在位置自動縮進(jìn)。方法(關(guān)鍵方法)名稱參數(shù)返回值異常簡單描述fin dMatchi ng Open BracketIDocume nt docume nt

8、In t li ne;Int en d;Intclos in gBracketI ncreaseint無統(tǒng)計每一行的開括號數(shù), 一直到行號為零getBracketCo untIDocume nt docume ntInt starInt endBoole n igoreCloseBracketint無getComme ntE ndIDocume nt docume ntInt positi onInt endint無返回comment的結(jié)束位置getl nde ntOfLi neIDocume nt docume ntIn t li neStri ng無獲取給定行中的內(nèi)容,過 濾掉內(nèi)容前的空格

9、符。getStri ngEndIDocume nt docume ntInt positi onInt endChar characterint無返回document中字符的位置smart IndentAf terNewl ineIDocume nt docume ntInt positi onInt endChar characterVoid無換行中設(shè)置縮進(jìn)策略smartI nsertAft erBracketIDocume nt docume ntDocume ntComma nd comma ndvoid無在開括號后,換行縮進(jìn)的策略3.3智能輔助編輯器智能輔助是指在用戶使用編輯器過程中,

10、能通過對用戶的輸入,編輯器自動對其作出相應(yīng)的輔助響應(yīng),例如,語法高亮、內(nèi)容提示等。要實現(xiàn)語法高 亮和內(nèi)容提示必須先解決幾個問題,例如文檔的分割,代碼掃描,顏色管理等331顏色管理對代碼著色要遵循一定的規(guī)則,比如說要區(qū)別注釋和關(guān)鍵字,也要區(qū)別聲明 的字符和內(nèi)置的一些對象等。顏色的定義,和賦予顏色的方法單獨封裝在對象中, 方便修改調(diào)用。JavaColorProvidet類定義了編輯器中不同文本定義了不同的 顏色,并提供了一個調(diào)用顏色的方法。public class JavaColorProvider public static final RGB MULTI_LINE_COMMENT = new

11、RGB(128, 0, 0);public static final RGB SINGLE_LINE_COMMENT = new RGB(128, 128, 0);public static final RGB KEYWORD = new RGB(0, 0, 128);public static final RGB TYPE= new RGB(0, 0, 128);public static final RGB STRING= new RGB(0, 128, 0);public static final RGB DEFAULT = new RGB(0, 0, 0);public static

12、final RGB JAVADOC_KEYWORD = new RGB(0, 128, 0);public static final RGB JAVADOC_TAG = new RGB(128, 128, 128);publicstaticfinal RGBJAVADOC_LINK new RGB(128, 128, 128);publicstaticfinal RGBJAVADOC_DEFAULTnew RGB(0, 128, 128);類名稱JavaColorProvider所屬包名稱Util描述對java編輯器中的顏色管理,定義了不冋文本的顏色。提供了獲取顏色方法方法(關(guān)鍵方法)名稱參數(shù)

13、返回值簡單描述getColorRGB rgbColor返回存儲表中的顏色要實現(xiàn)對代碼的著色,主要是通過設(shè)置ISourceViewer對象來實現(xiàn)的:其中, sourceviewer是ISourceViewer配置對象,對代碼實現(xiàn)的著色和內(nèi)容輔助、雙 擊選擇規(guī)則、掃描規(guī)則等功能都是通過該對象來設(shè)置的,JavaSourceViewerConfiguration類繼承自 SourceViewerConfiguration類,通過覆蓋父類中的方法可以實現(xiàn)以上多種功能類名稱JavaSourceViewerC on figu rati on所屬包名稱javaeditor描述繼承了 SourceViewerC

14、onfiguration類,定義資源配置內(nèi)容。方法(關(guān)鍵方法)名稱參數(shù)返回值簡單描述|getPrese ntatio nRec on cilersourceViewe rIPrese ntati on Rec on ciler覆蓋父類中的方法,主要提 供代碼著色功能getC onten tAssista ntsourceViewe rIConten tAssista nt覆蓋父類中的方法,主要提 供內(nèi)容輔助功能332文檔分割文檔分割將文檔分割成一組互不重疊的文本區(qū)域,每個區(qū)域?qū)儆谀骋粌?nèi)容類 型(co nte nt type),由該區(qū)域在文檔中的偏移量進(jìn)行標(biāo)識。JavaCodeSca nner繼

15、承自RuleBasedScanner,該類基于一系列的規(guī)則(rules),符合某一規(guī)則的區(qū)域 (partitions)對應(yīng)一個標(biāo)記(token),這樣就可以使用設(shè)置的規(guī)則來對代碼進(jìn)行掃描了,直到符合某一條規(guī)則,則可以獲取對應(yīng)該規(guī)則的標(biāo)記(token)。設(shè)置代碼掃描規(guī)則所有實現(xiàn)了 IRule接口的規(guī)則如下EndOfLineRule, MultiLineRule, NumberRule, PatternRule, Si ngleLi neRule, WhitespaceRule,WordPatternRule, WordRule 。類名稱JavaPartiti on Sea nner所屬包名稱Ja

16、vaeditor描述繼承了 RuleBasedPartitionScanner類,根據(jù)指定的規(guī)則將doeument分割。方法(關(guān)鍵方法)名稱參數(shù)返回值簡單描述JavaPartiti on Sea nnerVoid制定文檔分類的規(guī)則該程序中使用的規(guī)則類:SingleLineRule單行規(guī)則類Sin gleLi neRul可以設(shè)置指定兩個字符間的規(guī)則。它的構(gòu)造方法有:SingleLineRule(StringstartSequenee, String endSequenee, IToken token): startSequenee表示起始的字符,endSequenee表示終止的字符,token為

17、符合該 規(guī)則時所應(yīng)用的代碼樣式IToken對象。Si ngleLi neRule(Stri ngstartSeque nee, String en dSeque nee, IToke n toke n, char escapeCharacter) : eseapeCharaeter表示轉(zhuǎn)義符。Si ngleLi neRule(Stri ngstartSeque nee, String en dSeque nee, IToke n toke n, char eseapeCharaeter, boolean breaks On EOF) breaks On EOF表 示是否在文件末尾終止 該規(guī)則。

18、Si ngleLi neRule(Stri ngstartSeque nee, String en dSeque nee, IToke n toke n, char escapeCharacter, boolea n breaks On EOF, boolea n escapeC ontinu esL ine): escapeC on ti nu esL ine表示是否在該行結(jié)束后使用轉(zhuǎn)義符。rules.add( new Sin gleLi neRule(""", """, stri ng, '');表示該規(guī)則是在兩個

19、字符 “ ”和“"”之間應(yīng)用,也就是本例程序中注釋部分的 規(guī)則。EndOfLineRule沒有終止字符的規(guī)則類En dOfLi neRule對象可以設(shè)置只有初始字符相同后的規(guī)則。rules.add(new EndOfLineRule("",comment);表示帶有“ /標(biāo)記后的都可以應(yīng)用此規(guī)則。WordRule:單詞規(guī)則WordRule對象應(yīng)用于對某些特定的字符設(shè)置的規(guī)則,一般可以用來設(shè)置關(guān)鍵 字的規(guī)則,當(dāng)輸入的字符串為規(guī)則中所指定的一些字符串時,就可以使用該對象。構(gòu)造方法如下:WordRule(IWordDetector detector):其中 IWordD

20、etector 為接口,創(chuàng)建 WordRule對象時要使用實現(xiàn)這個接口的對象。WordRule(IWordDetectordetector, IToken defaultToke n):也可以設(shè)置默認(rèn)的 IToke n代碼格式對象。本程序中對關(guān)鍵字設(shè)置的規(guī)則使用的就是WordRule規(guī)則:WordRule keywordRule = new WordRule( new KeywordDetector();其中KeywordDetector對象是實現(xiàn)了 IWordDetector的對象,333文本掃描該對象即為掃描代碼的規(guī)則對象。使用該類方法的主要目的是,為掃描代碼提供多個規(guī)則,如果當(dāng)前的文本符

21、合設(shè)置的某一個規(guī)則時,就按照這個規(guī)則所設(shè)定的 文字樣式重新顯示文本。所以,對規(guī)則的設(shè)定直接影響著如何對不同的代碼進(jìn)行 著色。javaCodeScanner類名稱JavaCodeSca nner所屬包名稱Javaeditor.java描述繼承了 RuleBasedScanner類,疋義了關(guān)鍵字,類型等信息,為不冋的屬性文本賦予 不同顏色。方法(關(guān)鍵方法)名稱參數(shù)返回值簡單描述|JavaCodeSca nnerJavaColorPro vider providerVoid掃描代碼提供多個規(guī)則,代 碼著色,單詞規(guī)則,注釋方 法程序中用三個數(shù)組的定義了關(guān)鍵字, 類型,常量的詞組,當(dāng)用戶輸入以下詞組時,

22、編輯器會根據(jù)類型給予不同的顏色高亮。private static String fgKeywords= "abstract", "break", "case", "catch", "class", "continue", "default", "do", "else", "extends", "final", "finally" , "for&qu

23、ot;, f , "implements", "import", "instanceof", "interface", "native", "new", "package", "private", "protected", "public", "return", "static", "super", "switch",

24、 "synchronized", "this", "throw", "throws", "transient", "try", "volatile", "while" ;private static String fgTypes= "void", "boolean", "char", "byte", "short", "int&

25、quot;, "long", "float", "double" ;private static String fgConstants= "false", "null", "true" ; JavaCodeScanne根據(jù)規(guī)則(rules)以及與之對應(yīng)的標(biāo)記(token)獲取不同的文本屬 性,對其屬性加以顯示就能實現(xiàn)了語法高亮功能了,如下:IToke n keyword= new Toke n(new TextAttribute(provider.getColor(JavaC

26、olorProvider.KEYWORD);IToke n type= new Toke n( newTextAttribute(provider.getColor(JavaColorProvider.TYPE);IToke n comme nt= new Toke n( newTextAttribute(provider.getColor(JavaColorProvider.SINGLE_LINE_COMMENT);3.4內(nèi)容輔助內(nèi)容功能也是通過 JavaSourceViewerConfiguration來設(shè)置的,該類中的getCo nten tAssista nt()方法為編輯器設(shè)置內(nèi)容輔

27、助,該方法放回一個Con te ntAssista nt類,該類為編輯器提供內(nèi)容輔助的功能。內(nèi)容輔助也是基于 patition ,所以內(nèi)容輔助器assistant需要知道文檔分割的情況,因此要為 assista nt 設(shè)置文檔分割:Conten tAssista nt assista nt=new Con te ntAssista nt();assista nt.setDocume ntPartitio nin g(getC on figuredDocume ntPartitio nin g(sourceV iewer);同時也要為assistant設(shè)置內(nèi)容輔助器:assista nt.setC on te ntAssistProcessor( new JavaCompletio nProcessor(), IDocume nt.DEFAULT_CONTENT_TYPE);assista nt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論