`
Dollyn
  • 浏览: 169130 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于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)

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

分享到:
评论

相关推荐

    Eclipse RCP Common Navigator Demo

    4. **图标支持**:在描述中提到,项目图标可以正常显示,这表明CNF支持根据资源类型显示相应的图标,提高了用户界面的易用性和视觉效果。 5. **插件扩展**:Eclipse RCP的核心之一是插件系统,CNF也是基于这个系统...

    Eclipse Rcp comon Navigator demo

    首先,Common Navigator是Eclipse RCP中用于显示项目、文件和其他资源的视图。它使用插件机制,允许开发者自定义资源的显示方式,包括图标、布局以及行为。在这个demo中,我们看到的是一个可以运行的基础实例,但...

    RCP的Navigator例子源代码(包括修改默认的new右键菜单)

    在RCP中,Navigator是用户界面的一个关键组件,它提供了类似于资源管理器的视图,允许用户浏览和操作项目。这个压缩包包含了RCP应用中关于Navigator的一个示例,以及如何自定义“新建”(New) 右键菜单的操作。 在...

    Eclipse RCP中使用第三方包

    Eclipse RCP中使用第三方包 Eclipse RCP(Rich Client Platform)是一种基于Java的插件式软件架构,允许开发者创建跨平台的桌面应用程序。使用Eclipse RCP,可以快速构建功能强大的客户端应用程序。然而,在实际...

    RCP系统开发

    - **系统托盘和定时提示**:系统托盘图标和定时气泡提示可以增强应用的用户体验,提醒用户有关信息或操作。 - **图片缓冲处理**:为了提高性能,RCP系统常使用图片缓冲技术,减少图像加载时间。 - **品牌化应用程序*...

    java中RCP中使用JNI

    在Java RCP中使用JNI,主要是为了访问特定于平台的功能,提升性能,或者调用已有的本地库。 1. **JNI简介** JNI是一种接口,允许Java代码与其他语言编写的代码进行通信。它定义了一套规范,使得Java虚拟机(JVM)...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...

    eclipse rcp应用系统开发方法与实战源代码.zip

    在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...

    在RCP中显示JFreeChart报表

    在本文中,我们将深入探讨如何在Eclipse Rich Client Platform (RCP)应用程序中集成和显示JFreeChart报表。JFreeChart是一个强大的Java库,用于创建各种图表类型,如折线图、柱状图、饼图等,而RCP是Eclipse框架的一...

    rcp 开发档案管理系统

    rcp(Rich Client Platform)是一种基于Eclipse框架的客户端应用程序开发技术,它允许开发者创建功能丰富的桌面应用,同时保持与现有系统和服务的集成。本档案管理系统就是利用rcp技术构建的,旨在提供一个高效、...

    RCP项目学习实例

    RCP项目学习实例是一个专为初学者设计的实践项目,旨在帮助他们理解和掌握RCP及Eclipse插件开发的核心概念和技术。 在RCP项目中,"补丁生成器"是一个典型的例子,它展示了如何利用RCP框架来创建一个具有特定功能的...

    RCP-1500中文操作手册.pdf

    索尼公司生产的RCP-1500系列遥控面板(包括RCP-1500、RCP-1501和RCP-1530型号)是用于配置和控制演播室级及广播级摄像机的专业设备。这些设备提供了高级的操作便利性和功能的多样性,使得用户能够高效地进行摄影机的...

    eclipse rcp应用系统开发方法与实战

    而“Eclipse RCP应用系统开发方法与实战”很可能是项目的主要代码库或者教程文档,涵盖了开发过程中的步骤和最佳实践。 开发Eclipse RCP应用不仅需要掌握Java编程,还需要熟悉Eclipse的插件开发环境(PDE)。在实践...

    RCP中文入门教程.rar

    在“RCP中文入门教程.pdf”中,你可能会学习到如何创建一个新的RCP项目,编写插件,定义扩展点,创建视图和编辑器,以及如何管理和配置用户的首选项。教程还可能涵盖如何调试和打包RCP应用,以及如何利用Eclipse的...

    RCP项目的登录窗体 RCP项目的登录窗体

    RCP项目的登录窗体RCP项目的登录窗体RCP项目的登录窗体RCP项目的登录窗体

    RCP,RCP开发

    **RCP(Rich Client Platform)与OSGI详解** **RCP概述** RCP,全称为Rich Client Platform,是由Eclipse基金会开发的一种软件框架,...在实际项目中,理解并熟练运用RCP和OSGI技术,能大大提高开发效率和软件质量。

    Eclipse RCP 应用系统开发方法与实战

    9. **调试和性能优化**:在RCP开发过程中,调试技巧和性能优化是必不可少的。学习如何使用Eclipse内置的调试工具,以及如何优化应用启动速度、内存使用和响应时间,都是提高开发效率和用户体验的关键。 10. **用户...

    RCP项目融资模式解析

    然而,非经营性基础设施项目和准经营性基础设施项目的融资问题一直困扰着项目管理者。这类项目往往因为缺乏有效的收入来源,难以吸引私人资本的投入,导致资金缺口巨大,严重影响了项目的推进速度与规模。为了解决这...

    ECLIPSE+RCP应用系统开发方法与实战

    非常好的一本JAVA RCP入门实战的书,兼顾理论和实战。

Global site tag (gtag.js) - Google Analytics