关于RCP中使用系统resource navigator图标和项目名称不显示的问题

首先说明: 这个是不推荐使用的方法,并且现在有了common navigator。

最近毕业设计需要这个东西,所以一直在看。之所以不使用common navigator,第一是由于时间有限(毕业设计的时间只有一个月多了,现在基本还没有开始做,只是在做一些技术上的验证),所以先使用系统提供的东西把功能性的东西实现,以后再进行优化;第二能力有限(呵呵),看了两天common navigator的用法,发现需要自己实现的东西太多了,两天也没有理出个头绪,所以决定先不实现自己的navagator 了。

这个方法转自eclipseworld:

[FAQ] ResourceNavigator中不显示项目/文件名称和图片.

Q: 在使用Eclipse提供的ResourceNavigator(它是IDE plugin的一部分),在Navigator里新建的项目和文件时不显示名称和图片, 怎么办?

A:
目前这个ResourceNavigator不被鼓励用在RCP程序里,以后版本的Eclipse可能会提供更合适的插件。当前解决方法为, WorkbenchAdvisor方法中加入下面的代码:

  public   void  preStartup()  {
  
// 注册Workbench变量
  WorkbenchAdapterBuilder.registerAdapters();
  
// 声明Workbench图片
  declareWorkbenchImages();
}


private   void  declareWorkbenchImages()  {

  
final String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$
  final String PATH_ELOCALTOOL = ICONS_PATH + "elcl16/";
  
// Enabled toolbar icons.//$NON-NLS-1$
  final String PATH_ETOOL = ICONS_PATH + "etool16/"// Enabled toolbar icons.//$NON-NLS-1$
  final String PATH_DTOOL = ICONS_PATH + "dtool16/"// Disabled toolbar icons.//$NON-NLS-1$
  final String PATH_OBJECT = ICONS_PATH + "obj16/"// Model object icons//$NON-NLS-1$
  final String PATH_WIZBAN = ICONS_PATH + "wizban/"// Wizard icons//$NON-NLS-1$

  Bundle ideBundle 
= Platform.getBundle(IDEWorkbenchPlugin.IDE_WORKBENCH);

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC, PATH_ETOOL 
+ "build_exec.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC_HOVER, PATH_ETOOL + "build_exec.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC_DISABLED, PATH_DTOOL + "build_exec.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC, PATH_ETOOL 
+ "search_src.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC_HOVER, PATH_ETOOL + "search_src.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC_DISABLED, PATH_DTOOL + "search_src.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_NEXT_NAV, PATH_ETOOL 
+ "next_nav.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_PREVIOUS_NAV, PATH_ETOOL 
+ "prev_nav.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_NEWPRJ_WIZ, PATH_WIZBAN 
+ "newprj_wiz.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFOLDER_WIZ, PATH_WIZBAN + "newfolder_wiz.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFILE_WIZ, PATH_WIZBAN + "newfile_wiz.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_IMPORTDIR_WIZ, PATH_WIZBAN 
+ "importdir_wiz.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_IMPORTZIP_WIZ, PATH_WIZBAN + "importzip_wiz.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_EXPORTDIR_WIZ, PATH_WIZBAN 
+ "exportdir_wiz.gif"false); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_EXPORTZIP_WIZ, PATH_WIZBAN + "exportzip_wiz.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle,

  IDEInternalWorkbenchImages.IMG_WIZBAN_RESOURCEWORKINGSET_WIZ, PATH_WIZBAN 
+ "workset_wiz.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_DLGBAN_SAVEAS_DLG, PATH_WIZBAN 
+ "saveas_wiz.gif"false); //$NON-NLS-1$

  declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJ_PROJECT, PATH_OBJECT 
+ "prj_obj.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED, PATH_OBJECT + "cprj_obj.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OPEN_MARKER, PATH_ELOCALTOOL + "gotoobj_tsk.gif"true); //$NON-NLS-1$

  
// task objects

  declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJS_TASK_TSK, PATH_OBJECT 
+ "taskmrk_tsk.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJS_BKMRK_TSK, PATH_OBJECT + "bkmrk_tsk.gif"true); //$NON-NLS-1$

  String string 
= IDEInternalWorkbenchImages.IMG_OBJS_COMPLETE_TSK;
  declareWorkbenchImage(ideBundle, string, PATH_OBJECT 
+ "complete_tsk.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_INCOMPLETE_TSK, PATH_OBJECT + "incomplete_tsk.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_ITEM, PATH_OBJECT + "welcome_item.gif"true); //$NON-NLS-1$
  declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_BANNER, PATH_OBJECT + "welcome_banner.gif"true); //$NON-NLS-1$
}


private   void  declareWorkspaceImage(Bundle ideBundle, String symbolicName, String path,  boolean  shared)  {
  URL url 
= Platform.find(ideBundle, new Path(path));
  ImageDescriptor desc 
= ImageDescriptor.createFromURL(url);
  getWindowConfigurer().getWorkbenchConfigurer().declareImage(symbolicName, desc, shared);
}


当然,你还要在 plugin dependencies 里加上 org.eclipse.ui.ide org.eclipse.ui.views ,所以你的 RCP 程序会变得更大,这就是代价。

 

(注:以上是原帖,但个人发现有两个错误:1、最后一个方法名称应该为declareWorkbenchImage,这个就是前面被调用了n次的方法,这个应该是原作者笔误;2、最后一个方法的最后一条语句:如果是在类workbenchadvisor中调用的话,应该去掉前面的getWindowConfigure,直接

getWorkbenchConfigurer().declareImage(symbolicName, desc, shared)

另外,上面有些东西应该是用不到的,可以去掉,不过我没有验证。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值