blob: 79788edbb95fe6eafd10e8cbed5a4249395ef169 [file] [log] [blame]
/*
* Copyright (c) 2012, 2015 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.transfer.internal.workspace;
import org.eclipse.emf.cdo.transfer.CDOTransferElement;
import org.eclipse.emf.cdo.transfer.CDOTransferSystem;
import org.eclipse.emf.cdo.transfer.spi.ui.NativeObjectLabelProvider;
import org.eclipse.emf.cdo.transfer.spi.ui.TransferUIProvider;
import org.eclipse.emf.cdo.transfer.spi.workspace.WorkspaceTransferSystem;
import org.eclipse.net4j.util.factory.ProductCreationException;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.part.ResourceTransfer;
import java.util.ArrayList;
import java.util.List;
/**
* @author Eike Stepper
*/
public class WorkspaceUIProvider implements TransferUIProvider
{
private static final ILabelDecorator DECORATOR = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator();
public WorkspaceUIProvider()
{
}
public ILabelProvider createLabelProvider(CDOTransferSystem system)
{
ILabelProvider delegate = new DecoratingLabelProvider(new WorkbenchLabelProvider(), DECORATOR);
return new NativeObjectLabelProvider(delegate);
}
public void addSupportedTransfers(List<Transfer> transfers)
{
transfers.add(ResourceTransfer.getInstance());
}
public List<CDOTransferElement> convertTransferData(Object data)
{
if (data instanceof IResource[])
{
IResource[] resources = (IResource[])data;
List<CDOTransferElement> result = new ArrayList<CDOTransferElement>(resources.length);
for (int i = 0; i < resources.length; i++)
{
IResource resource = resources[i];
IPath path = resource.getFullPath();
CDOTransferElement element = WorkspaceTransferSystem.INSTANCE.getElement(path);
result.add(element);
}
return result;
}
return null;
}
public CDOTransferElement convertTransferTarget(Object target)
{
if (target instanceof IResource)
{
IResource resource = (IResource)target;
IPath path = resource.getFullPath();
return WorkspaceTransferSystem.INSTANCE.getElement(path);
}
return null;
}
public Object convertSelection(IStructuredSelection selection)
{
// TODO: implement WorkspaceUIProvider.convertSelection(selection)
return null;
}
@Override
public String toString()
{
return getClass().getSimpleName();
}
/**
* @author Eike Stepper
*/
public static class Factory extends TransferUIProvider.Factory
{
public Factory()
{
super(WorkspaceTransferSystem.TYPE);
}
@Override
public TransferUIProvider create(String description) throws ProductCreationException
{
return new WorkspaceUIProvider();
}
}
}