2011-12-10 52 views
0

我想在我自己的視圖上執行一個粘貼操作來添加一些類文件,這些文件已被選中並複製到剪貼板中使用Ctrl + C在Eclipse包管理器中。Eclipse Package Explorer CTRL-C並使用CTRL-V放置在自己的視圖中?

我的(很可能是幼稚)嘗試是下降偵聽器添加到我的看法,如果我按按Ctrl +V重點是我的觀點很遺憾沒有任何反應。 我對圖形用戶界面,SWT和Eclipse相當新穎,也許我缺少一些非常重要的東西...

我該如何訪問包探索者剪貼板?或者我怎樣才能讓剪貼板中的東西「掉到」我的視野?

回答

0

您需要定義Handler擴展命令org.eclipse.ui.edit.paste(看看Platform Command Framework更多信息):

<handler 
     class="com.example.PasteHandler" 
     commandId="org.eclipse.ui.edit.paste"> 
    <activeWhen> 
     <with variable="activePartId"> 
      <equals value="com.example.MyView"></equals> 
     </with> 
    </activeWhen> 
    </handler> 

您可以訪問使用Clipboard類系統剪貼板。剪貼板的內容可能會有不同的類型,因此您需要檢查在給定時間是否支持您期望的類型。 ByteArrayTransfer的子類用於將剪貼板內容轉換爲合適的Java對象。在你的情況,我想最好的選擇是使用ResourceTransfer和使用JavaCore創建Java元素:

Clipboard cb = new Clipboard(Display.getCurrent()); 
ResourceTransfer ft = ResourceTransfer.getInstance(); 
IResource[] classFiles = (IResource[]) cb.getContents(ft); 
if (classFiles != null) 
    for (IResource file : classFiles) { 
     IJavaElement je = JavaCore.create(file); 
     ... 
    } 
+0

謝謝,我添加了一個ui.edit.paste處理器和一個鍵綁定的CTRL-V。我的「粘貼」處理程序類的執行方法得到執行,但我仍然無法確定我可以在哪裏訪問包資源管理器的剪貼板? – user1091534

+0

@ user1091534 Eclipse命令使用系統剪貼板。我更新了我的答案以展示如何使用它。 –

+0

感謝它現在基本上工作。我對.java文件和package explorer中顯示的方法/類型/變量感興趣。 我不確定發生了什麼,但如果我嘗試使用所有方法,類型等來選擇2個java文件,我只在剪貼板中接收其中的一個(第一個選中的)。 是否有某種分離或迭代手段?數據必須在某個地方,並且如果逐個選擇和複製,它就可以工作。 我正在使用JavaElementTransfer來訪問剪貼板內容,這不應該是我的選擇中只有一個可用的原因嗎? – user1091534

相關問題