Использование eclipses's FileFolderSelectionDialog - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь использовать FileFolderSelectionDialog от eclipse, потому что мне нужно диалоговое окно, в котором можно выбрать как папки, так и файлы.Имея 2 кнопки (одну для папок (DirectoryDialog) и одну для файлов (FileDialog)), мне кажется плохой дизайн пользовательского интерфейса, следовательно, использование FileFolderSelectionDialog.

Однако, похоже, чтоПример кода где угодно, который показывает, как правильно его использовать.Даже после импорта всех зависимостей для FileFolderSelectionDialog в мой проект, я все еще получаю сообщение об ошибке:

Exception in thread "main" java.lang.ExceptionInInitializerError
at org.eclipse.ui.internal.ide.dialogs.FileFolderSelectionDialog.<init>(FileFolderSelectionDialog.java:237)
at com.cardboardengine.modulebuilder.ui.ImportAssetsDialog$1.widgetSelected(ImportAssetsDialog.java:76)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at com.cardboardengine.modulebuilder.ui.ImportAssetsDialog.open(ImportAssetsDialog.java:43)
at com.cardboardengine.modulebuilder.ui.MainWindow$2.widgetSelected(MainWindow.java:115)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at com.cardboardengine.modulebuilder.ui.MainWindow.open(MainWindow.java:52)
at com.cardboardengine.modulebuilder.ui.MainWindow.main(MainWindow.java:36)
Caused by: java.lang.IllegalStateException: Workbench has not been created yet.
    at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92)
    at org.eclipse.ui.internal.ide.dialogs.FileFolderSelectionDialog$FileLabelProvider.<clinit>(FileFolderSelectionDialog.java:43)
    ... 16 more

Я не совсем уверен, как решить эту ошибку.Функция getWorkbench возвращает и тип IWorkbench, и, согласно справочнику API, этот интерфейс не должен быть реализован клиентами (не совсем уверен, насколько это актуально).Мой код для вызова FileFolderSelectionDialog просто:

FileFolderSelectionDialog assetLoc = new FileFolderSelectionDialog(shlImportAssets, true, IResource.FILE | IResource.FOLDER | SWT.APPLICATION_MODAL);
            assetLoc.open();

Итак, я предполагаю, что мой вопрос вкратце: как мне использовать org.eclipse.ui.internal.ide.dialogs.FileFolderSelectionDialog?

1 Ответ

0 голосов
/ 27 марта 2012

Похоже, вы пишете простое приложение SWT.Рассматриваемый класс не может использоваться в этом контексте.Вы можете использовать его только в приложении, построенном на основе Eclipse Rich Client Platform (RCP).RCP имеет концепцию рабочего места и находится на один уровень выше SWT.

В случае, если вы заинтересованы в RCP, у меня нет конкретной статьи или книги, чтобы рекомендовать, но если вы ищете такие слова, как "Eclipse RCP Tutorial "вы найдете множество хитов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...