/***************************************************************************** * Copyright (c) 2010 CEA LIST. * * 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: * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation *****************************************************************************/ package org.eclipse.papyrus.customization.properties.editor; import java.util.Collection; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.papyrus.customization.properties.util.ActionUtil; import org.eclipse.swt.widgets.Widget; /** * An adapter for Drag & Drop in the Context editor. The default Ecore drag & drop * is not compatible with the EMF Facet Tree Elements * * @author Camille Letavernier */ public class MoDiscoDropAdapter extends EditingDomainViewerDropAdapter { /** * * Constructor. * * @param domain * The Editing domain for this Drop Adapter * @param viewer * The Viewer for this Drop Adapter */ public MoDiscoDropAdapter(EditingDomain domain, Viewer viewer) { super(domain, viewer); } @Override protected Collection<?> extractDragSource(Object object) { if(object instanceof ISelection) return super.extractDragSource(ActionUtil.getAdaptedSelection((ISelection)object)); else return super.extractDragSource(object); } @Override protected Object extractDropTarget(Widget item) { Object dropTarget = super.extractDropTarget(item); if(dropTarget instanceof IAdaptable) { Object adapter = ((IAdaptable)dropTarget).getAdapter(EObject.class); if(adapter != null) return adapter; } return dropTarget; } }