/******************************************************************************* * Copyright (c) 2006-2012 * Software Technology Group, Dresden University of Technology * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026 * * 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: * Software Technology Group - TU Dresden, Germany; * DevBoost GmbH - Berlin, Germany * - initial API and implementation ******************************************************************************/ package org.reuseware.coconut.compositionprogram.diagram.part; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.emf.common.util.URI; import org.eclipse.gef.EditPartViewer; import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramDropTargetListener; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.dnd.Transfer; import org.reuseware.sokan.ID; import org.reuseware.sokan.index.util.ResourceUtil; /** * A drop target listener to support drag and drop of files as fragment instantiations * into the UCL editor. */ public class CompositionprogramDiagramDropTargetListener extends DiagramDropTargetListener { /** * Constructor taken from superclass. * * @param viewer current viewer */ public CompositionprogramDiagramDropTargetListener(EditPartViewer viewer) { super(viewer); } /** * Constructor taken from superclass. * * @param viewer current viewer * @param xfer current drop transfer */ public CompositionprogramDiagramDropTargetListener(EditPartViewer viewer, Transfer xfer) { super(viewer, xfer); } @Override protected List<?> getObjectsBeingDropped() { ISelection selection = ((LocalSelectionTransfer) getTransfer()).getSelection(); List<List<String>> ufiList = new ArrayList<List<String>>(); if (selection instanceof StructuredSelection) { Iterator<?> selectionIterator = ((StructuredSelection) selection).iterator(); while (selectionIterator.hasNext()) { Object next = selectionIterator.next(); if (next instanceof IFile) { ID id = ResourceUtil.idFrom((IFile) next); if (id == null) { //try plugin URI id = ResourceUtil.idFrom(URI.createPlatformPluginURI( ((IFile) next).getFullPath().toString(), false)); } if (id != null) { ufiList.add(id.getSegments()); } } } } return ufiList; } }