亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? treeviewer1.java

?? swt帶dnd應用的網址收藏夾源碼
?? JAVA
字號:
/*
 * @author 陳勇 創建日期 2006-4-10
 *
 * 努力!
 */
package cn.com.javachen.myxml.xmltree;

import java.io.IOException;

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

import cn.com.javachen.myxml.wz.DataFactory;
import cn.com.javachen.myxml.wz.ITreeEntry;
import cn.com.javachen.myxml.wz.RootWjj;
import cn.com.javachen.myxml.wz.WjjEntity;
import cn.com.javachen.myxml.wz.WzEntity;
import cn.com.javachen.myxml.wz.WzXml;

/**
 * @author Administrator
 * 
 * TODO 要更改此生成的類型注釋的模板,請轉至 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
public class TreeViewer1 {
	private String path = "./lib/WWWroot.xml";

	private TextTransfer textTransfer;

	private FileTransfer fileTransfer;

	public static void main(String[] args) {
		try {
			TreeViewer1 window = new TreeViewer1();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void open() {
		final Display display = Display.getDefault();
		final Shell shell = new Shell();
		shell.setLayout(new FillLayout());
		shell.setSize(171, 375);
		shell.setText("網址記錄器--(作者:陳勇)");

		shell.open();

		final Composite composite = new Composite(shell, SWT.NONE);
		composite.setLayout(new FillLayout());

		final TreeViewer tv = new TreeViewer(composite, SWT.BORDER);
		tv.setContentProvider(new TreeViewerContentProvider());
		tv.setLabelProvider(new TreeViewerLabelProvider());

		Object inputObj = DataFactory.createTreeData();
		MyActionGroup actionGroup = new MyActionGroup(tv,display);
		actionGroup.fillContexMenu(new MenuManager());
		tv.setInput(inputObj);
		// 寫雙擊代碼:

		tv.addDoubleClickListener(new IDoubleClickListener() {
			public void doubleClick(DoubleClickEvent event) { // TODO
				// 自動生成方法存根
				ISelection selection = tv.getSelection();
				final Object obj = ((IStructuredSelection) selection)
						.getFirstElement();
				if (obj instanceof RootWjj) {
					if (!tv.getExpandedState(obj)) {
						tv.expandToLevel(obj, 1);
					} else {
						tv.collapseToLevel(obj, 1);
					}
				} else if (obj instanceof WjjEntity) {
					if (!tv.getExpandedState(obj)) {
						tv.expandToLevel(obj, 1);
					} else {
						tv.collapseToLevel(obj, 1);
					}
				} else if (obj instanceof WzEntity) {
					// 這里寫打開browser的代碼

					String path = ((WzEntity) obj).getPath();
					try {
						Runtime.getRuntime().exec(
								"cmd /c start IEXPLORE.EXE  \"" + path + "\"");
					} catch (IOException e) {
						e.printStackTrace();
					}

				}

			}
		});

		textTransfer = TextTransfer.getInstance();
		fileTransfer = FileTransfer.getInstance();

		final DragSource source = new DragSource(tv.getTree(), DND.DROP_MOVE);
		final TreeItem[] dragSourceItem = new TreeItem[1];
		final ITreeEntry[] sourceObj = new ITreeEntry[1];// 暫存拖動源對象
		source.setTransfer(new Transfer[] { textTransfer });// 指定允許的傳輸類型
		source.addDragListener(new DragSourceListener() {

			public void dragFinished(DragSourceEvent event) {
				// TODO 自動生成方法存根
				if (event.detail == DND.DROP_MOVE) {
					// if(((DragSource)event.widget).getControl() instanceof
					// Tree){
					// IStructuredSelection selection = (IStructuredSelection)
					// tv.getSelection();
					// ITreeEntry obj = (ITreeEntry)
					// selection.getFirstElement();
					// tv.remove(obj);
					// }
					dragSourceItem[0].dispose();
					dragSourceItem[0] = null;
				}
			}

			public void dragSetData(DragSourceEvent event) {
				// TODO 自動生成方法存根
				// if(TextTransfer.getInstance().isSupportedType(event.dataType)){
				// if(((DragSource)event.widget).getControl() instanceof Tree){
				// IStructuredSelection selection = (IStructuredSelection)
				// tv.getSelection();
				// ITreeEntry obj = (ITreeEntry) selection.getFirstElement();
				// event.data=obj;
				// }
				// }
				event.data = dragSourceItem[0].getText();
			}

			public void dragStart(DragSourceEvent event) {
				// TODO 自動生成方法存根
				if (((DragSource) event.widget).getControl() instanceof Tree) {
					TreeItem[] selectionTree = tv.getTree().getSelection();
					IStructuredSelection selection = (IStructuredSelection) tv
							.getSelection();
					ITreeEntry obj = (ITreeEntry) selection.getFirstElement();
					if (obj instanceof WjjEntity) {
						event.doit = false;
					} else if (obj instanceof RootWjj) {
						event.doit = false;
					} else if (obj instanceof WzEntity) {
						dragSourceItem[0] = selectionTree[0];
						sourceObj[0] = obj;
						event.doit = true;
					}
				}
			}

		});

		// 將dropTable指定為Drop Target,
		DropTarget target = new DropTarget(tv.getControl(), DND.DROP_MOVE
				| DND.DROP_DEFAULT);
		target.setTransfer(new Transfer[] { textTransfer });
		target.addDropListener(new DropTargetListener() {

			public void dragEnter(DropTargetEvent event) {
				// TODO 自動生成方法存根

				if (event.detail == DND.DROP_DEFAULT) {
					// 給event.detail賦的值必須是event.operations中的一個,event.operations中
					// 的操作都是DragSource所支持的.
					if ((event.operations & DND.DROP_MOVE) != 0) {
						event.detail = DND.DROP_MOVE;
					} else {
						event.detail = DND.DROP_NONE;
					}
				}

				// drop target可以選擇性的按照傳輸類型來處理.dragEnter event有兩個屬性
				// event.currentType 是應用設置的默認類型,以TransferData對象形式表現,
				// event.dataTypes 是drag source支持的所有類型的列表,以TransferData數組形式表現,
				// 我們可以將event.currentType設置成event.dataTypes中的任意一個。
				// 這些屬性也可以在dragOver, dragOperationChanged以及dropAccept事件中設置。

				for (int i = 0; i < event.dataTypes.length; i++) {
					if (textTransfer.isSupportedType(event.dataTypes[i])) {
						event.currentDataType = event.dataTypes[i];
						// 只允許Move
						if (event.detail != DND.DROP_MOVE) {
							event.detail = DND.DROP_NONE;
						}
						break;
					}
				}
			}

			public void dragLeave(DropTargetEvent event) {
				// TODO 自動生成方法存根
				event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
				if (textTransfer.isSupportedType(event.currentDataType)) {
					String t = (String) (textTransfer
							.nativeToJava(event.currentDataType));
					if (t != null) {
						System.out.println(t);
					}
				}
			}

			public void dragOperationChanged(DropTargetEvent event) {
				// TODO 自動生成方法存根
				if (event.detail == DND.DROP_DEFAULT) {
					event.detail = DND.DROP_MOVE;
				} else {
					event.detail = DND.DROP_NONE;
				}

				// allow text to be moved but files should only be copied
				if (fileTransfer.isSupportedType(event.currentDataType)) {
					if (event.detail != DND.DROP_MOVE) {
						event.detail = DND.DROP_NONE;
					}
				}
			}

			public void dragOver(DropTargetEvent event) {
				// TODO 自動生成方法存根
				event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
				if (event.item != null) {
					TreeItem item = (TreeItem) event.item;
					Point pt = display
							.map(null, tv.getTree(), event.x, event.y);
					Rectangle bounds = item.getBounds();
					if (pt.y < bounds.y + bounds.height / 3) {
						event.feedback |= DND.FEEDBACK_INSERT_BEFORE;
					} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
						event.feedback |= DND.FEEDBACK_INSERT_AFTER;
					} else {
						event.feedback |= DND.FEEDBACK_SELECT;
					}
				}
			}

			public void drop(DropTargetEvent event) {
				// TODO 自動生成方法存根

				if (event.data == null) {
					event.detail = DND.DROP_NONE;
					return;
				}
				String text = (String) event.data;
				if (event.item == null) {
					event.detail = DND.DROP_NONE;
					// TreeItem item = new TreeItem(tv.getTree(), SWT.NONE);
					// item.setText(text);
					// item.setData(sourceObj[0]);
					// item.setImage(TreeImages.getImage("URLIMAGE"));
				} else {
					TreeItem item = (TreeItem) event.item;

					Point pt = display
							.map(null, tv.getTree(), event.x, event.y);
					Rectangle bounds = item.getBounds();
					TreeItem parent = item.getParentItem();
					if (parent != null) {
//						if (pt.y < bounds.y + bounds.height / 3) {//寫完后發現幾種情況下代碼一致,取消一大半
							// event.detail = DND.DROP_NONE;
							int i = WzXml.FindWjjXml(path, item.getText());
							if (i != -1) {
								TreeItem newItem = new TreeItem(item, SWT.NONE);
								newItem.setText(text);
								newItem.setData(sourceObj[0]);
								newItem.setImage(TreeImages
										.getImage("URLIMAGE"));
								// 寫刪除增加代碼,實現xml存儲
								System.out.println("選項中加1" + item.getText());
								try {
									WzXml.delWzXML(path, text);
									WzXml.AddWzXML(path, item.getText(),
											(WzEntity) sourceObj[0]);
								} catch (Exception e) {
									// TODO 自動生成 catch 塊
									e.printStackTrace();
								}
							} else {
								TreeItem newItem = new TreeItem(parent,
										SWT.NONE);
								newItem.setText(text);
								newItem.setData(sourceObj[0]);
								newItem.setImage(TreeImages
										.getImage("URLIMAGE"));
								// 寫刪除增加代碼,實現xml存儲
								System.out.println("選項中加2" + item.getText());
								try {
									WzXml.delWzXML(path, text);
									WzXml.AddWzXML(path, parent.getText(),
											(WzEntity) sourceObj[0]);
								} catch (Exception e) {
									// TODO 自動生成 catch 塊
									e.printStackTrace();
								}
							}
//						} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
//							int i = WzXml.FindWjjXml(path, item.getText());
//							if (i != -1) {
//								TreeItem newItem = new TreeItem(item, SWT.NONE);
//								newItem.setText(text);
//								newItem.setData(sourceObj[0]);
//								newItem.setImage(TreeImages
//										.getImage("URLIMAGE"));
//								// 寫刪除增加代碼,實現xml存儲
//								System.out.println("選項中加5" + item.getText());
//								try {
//									WzXml.delWzXML(path, text);
//									WzXml.AddWzXML(path, item.getText(),
//											(WzEntity) sourceObj[0]);
//								} catch (Exception e) {
//									// TODO 自動生成 catch 塊
//									e.printStackTrace();
//								}
//							} else {
//								TreeItem newItem = new TreeItem(parent,
//										SWT.NONE);
//								newItem.setText(text);
//								newItem.setData(sourceObj[0]);
//								newItem.setImage(TreeImages
//										.getImage("URLIMAGE"));
//								// 寫刪除增加代碼,實現xml存儲
//								System.out.println("選項中加6" + item.getText());
//								try {
//									WzXml.delWzXML(path, text);
//									WzXml.AddWzXML(path, parent.getText(),
//											(WzEntity) sourceObj[0]);
//								} catch (Exception e) {
//									// TODO 自動生成 catch 塊
//									e.printStackTrace();
//								}
//							}
//						} else {
//							// event.detail = DND.DROP_NONE;
//
//							int i = WzXml.FindWjjXml(path, item.getText());
//							if (i != -1) {
//								TreeItem newItem = new TreeItem(item, SWT.NONE);
//								newItem.setText(text);
//								newItem.setData(sourceObj[0]);
//								newItem.setImage(TreeImages
//										.getImage("URLIMAGE"));
//								// 寫刪除增加代碼,實現xml存儲
//								System.out.println("選項中加3" + item.getText());
//								try {
//									WzXml.delWzXML(path, text);
//									WzXml.AddWzXML(path, item.getText(),
//											(WzEntity) sourceObj[0]);
//								} catch (Exception e) {
//									// TODO 自動生成 catch 塊
//									e.printStackTrace();
//								}
//
//							} else {
//								TreeItem newItem = new TreeItem(parent,
//										SWT.NONE);
//								newItem.setText(text);
//								newItem.setData(sourceObj[0]);
//								newItem.setImage(TreeImages
//										.getImage("URLIMAGE"));
//								// 寫刪除增加代碼,實現xml存儲
//								System.out.println("選項中加4" + item.getText());
//								try {
//									WzXml.delWzXML(path, text);
//									WzXml.AddWzXML(path, parent.getText(),
//											(WzEntity) sourceObj[0]);
//								} catch (Exception e) {
//									// TODO 自動生成 catch 塊
//									e.printStackTrace();
//								}
//							}
//						}

					} else {
						// TreeItem[] items = tv.getTree().getItems();
						// int index = 0;
						// for (int i = 0; i < items.length; i++) {
						// if (items[i] == item) {
						// index = i;
						// break;
						// }
						// }
						if (pt.y < bounds.y + bounds.height / 3) {
							event.detail = DND.DROP_NONE;
							// TreeItem newItem = new TreeItem(tv.getTree(),
							// SWT.NONE, index);
							// newItem.setText(text);
							// newItem.setData(sourceObj[0]);
							// newItem.setImage(TreeImages.getImage("URLIMAGE"));
						} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
							event.detail = DND.DROP_NONE;
							// TreeItem newItem = new TreeItem(tv.getTree(),
							// SWT.NONE, index+1);
							// newItem.setText(text);
							// newItem.setData(sourceObj[0]);
							// newItem.setImage(TreeImages.getImage("URLIMAGE"));
						} else {
							event.detail = DND.DROP_NONE;
							// TreeItem newItem = new TreeItem(tv.getTree(),
							// SWT.NONE);
							// newItem.setText(text);
							// newItem.setData(sourceObj[0]);
							// newItem.setImage(TreeImages.getImage("URLIMAGE"));
						}
					}

				}

			}

			public void dropAccept(DropTargetEvent event) {
				// TODO 自動生成方法存根

			}

		});
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}

	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区蜜桃| 国产.欧美.日韩| 国产毛片一区二区| 播五月开心婷婷综合| 日韩欧美在线一区二区三区| 亚洲另类色综合网站| 高清不卡一区二区| 日韩美女一区二区三区| 香蕉av福利精品导航| 99久久er热在这里只有精品66| 日韩久久久精品| 日韩不卡一区二区三区| 欧美性受极品xxxx喷水| 国产精品久久三| 国产精品一区二区在线播放| 欧美高清视频一二三区| 亚洲一区二区三区激情| 成人黄色国产精品网站大全在线免费观看| 欧美一区二区在线不卡| 亚洲一区二区三区精品在线| 色婷婷亚洲综合| 自拍偷自拍亚洲精品播放| 成人av中文字幕| 久久久精品综合| 国产一区二区三区久久久| 欧美电视剧免费观看| 久久国产夜色精品鲁鲁99| 欧美一区二区三区免费视频| 天天影视网天天综合色在线播放| 91久久精品一区二区二区| 国产精品国产三级国产普通话三级| 国产一区二区三区黄视频| 久久久精品国产免费观看同学| 久久99精品一区二区三区三区| 欧美一区二区播放| 久久99这里只有精品| 精品免费视频一区二区| 国精产品一区一区三区mba桃花 | 国产精品 欧美精品| 久久无码av三级| 国产精品系列在线观看| 国产日产欧美一区| 风间由美中文字幕在线看视频国产欧美| 精品国产乱码久久久久久牛牛 | 视频一区二区三区入口| 欧美视频一区二区在线观看| 亚洲成人在线免费| 日韩区在线观看| 国产一区91精品张津瑜| 中文字幕的久久| 91国模大尺度私拍在线视频| 日韩激情一二三区| 2021久久国产精品不只是精品| 国产精品一线二线三线| 亚洲另类春色国产| 欧美一区二区三区在| 国产一区二区主播在线| 亚洲视频在线一区观看| 欧美日韩高清影院| 国产伦精品一区二区三区在线观看| 中文字幕二三区不卡| 欧美日韩一区二区在线观看视频 | 一本一本大道香蕉久在线精品 | 日韩一区二区在线免费观看| 久久av中文字幕片| 亚洲日穴在线视频| 欧美xxxx在线观看| 99精品视频一区| 美女视频一区在线观看| 自拍偷拍国产亚洲| 欧美午夜电影一区| 国产美女精品人人做人人爽| 亚洲自拍与偷拍| 久久精品视频一区二区| 欧美视频一区二| 成人av在线一区二区三区| 图片区日韩欧美亚洲| 国产精品理伦片| 欧美精品一区二区久久婷婷| 色婷婷综合久久| 高清在线观看日韩| 日韩av中文字幕一区二区三区| 国产精品国产三级国产普通话99| 欧美一级二级三级乱码| 欧美亚洲综合一区| eeuss鲁片一区二区三区在线观看| 蜜臀av一区二区三区| 亚洲精品日产精品乱码不卡| 久久青草欧美一区二区三区| 欧美浪妇xxxx高跟鞋交| zzijzzij亚洲日本少妇熟睡| 精品写真视频在线观看| 日韩精品1区2区3区| 一区二区三区四区在线播放| 欧美韩国日本综合| 久久尤物电影视频在线观看| 宅男在线国产精品| 欧美男女性生活在线直播观看| 成人精品鲁一区一区二区| 精品一区二区综合| 日产精品久久久久久久性色| 亚洲福中文字幕伊人影院| 亚洲人快播电影网| 日韩一区欧美一区| 中文字幕一区二区三区四区| 久久网这里都是精品| 日韩精品一区二| 精品日产卡一卡二卡麻豆| 欧美精选午夜久久久乱码6080| 欧洲人成人精品| 欧美性猛交xxxx乱大交退制版| 色综合视频在线观看| 一本大道久久精品懂色aⅴ| av电影在线观看一区| 成人av小说网| 91麻豆蜜桃一区二区三区| 91原创在线视频| 91成人免费电影| 欧美性一区二区| 91精品福利在线一区二区三区| 91精品中文字幕一区二区三区| 欧美精品v国产精品v日韩精品 | 欧美在线视频日韩| 欧美私人免费视频| 在线成人小视频| 日韩欧美你懂的| 国产女人水真多18毛片18精品视频 | 在线视频观看一区| 欧美在线观看你懂的| 欧美日韩国产精品成人| 日韩欧美在线影院| 久久色在线观看| 中文字幕亚洲在| 亚洲高清久久久| 国内外成人在线| a4yy欧美一区二区三区| 精品视频一区二区三区免费| 欧美一区二区三区不卡| 日本一区二区三区国色天香| 中文字幕永久在线不卡| 天天亚洲美女在线视频| 国产一区二区在线影院| 一本一本大道香蕉久在线精品| 欧美电影在线免费观看| 久久综合色之久久综合| 亚洲免费观看在线视频| 免费在线观看成人| 99精品欧美一区二区蜜桃免费| 欧美日韩在线播放三区四区| 久久久久久久久久久久电影 | 久久福利资源站| 99久久综合精品| 日韩视频永久免费| 中文字幕中文字幕在线一区| 天天综合色天天| 91色婷婷久久久久合中文| 精品国产免费人成电影在线观看四季| 亚洲日本免费电影| 国产露脸91国语对白| 欧美日韩一区二区三区四区五区| 国产喂奶挤奶一区二区三区| 亚洲第一主播视频| 91在线精品一区二区三区| 日韩一区二区高清| 依依成人精品视频| 国产成人综合网| 日韩一区二区三区在线| 亚洲三级视频在线观看| 激情小说欧美图片| 777奇米成人网| 亚洲久本草在线中文字幕| 国产精品456| 精品久久久久久久人人人人传媒| 玉足女爽爽91| eeuss鲁片一区二区三区在线看| 精品sm在线观看| 奇米一区二区三区av| 欧美日韩一区小说| 日韩欧美的一区| 亚洲男同性视频| 成人国产免费视频| 久久网站热最新地址| 亚洲成人av福利| 欧美午夜电影在线播放| 国产精品黄色在线观看| 国产福利一区在线| 国产视频一区二区在线| 国产制服丝袜一区| 欧美va在线播放| 国内精品写真在线观看| 精品国产麻豆免费人成网站| 另类综合日韩欧美亚洲| 91精品婷婷国产综合久久竹菊| 亚洲一卡二卡三卡四卡 | 麻豆91免费观看| 日韩一卡二卡三卡| 蜜臀91精品一区二区三区| 欧美精品aⅴ在线视频| 美腿丝袜亚洲一区| 精品日韩在线观看|