向 RCP 显示项目浏览器视图及其功能

Posted

技术标签:

【中文标题】向 RCP 显示项目浏览器视图及其功能【英文标题】:showing project explorer view and its functionality to RCP 【发布时间】:2012-05-07 22:14:51 【问题描述】:

如何将 PackageExplorerView 的所有工具栏和功能添加到 Eclipse RCP 应用程序中?我使用 PackageExplorer 视图 ID 来显示 PackageExplorer 视图。它显示了 rcp 应用程序中的视图。但是在 PackageExplorer 视图中创建项目后,它没有显示所创建项目的项目图标。如何解决这个问题?

【问题讨论】:

可能是Add Package explorer in RCP-Application result in loosing some icon的副本。 【参考方案1】:

这是 Eclipse RCP 应用程序中的一个已知问题。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=234252

解决方法是在 ApplicationWorkbenchAdvisor.java 中添加一些代码

这里有更多关于 RCP 中这个问题的文档

http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.isv/guide/cnf_rcp.htm

我已将此代码添加到我的初始化方法中,以便让图像显示在项目资源管理器中,因此如果这些图像与这些。

  public void initialize(IWorkbenchConfigurer configurer) 
     super.initialize(configurer);

     // here's some of my code that does some typical RCP type configuration
     configurer.setSaveAndRestore(true);
     PlatformUI.getPreferenceStore().setValue(
            IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS, false);

    // here is the work around code
    /*
     * This is a hack to get Project tree icons to show up in the Project Explorer.
     * It is descriped in the Eclipse Help Documents here.
     * 
     * http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.isv/guide/cnf_rcp.htm
     * 
     */

    IDE.registerAdapters();

    final String ICONS_PATH = "icons/full/";

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

    declareWorkbenchImage(
            configurer, 
            ideBundle,
            IDE.SharedImages.IMG_OBJ_PROJECT, 
            ICONS_PATH + "obj16/prj_obj.gif",
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle,
            IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED, 
            ICONS_PATH + "obj16/cprj_obj.gif", 
            true);


    /*
     * End of hack in this method... 
     */


private void declareWorkbenchImage(IWorkbenchConfigurer configurer_p, Bundle ideBundle, String symbolicName, String path, boolean shared)  

    URL url = ideBundle.getEntry(path);
    ImageDescriptor desc = ImageDescriptor.createFromURL(url);
    configurer_p.declareImage(symbolicName, desc, shared);

希望这会有所帮助。

谢谢!

【讨论】:

在较新的 Eclipse 版本中,一项重要的更改是使其工作。包含的图像不再是 gif,只是 png。因此,在所有地方进行更改,例如“obj16/prj_obj.gif”到“obj16/prj_obj.png”和所有其他图像,它会工作。来源eclipse.org/forums/index.php/t/1088678

以上是关于向 RCP 显示项目浏览器视图及其功能的主要内容,如果未能解决你的问题,请参考以下文章

RCP的图标显示方式

如何在 RCP 应用程序中将视图拖出工作台?

项目资源管理器未在 Eclipse rcp 应用程序中显示项目

个人技术博客——Angular路由

限制向用户显示某些数据

浏览器的回流和重绘及其优化方式