Search in sources :

Example 11 with DropTargetListener

use of org.eclipse.swt.dnd.DropTargetListener in project tdi-studio-se by Talend.

the class SchemaXMLDragAndDropHandler method createDropTarget.

/**
     * 
     * create DropTarget.
     */
private void createDropTarget() {
    if (loopDropTarget != null) {
        loopDropTarget.dispose();
    }
    loopDropTarget = new DropTarget(linker.getTarget(), DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
    loopDropTarget.setTransfer(new Transfer[] { LocalDataTransfer.getInstance() });
    DropTargetListener targetListener = new TableDropTargetListener();
    loopDropTarget.addDropListener(targetListener);
}
Also used : TransferDropTargetListener(org.eclipse.jface.util.TransferDropTargetListener) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) DropTarget(org.eclipse.swt.dnd.DropTarget)

Example 12 with DropTargetListener

use of org.eclipse.swt.dnd.DropTargetListener in project tdi-studio-se by Talend.

the class Schema2XMLDragAndDropHandler method createDropTarget.

/**
     * 
     * create DropTarget.
     */
private void createDropTarget() {
    if (loopDropTarget != null) {
        loopDropTarget.dispose();
    }
    loopDropTarget = new DropTarget(linker.getTarget(), DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
    loopDropTarget.setTransfer(new Transfer[] { LocalDataTransfer.getInstance() });
    DropTargetListener targetListener = new TableDropTargetListener();
    loopDropTarget.addDropListener(targetListener);
}
Also used : TransferDropTargetListener(org.eclipse.jface.util.TransferDropTargetListener) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) DropTarget(org.eclipse.swt.dnd.DropTarget)

Example 13 with DropTargetListener

use of org.eclipse.swt.dnd.DropTargetListener in project tdi-studio-se by Talend.

the class JSONToSchemaDragAndDropHandler method createDropTarget.

/**
     * 
     * create DropTarget.
     */
private void createDropTarget() {
    if (loopDropTarget != null) {
        loopDropTarget.dispose();
    }
    loopDropTarget = new DropTarget(loopTable, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
    loopDropTarget.setTransfer(new Transfer[] { XPathTransfer.getInstance() });
    DropTargetListener targetListener = new TableDropTargetListener();
    loopDropTarget.addDropListener(targetListener);
    if (fieldsDropTarget != null) {
        fieldsDropTarget.dispose();
    }
    fieldsDropTarget = new DropTarget(fieldsTable, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
    fieldsDropTarget.setTransfer(new Transfer[] { XPathTransfer.getInstance() });
    targetListener = new TableDropTargetListener();
    fieldsDropTarget.addDropListener(targetListener);
}
Also used : TransferDropTargetListener(org.eclipse.jface.util.TransferDropTargetListener) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) DropTarget(org.eclipse.swt.dnd.DropTarget)

Example 14 with DropTargetListener

use of org.eclipse.swt.dnd.DropTargetListener in project tdi-studio-se by Talend.

the class JSONTree2SchemaDragAndDropHandler method createDropTarget.

private void createDropTarget() {
    if (loopDropTarget != null) {
        loopDropTarget.dispose();
    }
    loopDropTarget = new DropTarget(table, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
    loopDropTarget.setTransfer(new Transfer[] { XPathTransfer.getInstance() });
    DropTargetListener targetListener = new TableDropTargetListener();
    loopDropTarget.addDropListener(targetListener);
}
Also used : TransferDropTargetListener(org.eclipse.jface.util.TransferDropTargetListener) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) DropTarget(org.eclipse.swt.dnd.DropTarget)

Example 15 with DropTargetListener

use of org.eclipse.swt.dnd.DropTargetListener in project eclipse.platform.text by eclipse.

the class AbstractTextEditor method installTextDragAndDrop.

/**
 * Installs text drag and drop on the given source viewer.
 *
 * @param viewer the viewer
 * @since 3.3
 */
protected void installTextDragAndDrop(final ISourceViewer viewer) {
    if (viewer == null || fIsTextDragAndDropInstalled)
        return;
    final IDragAndDropService dndService = getSite().getService(IDragAndDropService.class);
    if (dndService == null)
        return;
    final StyledText st = viewer.getTextWidget();
    // Install drag source
    final ISelectionProvider selectionProvider = viewer.getSelectionProvider();
    final DragSource source = new DragSource(st, DND.DROP_COPY | DND.DROP_MOVE);
    source.setTransfer(new Transfer[] { TextTransfer.getInstance() });
    source.addDragListener(new DragSourceAdapter() {

        String fSelectedText;

        Point fSelection;

        @Override
        public void dragStart(DragSourceEvent event) {
            fTextDragAndDropToken = null;
            try {
                fSelection = st.getSelection();
                event.doit = isLocationSelected(new Point(event.x, event.y));
                ISelection selection = selectionProvider.getSelection();
                if (selection instanceof ITextSelection)
                    fSelectedText = ((ITextSelection) selection).getText();
                else
                    // fallback to widget
                    fSelectedText = st.getSelectionText();
            } catch (IllegalArgumentException ex) {
                event.doit = false;
            }
        }

        private boolean isLocationSelected(Point point) {
            // FIXME: https://bugs.eclipse.org/bugs/show_bug.cgi?id=260922
            if (isBlockSelectionModeEnabled())
                return false;
            int offset = st.getOffsetAtPoint(point);
            Point p = st.getLocationAtOffset(offset);
            if (p.x > point.x)
                offset--;
            return offset >= fSelection.x && offset < fSelection.y;
        }

        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data = fSelectedText;
            // Can be any non-null object
            fTextDragAndDropToken = this;
        }

        @Override
        public void dragFinished(DragSourceEvent event) {
            try {
                if (event.detail == DND.DROP_MOVE && validateEditorInputState()) {
                    Point newSelection = st.getSelection();
                    int length = fSelection.y - fSelection.x;
                    int delta = 0;
                    if (newSelection.x < fSelection.x)
                        delta = length;
                    // $NON-NLS-1$
                    st.replaceTextRange(fSelection.x + delta, length, "");
                    if (fTextDragAndDropToken == null) {
                        // Move in same editor - end compound change
                        IRewriteTarget target = getAdapter(IRewriteTarget.class);
                        if (target != null)
                            target.endCompoundChange();
                    }
                }
            } finally {
                fTextDragAndDropToken = null;
            }
        }
    });
    // Install drag target
    DropTargetListener dropTargetListener = new DropTargetAdapter() {

        private Point fSelection;

        @Override
        public void dragEnter(DropTargetEvent event) {
            fTextDragAndDropToken = null;
            fSelection = st.getSelection();
            if (event.detail == DND.DROP_DEFAULT) {
                if ((event.operations & DND.DROP_MOVE) != 0) {
                    event.detail = DND.DROP_MOVE;
                } else if ((event.operations & DND.DROP_COPY) != 0) {
                    event.detail = DND.DROP_COPY;
                } else {
                    event.detail = DND.DROP_NONE;
                }
            }
        }

        @Override
        public void dragOperationChanged(DropTargetEvent event) {
            if (event.detail == DND.DROP_DEFAULT) {
                if ((event.operations & DND.DROP_MOVE) != 0) {
                    event.detail = DND.DROP_MOVE;
                } else if ((event.operations & DND.DROP_COPY) != 0) {
                    event.detail = DND.DROP_COPY;
                } else {
                    event.detail = DND.DROP_NONE;
                }
            }
        }

        @Override
        public void dragOver(DropTargetEvent event) {
            event.feedback |= DND.FEEDBACK_SCROLL;
        }

        @Override
        public void drop(DropTargetEvent event) {
            try {
                if (fTextDragAndDropToken != null && event.detail == DND.DROP_MOVE) {
                    // Move in same editor
                    int caretOffset = st.getCaretOffset();
                    if (fSelection.x <= caretOffset && caretOffset <= fSelection.y) {
                        event.detail = DND.DROP_NONE;
                        return;
                    }
                    // Start compound change
                    IRewriteTarget target = getAdapter(IRewriteTarget.class);
                    if (target != null)
                        target.beginCompoundChange();
                }
                if (!validateEditorInputState()) {
                    event.detail = DND.DROP_NONE;
                    return;
                }
                String text = (String) event.data;
                if (isBlockSelectionModeEnabled()) {
                // FIXME fix block selection and DND
                // if (fTextDNDColumnSelection != null && fTextDragAndDropToken != null && event.detail == DND.DROP_MOVE) {
                // // DND_MOVE within same editor - remove origin before inserting
                // Rectangle newSelection= st.getColumnSelection();
                // st.replaceColumnSelection(fTextDNDColumnSelection, ""); //$NON-NLS-1$
                // st.replaceColumnSelection(newSelection, text);
                // st.setColumnSelection(newSelection.x, newSelection.y, newSelection.x + fTextDNDColumnSelection.width - fTextDNDColumnSelection.x, newSelection.y + fTextDNDColumnSelection.height - fTextDNDColumnSelection.y);
                // } else {
                // Point newSelection= st.getSelection();
                // st.insert(text);
                // IDocument document= getDocumentProvider().getDocument(getEditorInput());
                // int startLine= st.getLineAtOffset(newSelection.x);
                // int startColumn= newSelection.x - st.getOffsetAtLine(startLine);
                // int endLine= startLine + document.computeNumberOfLines(text);
                // int endColumn= startColumn + TextUtilities.indexOf(document.getLegalLineDelimiters(), text, 0)[0];
                // st.setColumnSelection(startColumn, startLine, endColumn, endLine);
                // }
                } else {
                    Point newSelection = st.getSelection();
                    try {
                        int modelOffset = widgetOffset2ModelOffset(viewer, newSelection.x);
                        viewer.getDocument().replace(modelOffset, 0, text);
                    } catch (BadLocationException e) {
                        return;
                    }
                    st.setSelectionRange(newSelection.x, text.length());
                }
            } finally {
                fTextDragAndDropToken = null;
            }
        }
    };
    dndService.addMergedDropTarget(st, DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { TextTransfer.getInstance() }, dropTargetListener);
    fIsTextDragAndDropInstalled = true;
}
Also used : DragSourceAdapter(org.eclipse.swt.dnd.DragSourceAdapter) StyledText(org.eclipse.swt.custom.StyledText) IDragAndDropService(org.eclipse.ui.dnd.IDragAndDropService) DropTargetEvent(org.eclipse.swt.dnd.DropTargetEvent) DragSource(org.eclipse.swt.dnd.DragSource) Point(org.eclipse.swt.graphics.Point) ITextSelection(org.eclipse.jface.text.ITextSelection) Point(org.eclipse.swt.graphics.Point) DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) DropTargetAdapter(org.eclipse.swt.dnd.DropTargetAdapter) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) IRewriteTarget(org.eclipse.jface.text.IRewriteTarget) ISelection(org.eclipse.jface.viewers.ISelection) BadLocationException(org.eclipse.jface.text.BadLocationException)

Aggregations

DropTargetListener (org.eclipse.swt.dnd.DropTargetListener)25 DropTarget (org.eclipse.swt.dnd.DropTarget)22 DropTargetEvent (org.eclipse.swt.dnd.DropTargetEvent)19 Transfer (org.eclipse.swt.dnd.Transfer)11 TransferDropTargetListener (org.eclipse.jface.util.TransferDropTargetListener)6 DragSource (org.eclipse.swt.dnd.DragSource)6 DragSourceEvent (org.eclipse.swt.dnd.DragSourceEvent)6 TextTransfer (org.eclipse.swt.dnd.TextTransfer)6 LocalSelectionTransfer (org.eclipse.jface.util.LocalSelectionTransfer)5 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)5 DragSourceListener (org.eclipse.swt.dnd.DragSourceListener)5 Point (org.eclipse.swt.graphics.Point)5 Button (org.eclipse.swt.widgets.Button)5 TreeItem (org.eclipse.swt.widgets.TreeItem)5 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)4 SelectionEvent (org.eclipse.swt.events.SelectionEvent)4 FormAttachment (org.eclipse.swt.layout.FormAttachment)4 GridData (org.eclipse.swt.layout.GridData)4 SashForm (org.eclipse.swt.custom.SashForm)3 StyledText (org.eclipse.swt.custom.StyledText)3