chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

Eclipse插件開發(fā),接觸過這塊的同學(xué)們都知道,無論是控件也好,向?qū)б晥D也罷。但凡每次開發(fā)個(gè)不起眼的小功能,從零開始堆代碼,都很煩躁,各種composite開始套,各種GridLayout布局開始調(diào)。當(dāng)你的公司要求你開發(fā)大量的插件功能時(shí),可能多數(shù)的時(shí)間你都在堆砌這種煩躁的代碼。

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

每個(gè)Tab頁中我們進(jìn)行了完整的對(duì)象編輯器的封裝,每個(gè)對(duì)象編輯器上,放置了多個(gè)屬性編輯器。

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

可以看下我們可以進(jìn)行多少種不同的控件封裝。

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

StringPropertyEditor

StringPropertyEditor就是Label+Text,例如:

1.首先它一定是先有一個(gè)對(duì)象屬性的基類AbstractPropertyAccessor,基類中的方法:

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

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

其實(shí)這是相當(dāng)長的一個(gè)封裝,抽取出核心事務(wù),我們來說一說。添加控件

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

這個(gè)方法同樣是對(duì)控件的處理,之所以同控件的添加分開,是因?yàn)檫@個(gè)方法中的操作并不是每個(gè)控件必須的,根據(jù)需要繼承開發(fā)。這個(gè)封裝方法中做了兩件事,一個(gè)是binding,也就是處理控件的聯(lián)動(dòng),這里封裝了控件的屬性值綁定聯(lián)動(dòng),以及反向綁定的聯(lián)動(dòng)處理。另一個(gè)就是為當(dāng)前的編輯控件增加焦點(diǎn)監(jiān)聽器。動(dòng)態(tài)更改控制值

這個(gè)方法除了在load的時(shí)候會(huì)調(diào)用,在對(duì)象編輯器使用的過程中,控件的聯(lián)動(dòng)也會(huì)使用到,比如最常見到的,瀏覽資源,點(diǎn)擊瀏覽的button彈出資源選擇框,根據(jù)選中的對(duì)象回填對(duì)象編輯器中的值,就會(huì)用到該方法。在這個(gè)setValue方法中,是通過數(shù)據(jù)改變的封裝接口去實(shí)現(xiàn)的。我們可以看下這個(gè)數(shù)據(jù)改變的容器接口。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 封裝
    +關(guān)注

    關(guān)注

    128

    文章

    9201

    瀏覽量

    148264
  • Eclipse
    +關(guān)注

    關(guān)注

    1

    文章

    120

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    經(jīng)驗(yàn)分享 | eclipse搭建先楫開發(fā)環(huán)境

    最近有小伙伴留言,想在eclipse平臺(tái)下開發(fā)先楫的MCU,但是苦于沒有工程模板,自己折騰了半天又遇到一堆報(bào)錯(cuò),很費(fèi)時(shí)間?;诖诵枨螅P者基于HPM6E00EVK一步一步搭建在eclipse下的
    的頭像 發(fā)表于 12-19 08:32 ?601次閱讀
    經(jīng)驗(yàn)分享 | <b class='flag-5'>eclipse</b>搭建先楫<b class='flag-5'>開發(fā)</b>環(huán)境

    在windows上用Eclipse IDE調(diào)試蜂鳥E203,用的開發(fā)板是哪個(gè)型號(hào)的?

    在windows上用Eclipse IDE調(diào)試蜂鳥E203,用的開發(fā)板是哪個(gè)型號(hào)的,有哪位大佬調(diào)試出來了,求告知
    發(fā)表于 11-07 07:19

    所見即所得——Luban-Lite VS Code插件開發(fā)實(shí)現(xiàn)“命令行自由”

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

    調(diào)試工具:Eclipse調(diào)試工具欄與窗口的深入分析

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

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

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

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

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

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

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

    如何在Eclipse ThreadX RTOS中集成SystemView

    可以基于Systemview記錄ThreadX操作系統(tǒng)事件并執(zhí)行分析。我們基于SEGGER Embedded Studio開發(fā)環(huán)境描述如何在Eclipse ThreadX RTOS中集成SystemView。
    的頭像 發(fā)表于 05-06 17:11 ?1328次閱讀

    SEGGER SystemView支持Eclipse ThreadX

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

    Allegro Skill封裝功能添加禁區(qū)介紹

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

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

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

    PREEvision插件使用場景介紹

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

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

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

    盤點(diǎn)工程師常用的嵌入式開發(fā)工具

    設(shè)備。 STM32CubeIDE ST官方免費(fèi)IDE,集成STM32CubeMX配置工具,適合STM32系列開發(fā)。 Eclipse + 插件(CDT、GNU MCU插件) 開源
    的頭像 發(fā)表于 02-07 10:06 ?4252次閱讀

    徹底移除Calico網(wǎng)絡(luò)插件

    0.前言 參考文檔:https://github.com/containernetworking/cni Pod網(wǎng)絡(luò)插件,為了實(shí)現(xiàn)Pod網(wǎng)絡(luò)而需要的插件、組件。由于Kubernetes通過開放
    的頭像 發(fā)表于 01-23 17:26 ?2020次閱讀
    徹底移除Calico網(wǎng)絡(luò)<b class='flag-5'>插件</b>