Я пытаюсь использовать 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?