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中記錄的下標可使查找的字符串選擇顯示:

保存文件:

相關文章
相關標籤/搜索