SearchView視圖的License Key按鈕不是很明顯
程序沒有提供打開視圖的功能
菜單的使用分兩步
定義動作來實現具體功能
將動作加到MenuManager中
(
package com
import org
import org
import org
import com
public class LicenseKeyMenuAction extends Action {
private IWorkbenchWindow window;
public LicenseKeyMenuAction(IWorkbenchWindow window) {
this
setText(
}
public void run() {
LicenseKeyWizard wizard = new LicenseKeyWizard();
WizardDialog dialog = new WizardDialog(window
dialog
}
}
普通動作需要擴展Action類(實現Iaction接口的缺省基類)
動作類通常在其構造方法中進行一些屬性的初始化工作
動作類在其構造方法中做的另一件事是保存Window級(如IWorkbenchWindow)的引用
run方法實現了與SearchView視圖相同的功能
(
package com
import org
import org
import org
import org
public class ViewAction extends Action {
private IWorkbenchWindow window;
private String viewId;
public ViewAction(IWorkbenchWindow window
this
this
setText(
}
public void run() {
IWorkbenchPage[] pages = window
for (int i =
try {
pages[i].showView(viewId);
break;
} catch (PartInitException piex) {
continue;
}
}
}
}
ViewAction類的實現方法和LicenseKeyMenuAction類是一樣的,不同的是構造方法中多了viewId參數,用來接收視圖Id
菜單項是根據視圖Id生成的(不是很妥)
在run方法中,先獲得WorkbenchWindow中的WorkbenchPage,然後調用WorkbenchPage的showView方法顯示對應視圖Id的視圖(感覺for循環寫得不是很好,但暫時沒有想到別的方法)
3、將動作加到MenuManager中
修改GoogleWorkbenchAdvisor類的fillActionBars方法,將動作加到MenuManager中
public void fillActionBars(IWorkbenchWindow window,
IActionBarConfigurer configurer, int flags) {
IMenuManager menuBar = configurer.getMenuManager();
MenuManager fileMenu = new MenuManager("&File",
IWorkbenchActionConstants.M_FILE);
fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_START));
fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
fileMenu.add(new LicenseKeyMenuAction(window));
fileMenu.add(ActionFactory.QUIT.create(window));
fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END));
menuBar.add(fileMenu);
MenuManager viewMenu = new MenuManager("&View");
viewMenu.add(new ViewAction(window, BrowserView.ID));
viewMenu.add(new ViewAction(window, SearchView.ID));
menuBar.add(viewMenu);
}
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25376.html