簡體   English   中英

Eclipse插件-與文件擴展名和透視圖相關的編輯器

[英]Eclipse plugin - Editor associated to file extension and perspective

我正在開發兩個日食插件,我有下一個問題:

我有兩個角度來管理相同的文件。 我想在文件擴展名-編輯器-透視圖之間建立關聯。

我的意思是,如果我在透視圖1中打開文件擴展名.XXX,它將使用編輯器A;但是,如果我在透視圖2中打開相同的文件擴展名.XXX,它將使用編輯器B。

可能嗎? 從現在開始,我使用了啟動器,但是現在我需要更多的區別。

謝謝。

(對不起,這是“不要這樣做!”的非回答之一。:))

如評論中所述,我建議不要根據當前角度打開其他編輯器。 我認為這違背了用戶的期望,並且會帶來一些不直觀的后果,例如,當我創建自己的觀點時。

例如,我建議您使用Eclipse的XML / Plug-in清單編輯器。 底部的選項卡允許用戶在不同的視圖之間進行選擇,而與任何透視圖選擇或配置無關。

Eclipse插件清單編輯器

雖然我同意,基於打開的角度對同一文件使用默認編輯器有所不同,這似乎有些奇怪,但是您可以按照以下方法進行操作。

  1. 創建兩個新的內容類型擴展
  2. 將您的第一個編輯器注冊為第一個新內容類型的默認編輯器
  3. 將您的第二編輯器注冊為第二新內容類型的默認編輯器
  4. 對於每種內容類型,您都有一個“內容類型描述程序”。 在這些描述程序類中,讓其檢查活動工作台頁面上的當前透視圖ID,如果它與期望值匹配,則為VALID,如果透視圖ID不匹配,則返回INVALID。
  5. 對於這兩個編輯器,您都需要將這些編輯器與內容類型(而不是文件擴展名或文件名)相關聯
  6. 現在,根據打開的透視圖,一次只能匹配一種內容類型。 確保其中一種內容類型是“默認”,以便在用戶打開其他透視圖時始終匹配。

更新#1添加了一些示例

有一些在線 教程 但是這里有一些示例代碼,使您可以更輕松地了解所需的工作。 這是您聲明內容類型的方式(您將需要兩個)

<plugin>
   <extension
         point="org.eclipse.core.contenttype.contentTypes">
      <content-type
            base-type="org.eclipse.core.runtime.xml"
            describer="com.liferay.ide.core.FirstContentTypeDescriber"
            id="com.liferay.ide.core.contentType1"
            name="First Content Type"
            priority="normal">
      </content-type>
   </extension>
</plugin>

然后,在Describer類中,您將執行匹配邏輯。 然后,在編輯器擴展點中,您引用內容類型,而不是像這樣的文件名或擴展名:

   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="com.liferay.ide.ui.FirstEditor"
            default="false"
            id="com.liferay.ide.ui.editor1"
            name="My First Editor">
         <contentTypeBinding
               contentTypeId="com.liferay.ide.core.firstContentType">
         </contentTypeBinding>
      </editor>
   </extension>

我建議重新考慮您的方法,並從WindowBuilder中獲取一些提示:讓一個與文件類型相關聯的編輯器打開一個選項卡式編輯器; 如果添加了第二個插件,請在同一編輯器上創建一個單獨的選項卡。

其他選項可能是通過編程方式更改文件類型與Java代碼的關聯,如

Eclipse RCP:以編程方式將文件類型與編輯器關聯?

然后只有一個問題,如何在透視圖更改事件上執行該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM