// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.ui.views.resources;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
import org.eclipse.ui.part.ResourceTransfer;
/**
* DOC rli class global comment. Detailled comment
*
* @deprecated not used any more
*/
public class ResourceDragAdapterAssistant extends CommonDragAdapterAssistant {
private static final Transfer[] SUPPORTED_TRANSFERS = new Transfer[] { ResourceTransfer.getInstance(),
LocalSelectionTransfer.getTransfer() };
private static final Class<IResource> IRESOURCE_TYPE = IResource.class;
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#getSupportedTransferTypes()
*/
public Transfer[] getSupportedTransferTypes() {
return SUPPORTED_TRANSFERS;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#setDragData(org.eclipse.swt.dnd.DragSourceEvent,
* org.eclipse.jface.viewers.IStructuredSelection)
*/
public boolean setDragData(DragSourceEvent anEvent, IStructuredSelection aSelection) {
if (LocalSelectionTransfer.getTransfer().isSupportedType(anEvent.dataType)) {
anEvent.data = aSelection;
return true;
} else if (ResourceTransfer.getInstance().isSupportedType(anEvent.dataType)) {
anEvent.data = getSelectedResources(aSelection);
return true;
}
return false;
}
@SuppressWarnings("unchecked")
private IResource[] getSelectedResources(IStructuredSelection aSelection) {
Set<IResource> resources = new LinkedHashSet<IResource>();
IResource resource = null;
for (Iterator iter = aSelection.iterator(); iter.hasNext();) {
Object selected = iter.next();
resource = adaptToResource(selected);
if (resource != null) {
resources.add(resource);
}
}
return (IResource[]) resources.toArray(new IResource[resources.size()]);
}
private IResource adaptToResource(Object selected) {
IResource resource;
if (selected instanceof IResource) {
resource = (IResource) selected;
} else if (selected instanceof IAdaptable) {
resource = (IResource) ((IAdaptable) selected).getAdapter(IRESOURCE_TYPE);
} else {
resource = (IResource) Platform.getAdapterManager().getAdapter(selected, IRESOURCE_TYPE);
}
return resource;
}
}