org.eclipse.emf.cdo.transfer.internal.workspace.WorkspaceUIProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.emf.cdo.transfer.internal.workspace.WorkspaceUIProvider.java

Source

/*
 * 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();
        }
    }
}