首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Eclipse 插件模板定制進階:多區段控制、UI 組件、輸入校驗與目錄結構自動化

     編輯:Java 相關知識

Eclipse PDE 默認插件模板功能有限,無法滿足複雜項目結構需求。本文基於「透視圖/視圖生成器」案例,深度講解四大進階特性:多區段實現與控制、自定義 UI 組件、輸入校驗、Ant 腳本驅動的目錄結構自動化組織。

案例背景

需生成多個 Eclipse 透視圖項目,每個透視圖包含可變數量的視圖,視圖擁有圖像與生成的 Java 源碼。單一模板需支持:
• 透視圖區段(必選)
• 視圖區段(可選,可重複多次)

1. 多區段實現與控制

擴展點聲明 (plugin.xml)

<extension point="org.eclipse.pde.ui.pluginContent">
  <section class="com.example.PerspectiveSection" id="perspectiveSection" name="Perspective" />
  <section class="com.example.ViewSection" id="viewSection" name="View" />
</extension>

區段類核心方法

方法職責
initializeFields根據前序頁面輸入初始化選項
addPages向向導添加頁面
getStringOption / getSectionId獲取選項值/區段 ID
updateModel向插件模型添加必要條目

向導協調

public class SampleWizard extends NewPluginTemplateWizard {
    public ITemplateSection[] createTemplateSections() {
        return new ITemplateSection[] { new PerspectiveSection(), new ViewSection() };
    }
    public boolean performFinish(IProject project, IPluginModelBase model, IProgressMonitor monitor) {
        // 循環執行各區段 execute()
        // 透視圖區段接收視圖名稱列表,生成透視圖類
        // 視圖區段按用戶輸入次數生成視圖類
    }
}

2. 自定義 UI 組件

視圖區段需收集「視圖類名」列表,設計包含:
• 輸入框 View Class Name
• 列表框 View List
• Add/Remove 按鈕

public class ViewOption extends TemplateOption {
    public void createControl(Composite parent, int span) {
        // Label + ListViewer (高度 100px)
        // Button "Add" → 選中文本加入列表
        // Button "Remove" → 移除選中項
    }
}

3. 輸入校驗

規則:同一透視圖內視圖類名不可重複。覆寫 validateOptions(TemplateOption source):

public void validateOptions(TemplateOption source) {
    ViewOption opt = (ViewOption) source;
    String[] items = opt.getListField().getItems();
    String input = opt.getTextField().getText();
    for (String item : items) {
        if (item.equals(input)) {
            getPage(0).setErrorMessage("Class name '" + input + "' already exists in View List.");
            break;
        }
    }
}

錯誤信息顯示在頁面頂部,阻止用戶點擊 Finish。

4. 目錄結構自動化 (Ant + ResourceChangeListener)

Ant 腳本

<project name="template" default="clean" basedir=".">
  <property name="package" value=".\${sourcePath}\${packagePath}"/>
  <target name="create"><mkdir dir="$\{package\}"/></target>
  <target name="move" depends="create">
    <move todir="$\{package\}"><fileset dir="."><include name="*.java"/></fileset></move>
  </target>
  <target name="clean" depends="move">
    <delete><fileset dir="."><include name="CreatePackage.xml"/></fileset></delete>
  </target>
</project>

監聽器觸發

IResourceChangeListener listener = new IResourceChangeListener() {
    public void resourceChanged(IResourceChangeEvent event) {
        if (event.getType() == POST_CHANGE) {
            IResourceDelta delta = event.getDelta().findMember(file.getFullPath());
            if (delta != null) { // Ant 文件生成完畢
                Project antProject = new Project();
                ProjectHelper.getProjectHelper().parse(antProject, new File(file.getLocationURI()));
                antProject.executeTarget(antProject.getDefaultTarget());
                workspace.removeResourceChangeListener(this);
            }
        }
    }
};
workspace.addResourceChangeListener(listener);

使用流程

  1. 導出模板插件到 eclipse/plugins,eclipse -clean 重啟。
  2. New → Project → Plug-in Project,選擇自定義模板。
  3. 填寫透視圖名、視圖列表,Finish。
  4. 手動 Refresh 項目(Ant 異步執行),查看生成的包結構。

總結

通過多區段控制實現功能模塊化、自定義 UI 提升易用性、校驗保障數據質量、Ant 自動化組織目錄,使單一模板能生成結構各異的複雜插件項目,大幅提升開發效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved