我想使用eclipse的FileFolderSelectionDialog,因为我需要一个可以选择文件夹和文件的对话框。有2个按钮(一个用于文件夹(DirectoryDialog)和一个用于文件(FileDialog))对我来说就像是糟糕的UI设计,因此使用FileFolderSelectionDialog。使用月食的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?