国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Eclipse插件開發之簡單控件封裝—那些年冗長的裹腳布

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 17:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Hello,大家好~不知道還有沒有老朋友記得我。N年前那個寫流程自動化測試的程序媛就是我,可能看完那篇文章很多人認為我是自動化測試方向。No,No,No~今天破案了,我真正的主要技術方向——Eclipse插件開發。是的,如此小眾的技術,有點疑惑都滿網找不到答案的技術。思考了很久這塊可以寫點啥,基礎開發我也不多說了,愿意看這篇文章的我也就默認已經是Eclipse插件開發入門了。

Eclipse插件開發,接觸過這塊的同學們都知道,無論是控件也好,向導視圖也罷。但凡每次開發個不起眼的小功能,從零開始堆代碼,都很煩躁,各種composite開始套,各種GridLayout布局開始調。當你的公司要求你開發大量的插件功能時,可能多數的時間你都在堆砌這種煩躁的代碼。

在我司的EOS Platform里封裝了進行了大量的swt封裝,今天我們就來說說其中最基礎的控件類封裝,即屬性編輯器。我們先來看下我們的UI框架。

每個Tab頁中我們進行了完整的對象編輯器的封裝,每個對象編輯器上,放置了多個屬性編輯器。

StringPropertyEditor就是一個屬性編輯器,ObjectEditor為一個對象編輯器,我們可以在一個ObjectEditor上添加多個StringPropertyEditor。StringPropertyEditor基礎方法(不僅限于所展示的方法):setLabel(String label):標簽名稱。setPropertyName(String name):Text中value的數據映射key。doAddValidator(IValidator validator):添加校驗器。這個時候我們是不是可以看出SWT控件開發和屬性編輯器開發的差異了?總結一下:

可以看下我們可以進行多少種不同的控件封裝。

看到類名大家應該差不多都清楚每個屬性編輯器的大體功能。我們就拿一個StringPropertyEditor看看它是如何封裝的吧。

StringPropertyEditor

StringPropertyEditor就是Label+Text,例如:

1.首先它一定是先有一個對象屬性的基類AbstractPropertyAccessor,基類中的方法:

這個基類涉及到三個屬性:propertyName:value的數據映射key。element:默認為當前對象編輯器中的value對象,可給單個屬性編輯器設置單獨的value對象。But!該value對象中必須包含propertyName設置的key值。introspector:這是個什么?這是個數據訪問接口對象Introspector。該接口定義了如何根據一個名稱(propertyName)來訪問一個對象(element)中的值。這樣設計為了提供靈活性,因為通常訪問數據有兩種方式。一種是根據Bean的屬性進行訪問,還有一種是使用Map中的Key進行訪問,所以設計這個接口來訪問對象中的數據,用戶如果需要的話,也可以提供新的實現,如直接訪問對象的Field或者其它。簡單看下該接口的一個實現類所提供的方法。

通過Property的方式來訪問一個Bean對象,在Property 不存在的情況會拋出異常。對于對象的存儲用ognl.Ognl來實現。2.AbstractPropertyAccessor基類只是提供了數據層的封裝,我們還需要一層封裝來提供屬性編輯器的基本實現AbstractPropertyEditor,這個類封裝了所有控件的布局以及可能的操作。

其實這是相當長的一個封裝,抽取出核心事務,我們來說一說。添加控件

這是一個核心的方法,你不需要去調用這個方法,在對象編輯器中的基類里會自動調用來這個方法來繪制所有添加的屬性編輯器。buildEditorControl創建用來編輯的SWT控件,即控件,控件的基本提示信息,控件的GridData,控件的錯誤信息的圖片等等。該方法中通過調用保護方法protected abstract IControlCreator createControlCreator()來獲取真實的子類控件。getLayoutDataBuilder用來封裝控件的布局,同樣,子類可以通過重構來改變自己的布局。

這個方法同樣是對控件的處理,之所以同控件的添加分開,是因為這個方法中的操作并不是每個控件必須的,根據需要繼承開發。這個封裝方法中做了兩件事,一個是binding,也就是處理控件的聯動,這里封裝了控件的屬性值綁定聯動,以及反向綁定的聯動處理。另一個就是為當前的編輯控件增加焦點監聽器。動態更改控制值

這個方法除了在load的時候會調用,在對象編輯器使用的過程中,控件的聯動也會使用到,比如最常見到的,瀏覽資源,點擊瀏覽的button彈出資源選擇框,根據選中的對象回填對象編輯器中的值,就會用到該方法。在這個setValue方法中,是通過數據改變的封裝接口去實現的。我們可以看下這個數據改變的容器接口。

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    128

    文章

    9249

    瀏覽量

    148644
  • Eclipse
    +關注

    關注

    1

    文章

    120

    瀏覽量

    22554
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    經驗分享 | eclipse搭建先楫開發環境

    最近有小伙伴留言,想在eclipse平臺下開發先楫的MCU,但是苦于沒有工程模板,自己折騰了半天又遇到一堆報錯,很費時間。基于此需求,筆者基于HPM6E00EVK一步一步搭建在eclipse下的
    的頭像 發表于 12-19 08:32 ?884次閱讀
    經驗分享 | <b class='flag-5'>eclipse</b>搭建先楫<b class='flag-5'>開發</b>環境

    在windows上用Eclipse IDE調試蜂鳥E203,用的開發板是哪個型號的?

    在windows上用Eclipse IDE調試蜂鳥E203,用的開發板是哪個型號的,有哪位大佬調試出來了,求告知
    發表于 11-07 07:19

    所見即所得——Luban-Lite VS Code插件開發實現“命令行自由”

    NEWS所見即所得!Luban-LiteVSCode插件指南親愛的開發者朋友們,你是否還在為嵌入式開發中頻繁切換命令行而抓狂?配置環境參數如“走迷宮”,編譯燒錄還需切換AiBurn?今天,匠芯創為您
    的頭像 發表于 08-07 15:38 ?1104次閱讀
    所見即所得——Luban-Lite VS Code<b class='flag-5'>插件</b>讓<b class='flag-5'>開發</b>實現“命令行自由”

    調試工具:Eclipse調試工具欄與窗口的深入分析

    摘要 :在嵌入式系統開發領域,高效的調試工具鏈對于項目的成功實施具有決定性意義。本文聚焦于 Eclipse 調試工具欄與窗口的功能特性,深入剖析其在嵌入式開發調試過程中的關鍵作用。以廈門國科安芯
    的頭像 發表于 07-07 11:32 ?881次閱讀
    調試工具:<b class='flag-5'>Eclipse</b>調試工具欄與窗口的深入分析

    【微五科技CF5010RBT60開發板試用體驗】開發環境搭建——項目編譯環境

    1 從廠家獲得SDK 2 Eclipse設置 Eclipse 在SDK中的路徑:CF5010_SDK\\\\3 開發環境\\\\toolchain\\\\eclipse 進入以上路徑
    發表于 06-25 20:10

    用 VSCode 編寫自己的 KiCad 插件(下)

    “ ?很多小伙伴都想自己開發 KiCad 插件,但不知從何入手。本文由華秋電子的另一位 KiCad 開發者波波同學撰寫,分享了如何快速搭建環境,并開發一個
    的頭像 發表于 06-19 11:44 ?2872次閱讀
    用 VSCode 編寫自己的 KiCad <b class='flag-5'>插件</b>(下)

    用VSCode編寫自己的KiCad插件(上)詳細步驟教程

    “ ?很多小伙伴都想自己開發 KiCad 插件,但不知從何入手。本文由華秋電子的另一位 KiCad 開發者波波同學撰寫,分享了如何快速搭建環境,并開發一個
    的頭像 發表于 06-17 11:10 ?3091次閱讀
    用VSCode編寫自己的KiCad<b class='flag-5'>插件</b>(上)詳細步驟教程

    從代碼到部署,一站式躍遷 鴻道Intewell Developer的集成開發革命

    在軟件開發工具演進歷程中,Eclipse等傳統開發工具曾占據重要地位,但由于其復雜插件及依賴鏈等弊端,導致啟動慢、占資源、大文件處理耗時長、UI交互繁瑣等困難不斷暴露。在應對新場景時存
    的頭像 發表于 06-11 14:21 ?530次閱讀
    從代碼到部署,一站式躍遷 鴻道Intewell Developer的集成<b class='flag-5'>開發</b>革命

    如何在Eclipse ThreadX RTOS中集成SystemView

    可以基于Systemview記錄ThreadX操作系統事件并執行分析。我們基于SEGGER Embedded Studio開發環境描述如何在Eclipse ThreadX RTOS中集成SystemView。
    的頭像 發表于 05-06 17:11 ?1453次閱讀

    SEGGER SystemView支持Eclipse ThreadX

    SEGGER的實時軟件分析工具SystemView v3.60c版本現已支持Eclipse ThreadX(Azure RTOS),用戶可以基于Systemview記錄ThreadX操作系統事件并執行分析。
    的頭像 發表于 04-09 10:43 ?1097次閱讀
    SEGGER SystemView支持<b class='flag-5'>Eclipse</b> ThreadX

    Allegro Skill封裝功能添加禁區介紹

    定位孔用于固定元件的位置,當元件受到外力作用時,定位孔周圍的PCB板可能會發生變形或彎曲,進而導致附近走線斷裂或元件焊接點開裂。因此,為確保電路板的可靠性,定位孔周圍需要設置單邊外擴0.5mm的禁區。那么,在封裝編輯中,如何為定位孔添加禁
    的頭像 發表于 04-07 17:09 ?1592次閱讀
    Allegro Skill<b class='flag-5'>封裝</b>功能<b class='flag-5'>之</b>添加禁<b class='flag-5'>布</b>區介紹

    [迅為]Linux開發小技巧:Remote - SSH插件

    [迅為]Linux開發小技巧:Remote - SSH插件
    的頭像 發表于 04-01 15:46 ?1175次閱讀
    [迅為]Linux<b class='flag-5'>開發</b>小技巧:Remote - SSH<b class='flag-5'>插件</b>

    S32DS for ARM版本3.6.0 IAR插件安裝無法安裝怎么解決?

    我正在嘗試為 S32DS 安裝 IAR 插件,但失敗。當我到達以下點時,它失敗了:(完成) 錯誤信息: 收集要安裝的項目時出錯 會話上下文為:(profile=DefaultProfile
    發表于 03-27 08:30

    PREEvision插件使用場景介紹

    PREEvision插件中心(Add-in House)是Vector中國PREEvision團隊針對中國用戶開發插件網站。用戶可以在這里找到各種場景的擴展插件,包括以太網與SOA設
    的頭像 發表于 03-14 13:50 ?1248次閱讀
    PREEvision<b class='flag-5'>插件</b>使用場景介紹

    請問TOUCHGFX中別人封裝好的控件容器可以直接使用嗎?

    TOUCHGFX中別人封裝好的控件容器可以直接使用嗎?
    發表于 03-13 08:15