Как наследовать класс WizardResourceImportPage? - PullRequest
1 голос
/ 15 августа 2010

Я хочу создать мастер «новый проект» для моего приложения. Первая страница этого мастера является просто экземпляром org.eclipse.ui.dialogs.WizardNewProjectCreationPage. Я хочу импортировать некоторые системные файлы в текущий проект на второй странице мастера. Я обнаружил, что org.eclipse.ui.dialogs.WizardResourceImportPage довольно близок к моим мыслям, но я не могу понять, как наследовать этот класс и создать простую страницу импорта файлов.

Может кто-нибудь предложить пример этого? Спасибо!

Я также пытался протестировать его, как показано ниже (также переопределено getFileProvider), но в дереве файлов отображается только флажок, но нет имени файла.

protected ITreeContentProvider getFolderProvider()
{
    // TODO Auto-generated method stub
    return new WorkbenchContentProvider()
  {
    public Object[] getChildren( Object o )
    {
      if ( o instanceof java.io.File )
        return FileSystemStructureProvider.INSTANCE.getChildren( o ).toArray();
      else
        return new Object[]{new java.io.File("C:\\temp")};
    }

    public boolean hasChildren( Object o )
    {
      if ( o instanceof java.io.File )
        return FileSystemStructureProvider.INSTANCE.isFolder( o );
      else
        return false;
    }

  };
}

1 Ответ

1 голос
/ 15 августа 2010

WizardResourceImportPage является абстрактным, вы можете расширить его и реализовать три абстрактных метода.Я бы посмотрел на WizardFileSystemResourceImportPage1, которая является работающей реализацией WizardResourceImportPage, и либо изучил бы этот код, либо скопировал и вставил исходный код из этого класса в свой собственный.*

В приведенном выше примере показаны только пустые метки, поскольку WizardResourceImportPage использует WorkbenchLabelProvider, и этот поставщик меток вернет "", если объект содержимого (File в вашем случае)не адаптируется.

Посмотрите на метод createFileSelectionGroup.Может быть, этого достаточно, чтобы реализовать свои собственные LabelProvider для File объектов и вызвать selectionGroup.setTreeProviders(ITreeContentProvider, ILabelProvider), чтобы он работал с File элементами в дереве.Кажется, что стандартные реализации работают только с (затмением) файловыми ресурсами.

...