Eclipse RCP: для CNF без подключаемого модуля IDE требуется пользовательский ContentProvider? - PullRequest
1 голос
/ 13 апреля 2011

В приложении RCP я хотел бы создать представление Common Navigator Framework, начиная только с ресурсов локальной файловой системы.

Я сделал это в одном проекте, который включает org.eclipse.ui.ide плагин.Однако это создает пользовательский интерфейс, который является слишком сложным и неприемлемым для данного приложения.(Например, он добавляет около 20 панелей настроек, некоторые из которых связаны со сборками и контролем версий.)

Так что теперь я пытаюсь сделать это без плагина ~ .ide - и без org.eclipse.ui.navigator.resources подключаемый модуль, который зависит от него.

В приложении RCP мне удалось создать новый проект рабочей области (я думаю) с кодом ниже, в плагине с расширениями ~ navigator.viewer, показанными ниже.Но в представлении CNF ничего не появляется.

Вопросы:

  • Поскольку я исключаю org.eclipse.ui.navigator.resources Плагин, мне нужно определить свой собственный поставщик контента?
  • Является ли класс ResourceExtensionContentProvider в org.eclipse.ui.navigator.resources плагином, используемым для реализации контентапривязка org.eclipse.ui.navigator.resourceContent ?

plugin.xml выдержка

 <extension
     point="org.eclipse.ui.navigator.viewer">
   <viewerActionBinding
        viewerId="com.mycompany.app.gen.workspace">
     <includes>
         <actionExtension pattern="org.eclipse.ui.navigator.resources.*" />
     </includes>
   </viewerActionBinding>
   <viewerContentBinding 
        viewerId="com.dnastar.app.gen.workspace">
      <includes>
         <contentExtension pattern="org.eclipse.ui.navigator.resourceContent" />                      
     <contentExtension pattern="org.eclipse.ui.navigator.resources.filters.*"/>
         <contentExtension pattern="org.eclipse.ui.navigator.resources.linkHelper"/>
         <contentExtension pattern="org.eclipse.ui.navigator.resources.workingSets"/>
      </includes>
   </viewerContentBinding>
 </extension>

Используемый кодсоздать новый проект (включен для полноты):

        Path path = new Path( sPath );
        File filePath = new File( sPath );
        String fileBaseName = filePath.getName();
        String projectName = fileBaseName; // For now

        IWorkspace workspace = ResourcesPlugin.getWorkspace();
        IProjectDescription projDescr = workspace.newProjectDescription( projectName );
        projDescr.setLocation( path );

        IWorkspaceRoot root = workspace.getRoot();
        IProject project = root.getProject( projectName );

        try {
            project.create( projDescr, null );

            if ( ! project.isOpen() ) {
                project.open( null );
            }
        } catch (CoreException e) {
             MessageDialog.openError( Display.getCurrent().getActiveShell(),
                     "New Project Error", "Could not create new project." + "\n[" + e + "]");
        }

1 Ответ

2 голосов
/ 14 апреля 2011

Вместо использования класса CommonNavigator необходимо расширить его, а затем переопределить метод getInitialInput (). Там возвращают IWorkspaceRoot

...