1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 15:25:49 +02:00

[192704] work around drag&drop issues from Project Explorer

This commit is contained in:
Martin Oberhuber 2007-08-20 14:16:48 +00:00
parent 110355277d
commit 6be94a3637

View file

@ -13,11 +13,13 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * 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; package org.eclipse.rse.internal.ui.view;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import org.eclipse.core.resources.IResource; 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.core.runtime.jobs.MultiRule;
import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableContext; 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.StructuredViewer;
import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.rse.core.RSECorePlugin; 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. * 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 Shell shell;
protected long hoverStart = 0; protected long hoverStart = 0;
@ -94,6 +100,27 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
return false; 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) private ArrayList getRSESourceObjects(PluginTransferData transferData)
{ {
@ -109,8 +136,10 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
{ {
String srcStr = tokens[i]; String srcStr = tokens[i];
Object srcObject = getObjectFor(srcStr); {
srcObjects.add(srcObject); Object srcObject = getObjectFor(srcStr);
srcObjects.add(srcObject);
}
} }
return srcObjects; return srcObjects;
} }
@ -124,8 +153,21 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
if (data instanceof PluginTransferData) if (data instanceof PluginTransferData)
{ {
PluginTransferData transferData = (PluginTransferData) data; PluginTransferData transferData = (PluginTransferData) data;
srcObjects = getRSESourceObjects(transferData); if (isLocalSelectionResources(transferData))
_sourceType = SystemDNDTransferRunnable.SRC_TYPE_RSE_RESOURCE; {
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 // different kind of data
else if (data instanceof IResource[]) else if (data instanceof IResource[])
@ -152,6 +194,7 @@ public class SystemViewDataDropAdapter extends ViewerDropAdapter
return srcObjects; return srcObjects;
} }
/** /**
* Called by SWT after the drop have been validated to perform the * Called by SWT after the drop have been validated to perform the
* drop transfer. * drop transfer.