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

使用 Topcased 擴展 EMF 模型編輯視圖:從屬性分組到友好界面

     編輯:Java 相關知識

EMF 默認編輯器痛點與 Topcased 解決方案

Eclipse Modeling Framework (EMF) 能從 Ecore 模型生成代碼及基礎編輯器,但默認屬性視圖扁平羅列所有屬性,缺乏分組、分頁、條件顯示等企業級建模能力。Topcased(Airbus 開源)基於 EMF/GMF,提供 Tabbed Properties View 實現屬性視圖的靈活定製。

環境準備

  • Eclipse 3.4+
  • EMF 2.0+
  • Topcased 2.0+ (官網)

完整實施流程:以圖書管理系統為例

1. 建立 EMF 項目與 Ecore 模型

創建 Empty EMF Project,定義 Ecore 模型:BookLib(圖書館)→ Category(分類)→ Book(圖書)、User(用戶)。生成 GenModel 並 Generate All,產生 4 個插件項目。

2. 創建 PropertiesConfigurator 描述文件

  1. 右鍵 Ecore 所在目錄 → New → Other → Topcased → PropertiesConfigurator Model。
  2. 選擇 Tabbed View 作為根節點類型。
  3. 編輯器中 Import GenModel,關聯生成的 .genmodel 文件。
  4. 4. 配置 Tabbed View 的 Gen Model 屬性指向導入的 GenModel。

3. 設計屬性視圖結構:Category → Tab → Section

Tabbed View (根)
└── Category (類別,如「基本信息」「業務屬性」)
    └── Tab (標籤頁,如「圖書詳情」「庫存管理」)
        ├── Single Feature Section (單屬性編輯)
        ├── Advanced Section (多屬性組合編輯)
        └── Multiple Feature Section (尚未完全支援)

Section 關鍵屬性:Feature 指向 Ecore 模型中的具體屬性(如 Book 的 title、author、isbn)。

4. 生成屬性視圖代碼

右鍵 .propertiesconfigurator 文件 → Topcased → Generation → Properties View。生成獨立插件項目(如 demo.bookmanage.propertysheetpage)。

5. 集成到 EMF 編輯器

修改生成的 ModelEditor 類:

// 1. 替換屬性頁實現
public IPropertySheetPage getPropertySheetPage() {
    if (propertySheetPage == null) {
        propertySheetPage = new ModelPropertySheetPage(this);
    }
    return propertySheetPage;
}

// 2. 實現 ITabbbedPropertySheetPageContributor 接口
public String getContributorId() {
    return "demo.bookmanage.propertysheetpage.contributorID"; // 對應 plugin.xml 中擴展點 ID
}

效果對比

  • 生成前:單一扁平屬性表,所有屬性混雜,無視覺分組。
  • 生成後:分頁簽式界面,屬性按業務邏輯分組,支援複雜編輯器(下拉、日期選擇器等),界面專業友好。

適用場景與價值

  • 大型項目需求分析、設計、編碼角色協作,屬性分組天然支援階段性填寫。
  • 避免 GMF 圖形化編輯器的高實現成本,專注屬性視圖增強。
  • Topcased 還提供圖形化建模、代碼生成等擴展能力,可深入探索。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved