⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dndexample.java

📁 SWT开发例子
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html *  * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.examples.dnd; import org.eclipse.swt.*;import org.eclipse.swt.dnd.*;import org.eclipse.swt.events.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;public class DNDExample {		private int dragOperation = 0;	private Transfer[] dragTypes = new Transfer[0];	private Control dragControl;	private int dragControlType = 0;	private DragSource dragSource;	private String dragDataText;	private String dragDataRTF;	private String[] dragDataFiles;	private List fileList;	private boolean dragEnabled = false;		private int dropOperation = 0;	private int dropDefaultOperation = 0;	private Transfer[] dropTypes = new Transfer[0];	private DropTarget dropTarget;	private Control dropControl;	private int dropControlType = 0;	private Composite defaultParent;	private boolean dropEnabled = false;		private Text dragConsole;	private boolean dragEventDetail = false;	private Text dropConsole;	private boolean dropEventDetail = false;		private static final int BUTTON_TOGGLE = 0;	private static final int BUTTON_RADIO = 1;	private static final int BUTTON_CHECK = 2;	private static final int CANVAS = 3;	private static final int LABEL = 4;	private static final int LIST = 5;	private static final int TABLE = 6;	private static final int TREE = 7;	private static final int TEXT = 8;	public static void main(String[] args) {	DNDExample example = new DNDExample();	example.open();}private void addDragTransfer(Transfer transfer){	Transfer[] newTypes = new Transfer[dragTypes.length + 1];	System.arraycopy(dragTypes, 0, newTypes, 0, dragTypes.length);	newTypes[dragTypes.length] = transfer;	dragTypes = newTypes;	if (dragSource != null) {		dragSource.setTransfer(dragTypes);	}}private void addDropTransfer(Transfer transfer){	Transfer[] newTypes = new Transfer[dropTypes.length + 1];	System.arraycopy(dropTypes, 0, newTypes, 0, dropTypes.length);	newTypes[dropTypes.length] = transfer;	dropTypes = newTypes;	if (dropTarget != null) {		dropTarget.setTransfer(dropTypes);	}}private void createDragOperations(Composite parent) {	parent.setLayout(new RowLayout(SWT.VERTICAL));	final Button moveButton = new Button(parent, SWT.CHECK);	moveButton.setText("DND.DROP_MOVE");	moveButton.setSelection(true);	dragOperation = DND.DROP_MOVE;	moveButton.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			if (b.getSelection()) {				dragOperation |= DND.DROP_MOVE;						} else {				dragOperation = dragOperation &~DND.DROP_MOVE;				if (dragOperation == 0) {					dragOperation = DND.DROP_MOVE;					moveButton.setSelection(true);				}			}			if (dragEnabled) {				createDragSource();			}		}	});		Button b = new Button(parent, SWT.CHECK);	b.setText("DND.DROP_COPY");	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			if (b.getSelection()) {				dragOperation |= DND.DROP_COPY;						} else {				dragOperation = dragOperation &~DND.DROP_COPY;				if (dragOperation == 0) {					dragOperation = DND.DROP_MOVE;					moveButton.setSelection(true);				}			}			if (dragEnabled) {				createDragSource();			}		}	});	b = new Button(parent, SWT.CHECK);	b.setText("DND.DROP_LINK");	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			if (b.getSelection()) {				dragOperation |= DND.DROP_LINK;						} else {				dragOperation = dragOperation &~DND.DROP_LINK;				if (dragOperation == 0) {					dragOperation = DND.DROP_MOVE;					moveButton.setSelection(true);				}			}			if (dragEnabled) {				createDragSource();			}		}	});}private void createDragSource() {	if (dragSource != null) dragSource.dispose();	dragSource = new DragSource(dragControl, dragOperation);	dragSource.setTransfer(dragTypes);	dragSource.addDragListener(new DragSourceListener() {		public void dragFinished(org.eclipse.swt.dnd.DragSourceEvent event) {			dragConsole.append(">>dragFinished\n");			printEvent(event);			dragDataText = dragDataRTF = null;			dragDataFiles = null;			if (event.detail == DND.DROP_MOVE) {				switch(dragControlType) {					case BUTTON_CHECK:					case BUTTON_TOGGLE:					case BUTTON_RADIO: {						Button b = (Button)dragControl;						b.setText("");						break;					}					case TABLE: {						Table table = (Table)dragControl;						TableItem[] items = table.getSelection();						for (int i = 0; i < items.length; i++) {							items[i].dispose();						}						break;					}					case TEXT: {						Text text = (Text)dragControl;						text.clearSelection();						break;					}					case TREE: {						Tree tree = (Tree)dragControl;						TreeItem[] items = tree.getSelection();						for (int i = 0; i < items.length; i++) {							items[i].dispose();						}						break;					}					case CANVAS: {						dragControl.setData("STRINGS", null);						dragControl.redraw();						break;					}					case LABEL: {						Label label = (Label)dragControl;						label.setText("");						break;					}					case LIST: {						List list = (List)dragControl;						int[] indices = list.getSelectionIndices();						list.remove(indices);						break;					}				}			}		}		public void dragSetData(org.eclipse.swt.dnd.DragSourceEvent event) {			dragConsole.append(">>dragSetData\n");			printEvent(event);			if (TextTransfer.getInstance().isSupportedType(event.dataType)) {				event.data = dragDataText;			}			if (RTFTransfer.getInstance().isSupportedType(event.dataType)) {				event.data = dragDataRTF;			}			if (FileTransfer.getInstance().isSupportedType(event.dataType)) {				event.data = dragDataFiles;			}		}		public void dragStart(org.eclipse.swt.dnd.DragSourceEvent event) {			dragConsole.append(">>dragStart\n");			printEvent(event);			dragDataFiles = fileList.getItems();			switch(dragControlType) {				case BUTTON_CHECK:				case BUTTON_TOGGLE:				case BUTTON_RADIO: {					Button b = (Button)dragControl;					dragDataText = b.getSelection() ? "true" : "false";					break;				}				case TABLE: {					Table table = (Table)dragControl;					TableItem[] items = table.getSelection();					if (items.length == 0) {						event.doit = false;					} else {						StringBuffer buffer = new StringBuffer();						for (int i = 0; i < items.length; i++) {							buffer.append(items[i].getText());							if (items.length > 1 && i < items.length - 1) {								buffer.append("\n");							}						}						dragDataText = buffer.toString();					}					break;				}				case TEXT: {					Text text = (Text)dragControl;					String s = text.getSelectionText();					if (s.length() == 0) {						event.doit = false;					} else {						dragDataText = s;					}					break;				}				case TREE: {					Tree tree = (Tree)dragControl;					TreeItem[] items = tree.getSelection();					if (items.length == 0) {						event.doit = false;					} else {						StringBuffer buffer = new StringBuffer();						for (int i = 0; i < items.length; i++) {							buffer.append(items[i].getText());							if (items.length > 1 && i < items.length - 1) {								buffer.append("\n");							}						}						dragDataText = buffer.toString();					}					break;				}				case CANVAS: {					String[] strings = (String[])dragControl.getData("STRINGS");					if (strings == null || strings.length == 0) {						event.doit = false;					} else {						StringBuffer buffer = new StringBuffer();						for (int i = 0; i < strings.length; i++) {							buffer.append(strings[i]);							if (strings.length > 1 && i < strings.length - 1) {								buffer.append("\n");							}						}						dragDataText = buffer.toString();					}					break;				}				case LABEL: {					Label label = (Label)dragControl;					String string = label.getText();					if (string.length() == 0) {						event.doit = false;					} else {						dragDataText = string;					}					break;				}				case LIST: {					List list = (List)dragControl;					String[] selection = list.getSelection();					if (selection.length == 0) {						event.doit = false;					} else {						StringBuffer buffer = new StringBuffer();						for (int i = 0; i < selection.length; i++) {							buffer.append(selection[i]);							if (selection.length > 1 && i < selection.length - 1) {								buffer.append("\n");							}						}						dragDataText = buffer.toString();					}					break;				}				default:					throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED);			}			if (dragDataText != null) {				dragDataRTF = "{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\cf1\\b "+dragDataText+"}";			}						for (int i = 0; i < dragTypes.length; i++) {				if (dragTypes[i] instanceof TextTransfer && dragDataText == null) {					event.doit = false;				}				if (dragTypes[i] instanceof RTFTransfer && dragDataRTF == null) {					event.doit = false;				}				if (dragTypes[i] instanceof FileTransfer && (dragDataFiles == null || dragDataFiles.length == 0)) {					event.doit = false;				}			}		}	});}private void createDragTypes(Composite parent) {	parent.setLayout(new GridLayout());	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()) {				addDragTransfer(TextTransfer.getInstance());						} else {				removeDragTransfer(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()) {				addDragTransfer(RTFTransfer.getInstance());						} else {				removeDragTransfer(RTFTransfer.getInstance());			}		}	});		Composite c = new Composite(parent, SWT.NONE);	c.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));	GridLayout layout = new GridLayout(3, false);	layout.marginHeight = layout.marginWidth = 0;	c.setLayout(layout);	b = new Button(c, SWT.CHECK);	b.setText("File Transfer");	b.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			if (b.getSelection()) {				addDragTransfer(FileTransfer.getInstance());						} else {				removeDragTransfer(FileTransfer.getInstance());			}		}	});	b = new Button(c, SWT.PUSH);	b.setText("Select File(s)");	b.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -