2012-07-04 3 views
0

내 RCP 응용 프로그램의 프로젝트 탐색기 뷰에 트리 뷰어가 있습니다. 내 제품은 리소스의로드, 값 검색 및 값 업데이트 ("org.eclipse.emf.ecore.resource.Resource")를 완전히 처리합니다. 새 프로젝트를 만드는 데 사용되는 프로젝트 만들기 메뉴 항목이 있습니다. 프로젝트 생성 작업 후에 프로젝트 폴더에 새 파일이 생성됩니다. 표준 파일을 가지고 있는데 프로젝트 자체를 생성하는 동안로드해야합니다. 그래서 전체 어플리케이션에서 2 개의 파일 (표준 파일과 프로젝트 생성 작업 중에 생성 된 파일)을 처리합니다. 이클립스에서 rcp 제품을 실행할 때 잘 작동하고 프로젝트 작성 프로세스가 완료된 후 프로젝트 노드가 트리에 나타나고 프로젝트 노드를 확장하려고하면 자식 노드가 표시된다.Eclipse RCP 트리 뷰어의 자식 노드가 표시되지 않습니다.

이클립스 제품 파일에서 rcp 제품으로 내보내기를 시도했습니다. 그리고 프로젝트를 만들려고 할 때 프로젝트 노드는 트리 뷰어에 표시되지만 프로젝트 노드를 확장하려고하면 그 아래에 아무것도 표시되지 않습니다. 프로젝트 노드의 자식 노드를 표시하지 않는 이유는 무엇입니까? 자식 노드는 프로젝트 생성 과정에서 생성 된 파일에서 가져와야합니다. Th 파일은 프로젝트 폴더에서 완벽하게 생성됩니다. 내 생각에, 이것은 자원과 관련된 일부 문제로 인해 발생합니다. 제품을 수출하면서 자원에 관심을 가져야 할 것이 있습니까?

+0

코드를 제공하십시오. 트리 뷰어를 초기화하는 곳에서 콘텐츠 및 lavel 공급자 코드를 작성하십시오. – 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(); 
} 
} 

그것은이 확장 점을 필요도 설정되지 않습니다 UI 자원의 문제 "org.eclipse.ui.navigator.viewer를"프로젝트 탐색기의 뷰 ID로 뷰어를 만들 수 있습니다. 희망이 도움이됩니다.

+1

은 답을 편집하고 코드를 읽을 수 있도록 형식을 지정한 경우에 더 도움이 될 수 있습니다. – kleopatra

+0

잘못된 형식을 사용하여 죄송합니다. 사용하고있는 확장 점을 다시 채우고 추가하려면 알려주세요. –

+0

Ctrl-K는 약간의 도움이되었지만 (코드 줄에 4 칸이 필요함), 포럼 형식 작성기가 실제로 처리 할 수없는 탭을 사용하는 것처럼 보입니다. – kleopatra