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

📄 navigatorview.java

📁 一个专家资料的管理系统
💻 JAVA
字号:
package cn.com.likai.mms.navigator;

import java.util.List;

import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.part.ViewPart;

import cn.com.likai.mms.model.ITreeEntry;
import cn.com.likai.mms.search.SearchView;
import cn.com.likai.mms.system.LabelProviderAdapter;
import cn.com.likai.mms.system.MmsFactory;
import cn.com.likai.mms.system.TreeContentProviderAdapter;

public class NavigatorView extends ViewPart {
	public void createPartControl(Composite parent) {
		Composite topComp = new Composite(parent, SWT.NONE);
		topComp.setLayout(new FillLayout());
		TreeViewer tv = new TreeViewer(topComp, SWT.NONE);
		tv.setContentProvider(new MyContentProvider());// 自定义的内容器
		tv.setLabelProvider(new MyLabelProvider());// 自定义的标签器
		// 生成并输入结点树
		tv.setInput(MmsFactory.createNavigatorEntryTree());
		tv.addDoubleClickListener(new MyDoubleClickListener());
	}

	public void setFocus() {
	}

	// 自定义的标签器
	private static final class MyLabelProvider extends LabelProviderAdapter {
		public String getText(Object element) {
			return ((ITreeEntry) element).getName();
		}

		public Image getImage(Object element) {
			return ((NavigatorEntry) element).getImage();
		}
	}

	// 自定义的内容器
	private static final class MyContentProvider extends
			TreeContentProviderAdapter {
		public Object[] getElements(Object inputElement) {
			if (inputElement instanceof List) {
				return ((List) inputElement).toArray();
			} else {
				return new Object[0];
			}
		}

		public boolean hasChildren(Object element) {
			ITreeEntry entry = (ITreeEntry) element;
			return !entry.getChildren().isEmpty();
		}

		public Object[] getChildren(Object parentElement) {
			ITreeEntry entry = (ITreeEntry) parentElement;
			return entry.getChildren().toArray();
		}
	}

	private class MyDoubleClickListener implements IDoubleClickListener {
		public void doubleClick(DoubleClickEvent event) {
			IStructuredSelection sel = (IStructuredSelection) event
					.getSelection();
			NavigatorEntry entry = (NavigatorEntry) sel.getFirstElement();
			if (entry.getName().equals("个人资料检索")) {
				try{
					String viewId = SearchView.class.getName();
					IWorkbenchPage workbenchPage = getViewSite().getPage();
					//该方法的返回值是SearchView对象,它会自动判断视图是否打开
					//如果没有则创建视图,这时会执行视图类的createPartControl方法
					workbenchPage.showView(viewId);
				}catch(PartInitException e){e.printStackTrace();}
			}else if(entry.getName().equals("控制台")){
				IConsoleManager mgr = ConsolePlugin.getDefault().getConsoleManager();
				MessageConsole console = new MessageConsole("日志console",null);
				mgr.addConsoles(new IConsole[]{console});
				mgr.showConsoleView(console);
				
			}else {
				IEditorInput editorInput = entry.getEditorInput();
				String editorID = entry.getEditorId();
				// 如果editorInput或editorID为空则中断返回
				if (editorInput == null || editorID == null)
					return;
				// 取得IWorkbenchPage,并搜索使用editorInput对象对应的编辑器
				IWorkbenchPage workbenchPage = getViewSite().getPage();
				IEditorPart editor = workbenchPage.findEditor(editorInput);
				// 如果此编辑器已经存在,则将它设为当前编辑器,否则重新打开一个编辑器
				if (editor != null) {
					workbenchPage.bringToTop(editor);
				} else {
					try {
						editor = workbenchPage
								.openEditor(editorInput, editorID);
					} catch (PartInitException e2) {
						e2.printStackTrace();
					}
				}
			}
		}
	}

}

⌨️ 快捷键说明

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