国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Eclipse插件開發之定制向導

2019-11-18 15:37:19
字體:
來源:轉載
供稿:網友

  以前我有一個微型的便攜式電子地址薄。我一直認為它很不錯,直到有一天它停止運行了。銷售該產品的人員無法找回我的聯系地址名冊,卻提議更換一臺。這時候我才知道數據的重要性。這個閃亮的小發明與存儲在它里面的數據相比根本就不值一提。

  在這個序列文章的第一部分中,我介紹了Eclipse插件的開發環境,并開發了一個簡單的插件(見天極網《Eclipse插件開發快速入門》)。在第二部分,我添加了工具條按鈕、菜單項和對話框(見天極網《Eclipse插件開發之添加簡單的GUI元素》)。它實際上沒有實現任何具體功能。它簡單地用某種字體顯示了示例文本內容。現在我們要讓它能夠治理實際的數據。我們將修改這個插件,讓它實現我們所需要的功能。本文討論的是編輯器文檔,并演示了如何定制一個向導。

  Invokatron的歷史

  首先,我們具體說明一下Invokatron本身。在前面的文章中我們討論過,Invokatron是一個生成java代碼的的圖形工具。你可以簡單地通過拖放操作建立類的方法。拖入的方法被編輯的方法(也就是插件)"調用"。我們將讓數據來驅動應用程序的設計。在后面一篇文章中,我們將開發這個GUI。現在我們需要做的是,找到插件將輸入和存儲的重要數據。它通常被稱為應用程序的模型(model)。在設計這個系統的時候,我們需要考慮下面一些內容:

  · 哪些細節數據需要保存?

  · 這些數據在內存中用什么來表現?POJO、JavaBean還是EJB?

  · 這些數據的存儲格式是怎樣的?數據庫表、xml文件、屬性文件還是串行二進制文件?

  · 輸入數據的方式有哪幾種?用"新建文件"向導還是在文檔屬性頁面上使用彈出對話框、用編輯器繪制、在文本編輯器中輸入的其它向導?

  在我們繼續工作之前必須回答這些問題。不可能有適合所有項目的答案;它完全依靠于你的需求。在我們的例子中,我做出了一些隨意的、可能有問題的決定,如下所示:

  · 一個Java類,它包含類名、程序包、超類(superclass)和實現接口。我們以它為基礎,在后面的文章中添加更多數據。

  · 我將把數據表現為擴展
  · 我將使用的格式是屬性文件,很輕易使用Properties類來分析它。

  · 在"新建文件"向導中,我將先尋找數據,接著讓用戶改變屬性窗口或文本編輯器中的數據。這個步驟將在下一篇文章中完成。

  Document(文檔)類

  下一步是編寫文檔類。建立一個新程序包(invokatron.model)和一個新類(InvokatronDocument)。下面是我們的文檔類的開頭:

public class InvokatronDocument
extends Properties
{
public static final String PACKAGE = "package";
public static final String SUPERCLASS = "superclass";
public static final String INTERFACES = "interfaces";
}
  使用Properties類可以更簡單地分析和保存我們的數據。Getter和 setter不是必須的,但是假如你想要,也可以加上它們。這個類還沒有完成;我們將添加一個接口,在后面的部分中Eclipse需要使用它。

  有了這個類之后,我們要獲取一個屬性就非常簡單了:

String package =document.getProperty(InvokatronDocument.PACKAGE);
  定制向導

  請看一看前面的文章中所出現的向導。你應該記得,我們可以通過點擊(我們自己添加的)工具條按鈕或者菜單項來訪問它。圖1是它的界面:

NO Name
圖1:舊的向導

  它只有一個頁面,右上角沒有圖片。我們想輸入更多的信息,并提供一個很好的圖片。換句話說,我們希望定制這個向導。

  我們來分析一下這個向導。請打開InvokatronWizard.java文件。請注重這個類是如何擴展Wizard并實現INewWizard接口的。你應該理解它里面的很多方法。為了定制向導,我們簡單地調用或重載其中的某些方法。下面是一些重要的方法:

  生命周期方法

  我們應該重載這些方法,把初始化和析構(destrUCtion)代碼插入向導中:

  · Constructor(構造函數):向導實例化的時候、在Eclipse給它傳遞信息之前調用。向導的一般初始化實現。通常你希望調用"美化方法"(后面有描述)并設置對話框的默認值。

  · init(IWorkbench workbench, IStructuredSelection editorSelection): Eclipse調用它為向導提供工作臺的信息。請重載它,保存IWorkbench和對象的句柄供以后使用。假如它是一個編輯器向導而不是新向導,我們最好把當前的編輯器選項作為第二個參數。

  · dispose():Eclipse調用它執行清理工作。重載它來清除向導使用的資源。

  · finalize():清除代碼,可能使用dispose()代替。

  美化方法

  這些方法都是用于裝飾向導窗體的。

  · setWindowTitle(String title):設置窗體的標題行字符串。

  · setDefaultPageImageDescriptor(ImageDescriptor image):用于提供顯示在向導的所有頁面右上方的圖片。

  · setTitleBarColor(RGB color):指定標題欄用什么顏色。

  按鈕方法

  這些方法控制著向導按鈕的實用性和行為。

  · boolean canFinish():重載它用于指定Finish(完成)按鈕是否激活(根據向導的狀態)。

  · boolean performFinish():重載它來實現向導的根本的業務邏輯。假如向導沒有完成(錯誤的條件),就返回false。

  · boolean performCancel():重載它,在用戶點擊Cancel(取消)按鈕的時候進行清除操作。假如向導不能終止,則返回false。

  · boolean isHelpAvailable():重載它用于指定Help(幫助)按鈕是否可視。

  · boolean needsPreviousAndNextButtons():重載它來指定Previous(前一步)和Next(后一步)按鈕是否可視。

  · boolean needsProgressMonitor():重載它來指定進度條部件是否可視。當點擊Finish按鈕調用performFinish()方法的時候,它就會出現。

  頁面方法

  這些方法控制著頁面的外觀。

  · addPages():向導顯示的時候調用。重載它給向導插入新頁面。

  · createPageControls(Composite pageContainer):Eclipse調用它來實例化所有的向導頁面(用前面的addPages()方法已經添加的頁面)。重載它給向導添加持續可視的窗體小部件(除頁面之外的部件)。

  · IWizardPage getStartingPage():重載它來檢測哪個頁面是向導的第一個頁面。

  · IWizardPage getNextPage(IWizardPage nextPage):在默認情況下,點擊Next按鈕將進入addPages()所提供的數組中的下一個頁面。你可能希望根據用戶選擇進入不同的頁面。重載它來計算后一個頁面。

  · IWizardPage getPreviousPage(IWizardPage previousPage):與getNextPage()類似,用于計算前一個頁面。

  · int getPageCount():檢索addPages()添加的頁面的數量。在典型情況下,你不必重載它,除非你希望顯示頁面的數量和形式。

  其它有用的方法

  這些都是有用的輔助方法:

  · setDialogSettings(IDialogSettings settings):你可以載入對話框的狀態,并通過在init()中調用這個方法來設置這些值。在典型情況下,這些設置可以作為向導字段的默認值。請查看DialogSettings類了解更具體的信息。

  · IDialogSettings getDialogSettings():當我們需要數據的時候,就調用這個方法來檢索它。在performFinish()的對話框的末尾,你再次可以把數據保存到文件中。

  · IWizardContainer getContainer():對于檢索Shell、運行的后臺線程、刷新窗口等非常有用。 向導頁面方法

  你已經看到了,向導是由一個或多個頁面組成的。這些頁面擴展了WizardPage類,并實現了IWizardPage接口。為了定制單獨的頁面,你必須了解很多方法。下面是一些重要的方法:

  · Constructor:用于實例化頁面。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永城市| 连州市| 镇原县| 石河子市| 湾仔区| 甘德县| 神池县| 页游| 上蔡县| 阿拉尔市| 宣威市| 乡宁县| 旌德县| 西充县| 台江县| 云林县| 仙桃市| 迭部县| 临潭县| 平罗县| 赣州市| 正阳县| 高雄县| 嘉善县| 突泉县| 顺平县| 惠水县| 沅陵县| 金乡县| 莫力| 麟游县| 衢州市| 海南省| 颍上县| 鄂温| 阿合奇县| 双辽市| 西吉县| 进贤县| 连山| 朝阳市|