mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-05 07:15:39 +02:00
[192704] work around drag&drop issues from Project Explorer
This commit is contained in:
parent
110355277d
commit
6be94a3637
1 changed files with 48 additions and 5 deletions
|
@ -13,11 +13,13 @@
|
|||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
|
||||
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
|
||||
* David McKnight (IBM) - [192704] work around drag&drop issues from Project Explorer
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.ui.view;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
@ -27,6 +29,8 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule;
|
|||
import org.eclipse.core.runtime.jobs.MultiRule;
|
||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||
import org.eclipse.jface.operation.IRunnableContext;
|
||||
import org.eclipse.jface.util.LocalSelectionTransfer;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.jface.viewers.ViewerDropAdapter;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
|
@ -50,7 +54,9 @@ import org.eclipse.ui.part.PluginTransferData;
|
|||
* Drop adapter for dropping objects in the Systems views.
|
||||
*
|
||||
*/
|
||||
public class SystemViewDataDropAdapter extends ViewerDropAdapter
|
||||
public class SystemViewDataDropAdapter
|
||||
//extends PluginDropAdapter
|
||||
extends ViewerDropAdapter
|
||||
{
|
||||
protected Shell shell;
|
||||
protected long hoverStart = 0;
|
||||
|
@ -95,6 +101,27 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
// DKM - hack to see if project explorer resources can be dropped in RSE
|
||||
private boolean isLocalSelectionResources(PluginTransferData transferData)
|
||||
{
|
||||
byte[] result = transferData.getData();
|
||||
|
||||
// get the sources
|
||||
String[] tokens = (new String(result)).split("\\"+SystemViewDataDropAdapter.RESOURCE_SEPARATOR); //$NON-NLS-1$
|
||||
|
||||
ArrayList srcObjects = new ArrayList();
|
||||
for (int i = 0;i < tokens.length; i++)
|
||||
{
|
||||
String srcStr = tokens[i];
|
||||
if (srcStr.equals("org.eclipse.ui.navigator.ProjectExplorer"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private ArrayList getRSESourceObjects(PluginTransferData transferData)
|
||||
{
|
||||
byte[] result = transferData.getData();
|
||||
|
@ -109,9 +136,11 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
|
|||
{
|
||||
String srcStr = tokens[i];
|
||||
|
||||
{
|
||||
Object srcObject = getObjectFor(srcStr);
|
||||
srcObjects.add(srcObject);
|
||||
}
|
||||
}
|
||||
return srcObjects;
|
||||
}
|
||||
|
||||
|
@ -124,9 +153,22 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
|
|||
if (data instanceof PluginTransferData)
|
||||
{
|
||||
PluginTransferData transferData = (PluginTransferData) data;
|
||||
if (isLocalSelectionResources(transferData))
|
||||
{
|
||||
IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection();
|
||||
Iterator selIt = selection.iterator();
|
||||
while (selIt.hasNext())
|
||||
{
|
||||
srcObjects.add(selIt.next());
|
||||
}
|
||||
_sourceType = SystemDNDTransferRunnable.SRC_TYPE_ECLIPSE_RESOURCE;
|
||||
}
|
||||
else
|
||||
{
|
||||
srcObjects = getRSESourceObjects(transferData);
|
||||
_sourceType = SystemDNDTransferRunnable.SRC_TYPE_RSE_RESOURCE;
|
||||
}
|
||||
}
|
||||
// different kind of data
|
||||
else if (data instanceof IResource[])
|
||||
{
|
||||
|
@ -152,6 +194,7 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
|
|||
return srcObjects;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called by SWT after the drop have been validated to perform the
|
||||
* drop transfer.
|
||||
|
|
Loading…
Add table
Reference in a new issue