package name.abuchen.portfolio.ui.dnd; import name.abuchen.portfolio.model.Adaptable; import name.abuchen.portfolio.model.Security; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.dnd.DragSourceAdapter; import org.eclipse.swt.dnd.DragSourceEvent; public class SecurityDragListener extends DragSourceAdapter { private StructuredViewer viewer; public SecurityDragListener(StructuredViewer viewer) { this.viewer = viewer; } public void dragFinished(DragSourceEvent event) { if (!event.doit) return; // TODO: remove from watch list if security was moved } public void dragSetData(DragSourceEvent event) { SecurityTransfer.getTransfer().setSecurity(getSecurity()); } public void dragStart(DragSourceEvent event) { event.doit = getSecurity() != null; } private Security getSecurity() { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); if (selection.isEmpty()) return null; Object element = selection.getFirstElement(); if (element instanceof Security) { return (Security) element; } else if (element instanceof Adaptable) { return ((Adaptable) element).adapt(Security.class); } else { return null; } } }