📄 myactiongroup.java
字号:
/*
* @author 陈勇 创建日期 2006-4-10
*
* 努力!
*/
package org.eclipse.rcp.browser;
import java.util.ArrayList;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.rcp.browser.MyInputDialog;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.actions.ActionGroup;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MyActionGroup extends ActionGroup {
private TreeViewer tv;
private Display display;
final ITreeEntry[] sourceObj = new ITreeEntry[1];// 暂存拖动源对象
final static String path = "lib/WWWroot.xml";
final Clipboard cb = new Clipboard(display);
/**
*
*/
public MyActionGroup(TreeViewer tv, Display display) {
this.tv = tv;
this.display = display;
}
public void fillContexMenu(IMenuManager mgr) {
MenuManager menuManager = (MenuManager) mgr;
menuManager.add(new OpenAction());
menuManager.add(new ExpandAction());
menuManager.add(new CollapseAction());
menuManager.add(new Separator());
menuManager.add(new CutTreeAction());
menuManager.add(new PasteTreeAction());
menuManager.add(new Separator());
menuManager.add(new AddEntryAction());
menuManager.add(new DelEntryAction());
menuManager.add(new ModifyEntryAction());
menuManager.add(new RefreshAction());
menuManager.add(new Separator());
menuManager.add(new HelpAction());
Tree tree = tv.getTree();
Menu menu = menuManager.createContextMenu(tree);
System.out.println("有菜单:" + menu.getItemCount());
tree.setMenu(menu);
}
private ITreeEntry getSelTreeEntry() {
IStructuredSelection selection = (IStructuredSelection) tv
.getSelection();
ITreeEntry obj = (ITreeEntry) selection.getFirstElement();
return obj;
}
private class OpenAction extends Action {
public OpenAction() {
setText("打开");
}
/*
* (非 Javadoc)
*
* @see org.eclipse.jface.action.IAction#run()
*/
public void run() {
// TODO 自动生成方法存根
super.run();
ITreeEntry obj = getSelTreeEntry();
if (obj instanceof RootWjj) {
tv.expandToLevel(obj, 1);
} else if (obj instanceof WjjEntity) {
tv.expandToLevel(obj, 1);
} else if (obj instanceof WzEntity) {
// 这里写打开browser的代码
String secondaryId=((WzEntity)obj).getName();
String URL=((WzEntity)obj).getPath();
IWorkbenchPage page=BrowserPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
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();
}
}
}
}
}
private class RefreshAction extends Action {
public RefreshAction() {
setText("刷新");
}
/*
* (非 Javadoc)
*
* @see org.eclipse.jface.action.IAction#run()
*/
public void run() {
// TODO 自动生成方法存根
super.run();
tv.setInput(DataFactory.createTreeData());
// tv.refresh();
}
}
private class ExpandAction extends Action {
public ExpandAction() {
setText("全展开");
}
/*
* (非 Javadoc)
*
* @see org.eclipse.jface.action.IAction#run()
*/
public void run() {
// TODO 自动生成方法存根
super.run();
ITreeEntry obj = getSelTreeEntry();
if (obj != null) {
tv.expandAll();// 只展开一层
}
}
}
private class CollapseAction extends Action {
public CollapseAction() {
setText("收缩");
}
/*
* (非 Javadoc)
*
* @see org.eclipse.jface.action.IAction#run()
*/
public void run() {
// TODO 自动生成方法存根
super.run();
ITreeEntry obj = getSelTreeEntry();
if (obj instanceof RootWjj) {
tv.collapseToLevel(obj, 1);
} else if (obj instanceof WjjEntity) {
tv.collapseToLevel(obj, 1);
} else if (obj instanceof WzEntity) {
tv.collapseAll();
}
}
}
private class CutTreeAction extends Action {
public CutTreeAction() {
setText("剪切");
}
public void run() {
super.run();
ITreeEntry obj = getSelTreeEntry();
if (obj instanceof RootWjj) {
return;
} else if (obj instanceof WjjEntity) {
return;
} else if (obj instanceof WzEntity) {
Object[] data = new Object[] { obj.getName() };
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
cb.setContents(data, types);
sourceObj[0] = obj;
try {
WzXml.delWzXML(path, ((WzEntity) obj).getName());
} catch (Exception e) {
// TODO 自动生成 catch 块
MessageDialog.openError(null, "剪切错误", e.toString());
return;
}
tv.remove(obj);
}
}
}
private class PasteTreeAction extends Action {
public PasteTreeAction() {
setText("粘贴");
}
public void run() {
super.run();
ITreeEntry obj = getSelTreeEntry();
if (obj instanceof RootWjj) {
return;
} else if (obj instanceof WjjEntity) {
if (cb.getContents(TextTransfer.getInstance()) != null) {
String str = (String) (cb.getContents(TextTransfer
.getInstance()));
WzEntity childObj = new WzEntity(str,
((WzEntity) sourceObj[0]).getPath(),
(WjjEntity) obj);
try {
WzXml.AddWzXML(path, obj.getName(), childObj);
} catch (Exception e) {
// TODO 自动生成 catch 块
MessageDialog.openError(null, "剪切错误", e.toString());
return;
}
if(!obj.equals(sourceObj[0].getParent())){//除掉本身文件夹粘贴时产生两个相同的站点视图模型
if (!new TreeViewerContentProvider().hasChildren(obj)) {//我以前写的解决“+”问题,在这里只能用我写的解决。陈刚写的不管。
ArrayList list = new ArrayList();
list.add(childObj);
obj.setChildren(list);
}
tv.setExpandedState(obj,true);
tv.add(obj, childObj);
}else{
tv.setExpandedState(obj,true);
tv.refresh(obj);
}
cb.clearContents();
} else {
return;
}
} else if (obj instanceof WzEntity) {
if (cb.getContents(TextTransfer.getInstance()) != null) {
String str = (String) (cb.getContents(TextTransfer
.getInstance()));
WzEntity childObj = new WzEntity(str,
((WzEntity) sourceObj[0]).getPath(),
(WjjEntity) obj.getParent());
try {
WzXml.AddWzXML(path, ((WjjEntity) obj.getParent())
.getName(), childObj);
} catch (Exception e) {
// TODO 自动生成 catch 块
MessageDialog.openError(null, "剪切错误", e.toString());
return;
}
tv.add(obj.getParent(), childObj);
cb.clearContents();
} else {
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -