2012-07-04 3 views
0

У меня есть средство просмотра дерева в представлении проводника проекта моего приложения RCP. Мой продукт полностью занимается загрузкой, извлечением ценности и обновлением значений в ресурсе («org.eclipse.emf.ecore.resource.Resource»). У меня есть пункт меню создания проекта, который используется для создания нового проекта. После операции создания проекта в папке проекта создается новый файл. У меня есть стандартный файл, который нужно загрузить при создании самого проекта. Таким образом, во всем приложении я обрабатываю 2 файла (стандартный файл и файл, созданный во время создания проекта). Когда я запускаю rcp-продукт в eclipse, он отлично работает и после завершения процесса создания проекта узел проекта появляется в дереве, и когда я пытаюсь развернуть узел проекта, он показывает дочерние узлы.Дочерние узлы eclipse rcp tree viewer не показаны

Я попытался экспортировать его в качестве продукта rcp в файл продукта eclipse. И когда я пытался создать проект, узел проекта отображается в средстве просмотра дерева, но когда я пытаюсь расширить узел проекта, под ним ничего не отображается. Почему он не показывает дочерние узлы узла проекта. Дочерние узлы должны быть взяты из файла, созданного в процессе создания проекта. Th файл создается отлично в папке проекта. Я думаю, это происходит из-за некоторых проблем, связанных с ресурсами. Есть ли что-то, что мы должны заботиться о ресурсах, при экспорте продукта.

+0

Пожалуйста, предоставьте нам код, в котором вы инициализируете средство просмотра деревьев, код для контента и поставщиков услуг. – execc

ответ

0

У меня была такая же проблема, и, хотя уродливые обошли ее с этим классом.

package com.mycomp 

import java.net.URL; 

import org.eclipse.core.resources.ResourcesPlugin; 
import org.eclipse.core.runtime.FileLocator; 
import org.eclipse.core.runtime.IAdaptable; 
import org.eclipse.core.runtime.Path; 
import org.eclipse.core.runtime.Platform; 
import org.eclipse.jface.resource.ImageDescriptor; 
import org.eclipse.ui.application.IWorkbenchConfigurer; 
import org.eclipse.ui.application.WorkbenchAdvisor; 
import org.eclipse.ui.ide.IDE; 
import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages; 
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; 
import org.eclipse.ui.internal.ide.model.WorkbenchAdapterBuilder; 
import org.osgi.framework.Bundle; 

public abstract class WorkbenchAdvisorHack extends WorkbenchAdvisor 
{ 
/** 
* Declares all IDE-specific workbench images. This includes both "shared" 
* images (named in {@link IDE.SharedImages}) and internal images (named in 
* {@link org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages}). 
* 
* @see org.eclipse.ui.internal.ide.IDEWorkbenchAdvisor#declareImage 
*/ 
protected void declareWorkbenchImages() 
{ 
    final String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$ 
    final String PATH_ELOCALTOOL = ICONS_PATH + "elcl16/"; // Enabled 
    // //$NON-NLS-1$ 

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

    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.png", false); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFOLDER_WIZ, 
      PATH_WIZBAN + "newfolder_wiz.png", false); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFILE_WIZ, 
      PATH_WIZBAN + "newfile_wiz.png", false); //$NON-NLS-1$ 

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

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

    declareWorkbenchImage(ideBundle, 
      IDEInternalWorkbenchImages.IMG_WIZBAN_RESOURCEWORKINGSET_WIZ, PATH_WIZBAN 
        + "workset_wiz.png", false); //$NON-NLS-1$ 

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

    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_DLGBAN_QUICKFIX_DLG, 
      PATH_WIZBAN + "quick_fix.png", 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$ 

    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ELCL_QUICK_FIX_ENABLED, 
      PATH_ELOCALTOOL + "smartmode_co.gif", true); //$NON-NLS-1$ 

    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_DLCL_QUICK_FIX_DISABLED, 
      PATH_DLOCALTOOL + "smartmode_co.gif", true); //$NON-NLS-1$ 

    // task objects 
    // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_HPRIO_TSK, 
    // PATH_OBJECT+"hprio_tsk.gif"); 
    // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_MPRIO_TSK, 
    // PATH_OBJECT+"mprio_tsk.gif"); 
    // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_LPRIO_TSK, 
    // PATH_OBJECT+"lprio_tsk.gif"); 

    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$ 

    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_COMPLETE_TSK, 
      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$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_ERROR_PATH, 
      PATH_OBJECT + "error_tsk.gif", true); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_WARNING_PATH, 
      PATH_OBJECT + "warn_tsk.gif", true); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_OBJS_INFO_PATH, PATH_OBJECT 
      + "info_tsk.gif", true); //$NON-NLS-1$ 

    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_LCL_FLAT_LAYOUT, 
      PATH_ELOCALTOOL + "flatLayout.gif", true); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_LCL_HIERARCHICAL_LAYOUT, 
      PATH_ELOCALTOOL + "hierarchicalLayout.gif", true); //$NON-NLS-1$ 
    declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEM_CATEGORY, 
      PATH_ETOOL + "problem_category.gif", true); //$NON-NLS-1$ 
/* declareWorkbenchImage(ideBundle, IDEInternalWorkbenchImages.IMG_LCL_LINKTO_HELP, 
      PATH_ELOCALTOOL + "linkto_help.gif", false); //$NON-NLS-1$ 
*/ } 

/** 
* Declares an IDE-specific workbench image. 
* 
* @param symbolicName 
*   the symbolic name of the image 
* @param path 
*   the path of the image file; this path is relative to the base 
*   of the IDE plug-in 
* @param shared 
*   <code>true</code> if this is a shared image, and 
*   <code>false</code> if this is not a shared image 
* @see org.eclipse.ui.internal.ide.IDEWorkbenchAdvisor#declareImage 
*/ 
private void declareWorkbenchImage(Bundle ideBundle, String symbolicName, String path, 
     boolean shared) 
{ 
    URL url = FileLocator.find(ideBundle, new Path(path), null); 
    ImageDescriptor desc = ImageDescriptor.createFromURL(url); 
    getWorkbenchConfigurer().declareImage(symbolicName, desc, shared); 
} 

@Override 
public void initialize(IWorkbenchConfigurer configurer) 
{ 
    //configurer.setSaveAndRestore(true); 
    declareWorkbenchImages(); 
} 

@Override 
public IAdaptable getDefaultPageInput() 
{ 
    return ResourcesPlugin.getWorkspace().getRoot(); 
} 

@SuppressWarnings("restriction") 
@Override 
public void preStartup() 
{ 
    WorkbenchAdapterBuilder.registerAdapters(); 
} 
} 

Это вопрос УИ ресурсов не получает набор также вам нужна эта точка расширения «org.eclipse.ui.navigator.viewer», чтобы создать зрителя с видом идентификатором вашего проекта исследователя. Надеюсь, это поможет.

+1

может быть более полезным, если вы отредактировали свой ответ и отформатировали код, чтобы сделать его доступным для чтения :-) – kleopatra

+0

Да, извините за плохое форматирование, если вы хотите, чтобы я отталкивался и добавлял добавочные точки, которые я использую, дайте мне знать. –

+0

Ctrl-K немного помог (для строки кода требуется 4 пробела), но похоже, что вы используете вкладки, какой форматор форума не может справиться ;-) – kleopatra