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

📄 receiveview.java

📁 基于eclipse|rcp的浏览器,另完成加入了收藏夹功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
 * Copyright (c) 2004, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.rcp.browser;


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.Tree;
import org.eclipse.swt.widgets.TreeItem;


import org.eclipse.ui.IWorkbenchPage;

import org.eclipse.ui.part.ViewPart;


/**
 * Mockup of a browser history view.
 * For now, it's just the sample view generated by PDE.
 */
public class ReceiveView extends ViewPart {
	String path="lib/WWWroot.xml";

	private TextTransfer textTransfer;
	private TreeViewer tv;
	private FileTransfer fileTransfer;
	private Display display;

	
	/**
	 * This is a callback that will allow us
	 * to create the viewer and initialize it.
	 */
	public void createPartControl(Composite parent) {
//		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
//		drillDownAdapter = new DrillDownAdapter(viewer);
// viewer.setContentProvider(new ViewContentProvider());
// viewer.setLabelProvider(new ViewLabelProvider());
// viewer.setInput(getViewSite());
// makeActions();
//		hookContextMenu();
// hookDoubleClickAction();
		display=getSite().getShell().getDisplay();
		final Composite composite = new Composite(parent, SWT.NONE);
		composite.setLayout(new FillLayout());

		tv = new TreeViewer(composite, SWT.BORDER);
		tv.setContentProvider(new TreeViewerContentProvider());
		tv.setLabelProvider(new TreeViewerLabelProvider());
//		drillDownAdapter = new DrillDownAdapter(tv);
		Object inputObj = DataFactory.createTreeData();
		MyActionGroup actionGroup = new MyActionGroup(tv,this.getSite().getShell().getDisplay());
		actionGroup.fillContexMenu(new MenuManager());
		tv.setInput(inputObj);
		// 写双击代码:
//		hookContextMenu();
		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();
//					}
					String secondaryId=((WzEntity)obj).getName();
					String URL=((WzEntity)obj).getPath();
					IWorkbenchPage page=getViewSite().getPage();					
					if(page!=null){
						try {		
//							page.bringToTop(view2);
							((BrowserView)page.showView(IBrowserConstants.BROWSER_VIEW_ID,secondaryId, IWorkbenchPage.VIEW_ACTIVATE)).getBrowser().setUrl(URL);
//							
						} catch (Exception e) {
							// TODO Auto-generated catch block
							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;
					}

⌨️ 快捷键说明

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