2011-02-04 103 views
4

我試圖創建一個Eclipse插件來支持專有的項目文件格式。我的目標是能夠將項目瀏覽器(任何類型的文件)中的文件拖放到到類型I支持的文件中,並將被拖動文件的名稱追加到專有文件的末尾。處理Eclipse Package Explorer中文件的拖放操作

現在,我有一個自定義編輯器,可以以一種可管理的方式從現有文件中解析出一些數據。這意味着我有一個與文件類型相關的編輯器,這樣我的特殊圖標就會顯示在它旁邊。我不知道這是否相關。

我試圖使用擴展點「org.eclipse.ui.dropActions」,但我不知道如何註冊我的DropActionDelegate(實現org.eclipse.ui.part.IDropActionDelegate),使它會當文件被放到我的中的一個項目瀏覽器中時調用。

有人有什麼想法嗎?我甚至在DropActionDelegate的正確軌道上?

回答

2

要實現在正確的軌道上IDropActionDelegate

class DropActionDelegate implements IDropActionDelegate { 

    @Override 
    public boolean run(Object source, Object target) { 
     String transferredData (String) target; // whatever type is needed 
     return true; // if drop successful 
    } 
} 

擴展點org.eclipse.ui.dropActions是提供拖放行爲到你沒有自己定義(如項目資源管理器)的意見的目的。

您註冊drop action extension這樣的:

<extension point="org.eclipse.ui.dropActions"> 
     <action 
      id="my_drop_action" 
      class="com.xyz.DropActionDelegate"> 
     </action> 
</extension> 

不要忘了適當的監聽器連接到你的編輯器在你的插件代碼:

class DragListener implements DragSourceListener { 

@Override 
public void dragStart(DragSourceEvent event) { 
} 

@Override 
public void dragSetData(DragSourceEvent event) { 
    PluginTransferData p; 
    p = new PluginTransferData(
     "my_drop_action", // must be id of registered drop action 
     "some_data" // may be of arbitrary type 
     ); 
    event.data = p; 
} 

@Override 
public void dragFinished(DragSourceEvent event) { 
} 

} 
+1

我早已拋棄了這個特定的項目,但是謝謝你的回答。它看起來很完整,很容易遵循,所以我會給你帶來懷疑的好處! :) – 2012-03-15 21:42:53

相關問題