/**
* Copyright (C) Intersect 2012.
*
* This module contains Proprietary Information of Intersect,
* and should be treated as Confidential.
*/
package au.org.intersect.exsite9.view.listener;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import au.org.intersect.exsite9.domain.NewFilesGroup;
import au.org.intersect.exsite9.domain.Project;
/**
* Custom listener for listening for drag events on the tree viewer of the project view
*/
public class ProjectExplorerDragListener implements DragSourceListener
{
private final TreeViewer treeViewer;
public ProjectExplorerDragListener(TreeViewer treeViewer)
{
this.treeViewer = treeViewer;
}
@Override
public void dragStart(DragSourceEvent event)
{
// If we have a single selection we can cancel the drag/drop if the selection is
// the project group or the new files group
if(((ITreeSelection)treeViewer.getSelection()).size() == 1)
{
Object obj = ((ITreeSelection)treeViewer.getSelection()).toList().get(0);
if ((obj instanceof NewFilesGroup) || (obj instanceof Project))
{
event.doit = false;
}
}
}
@Override
public void dragSetData(DragSourceEvent event)
{
LocalSelectionTransfer.getTransfer().setSelection(treeViewer.getSelection());
}
@Override
public void dragFinished(DragSourceEvent event)
{
}
}