2010-08-15 3 views
1

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

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


Редактировать

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

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

+0

Спасибо, но я думаю, что WizardFileSystemResourceImportPage1 немного сложнее и использует некоторые внутренние классы, которые я не могу использовать напрямую. Я предпочитаю простой. – solotim

+0

Всякий раз, когда я вызываю метод selectionGroup, eclipse говорит следующее: Недопустимый доступ: метод setRoot (Object) из типа ResourceTreeAndListGroup недоступен из-за ограничения на требуемую библиотеку C: \ Programs \ eclipse \ plugins \ org.eclipse.ui.ide_3. 6.0.I20100601-0800.jar – solotim

+0

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

Смежные вопросы