📄 receiveview.java
字号:
/*******************************************************************************
* 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 + -