熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

RCP II:擴展通用工作台補充—小的改進

2013-11-23 17:55:45  來源: Javascript 

  改進原因及內容
  SearchView視圖的License Key按鈕不是很明顯所以在File菜單中增加License Key菜單項提供相同的功能
  
  程序沒有提供打開視圖的功能在視圖關閉後就無法打開了所以增加View菜單提供打開視圖的功能
  
  菜單的使用分兩步
  
  定義動作來實現具體功能
  
  將動作加到MenuManager中由MenuManager來自動管理
  
  定義動作
  ()License Key菜單項對應的動作
  
  package comxqtugoogleactions;
  
  import orgeclipsejfaceactionAction;
  import orgeclipsejfacewizardWizardDialog;
  import orgeclipseuiIWorkbenchWindow;
  
  import comxqtugooglewizardsLicenseKeyWizard;
  
  public class LicenseKeyMenuAction extends Action {
  
  private IWorkbenchWindow window;
  
  public LicenseKeyMenuAction(IWorkbenchWindow window) {
  thiswindow = window;
  setText(License &Key@Ctrl+K);
  }
  
  public void run() {
  LicenseKeyWizard wizard = new LicenseKeyWizard();
  WizardDialog dialog = new WizardDialog(windowgetShell() wizard);
  dialogopen();
  }
  }
  普通動作需要擴展Action類(實現Iaction接口的缺省基類)並且重寫run方法來實現動作要完成的特定功能
  
  動作類通常在其構造方法中進行一些屬性的初始化工作如setText方法設置動作相關的文本在菜單中表現為菜單項文本
  
  動作類在其構造方法中做的另一件事是保存Window級(如IWorkbenchWindow)的引用以便在後面的run方法中使用
  
  run方法實現了與SearchView視圖相同的功能打開向導窗口
  
  ()顯示視圖的動作
  
  package comxqtugoogleactions;
  
  import orgeclipsejfaceactionAction;
  import orgeclipseuiIWorkbenchPage;
  import orgeclipseuiIWorkbenchWindow;
  import orgeclipseuiPartInitException;
  
  public class ViewAction extends Action {
  
  private IWorkbenchWindow window;
  
  private String viewId;
  
  public ViewAction(IWorkbenchWindow window String viewId) {
  thiswindow = window;
  thisviewId = viewId;
  setText(Show + viewIdsubstring(viewIdlastIndexOf() + ));
  }
  
  public void run() {
  IWorkbenchPage[] pages = windowgetPages();
  for (int i = len = pageslength; i < len; 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
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.