blob: c749674b98c83886f725bc95b3f81a2db20e334d [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.internal.ui.transfer;
import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
import org.eclipse.emf.cdo.eresource.CDOResourceNode;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.transfer.CDOTransferElement;
import org.eclipse.emf.cdo.transfer.CDOTransferSystem;
import org.eclipse.emf.cdo.transfer.spi.repository.RepositoryTransferSystem;
import org.eclipse.emf.cdo.transfer.spi.ui.NativeObjectLabelProvider;
import org.eclipse.emf.cdo.transfer.spi.ui.TransferUIProvider;
import org.eclipse.emf.cdo.ui.CDOItemProvider;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.factory.ProductCreationException;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.Transfer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Eike Stepper
*/
public class RepositoryUIProvider implements TransferUIProvider
{
public static RepositoryUIProvider INSTANCE;
public RepositoryUIProvider()
{
INSTANCE = this;
}
public ILabelProvider createLabelProvider(CDOTransferSystem system)
{
ILabelProvider delegate = new CDOItemProvider(null);
return new NativeObjectLabelProvider(delegate);
}
public void addSupportedTransfers(List<Transfer> transfers)
{
// TODO: implement RepositoryUIProvider.addSupportedTransfers(transfers)
}
public List<CDOTransferElement> convertTransferData(Object data)
{
// TODO: implement RepositoryUIProvider.convertTransferData(data)
return null;
}
public CDOTransferElement convertTransferTarget(Object target)
{
if (target instanceof CDOTransaction)
{
CDOTransferSystem system = new RepositoryTransferSystem((CDOTransaction)target);
return system.getElement("");
}
if (target instanceof CDOResourceFolder)
{
CDOResourceFolder folder = (CDOResourceFolder)target;
String path = folder.getPath();
CDOView view = folder.cdoView();
CDOTransferSystem system = new RepositoryTransferSystem(view);
return system.getElement(path);
}
return null;
}
public Object convertSelection(IStructuredSelection selection)
{
List<CDOResourceNode> result = new ArrayList<CDOResourceNode>();
for (Iterator<?> it = selection.iterator(); it.hasNext();)
{
Object object = it.next();
if (object instanceof CDOResourceNode)
{
CDOResourceNode node = (CDOResourceNode)object;
result.add(node);
}
}
return result.toArray(new CDOResourceNode[result.size()]);
}
@Override
public String toString()
{
return getClass().getSimpleName();
}
/**
* @author Eike Stepper
*/
public static class Factory extends TransferUIProvider.Factory
{
public Factory()
{
super(RepositoryTransferSystem.TYPE);
}
@Override
public TransferUIProvider create(String description) throws ProductCreationException
{
return new RepositoryUIProvider();
}
}
}