`

Eclipse RCP开发入门学习笔记——02.菜单和对话框

阅读更多

----------------------------------------------------------------------------------------------

学习:http://www.blogjava.net/youxia/archive/2006/11/20/82388.html

----------------------------------------------------------------------------------------------

 

1. 以编辑 ApplicationActionBarAdvisor.java 这个类的方式进行:

1) 编写菜单action类:

package hellorcp.action;

import hellorcp.dialog.FirstDialog;

import org.eclipse.jface.action.Action;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;

public class FirstAction extends Action implements IWorkbenchAction {
	private IWorkbenchWindow workbenchWindow;

	public FirstAction(IWorkbenchWindow window) {
		if (window == null) {
			throw new IllegalArgumentException();
		}

		this.workbenchWindow = window;
	}

	public void run() {
		// make sure action is not disposed
		if (workbenchWindow != null) {
			// 在这里添加功能
			FirstDialog dg = new FirstDialog(workbenchWindow.getShell());
			dg.open();

		}
	}

	public void dispose() {
		workbenchWindow = null;

	}

}

 

2) 该菜单的动作为打开对话框,故还需编写对话框类:

package hellorcp.dialog;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class FirstDialog extends Dialog {
	protected Shell shell;

	private int result;

	public FirstDialog(Shell parent, int style) {
		super(parent, style);
	}

	public FirstDialog(Shell parent) {
		this(parent, SWT.NONE);
	}

	public int open() {
		createContents();
		shell.open();
		shell.layout();
		Display display = getParent().getDisplay();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		return result;
	}

	protected void createContents() {
		shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
		shell.setSize(150, 70);
		shell.setText(" 第一个对话框 ");

		final Button okButton = new Button(shell, SWT.NONE);
		okButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				result = 1;
				shell.dispose();
			}
		});
		okButton.setText(" OK ");
		okButton.setBounds(10, 10, 48, 22);

		final Button cancelButton = new Button(shell, SWT.NONE);
		cancelButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				result = 2;
				shell.dispose();
			}
		});
		cancelButton.setText(" Cancel ");
		cancelButton.setBounds(89, 10, 48, 22);
	}

}

 

3) 编辑方法makeActions, 注册菜单action; 然后编辑方法 fillMenuBar 画出菜单:

package hellorcp;

import hellorcp.action.FirstAction;

import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

	private IWorkbenchAction action1;
	private IWorkbenchAction action2;

	public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
		super(configurer);
	}

	protected void makeActions(IWorkbenchWindow window) {
		action1 = new FirstAction(window);
		action1.setText("FirstMenu1");
		action1.setId(action1.getClass().getName());
		register(action1);
	
		action2 = new FirstAction(window);
		action2.setText("FirstMenu2");
		action2.setId(action2.getClass().getName());
		register(action2);
	}

	protected void fillMenuBar(IMenuManager menuBar) {
		MenuManager newMenu = new MenuManager("第一个菜单", "hellorcp.firstmenu1");
		menuBar.add(newMenu);
		newMenu.add(action1);

		MenuManager newMenu2 = new MenuManager("第一个菜单", "hellorcp.firstmenu2");
		menuBar.add(newMenu2);
		newMenu.add(action2);
	}

}

 

4) 运行效果如下图:

 

 

2. 以编辑 plugin.xml 的方式添加菜单:

1) 编写菜单action类:

package hellorcp.action;

import hellorcp.dialog.FirstDialog;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;

public class Action2 implements IWorkbenchWindowActionDelegate {
	private IWorkbenchWindow window;

	public void dispose() {
		// TODO

	}

	public void init(IWorkbenchWindow window) {
		// TODO
		this.window = window;

	}

	public void run(IAction action) {
		// TODO
		FirstDialog dg = new FirstDialog(window.getShell());
		dg.open();

	}

	public void selectionChanged(IAction action, ISelection selection) {
		// TODO

	}

}

 

2) 双击 plugin.xml  打开 Extensions 编辑窗口,点击 "All Extensions" 下的 "Add..." 打开 Extension 选择窗口,并选择 org.eclipse.ui.actionSets, 如下图:

 

3) 回到 Extensions 编辑界面,选中"org.eclipse.ui.actionSets",并在右侧 "Extension Details" 的 "ID"、"Name" 中输入内容,保存,如下图:

 

4) 点击 "plugin.xml" 选项卡,可以看到该文件中出现了如下代码:

   <extension
         id="hellorcp.actionset"
         name="菜单"
         point="org.eclipse.ui.actionSets">
   </extension>

 

   直接将该片段编辑为如下内容:

   <extension
         id="hellorcp.actionset"
         name="菜单"
         point="org.eclipse.ui.actionSets">
         <actionSet
			description ="第一个扩展" 
            id ="RCP_Start.actionSet1" 
            label ="RCP_Start.actionSet1" 
            visible ="true"> 
         	<action
				class ="hellorcp.action.Action2" 
             	icon ="icons/alt_window_16.gif" 
             	id ="RCP_Start.action2" 
          	    label ="第二个菜单项" 
				menubarPath ="hellorcp.firstmenu/additions" 
              	style ="push" 
                toolbarPath ="additions" 
               	tooltip ="第二个菜单项的按钮" /> 
       </actionSet> 
   </extension>

 

5) 再次切换到 "Extensions" 选项卡,可以看到相应内容也出现了,如下图:

 

6) 运行程序,效果如下图:

注:需要将类 ApplicationWorkbenchWindowAdvisor 方法 preWindowOpen() 中的 configurer.setShowCoolBar(false); 改为 configurer.setShowCoolBar(true); 才会出现该图标菜单。

 

 

  • 大小: 6.8 KB
  • 大小: 9.4 KB
  • 大小: 34.5 KB
  • 大小: 31.6 KB
  • 大小: 28.2 KB
  • 大小: 5.8 KB
分享到:
评论

相关推荐

    eclipse RCP Plug-in开发自学教程.pdf

    RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码复用率。然而,Eclipse RCP的学习曲线可能较陡,需要一定的Java基础和Eclipse基础知识。 本教程旨在帮助读者自学Eclipse RCP插件式开发,...

    eclipse rcp 插件开发学习笔记.pdf 15-24章

    在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...

    eclipse rcp 插件开发学习笔记.pdf 1-14章

    以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...

    eclipse rcp应用系统开发方法与实战源代码.zip

    7. **源代码实践**:压缩包中的源代码提供了实际的开发示例,通过分析和运行这些代码,可以加深对Eclipse RCP开发的理解,学习如何将理论知识转化为实际应用。 8. **调试和测试**:Eclipse作为强大的IDE,提供了...

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    1.2 ECLIPSE RCP 建设风格——插件,扩展和扩展点 ..................................................................... 9 1.3 RCP与PLUGIN ....................................................................

    Eclipse RCP 开发入门

    ### Eclipse RCP 开发入门详解 #### 一、Eclipse RCP 概述 Eclipse Rich Client Platform (RCP) 是一种基于Java的框架和技术集合,用于构建具有丰富用户体验的应用程序。Eclipse RCP 提供了一种灵活的方式来构建...

    Eclipse的RCP开发的入门教程

    "使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 .doc"则专注于用户界面(UI)元素的创建和管理,包括如何定义菜单、工具栏,以及创建自定义对话框。这些组件是用户与应用程序交互的关键部分,开发者...

    Eclipse插件开发学习笔记全篇+源码.rar

    本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...

    通过例子学习EclipseRCP开发

    ### 通过例子学习Eclipse RCP开发 #### Eclipse RCP概览 Eclipse RCP(Rich Client Platform,富客户端平台)是一种基于Java的框架和技术集合,用于构建具有丰富用户界面的应用程序。它允许开发者创建高度可定制且...

    Eclipse RCP.pdf清晰版

    ### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...

    Eclipse RCP开发教程

    **Eclipse RCP 开发教程** Eclipse Rich Client Platform (RCP) 是一个用于构建桌面应用程序的框架,它基于 Eclipse IDE ...开发者可以通过学习和实践,逐步掌握 RCP 的开发技巧,创建出满足需求的定制化应用程序。

    Eclipse RCP 开发资料

    Eclipse RCP 开发资料打包下载 目录如下: RCP程序设计.pdf(推荐) Addison.Wesley.Eclipse.Rich.Client.Platform.Designing.Coding.and.Packaging.Java.Applications.Oct.2005.chm Eclipse+RCP入门.pdf example_...

    eclipse rcp开发入六教程及培训资料

    网络中最全面最合适学习或开发...包含eclipse rcp开发入门教程; eclipse rcp基础教程;eclipse rcp开发自学教程; eclipse rcp开发培训教程及ppt等相关资料;教程中包含一步步操作实例,包含对开发原理的讲解与说明;

    EclipseRCP系统开发与实战(书).rar

    这本书《Eclipse RCP系统开发与实战》显然是针对想要学习和掌握Eclipse RCP技术的程序员,通过实战案例帮助读者深入理解Eclipse RCP的开发过程。 1. **Eclipse RCP基础知识** - Eclipse RCP是一种基于Java的开发...

    RCP开发入门-PDF.7z

    通过阅读《RCP开发入门》,读者将能全面了解Eclipse RCP的基本概念和开发流程,为进一步深入学习和实践打下坚实的基础。无论你是对桌面应用开发感兴趣的Java开发者,还是希望通过Eclipse RCP来构建企业级应用,这...

    rcp自己通过扩展点新建java项目

    在Eclipse RCP(Rich Client Platform)开发中,创建自定义的新建项目向导是提升用户体验和增强应用程序功能的重要步骤。`rcp自己通过扩展点新建java项目`这个主题涉及了如何利用Eclipse的插件体系和扩展点机制来...

    ECLIPSE RCP应用系统开发方法与实战.pdf

    《ECLIPSE RCP应用系统开发方法与实战》是一本深入探讨Eclipse Rich Client Platform (RCP) 开发技术的书籍。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,允许开发者构建功能丰富的桌面应用程序。这本书...

    eclipse插件开发 rcp入门开发详细讲解一

    通过本文的学习,我们不仅了解了Eclipse RCP插件开发的基本过程,还掌握了不同的运行模式及其应用场景。无论是对于初学者还是有一定经验的开发者来说,掌握这些知识都将对实际工作大有裨益。希望本文能够帮助大家更...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    综上所述,Eclipse RCP 3.6.0的中文语言包对于在中国的开发者来说,是构建和调试Eclipse插件或RCP应用不可或缺的工具,它确保了开发过程的顺利进行和最终产品的用户体验。开发者需要熟悉Eclipse RCP的架构和开发流程...

Global site tag (gtag.js) - Google Analytics