读书人

RCP中的一些技艺

发布时间: 2012-08-28 12:37:01 作者: rapoo

RCP中的一些技巧



?1.最大化窗口:?
在ApplicationWorkbenchWindowAdvisor中,书写如下方法:?
Java代码??RCP中的一些技艺
  1. public?void?postWindowCreate()?{??
  2. ????super.postWindowCreate();??
  3. ????getWindowConfigurer().getWindow().getShell().setMaximized(true);??
  4. ??????
  5. }??

2.设置view的tab显示风格:?
在ApplicationWorkbenchAdvisor中添加如下代码?
Java代码??RCP中的一些技艺
  1. @Override??
  2. ????public?void?initialize(IWorkbenchConfigurer?configurer)?{??
  3. ????????//?TODO?Auto-generated?method?stub??
  4. ????????super.initialize(configurer);??
  5. ????????PlatformUI.getPreferenceStore().setValue(??
  6. ????????????????IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,??
  7. ????????????????false);??
  8. ????}??

3.设置view的显示要求(可移动?关闭?最大化?最小化?)?
一种方式是通过org.eclipse.ui.perspectiveExtensions配置view来方便的设置各个属性,我有专门的一篇文章介绍。另一种方式是在perspective的createInitialLayout方法中,采用如下语句配置:?
Java代码??RCP中的一些技艺
  1. layout.getViewLayout(View1.ID).setCloseable(false);??
  2. //设置View1的关闭按钮不可见??
  3. layout.getViewLayout(View1).setMoveable(false);??
  4. //设置View1的不可移动??
  5. layout.setFixed(true);??
  6. //设置该perspective中的所有view,其大小不可变动,无最大最小按钮??

4.在其他view中获取某个view的引用?
Java代码??RCP中的一些技艺
  1. PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("viewId");??


5.关闭一个当前的perspective打开一个新的perspective?
Java代码??RCP中的一些技艺
  1. IWorkbench?w=PlatformUI.getWorkbench();??
  2. ??
  3. ActionFactory.IWorkbenchAction?closePerspectiveAction??
  4. =?ActionFactory.CLOSE_PERSPECTIVE.create(w.getActiveWorkbenchWindow());??
  5. closePerspectiveAction.run();??
  6. ??
  7. try?...{??
  8. PlatformUI.getWorkbench().showPerspective("com.ibm.demo.saic.ui.views.NextPerspective",??
  9. w.getActiveWorkbenchWindow());??
  10. }?catch?(WorkbenchException?e)?...{??
  11. e.printStackTrace();??
  12. }??

6.如果想让两个view占据一个位置(如IPageLayout.TOP),在createInitialLayout用如下方法:?
Java代码??RCP中的一些技艺
  1. IFolderLayout?folder?=?layout.createFolder("folderID",?IPageLayout.TOP,??
  2. ????0.5f,?IPageLayout.ID_EDITOR_AREA);??
  3. ??folder.addPlaceholder(View1.ID?+?":*");??
  4. ??folder.addView(View1.ID);??
  5. ??folder.addPlaceholder(View2.ID?+?":*");??
  6. ??folder.addView(View2.ID);??

7.在目录中添加保存透视图、打开透视图对话框的方法?
(1) 在ApplicationActionBarAdvisor的MakeActions中添加:?
Java代码??RCP中的一些技艺
  1. register(ActionFactory.SAVE_PERSPECTIVE.create(window));???
  2. register(ActionFactory.OPEN_PERSPECTIVE_DIALOG.create(window));??

(2) 在ApplicationActionBarAdvisor的fillMenuBar中添加:?
Java代码??RCP中的一些技艺
  1. MenuManager?fileMenu?=?new?MenuManager("&File",??
  2. ????????IWorkbenchActionConstants.M_FILE);??
  3. menuBar.add(fileMenu);??
  4. fileMenu.add(getAction(ActionFactory.SAVE_PERSPECTIVE.getId()));??
  5. fileMenu.add(getAction(ActionFactory.OPEN_PERSPECTIVE_DIALOG.getId()));??

这样既可完成。?
8.关于perspective(转载http://dearwolf.iteye.com/blog/40879)?
在IWorkbenchPreferenceConstants中有很多常量,用来配置preference settings,诸如:?
? OPEN_NEW_PERSPECTIVE——打开新视图的方式?
? DOCK_PERSPECTIVE_BAR——锁定PerspectiveBar的位置?
? INITIAL_FAST_VIEW_BAR_LOCATION——表示fast view bar在一个fresh workspace中锁定的? 位置,This preference is meaningless after a workspace has been setup, since the fast view bar state is then persisted in the workbench?
? SHOW_TRADITIONAL_STYLE_TABS——表示是否在editor和view上显示传统的tab style?
? SHOW_PROGRESS_ON_STARTUP——是否在启动时显示progress?
? SHOW_TEXT_ON_PERSPECTIVE_BAR——是否在PerspectiveBar上显示文字?
9.给一个perspective添加上两个相同的view?
Java代码??RCP中的一些技艺
  1. layout.addView(YourView.ID?+?":1",?IPageLayout.LEFT,0.65f,layout.getEditorArea());??
  2. ??????????
  3. layout.addView(YourView.ID?+?":2",?IPageLayout.BOTTOM,?0.50f,YourView.ID?+?":1"); ?

读书人网 >软件架构设计

热点推荐