Добавление проводника пакетов в RCP-приложение приводит к потере некоторого значка - PullRequest
0 голосов
/ 26 ноября 2011

В моем приложении eclispe rcp я добавил обозреватель пакетов, добавив org.eclipse.jdt.ui

enter image description here

Когда я использую свое приложение rcp, при создании нового проектас помощью «Мастера новых проектов», чтобы добавить «Общий проект», проект создается корректно, но соответствующий значок в представлении проводника пакетов не загружается.

Что такое плагин, к которому я должен добавить свое приложение?видите, что все иконки (платформы) правильно?

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 27 апреля 2012

Это известная проблема в приложениях 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

В этом примере кода я добавил изображения для Project Explorer и представления проблем.

Вот что мне нужно было добавить к моему методу инициализации ...

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

     // here's some of my code that does some typical RCP  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);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW, 
            ICONS_PATH + "eview16/problems_view.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_ERROR, 
            ICONS_PATH + "eview16/problems_view_error.gif", 
            true);


    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_WARNING, 
            ICONS_PATH + "eview16/problems_view_warning.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_OBJS_ERROR_PATH, 
            ICONS_PATH + "obj16/error_tsk.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_OBJS_WARNING_PATH, 
            ICONS_PATH + "obj16/warn_tsk.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);
}

Надеюсь, это поможет.

Спасибо!

1 голос
/ 13 декабря 2011

Возможно, вам следует использовать Project Explorer, а не Package Explorer.Обозреватель пакетов зависит от Java, Project Explorer может выполнять Java и все остальное.

Вот еще немного информации: http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/guide/cnf.htm

0 голосов
/ 16 декабря 2011

Вам необходимо зарегистрировать некоторые адаптеры в вашем методе WorkbenchAdvisor # initialize (IWorkbenchConfigurer) вручную.

Вызовите этот метод (вы найдете класс IDE в комплекте org.eclipse.ui.ide.application

org.eclipse.ui.ide.IDE.registerAdapters();
...