use of org.eclipse.swt.dnd.DragSource in project eclipse.platform.swt by eclipse.
the class Bug497705_BrowserDragDetect method setDrag.
public static void setDrag(final Browser browser) {
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
final DragSource source = new DragSource(browser, operations);
source.setTransfer(types);
source.addDragListener(new DragSourceListener() {
@Override
public void dragStart(DragSourceEvent event) {
event.doit = (browser.getText().length() != 0);
// not ran.
System.out.println("Drag started");
}
@Override
public void dragSetData(DragSourceEvent event) {
event.data = browser.getText();
}
@Override
public void dragFinished(DragSourceEvent event) {
if (event.detail == DND.DROP_MOVE)
browser.setText("");
}
});
}
use of org.eclipse.swt.dnd.DragSource in project eclipse.platform.swt by eclipse.
the class DNDExample method createDragWidget.
private void createDragWidget(Composite parent) {
parent.setLayout(new FormLayout());
Combo combo = new Combo(parent, SWT.READ_ONLY);
combo.setItems("Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree", "Text", "StyledText", "Combo");
combo.select(LABEL);
dragControlType = combo.getSelectionIndex();
dragControl = createWidget(dragControlType, parent, "Drag Source");
combo.addSelectionListener(widgetSelectedAdapter(e -> {
Object data = dragControl.getLayoutData();
Composite dragParent = dragControl.getParent();
dragControl.dispose();
Combo c = (Combo) e.widget;
dragControlType = c.getSelectionIndex();
dragControl = createWidget(dragControlType, dragParent, "Drag Source");
dragControl.setLayoutData(data);
if (dragEnabled)
createDragSource();
dragParent.layout();
}));
Button b = new Button(parent, SWT.CHECK);
b.setText("DragSource");
b.addSelectionListener(widgetSelectedAdapter(e -> {
Button b1 = (Button) e.widget;
dragEnabled = b1.getSelection();
if (dragEnabled) {
createDragSource();
} else {
if (dragSource != null) {
dragSource.dispose();
}
dragSource = null;
}
}));
b.setSelection(true);
dragEnabled = true;
FormData data = new FormData();
data.top = new FormAttachment(0, 10);
data.bottom = new FormAttachment(combo, -10);
data.left = new FormAttachment(0, 10);
data.right = new FormAttachment(100, -10);
dragControl.setLayoutData(data);
data = new FormData();
data.bottom = new FormAttachment(100, -10);
data.left = new FormAttachment(0, 10);
combo.setLayoutData(data);
data = new FormData();
data.bottom = new FormAttachment(100, -10);
data.left = new FormAttachment(combo, 10);
b.setLayoutData(data);
}
use of org.eclipse.swt.dnd.DragSource in project eclipse.platform.swt by eclipse.
the class FileViewer method createTreeDragSource.
/**
* Creates the Drag & Drop DragSource for items being dragged from the tree.
*
* @return the DragSource for the tree
*/
private DragSource createTreeDragSource(final Tree tree) {
DragSource dragSource = new DragSource(tree, DND.DROP_MOVE | DND.DROP_COPY);
dragSource.setTransfer(FileTransfer.getInstance());
dragSource.addDragListener(new DragSourceListener() {
TreeItem[] dndSelection = null;
String[] sourceNames = null;
@Override
public void dragStart(DragSourceEvent event) {
dndSelection = tree.getSelection();
sourceNames = null;
event.doit = dndSelection.length > 0;
isDragging = true;
processedDropFiles = null;
}
@Override
public void dragFinished(DragSourceEvent event) {
dragSourceHandleDragFinished(event, sourceNames);
dndSelection = null;
sourceNames = null;
isDragging = false;
processedDropFiles = null;
handleDeferredRefresh();
}
@Override
public void dragSetData(DragSourceEvent event) {
if (dndSelection == null || dndSelection.length == 0)
return;
if (!FileTransfer.getInstance().isSupportedType(event.dataType))
return;
sourceNames = new String[dndSelection.length];
for (int i = 0; i < dndSelection.length; i++) {
File file = (File) dndSelection[i].getData(TREEITEMDATA_FILE);
sourceNames[i] = file.getAbsolutePath();
}
event.data = sourceNames;
}
});
return dragSource;
}
use of org.eclipse.swt.dnd.DragSource in project eclipse.platform.swt by eclipse.
the class Bug66356_DND_move_reported_to_drag_source_even_though_cancelled method main.
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Button source = new Button(shell, SWT.PUSH);
source.setText("Source");
DragSource dragSource = new DragSource(source, DND.DROP_MOVE);
dragSource.setTransfer(new Transfer[] { TextTransfer.getInstance() });
dragSource.addDragListener(new DragSourceAdapter() {
@Override
public void dragSetData(DragSourceEvent event) {
event.data = "hello";
}
@Override
public void dragFinished(DragSourceEvent event) {
System.out.println("Move = " + (event.detail == DND.DROP_MOVE));
}
});
Button dest = new Button(shell, SWT.PUSH);
dest.setText("Dest");
DropTarget dropTarget = new DropTarget(dest, DND.DROP_MOVE);
dropTarget.setTransfer(new Transfer[] { TextTransfer.getInstance() });
// dropTarget.addDropListener(new DropTargetAdapter() {
// public void drop(DropTargetEvent event) {
// event.detail = DND.DROP_NONE;
// }
// });
// dropTarget.addDropListener(new DropTargetListener() {
//
// @Override
// public void dropAccept(DropTargetEvent event) {
// // TD Auto-generated method stub
// event.detail = DND.DROP_NONE;
//
// }
//
// @Override
// public void drop(DropTargetEvent event) {
// // TD Auto-generated method stub
//
// }
//
// @Override
// public void dragOver(DropTargetEvent event) {
// // TD Auto-generated method stub
//
// }
//
// @Override
// public void dragOperationChanged(DropTargetEvent event) {
// // TD Auto-generated method stub
//
// }
//
// @Override
// public void dragLeave(DropTargetEvent event) {
// // TD Auto-generated method stub
//
// }
//
// @Override
// public void dragEnter(DropTargetEvent event) {
// // TD Auto-generated method stub
//
// }
// });
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
use of org.eclipse.swt.dnd.DragSource in project eclipse.platform.text by eclipse.
the class AbstractTextEditor method uninstallTextDragAndDrop.
/**
* Uninstalls text drag and drop from the given source viewer.
*
* @param viewer the viewer
* @since 3.3
*/
protected void uninstallTextDragAndDrop(ISourceViewer viewer) {
if (viewer == null || !fIsTextDragAndDropInstalled)
return;
final IDragAndDropService dndService = getSite().getService(IDragAndDropService.class);
if (dndService == null)
return;
StyledText st = viewer.getTextWidget();
dndService.removeMergedDropTarget(st);
DragSource dragSource = (DragSource) st.getData(DND.DRAG_SOURCE_KEY);
if (dragSource != null) {
dragSource.dispose();
st.setData(DND.DRAG_SOURCE_KEY, null);
}
fIsTextDragAndDropInstalled = false;
}
Aggregations