📄 dndexample.java
字号:
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.BEGINNING;
fileList.setLayoutData(data);
}
private void createDragWidget(Composite parent) {
parent.setLayout(new FormLayout());
Combo combo = new Combo(parent, SWT.READ_ONLY);
combo.setItems(new String[] {"Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree"});
combo.select(LABEL);
dragControlType = combo.getSelectionIndex();
dragControl = createWidget(dragControlType, parent, "Drag Source");
combo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Object data = dragControl.getLayoutData();
Composite parent = dragControl.getParent();
dragControl.dispose();
Combo c = (Combo)e.widget;
dragControlType = c.getSelectionIndex();
dragControl = createWidget(dragControlType, parent, "Drag Source");
dragControl.setLayoutData(data);
if (dragEnabled) createDragSource();
parent.layout();
}
});
Button b = new Button(parent, SWT.CHECK);
b.setText("DragSource");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
dragEnabled = b.getSelection();
if (dragEnabled) {
createDragSource();
} else {
if (dragSource != null){
dragSource.dispose();
}
dragSource = null;
}
}
});
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);
}
private void createDropOperations(Composite parent) {
parent.setLayout(new RowLayout(SWT.VERTICAL));
final Button moveButton = new Button(parent, SWT.CHECK);
moveButton.setText("DND.DROP_MOVE");
moveButton.setSelection(true);
dropOperation = DND.DROP_MOVE;
moveButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropOperation |= DND.DROP_MOVE;
} else {
dropOperation = dropOperation & ~DND.DROP_MOVE;
if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_MOVE) != 0) {
dropOperation |= DND.DROP_MOVE;
moveButton.setSelection(true);
}
}
if (dropEnabled) {
createDropTarget();
}
}
});
final Button copyButton = new Button(parent, SWT.CHECK);
copyButton.setText("DND.DROP_COPY");
copyButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropOperation |= DND.DROP_COPY;
} else {
dropOperation = dropOperation & ~DND.DROP_COPY;
if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_COPY) != 0) {
dropOperation = DND.DROP_COPY;
copyButton.setSelection(true);
}
}
if (dropEnabled) {
createDropTarget();
}
}
});
final Button linkButton = new Button(parent, SWT.CHECK);
linkButton.setText("DND.DROP_LINK");
linkButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropOperation |= DND.DROP_LINK;
} else {
dropOperation = dropOperation & ~DND.DROP_LINK;
if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_LINK) != 0) {
dropOperation = DND.DROP_LINK;
linkButton.setSelection(true);
}
}
if (dropEnabled) {
createDropTarget();
}
}
});
Button b = new Button(parent, SWT.CHECK);
b.setText("DND.DROP_DEFAULT");
defaultParent = new Composite(parent, SWT.NONE);
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropOperation |= DND.DROP_DEFAULT;
defaultParent.setVisible(true);
} else {
dropOperation = dropOperation & ~DND.DROP_DEFAULT;
defaultParent.setVisible(false);
}
if (dropEnabled) {
createDropTarget();
}
}
});
defaultParent.setVisible(false);
GridLayout layout = new GridLayout();
layout.marginWidth = 20;
defaultParent.setLayout(layout);
Label label = new Label(defaultParent, SWT.NONE);
label.setText("Value for default operation is:");
b = new Button(defaultParent, SWT.RADIO);
b.setText("DND.DROP_MOVE");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropDefaultOperation = DND.DROP_MOVE;
dropOperation |= DND.DROP_MOVE;
moveButton.setSelection(true);
if (dropEnabled) {
createDropTarget();
}
}
}
});
b = new Button(defaultParent, SWT.RADIO);
b.setText("DND.DROP_COPY");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropDefaultOperation = DND.DROP_COPY;
dropOperation |= DND.DROP_COPY;
copyButton.setSelection(true);
if (dropEnabled) {
createDropTarget();
}
}
}
});
b = new Button(defaultParent, SWT.RADIO);
b.setText("DND.DROP_LINK");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropDefaultOperation = DND.DROP_LINK;
dropOperation |= DND.DROP_LINK;
linkButton.setSelection(true);
if (dropEnabled) {
createDropTarget();
}
}
}
});
b = new Button(defaultParent, SWT.RADIO);
b.setText("DND.DROP_NONE");
b.setSelection(true);
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropDefaultOperation = DND.DROP_NONE;
dropOperation &= ~DND.DROP_DEFAULT;
if (dropEnabled) {
createDropTarget();
}
}
}
});
}
private void createDropTarget() {
if (dropTarget != null) dropTarget.dispose();
dropTarget = new DropTarget(dropControl, dropOperation);
dropTarget.setTransfer(dropTypes);
dropTarget.addDropListener(new DropTargetListener() {
public void dragEnter(DropTargetEvent event) {
dropConsole.append(">>dragEnter\n");
printEvent(event);
if (event.detail == DND.DROP_DEFAULT) {
event.detail = dropDefaultOperation;
}
event.feedback = dropFeedback;
}
public void dragLeave(DropTargetEvent event) {
dropConsole.append(">>dragLeave\n");
printEvent(event);
}
public void dragOperationChanged(DropTargetEvent event) {
dropConsole.append(">>dragOperationChanged\n");
printEvent(event);
if (event.detail == DND.DROP_DEFAULT) {
event.detail = dropDefaultOperation;
}
event.feedback = dropFeedback;
}
public void dragOver(DropTargetEvent event) {
dropConsole.append(">>dragOver\n");
printEvent(event);
event.feedback = dropFeedback;
}
public void drop(DropTargetEvent event) {
dropConsole.append(">>drop\n");
printEvent(event);
String[] strings = null;
if (TextTransfer.getInstance().isSupportedType(event.currentDataType) ||
RTFTransfer.getInstance().isSupportedType(event.currentDataType) ||
HTMLTransfer.getInstance().isSupportedType(event.currentDataType)) {
strings = new String[] {(String)event.data};
}
if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
strings = (String[])event.data;
}
if (strings == null || strings.length == 0) {
dropConsole.append("!!Invalid data dropped");
return;
}
if (strings.length == 1 && (dropControlType == TABLE ||
dropControlType == TREE ||
dropControlType == LIST)) {
// convert string separated by "\n" into an array of strings
String string = strings[0];
int count = 0;
int offset = string.indexOf("\n", 0);
while (offset > 0) {
count++;
offset = string.indexOf("\n", offset + 1);
}
if (count > 0) {
strings = new String[count + 1];
int start = 0;
int end = string.indexOf("\n");
int index = 0;
while (start < end) {
strings[index++] = string.substring(start, end);
start = end + 1;
end = string.indexOf("\n", start);
if (end == -1) end = string.length();
}
}
}
switch(dropControlType) {
case BUTTON_CHECK:
case BUTTON_TOGGLE:
case BUTTON_RADIO: {
Button b = (Button)dropControl;
b.setText(strings[0]);
break;
}
case TABLE: {
Table table = (Table)dropControl;
Point p = event.display.map(null, table, event.x, event.y);
TableItem dropItem = table.getItem(p);
int index = dropItem == null ? table.getItemCount() : table.indexOf(dropItem);
for(int i = 0; i < strings.length; i++) {
TableItem item = new TableItem(table, SWT.NONE, index);
item.setText(0, strings[i]);
item.setText(1, "dropped item");
}
TableColumn[] columns = table.getColumns();
for (int i = 0; i < columns.length; i++) {
columns[i].pack();
}
break;
}
case TEXT: {
Text text = (Text)dropControl;
for(int i = 0; i < strings.length; i++) {
text.append(strings[i]+"\n");
}
break;
}
case TREE: {
Tree tree = (Tree)dropControl;
Point p = event.display.map(null, tree, event.x, event.y);
TreeItem parentItem = tree.getItem(p);
for(int i = 0; i < strings.length; i++) {
TreeItem item = parentItem != null ? new TreeItem(parentItem, SWT.NONE) : new TreeItem(tree, SWT.NONE);
item.setText(strings[i]);
}
break;
}
case CANVAS: {
dropControl.setData("STRINGS", strings);
dropControl.redraw();
break;
}
case LABEL: {
Label label = (Label)dropControl;
label.setText(strings[0]);
break;
}
case LIST: {
List list = (List)dropControl;
for(int i = 0; i < strings.length; i++) {
list.add(strings[i]);
}
break;
}
default:
throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED);
}
}
public void dropAccept(DropTargetEvent event) {
dropConsole.append(">>dropAccept\n");
printEvent(event);
}
});
}
private void createFeedbackTypes(Group parent) {
parent.setLayout(new RowLayout(SWT.VERTICAL));
Button b = new Button(parent, SWT.CHECK);
b.setText("FEEDBACK_SELECT");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropFeedback |= DND.FEEDBACK_SELECT;
} else {
dropFeedback &= ~DND.FEEDBACK_SELECT;
}
}
});
b = new Button(parent, SWT.CHECK);
b.setText("FEEDBACK_SCROLL");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropFeedback |= DND.FEEDBACK_SCROLL;
} else {
dropFeedback &= ~DND.FEEDBACK_SCROLL;
}
}
});
b = new Button(parent, SWT.CHECK);
b.setText("FEEDBACK_INSERT_BEFORE");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropFeedback |= DND.FEEDBACK_INSERT_BEFORE;
} else {
dropFeedback &= ~DND.FEEDBACK_INSERT_BEFORE;
}
}
});
b = new Button(parent, SWT.CHECK);
b.setText("FEEDBACK_INSERT_AFTER");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropFeedback |= DND.FEEDBACK_INSERT_AFTER;
} else {
dropFeedback &= ~DND.FEEDBACK_INSERT_AFTER;
}
}
});
b = new Button(parent, SWT.CHECK);
b.setText("FEEDBACK_EXPAND");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.widget;
if (b.getSelection()) {
dropFeedback |= DND.FEEDBACK_EXPAND;
} else {
dropFeedback &= ~DND.FEEDBACK_EXPAND;
}
}
});
}
private void createDropTypes(Composite parent) {
parent.setLayout(new RowLayout(SWT.VERTICAL));
Button b = new Button(parent, SWT.CHECK);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -