1. 程式人生 > >第四天:該實現個Editor玩玩了

第四天:該實現個Editor玩玩了

作者:樑祺 ([email protected])

來自:http://www.benisoft.net/day4/index.html

今天來看一下Editor,正如前面提到的,使用者的大部分時間都會花在Editor上,Editor是使用者主要完成任務的地方, 我們仍然使用Eclipse提供的模版,在建立Plug-in專案時,選擇“Plug-in with an editor”模版。

這個模版實現了一個XML編輯器,我們使用嚮導提供的預設值,點選“Finish”。

啟動Eclipse,先建立一個專案,選擇“File/New/Project”,然後選擇“General/Project”, Project名為abc,點選”Finish“。然後選擇“File/New/File”,在對話方塊裡選擇專案abc,檔名為abc.xml, 點選“Finish”。檔案建立後,Eclipse有可能使用文字編輯器開啟它,讓我們先關閉abc.xml, 然後在Package Explorer View裡,選中abc.xml,在右鍵選單中選擇“Open With/Sample XML Editor”, 這下,我們的XML Editor就工作了,我們嘗試輸入一段XML文字,屬性值高亮為綠色,XML Editor工作正常。

我們來看一下程式碼。開啟plugin.xml,找到Plug-in Editor的Extensions子頁, 可以看到這個例子擴充套件了擴充套件點”org.eclipse.ui.editors“,定義了一個editor。

  • id:ID為“eclipse.tutorial.day4.editors.XMLEditor”
  • name:名字為“Sample XML Editor”
  • icon:圖示為“sample.gif”
  • extension:關聯的副檔名為“xml”,也就是說,當Eclipse要開啟一個副檔名為“xml”的檔案時, 它會尋找相關的Editor來開啟它,但是要注意,Eclipse允許多個Editor關聯到同一個副檔名,這個時候, Eclipse會選取一個作為預設Editor,如果使用者指定過Editor,就象我們在前面所做的,選中檔案, 並在右鍵選單中選擇“Open With/Sample XML Editor”,Eclipse就會記住這個Editor作為預設Editor。 Eclipse也支援一個Editor關聯多個副檔名,只要在這裡用逗號分割它們就可以了。
  • class:Editor的Java實現類。
  • contributorClass:Editor Contributor的Java實現類。 Editor Contributor負責管理Editor的選單欄,工具欄,和狀態列,比如往選單欄和工具欄上新增Action。

點選class,開啟XMLEditor類。這個非常的簡單,繼承自TextEditor。 TextEditor是Eclipse提供的文字編輯器的Java實現類,它提供基本的文字編輯功能,包括剪下和貼上。 既然XML檔案也是文字檔案,所以XMLEditor繼承TextEditor也很自然。 這個例子的大部分程式碼都是和對XML文字的著色有關,這裡我們就不花篇幅介紹了。

public class XMLEditor extends TextEditor {

    private ColorManager colorManager;

    public XMLEditor() {
        super();
        colorManager = new ColorManager();
        setSourceViewerConfiguration(new XMLConfiguration(colorManager));
        setDocumentProvider(new XMLDocumentProvider());
    }
    public void dispose() {
        colorManager.dispose();
        super.dispose();
    }
}

如果去看一下TextEditor的父類AbstractDecoratedTextEditor,我們就能夠發現createPartControl()。 和View一樣,Editor的UI控制元件的佈局也是在這個方法裡完成的。

如果希望從一個現有的Plug-in專案中新建Editor,在Plug-in Editor的Extensions頁,點選”Add“按鈕, 在對話方塊中輸入”editors“,找到擴充套件點”org.eclipse.ui.editors“,並選中, 我們就會看到模板Editor和Multi-page Editor。同樣,一般都會使用Editor來建立Editor的骨架, 刪除掉不需要的程式碼。Multi-page Editor我們後面會介紹到,這裡先略過。

到這裡,我們瞭解了怎麼建立一個Editor,建立Editor和View有一些類似,但是我們只演示了基本的步驟, 沒有談到如何為Editor和View提供輸入,這需要結合更加接近實際的例子來說明。

相關推薦

實現Editor玩玩

作者:樑祺 ([email protected]) 來自:http://www.benisoft.net/day4/index.html 今天來看一下Editor,正如前面提到的,使用者的大部分時間都會花在Editor上,Editor是使用者主要完成任務的地方, 我們仍然使用Eclipse提供

「七自制PHP框架」PHP實現的設計模式

爭論 框架 啟動 興趣 註意 end php imp close 往期回顧:「七天自制PHP框架」第二天:模型與數據庫,點擊此處 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,歡迎關註:編程老頭 為什麽要使用設計模式?

python判斷語句和循環語句

python一、判斷語句<1>開發中的判斷場景密碼判斷重要日期判斷 if 今天是周六或者周日: 約妹子 if 今天是情人節: 買玫瑰 if 今天發工資: 先還信用卡的錢 if 有剩余:

HTTP&Tomcat

tomcat一、HTTP協議1、HTTP協議的概述<1>什麽是HTTP協議HTTP協議:超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。用於定義WEB瀏覽器與WEB服務器之間交換數據的過程<2>HTTP協議的作用及

docker制作docker鏡像——手工制作docker鏡像

docker制作Docker鏡像的方式一般有兩種:手工制作和通過Dockerfile制作,此次講解的是手工制作docker鏡像。一、手動制作鏡像:用centos鏡像啟動容器:[root@VM_0_12_centos ~]# docker run -it centos bash 2. 在容器中安裝網絡管理工

102CSS3實現立方體旋轉

right https mes abs absolute 變換 class type auto CSS3實現立方體旋轉 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 &l

161CSS3實現兼容性的漸變背景(gradient)效果

end 創建 lte tco study tro 背景漸變 開始 col CSS實現兼容性的漸變背景(gradient)效果 一、有點俗態的開場白 在對CSS3支持日趨完善的今天,實現兼容性的漸變背景效果已經完全成為可能,本文就將展示如何實現兼容性的漸變背景效果。在眾多的

Redis架構Redis Cluster的理論+實踐總結

Redis集群 RedisCluster 實踐總結 1.怎麽才能夠突破單機瓶頸,讓redis支撐海量數據支撐N個redis master node,每個master node都可以掛載多個slave node多master + 讀寫分離 + 高可用 對比replication+sentinal:r

HibernateHibernate的查詢方式、抓取策略

 目錄 1Hibernate的查詢的方式 1.1Hibernate的查詢方式:OID查詢 1.1.1使用get方法 1.1.2使用load方法 1.2Hibernate的查詢方式:物件導航檢索 1.3Hibernate的查詢方式:HQL檢索 1.3.1初始化一些

Struts2Struts2的攔截器和標籤庫

目錄 1.Struts2的攔截器(******) 1.1什麼是攔截器 1.2Struts2的執行流程 1.3攔截器入門: 1.3.1編寫攔截器類 1.3.2對攔截器進行配置 2.Struts2的標籤庫 2.1通用標籤庫 2.2判斷標籤 2.3遍歷標籤

【譯】你不知道的Chrome除錯工具技巧 the Elements panel(元素面板)

特別宣告 本文是作者 Tomek Sułkowski 釋出在 medium 上的一個系列。據作者透露一共有24篇,一直更新到12月24日 版權歸原作者所有。 前兩篇的翻譯連結我已經給到了作者本人,雖然他不理解中文,但是他還是很開心哈哈,截圖在最後 譯者在翻譯前已經和作者溝通得到了翻譯整個系列的許可。 為

SpringSSH框架整合、HibernateTemplate的使用、OpenSessionInViewFilter的使用

目錄 1.SSH整合方式一:無障礙整合 1.1SSH框架整合開發回顧 1.2SSH整合 1.2.1第一步:建立web專案,引入jar包 1.2.2第二步:引入配置檔案 1.2.3第三步:建立包結構 1.2.4第四步:建立相關類 1.2.5第五步:引入相關的頁面

【跟我學oracle18c】Cloning a Remote PDB or Non-CDB

7.5.1 Cloning a Remote PDB Using No Clauses: Example The following statement clones the pdb2 PDB from the pdb1 remote PDB: CREATE PLUGGA

php面試就這樣倉促的結束

今天是我本次離職之後的最後一個面試日,因為之前已經拿到offer,所以沒有再約別的面試,把之前已經約好的面試進行完就準備入職。 今天一共有兩家面試,上午是一個很偏的公司,坐地鐵然後公交做了16站,去了之後開始做類似的潛能測試題,一共18頁,36道,做了將近一個小時,在太陽底

繪製第一三角形

在OpenGL中,任何事物都在你3D空間中,而螢幕和視窗確實2D畫素陣列,這導致OpenGL的大部分工作都是關於把3D座標轉變為適應你螢幕的2D畫素。3D座標轉為2D座標的處理過程是由OpenGL的圖形渲染管線管理的。 圖形渲染管線可以被劃分為兩個主要部分: 第一部分把3

建立型模式--原型模式

零、原型模式 什麼是原型模式: 原型模式無非就是克隆一個物件,其最簡單的形式就是一個 clone() 函式,接受一個物件作為輸入引數,返回輸入物件的一個副本。在 Python 中可以使用 copy

JAVA中的迴圈語句詳解,和常用例子

1:switch語句(掌握)(1)格式:switch(表示式) {case 值1:語句體1;break;case 值2:語句體2;break;...default:語句體n+1;break;}格式解釋說明:switch:說明這是switch語句。表示式:可以是byte,short,int,charJDK5以後

Python計算生態及 turtle(海龜)的使用

如有錯誤,請聯絡博主進行更改。 Python計算生態 Python計算生態 = 標準庫 + 第三方庫 標準庫:隨直譯器直接安裝到作業系統中的操作模組 第三方庫:需要經過安裝才能使用的功能模組 庫-Library    包-Package    模組-Module

人工智慧python 實現 十章,NLP A Bag Of Words

使用用詞袋(a bag of words)模型提取頻繁項文字分析的主要目標之一是將文字轉化為數值形式。以便使用機器進行學習。我們考慮下,數以百萬計的單詞文件,為了去分析這些文件,我們需要提取文字 並且將其轉化為數值符號。機器學習演算法需要處理數值的資料,以便他們能夠分析資料並

手機影音,頂部標題欄的布局實現與本地視頻的搜索

頂部標題欄的布局實現與本地視頻的搜索前面講了下面的菜單布局與中間的fragmentLayout的布局與實現,今天就寫了頂部title的布局以及去搜索本地sd卡裏的視頻。 一、頂部布局實現 效果圖如下: 1、分析下: a、這個頂部布局是個LinearLayout布局 b、左