`

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占位功能的实现

    首先,我们需要理解ViewPart的基本概念。在Eclipse RCP中,ViewPart是用户界面中的一个组件,它通常显示特定的数据或提供交互式操作。每个ViewPart都有自己的ID和标签,可以被用户通过工作台(Workbench)的视图菜单...

    GEF_Demo_Code20170307

    - `test.gef.hello`:可能是一个基础示例,用于展示GEF的基本用法,比如创建图形元素、连接线以及基本的拖拽和缩放操作。 - `test.gef.demo`:可能是一个更复杂的示例,展示了如何在ViewPart中集成GEF,以及适配器...

    rcp的文本编辑器的实例

    在这个实例中,我们将深入探讨如何在RCP环境中实现一个基本的文本编辑器,帮助初学者更好地理解这一过程。 首先,我们需要了解Eclipse RCP的基本结构。RCP应用通常由多个插件组成,每个插件都有特定的功能。在这个...

    RCP基本框架分析 Workbench是工作台,通俗地说就是代表用户界面的UI元素

    开发RCP应用时,需要对这些基本组件有深入理解,通过它们的组合和定制,可以构建出复杂且功能丰富的用户界面。同时,RCP应用通常还会涉及到Perspective(透视图)、Part(部件)、Action(动作)等其他重要概念,...

    Eclipse插件开发学习笔记(ch11-12)

    在实际开发过程中,除了掌握基本的视图和操作概念,还需要熟悉Eclipse的插件生命周期、事件模型、服务定位(Service Locator)以及模型-视图-控制器(MVC)设计模式等。同时,熟练使用Eclipse的插件开发工具,如PDE...

    SWT界面编程知识汇总

    例如,JFace的`ViewPart`和`Action`类可以帮助构建基于Eclipse RCP(Rich Client Platform)的应用程序。 总之,SWT界面编程涉及到创建Display、Shell,设置布局,创建和配置组件,以及处理用户事件。理解这些基本...

    Eclipse+Plug-in+开发参考.pdf

    在这个例子中,开发者会实现一个简单的视图类,继承自`ViewPart`,并在`createPartControl`方法中创建UI组件。完成编码后,通过Eclipse的Plug-in Development Environment(PDE)工具进行打包和安装,最后在Eclipse...

    eclipse rcp 客户端MySQL连接

    首先,确保你已经安装了以下基本组件: 1. Eclipse IDE for RCP and RAP Developers:这是开发Eclipse RCP应用程序的基础。 2. MySQL Connector/J:这是MySQL的Java驱动,用于Java应用程序通过JDBC连接到MySQL...

    2022年Eclipse插件开发之新手入门Java教程.docx

    具体操作包括从资源透视图导入外部插件,选择需要的源档案,如org.eclipse.ui,并创建新的插件项目。 在创建插件项目时,你需要指定项目名称,例如com.huangdong.examples.helloworld,并确保选择了创建空白插件...

    Eclipse RCP应用系统开发方法与实战(第四章)

    1. 创建视图:通过继承ViewPart并实现其方法来创建自定义视图,如绘制图形或显示数据。 2. 创建编辑器:通过实现IEditorPart接口,我们可以创建用于编辑数据的定制编辑器,例如文本编辑器或图像编辑器。 3. 定义透视...

    SWT And JFace

    2. **视图和编辑器**:JFace为构建视图和编辑器提供了便利的类和接口,如ViewPart和EditorPart,帮助开发者快速实现功能丰富的界面。 3. **对话框和表单**:JFace提供了对话框和表单的构建工具,如Wizard和Dialog,...

    实现 RCP 应用程序的步骤

    通过新建一个类继承自`ViewPart`,并重写其`createPartControl()`方法,定义视图的显示内容和行为。 5. **添加菜单和工具栏** 使用`plugin.xml`配置菜单和工具栏,关联到相应的操作。操作(Action)是Eclipse RCP...

    java程序设计之swt教程

    JFace的`ViewPart`和`EditorPart`类可以帮助构建Eclipse插件和RCP(Rich Client Platform)应用程序。 学习SWT教程时,可以按照以下步骤进行: 1. 理解SWT的基本结构和组件,包括控件、容器和布局。 2. 学习如何...

    SWT/JFACE API

    1. **控件**:SWT提供了一系列基本和复杂的控件,如`Button`, `Text`, `Label`, `Table`, `Composite`, `Shell`等,开发者可以利用这些控件构建用户界面。 2. **布局管理**:SWT支持多种布局管理器,如`FillLayout`,...

    swt/jface实例开发

    5. **视图管理**:JFace的ViewPart类简化了工作台视图的实现,支持动态添加和移除视图。 这份【SWT/JFace实例开发】资源可能涵盖了以下内容: 1. **基础控件的使用**:如何创建和配置SWT和JFace的基本组件,如...

    eclipse插件开发-编辑器详解

    除了基本的打开操作之外,`IWorkbenchPage`还提供了一些方法来管理编辑器的生命周期: - **activate()**:激活指定的编辑器。 ```java public void activate(IEditorReference reference); ``` - **...

    SWT/JFACE客户端登录窗口例子

    在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...

    一个简单的Eclipse RCP 源码示例

    - `ViewPart`:实现自定义视图,展示特定信息。 - `EditorPart`:实现自定义编辑器,处理文件或数据编辑。 - `Action` 和 `Handler`:实现自定义操作和处理器。 理解并分析这个源码示例,可以帮助你掌握如何创建...

    Eclipse_Swt_Jface_核心应用_part10--15_of_19

    总结起来,"Eclipse_Swt_Jface_核心应用_part10--15_of_19"的学习涵盖了SWT的基本组件和事件处理,以及JFace的高级特性,如数据绑定、视图和对话框。通过这些知识,开发者能够构建出高效、美观且易于维护的Eclipse...

    EclipseRCP四常用技术基础知识PPT课件.pptx

    - **View**:显示状态信息的可浮动窗口,基于ViewPart抽象类扩展。 - **Editor**:提供数据操作的交互窗口,基于EditorPart抽象类扩展。视图和编辑器可根据需求灵活组合,无严格区分。 7. **Perspective** - **...

Global site tag (gtag.js) - Google Analytics