/*******************************************************************************
* 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.description.browse.util;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.reuseware.coconut.description.Facet;
import org.reuseware.coconut.description.FacetTypeDecorator;
import org.reuseware.coconut.description.browse.MainBrowserManager;
import org.reuseware.coconut.description.classify.FacetManager;
import org.reuseware.coconut.repository.ID;
/**
*
* @author Matthias Schmidt
*
*/
public class FacetDragListener extends DragSourceAdapter {
private TableViewer viewer;
public FacetDragListener(TableViewer viewer) {
this.viewer = viewer;
}
@Override
public void dragSetData(DragSourceEvent event) {
FacetTypeDecorator tDecor = null;
Object selected = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
// drag source is a viewer with Facet in it
if (selected instanceof Facet) {
Facet facet = (Facet) selected;
tDecor = DynamicDecorationManager.buildFacetTypeDecorator(facet.getType());
MainBrowserManager.getInstance().setTransientFacet(facet);
}
// drag source is a view with FacetTypeDecorator in it
if (selected instanceof FacetTypeDecorator)
tDecor = (FacetTypeDecorator) selected;
if (tDecor == null)
event.doit = false;
else
event.data = pack(tDecor);
}
private String pack(FacetTypeDecorator tDecor) {
ID id = FacetManager.getTypeID(tDecor.getDecoratee());
String transferSting = "";
for (String string : id.getSegments()) {
transferSting += string + "/";
}
transferSting = transferSting.substring(0, transferSting.lastIndexOf('/'));
return transferSting;
}
@Override
public void dragStart(DragSourceEvent event) {
event.doit = !viewer.getSelection().isEmpty();
}
@Override
public void dragFinished(DragSourceEvent event) {
System.err.println("Drag-N-Drop");
}
}