2011-07-28 43 views
2

我開發拖Eclipse插件編輯器,我有一個問題:Eclipse插件 - 相關聯的文件擴展名和透視

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

我的意思是,如果我打開文件的擴展名.XXX透視1,它使用的編輯器,但如果我打開角度2相同的文件擴展名.XXX,它使用的編輯器B.

是有可能?從現在起,我使用了發射器,但現在我需要更多的差異化。

謝謝。

+1

您確定這符合用戶界面的視角準則嗎?我不確定這是用戶期望的,我從來沒有看到過一個不同的編輯器是從同一個動作打開的,只是基於當前的觀點。另外,我自己創造了很多觀點。我將如何選擇在每個編輯器中使用哪個編輯器? –

+0

我有2個插件(每個插件一個透視圖)。一個是用gef編輯器進行dessign,另一個是使用dessign進行開發。某些用戶可能同時安裝了兩個插件,他們需要使用兩個編輯器打開相同的文件(取決於他們是處於分配角度還是以開發人員視角) – Rafael

+0

這對於JavaScript編輯器來說是有意義的,這對瀏覽器和服務器端可能不同。投票支持提問。目前沒有真正回答。 –

回答

1

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

+0

非常感謝您的回答。 – Rafael

4

(對不起,這是那些「不這樣做!」無答案之一。:))

正如在評論中提到的,我建議你反對根據當前打開不同的編輯器透視。我認爲這違背了用戶的期望,並且有一些不直觀的後果,例如當我創造我自己的觀點。

例如,我建議去Eclipse的XML /插件清單編輯器的路徑。底部的選項卡允許用戶在不同視圖之間進行選擇,而不依賴於任何透視選項或配置。

Eclipse plugin-in manifest editor

2

雖然我同意,這似乎有點陌生,有默認的編輯器是基於開放的角度看同一個文件的不同,這裏是你如何能做到這一點。

  1. 創建兩個新的內容類型的擴展
  2. 註冊您的第一個編輯器默認編輯器第一個新的內容類型
  3. 註冊你的第二編輯器與第2個新的內容類型
  4. 默認編輯器對每個內容類型,你有一個'內容類型描述'。在這些describer類中,讓它檢查當前透視ID的活動工作臺頁面,如果它匹配期望值,則返回VALID,如果透視ID不匹配,則返回INVALID。
  5. 對於兩個編輯者,您需要將這些編輯者與內容類型相關聯,而不是文件擴展名或文件名
  6. 現在,一次只能匹配一種內容類型,具體取決於打開哪個透視圖。確保其中一種內容類型是「默認」,以便在用戶打開其他視角時始終匹配。

更新#1添加了一些例子

有一些onlinetutorials這一點。但是這裏有一些示例代碼,可以更容易地看出需要做什麼工作。這裏是你如何聲明你的內容類型(你需要其中兩個)

<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> 
+0

您可以請鏈接一些相關的文檔。例如,什麼是「內容類型描述」應該是什麼樣的,什麼是內容類型?我只知道

+0

我添加了幾個鏈接,對於ContentTypeDescriber,擴展點doc爲您提供了需要實現的類,ITextContentDescriber是您想要的類執行。但是,除非文件具有特定的簽名(如XML文檔類型等),否則您可能很難確定您的文件是否是正確的內容。 – gamerson

+0

文件是JavaScript .js文件。問題在於它們可能在Web或服務器端(如Node.js,MongoDB)上下文中。 –

相關問題