RCP菜单栏,工具栏实现的两种方法及RCP记事本例子

 

RCP菜单栏,工具栏实现方法及RCP记事本例子 java


 

1、建立工程

file->new->other->plug-ins project,建立一个名为org.test.menuAndToolbar的工程: app

选择建立RCP hello world 模板的项目,点击finish完成建立项目: eclipse

2、添加菜单栏

 点击plugin.xml文件,打开extensions页: ide

能够看到,Extentions原本已经有两个扩展包含在里面了,如今咱们要添加一个actionSets扩展,点击“add”按钮,添加org.eclipse.ui.actionSets: 函数

添加进org.eclipse.ui.actionSets后会默认有一个actionSet,要把它的visible设置为true,必定要设置为true,不然看不到菜单栏: 工具

在actionSet上右键添加一个menu, 布局

menu新建一个separator,命名为separator1: 测试

 

在label(actionSet)上右键新建一个action: ui

这个action的Label设置为“打开”,menubarPath设置为:org.test.menuAndToolbar.menu1/separator1。Class设置为:actions.OpenFileAction spa

设置好之后点击class超连接,会提示新建一个类,选择默认设置,直接点击finish:

这个类会默认实现IWorkbenchWindowActionDelegate接口,具体代码以下:

package actions;

import org.eclipse.jface.action.IAction;

import org.eclipse.jface.viewers.ISelection;

import org.eclipse.ui.IWorkbenchWindow;

import org.eclipse.ui.IWorkbenchWindowActionDelegate;

public class OpenFileAction implements IWorkbenchWindowActionDelegate {

@Override

public void run(IAction action) {

// TODO Auto-generated method stub

}

@Override

public void selectionChanged(IAction action, ISelection selection) {

// TODO Auto-generated method stub

}

@Override

public void dispose() {

// TODO Auto-generated method stub

}

@Override

public void init(IWorkbenchWindow window) {

// TODO Auto-generated method stub

}

}

 点击“打开”菜单时,将会触发run(IAction action) 函数的事件,咱们能够修改它的代码查看点击效果:

public void run(IAction action) {

// TODO Auto-generated method stub

MessageDialog.openInformation(null"测试 ""点击了打开菜单");

}

为了更好的表示菜单,能够再给label(actionSet)右键添加一个action,命名为“退出”,添加的步骤跟上面“打开”同样。修改退出action中的run方法:

@Override

public void run(IAction action) {

// TODO Auto-generated method stub

//RCP程序退出代码

PlatformUI.getWorkbench().getActiveWorkbenchWindow().close();

}

点击overview中的launch an eclipse application查看效果:

咱们添加菜单项的顺序是先添加“打开”再添加“退出”,可是这里却显示退出在打开上方,实际上菜单在定义时应该将其设置为与出现的顺序相反。(能够在extensions中使用up ,down按钮调整他们的顺序)。

3、添加工具栏

一个很简单的方法,就是把刚才所设置的菜单栏的菜单项显示成工具栏上。只须要在extensions中将各个action的toolbarPath属性设置成additions(是Eclipse内置的标准工具栏插入点),不过建立的RCP工程默认是不显示工具栏的,因此咱们要先在ApplicationWorkbenchWindowAdvisor.java文件里先吧setShowCoolBar设置成true

       configurer.setShowCoolBar(true);

设置好之后能够运行查看效果:

上面“退出”、“打开”在同一个actionSet中,因此他们在工具栏里显示在同一组中,而“工具”action在另外一个新建的actionSet中。工具栏的按钮能够不显示在菜单栏中,只要设置menubarPath设置为空的就能够了。

4、另一种添加菜单栏和工具栏的方法

4.1 添加commands扩展 

在extensions中add进org.eclipse.ui.commands扩展,以下图

New一个command,name设置为“测试工具栏”,其它默认:

4.2 添加org.eclipse.ui.handlers扩展

把org.eclipse.ui.handlers中默认有的一个handler的commandId设置为:org.test.menuAndToolbar.command1,即为刚才添加的command的ID:

设置它的class为:commands.Command1。点击class超连接,建立这个类,并让它继承AbstractHandler。获得Command1代码以下:

package commands;

import org.eclipse.core.commands.AbstractHandler;

import org.eclipse.core.commands.ExecutionEvent;

import org.eclipse.core.commands.ExecutionException;

import org.eclipse.core.commands.IHandler;

import org.eclipse.jface.dialogs.MessageDialog;

import org.eclipse.ui.handlers.HandlerUtil;

public class Command1 extends AbstractHandler implements IHandler {

@Override

public Object execute(ExecutionEvent event) throws ExecutionException {

// TODO Auto-generated method stub

return null;

}

}

点击这个工具栏的时候将触发excute函数,因此能够在里面添加一个提示信息查看效果:

public Object execute(ExecutionEvent event) throws ExecutionException {

// TODO Auto-generated method stub

MessageDialog.openInformation(HandlerUtil.getActiveShell(event), "测试""测试command");

return null;

}

4.3 添加org.eclipse.ui.menus扩展

org.eclipse.ui.menus上右键new一个menuContribution,它的locationURI设置为:menu:org.eclipse.ui.main.menu (它是eclipse标准菜单扩展位置),而后在它上面右键新建menu:

这个menu的name和ID能够自定义设置,这里咱们设置成:

而后在测试菜单栏上右键新建command,将它的ID指向刚才在commands扩展下建的command1便可(将commandId设置为command1的ID):

到这里咱们已经完成了菜单栏的建立。可是咱们还能够把command1添加到工具栏上。它的步骤为:

org.eclipse.ui.menus扩展上右键new一个menuContribution,将它的locationURI设置为:toolbar:org.eclipse.ui.main.toolbar(它是eclipse的标准工具栏扩展位置)。

在它上面右键new一个toolbar,id能够自定义。而后在这个toolbar上new一个command,将它的commandId指向刚才建立的comman1的ID便可:

到这里咱们能够运行调试,能够看到用以上两种方法建立的菜单栏和工具栏都显示在RCP程序上:

5、RCP记事本demo

为了综合的理解和使用菜单栏和工具栏,特地写了一个RCP记事本工具,它可以打开txt文本,可以搜索字符串,可以进行编辑,可以保存编辑后的文件,它也使用了text,list,radio button等经常使用控件。

5.1 程序界面布局

使用了左右两边布局的最多见的布局方式,viewpart布局的设置文件在perspective.java文件中,个人程序代码以下:

public void createInitialLayout(IPageLayout layout) {

layout.setEditorAreaVisible(false);

String editArea=layout.getEditorArea();

layout.addView(FirstView.ID, IPageLayout.LEFT, 0.25f, editArea);

layout.addView(TextEditor.ID, IPageLayout.RIGHT, 0.75f, editArea);

}

5.2 不一样viewpart之间的调用

不一样viewpart之间能够互相调用一些方法,好比我在“工做区”这个viewpart里面想要调用“编辑区”的东西,可使用下面的方法:

IViewPart findView = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("views.TextEditor");

TextEditor textEditor=(TextEditor)findView;

int index = textEditor.getEditorText().indexOf(text.getText());

其中,getEditorText()为“编辑区”viewPart中定义的方法。

5.3 程序的功能及运行效果

打开文件:

搜索字符串,点击list中记录的下标可使查找的字符串选择显示:

保存文件:

相关文章
相关标签/搜索