[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: SWT vs SWING/AWT Drag and drop
|
- From: duongn@xxxxxxxxxx (Duong Nguyen)
- Date: Thu, 27 Mar 2008 21:25:51 +0000 (UTC)
- Newsgroups: eclipse.platform.swt
- Organization: Eclipse
- User-agent: NewsPortal/0.36 (http://florian-amrhein.de/newsportal)
You would write DND for your treeViewer using the SWT API and write the
Swing DND API for your Swing component. You just have to make sure that
your transfer types between the two are compatible.
Here's a simple text DND between Swing and SWT:
package swt.examples.dnd;
/*
* example snippet: DND between Swing/AWT and SWT
*/
import javax.swing.*;
import org.eclipse.swt.*;
import org.eclipse.swt.awt.*;
import org.eclipse.swt.dnd.*;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class SwingSWTTextDND {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("SWT and Swing DND Example");
GridLayout layout = new GridLayout(1, false);
shell.setLayout(layout);
Text swtText = new Text(shell, SWT.BORDER);
swtText.setText("SWT Text");
GridData data = new GridData(GridData.FILL_HORIZONTAL);
swtText.setLayoutData(data);
setDragDrop(swtText);
Composite comp = new Composite(shell, SWT.EMBEDDED);
java.awt.Frame frame = SWT_AWT.new_Frame(comp);
JTextField swingText = new JTextField(40);
swingText.setText("Swing Text");
swingText.setDragEnabled(true);
frame.add(swingText);
data = new GridData(GridData.FILL_HORIZONTAL);
data.heightHint = swingText.getPreferredSize().height;
comp.setLayoutData(data);
shell.setSize(400, 200);
shell.open();
while(!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
public static void setDragDrop (final Text text) {
Transfer[] types = new Transfer[] {TextTransfer.getInstance()};
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
final DragSource source = new DragSource (text, operations);
source.setTransfer(types);
source.addDragListener (new DragSourceListener () {
Point selection;
public void dragStart(DragSourceEvent e) {
selection = text.getSelection();
e.doit = selection.x != selection.y;
}
public void dragSetData(DragSourceEvent e) {
e.data = text.getText(selection.x, selection.y-1);
}
public void dragFinished(DragSourceEvent e) {
if (e.detail == DND.DROP_MOVE) {
text.setSelection(selection);
text.insert("");
}
selection = null;
}
});
DropTarget target = new DropTarget(text, operations);
target.setTransfer(types);
target.addDropListener (new DropTargetAdapter() {
public void drop(DropTargetEvent event) {
if (event.data == null) {
event.detail = DND.DROP_NONE;
return;
}
text.append((String) event.data);
}
});
}
}
Chandra wrote:
Hi All,
I have a swing based component in editor and I need to implement a
Drag-Drop (DND) feature between SWT based treeviewer and Swing based
component. Please guide me for the above. At least send me the sample for
these kind of scenario.
Thanks,
Chandra M