我想使用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?