📄 dndexample.java
字号:
FileDialog dialog = new FileDialog(fileList.getShell(), SWT.OPEN | SWT.MULTI); String result = dialog.open(); if (result != null && result.length() > 0){ fileList.removeAll(); String separator = System.getProperty("file.separator"); String path = dialog.getFilterPath(); String[] names = dialog.getFileNames(); for (int i = 0; i < names.length; i++) { fileList.add(path+separator+names[i]); } } } }); fileList = new List(c, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); GridData data = new GridData(); data.grabExcessHorizontalSpace = true; 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(b, -10); data.left = new FormAttachment(0, 10); combo.setLayoutData(data); data = new FormData(); data.bottom = new FormAttachment(100, -10); data.left = new FormAttachment(0, 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; } } 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; } } public void dragOver(DropTargetEvent event) { dropConsole.append(">>dragOver\n"); printEvent(event); } 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)) { 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; for(int i = 0; i < strings.length; i++) { TableItem item = new TableItem(table, SWT.NONE); 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; for(int i = 0; i < strings.length; i++) { TreeItem item = 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 createDropTypes(Composite parent) { parent.setLayout(new RowLayout(SWT.VERTICAL)); Button b = new Button(parent, SWT.CHECK); b.setText("Text Transfer"); b.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Button b = (Button)e.widget; if (b.getSelection()) { addDropTransfer(TextTransfer.getInstance()); } else { removeDropTransfer(TextTransfer.getInstance()); } } }); b = new Button(parent, SWT.CHECK); b.setText("RTF Transfer"); b.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Button b = (Button)e.widget; if (b.getSelection()) { addDropTransfer(RTFTransfer.getInstance()); } else { removeDropTransfer(RTFTransfer.getInstance()); } } });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -