2009-06-17 28 views
1

的代碼是:在視圖和編輯器中定義DropTarget是否有區別?

DropTarget target = new DropTarget(sqlViewer.getTextWidget(), 
    DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK); 
    Transfer[] types = new Transfer[] {TreeLeafListTransfer.getInstance(), 
    TextTransfer.getInstance(), FileTransfer.getInstance()}; 
    target.setTransfer(types); 
    target.addDropListener(new DropTreeLeafAdapter(sqlViewer)); 

而且它正常工作的看法,但在編輯器中失敗。有什麼不同?
UPD:Whtat是最奇怪 - 如果我有一個try/catch塊圍繞着它,它仍然失敗,沒有例外。
編輯:問題比DnD不能正常工作更大。整個編輯器無法實例化,因爲這個塊。只是一個空的窗口出現。

+0

所示的代碼是「守望者」一部分廢墟編輯 – Imaskar 2009-06-19 11:07:40

回答

0

它對於視圖正常工作,但在編輯器中失敗。有什麼不同?

的區別應該是在transfert type

總括來說,傳輸類型允許拖動源指定他們允許拖出自己的小部件的什麼樣的對象,他們允許降目標來指定他們願意接受什麼類型的對象。
對於每個傳輸類型,存在的org.eclipse.swt.dnd.Transfer一個子類。這些子類實現應用程序之間的對象和字節,允許拖放傳輸之間轉換的封送處理行爲。

可能是您正在使用的Transfer類型的列表與目標(編輯器)不完全兼容?有關詳情,請參閱this thread

要考慮的另一項是TransferDropTargetListener的正確設置(如在this thread中)。

因爲我還沒有完全測試日食免打擾,我不能給你更多細節在這個題目,但希望這會給你的東西開始自己的分析。

+0

看到編輯。該代碼失敗整個編輯器。 – Imaskar 2009-06-18 13:18:42

相關問題