`

ViewPart的基本操作

阅读更多

public class AddressView extends ViewPart {
	private TableViewer viewer;
	private Action action1;
	private Action action2;
	private Action doubleClickAction;

	class ViewContentProvider implements 

IStructuredContentProvider {
		public void inputChanged(Viewer v, Object 

oldInput, Object newInput) {
		}
		public void dispose() {
		}
		public Object[] getElements(Object parent) {
			return (String[])parent;
		}
	}
	class ViewLabelProvider extends LabelProvider implements 

ITableLabelProvider {
		public String getColumnText(Object obj, int 

index) {
			return getText(obj);
		}
		public Image getColumnImage(Object obj, int 

index) {
			return getImage(obj);
		}
		public Image getImage(Object obj) {
			return PlatformUI.getWorkbench().
					getSharedImages

().getImage(ISharedImages.IMG_OBJ_ELEMENT);
		}
	}
	class NameSorter extends ViewerSorter {
	}

	public AddressView() {
	}

	public void createPartControl(Composite parent) {
		viewer = new TableViewer(parent, SWT.MULTI | 

SWT.H_SCROLL | SWT.V_SCROLL);
		viewer.setContentProvider(new 

ViewContentProvider());
		viewer.setLabelProvider(new ViewLabelProvider

());
		viewer.setSorter(new NameSorter());
		viewer.setInput(new String[] { "One", "Two", 

"Three" });
		makeActions();
		hookContextMenu();
		hookDoubleClickAction();
		contributeToActionBars();
	}

	private void hookContextMenu() {
		MenuManager menuMgr = new MenuManager

("#PopupMenu");
		menuMgr.setRemoveAllWhenShown(true);
		menuMgr.addMenuListener(new IMenuListener() {
			public void menuAboutToShow(IMenuManager 

manager) {
				

AddressView.this.fillContextMenu(manager);
			}
		});
		Menu menu = menuMgr.createContextMenu

(viewer.getControl());
		viewer.getControl().setMenu(menu);
		getSite().registerContextMenu(menuMgr, viewer);
	}

	private void contributeToActionBars() {
		IActionBars bars = getViewSite().getActionBars

();
		fillLocalPullDown(bars.getMenuManager());
		fillLocalToolBar(bars.getToolBarManager());
	}

	private void fillLocalPullDown(IMenuManager manager) {
		manager.add(action1);
		manager.add(new Separator());
		manager.add(action2);
	}

	private void fillContextMenu(IMenuManager manager) {
		manager.add(action1);
		manager.add(action2);
		manager.add(new Separator

(IWorkbenchActionConstants.MB_ADDITIONS));
	}
	
	private void fillLocalToolBar(IToolBarManager manager) {
		manager.add(action1);
		manager.add(action2);
	}

	private void makeActions() {
		action1 = new Action() {
			public void run() {
				showMessage("Action 1 

executed");
			}
		};
		action1.setText("Action 1");
		action1.setToolTipText("Action 1 tooltip");
		action1.setImageDescriptor

(PlatformUI.getWorkbench().getSharedImages().
			getImageDescriptor

(ISharedImages.IMG_OBJS_INFO_TSK));
		
		action2 = new Action() {
			public void run() {
				showMessage("Action 2 

executed");
			}
		};
		action2.setText("Action 2");
		action2.setToolTipText("Action 2 tooltip");
		action2.setImageDescriptor

(PlatformUI.getWorkbench().getSharedImages().
				getImageDescriptor

(ISharedImages.IMG_OBJS_INFO_TSK));
		doubleClickAction = new Action() {
			public void run() {
				ISelection selection = 

viewer.getSelection();
				Object obj = 

((IStructuredSelection)selection).getFirstElement();
				showMessage("Double-click 

detected on "+obj.toString());
			}
		};
	}

	private void hookDoubleClickAction() {
		viewer.addDoubleClickListener(new 

IDoubleClickListener() {
			public void doubleClick(DoubleClickEvent 

event) {
				doubleClickAction.run();
			}
		});
	}
	private void showMessage(String message) {
		MessageDialog.openInformation(
			viewer.getControl().getShell(),
			"Test01",
			message);
	}

	public void setFocus() {
		viewer.getControl().setFocus();
	}
}
 
分享到:
评论

相关推荐

    Eclipse RCP程序ViewPart占位功能的实现

    效果图见http://blog.csdn.net/leopardaa521/archive/2010/08/21/5827883.aspx

    使用EclipseRCP进行桌面程序开发(三):视图和透视图

    首先我们来介绍一下视图,建立一个视图其实非常简单,只要从org.eclipse.ui.part.ViewPart继承一个类,然后在plugin.xml中进行视图的配置。其中,向视图中添加控件的操作,我们即可以手工编写,也可以使用Designer...

    Eclipse插件开发笔记—PDF—带目录

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    PluginPDF&Notes.7z

    包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective) GEF MVC (Mode, Figure, EditPart) (交互层,模型与图形元素映射,工作台交互处理) View: Draw2d 图形化界面 Control 核心 ...

    Eclipse插件开发学习笔记

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(P 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Eclipse+插件开发学习笔记

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse+插件开发学习笔记.part2

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    GEF_Demo_Code20170307

    GEF_Demo_Code20170307,用adapter扩展点实现属性页配置;在ViewPart中(不是editor)使用GEF框架;

    《Eclipse插件开发学习笔记》源码

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    eclipse 插件开发01

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    eclipse 插件开发02

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse插件开发 学习笔记(第三四章下包含源码)

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse插件开发 学习笔记(第三四章上)

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse插件开发基础6-10

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse插件开发+学习笔记(完整 清晰) part1

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse插件开发学习笔记(第一章)

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    eclipse插件开发学习笔记_教程2

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse+插件开发 学习笔记(完整 清晰).part3.rar

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

    Eclipse 插件开发 学习笔记(完整 清晰).part2.rar

    第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...

Global site tag (gtag.js) - Google Analytics