您需要定義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);
...
}
謝謝,我添加了一個ui.edit.paste處理器和一個鍵綁定的CTRL-V。我的「粘貼」處理程序類的執行方法得到執行,但我仍然無法確定我可以在哪裏訪問包資源管理器的剪貼板? – user1091534
@ user1091534 Eclipse命令使用系統剪貼板。我更新了我的答案以展示如何使用它。 –
感謝它現在基本上工作。我對.java文件和package explorer中顯示的方法/類型/變量感興趣。 我不確定發生了什麼,但如果我嘗試使用所有方法,類型等來選擇2個java文件,我只在剪貼板中接收其中的一個(第一個選中的)。 是否有某種分離或迭代手段?數據必須在某個地方,並且如果逐個選擇和複製,它就可以工作。 我正在使用JavaElementTransfer來訪問剪貼板內容,這不應該是我的選擇中只有一個可用的原因嗎? – user1091534