diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java b/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java index 94d6f67..438eb8c 100644 --- a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java +++ b/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java @@ -31,9 +31,11 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DragSource; import org.eclipse.swt.dnd.DragSourceAdapter; +import org.eclipse.swt.dnd.DragSourceEffect; import org.eclipse.swt.dnd.DragSourceEvent; import org.eclipse.swt.dnd.DropTarget; import org.eclipse.swt.dnd.DropTargetAdapter; @@ -56,6 +58,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; @@ -515,8 +518,12 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider, Mo Entry> entry = trackVerticalOffset.floorEntry(e.y); if (entry != null) setSelection(new StructuredSelection(entry.getValue())); - } - if (e.button == 3) { + } else if (e.button == 1&& e.widget == trackList) { + Object o = trackList.getClicked(new Point(e.x, e.y)); + if (o != null && o instanceof CursorPainter) + setSelection(new StructuredSelection(o)); + + } else if (e.button == 3) { top.getMenu().setVisible(true); } } @@ -697,9 +704,16 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider, Mo } private void createTrackDragSource(final Canvas canvas) { + final Display display = canvas.getDisplay(); Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer() }; DragSource dragSource = new DragSource(canvas, DND.DROP_MOVE); dragSource.setTransfer(types); + dragSource.setDragSourceEffect(new DragSourceEffect(canvas) { + @Override + public void dragStart(DragSourceEvent event) { +// event.image = display.getSystemImage(SWT.ICON_INFORMATION); + } + }); dragSource.addDragListener(new DragSourceAdapter() { public void dragStart(DragSourceEvent event) { // System.out.println("dragStart"); @@ -751,6 +765,19 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider, Mo } if(currentCursorSelection!=null) currentCursorSelection.setDragging(false); } + public void dragOver(DropTargetEvent event){ + ISelection sel = LocalSelectionTransfer.getTransfer().getSelection(); + if(sel!=null && sel instanceof IStructuredSelection){ + Object selObject = ((IStructuredSelection)sel).getFirstElement(); + if(selObject instanceof CursorPainter){ + DropTarget tgt = (DropTarget) event.widget; + Point dropPoint = ((Canvas) tgt.getControl()).toControl(event.x, event.y); + // painter.setTime(trackList.getTimeForOffset(dropPoint.x)); + setCursorTime(trackList.getTimeForOffset(dropPoint.x)); + ((Canvas) tgt.getControl()).redraw(); + } + } + } }); }