2016-06-08 70 views
0

我使用org.eclipse.ui.editors擴展點創建RCP 3.7編輯器。我需要的是在編輯器啓動期間根據某些條件動態定義圖標路徑。可以使用org.eclipse.core.variables ...定義其他擴展的屬性

(編輯:編輯器實際上是剛剛啓動後恢復,但它不是選爲活動還,所以你只能看到標籤與標題和圖標)

我試圖在課堂上實現IEditorInputgetImageDescriptor()方法工作,似乎沒有被使用。對圖標有一定影響的唯一方法是更改​​編輯器擴展定義中的圖標路徑。

所以我開始與和org.eclipse.core.variables.dynamicVariables發揮在圖標屬性利用(只顯示爲簡單的例子valueVariables):

<extension point="org.eclipse.ui.editors"> 
    <editor name="%Editor_TITLE" 
      extensions="xml" 
      icon="${FOO}" 
      class="org.example.ExampleEditor" 
      id="org.example.ExampleEditor"> 
    </editor> 
</extension> 

<extension point="org.eclipse.core.variables.valueVariables"> 
    <variable name="FOO" 
       initialValue="images/obj16/editor.png"> 
    </variable> 
</extension> 

然而,這也不行。有什麼方法可以使用動態定義的變量值(基於當前的條件),可以改變圖標的​​路徑? ...或者即使是解決方案建議,我也會很好,這將導致在啓動過程中成功更改圖標(如使ImageDescriptor無法啓動)。

回答

1

變量僅在明確支持代碼的地方起作用。如果擴展點的文檔沒有說明它們被支持,那麼它們將不起作用。

你得到使用圖像描述符從編輯器輸入通過做這樣的事情在你的編輯器的init方法如下設置編輯標題圖像:

public void init(IEditorSite site, IEditorInput input) 
throws PartInitException 
{ 
    ... other code 

    ImageDescriptor desc = input.getImageDescriptor(); 

    Image image = desc.createImage(); 

    setTitleImage(image); 

    ... other code 
} 
+0

感謝快速回答格雷格。唯一的問題是我的編輯器在重新啓動後沒有在恢復時選擇它時沒有被初始化(只有在擴展中的路徑中的編輯器標題和圖標在標籤中可見)。 – Kuba

+0

那麼Eclipse真的不希望編輯器像這樣改變它的圖像。我不確定是否可以做任何有關還原的事情。 –

+0

你是對的..在這種情況下很難做到這一點。最後,我在每個編輯器上設置了一個默認睡眠圖標,當它變爲活動狀態時,它會隨着您的代碼更改爲所需的圖標。所以,你已經正確地回答了題目中的問題。謝謝 :) – Kuba

相關問題