2012-03-27 90 views
0

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

回答

0

它看起來像你正在寫一個簡單的SWT應用程序。有問題的類不能用於這種情況。您只能在構建於Eclipse Rich Client Platform(RCP)之上的應用程序中使用它。 RCP具有工作臺的概念,比SWT高一層。

如果您對RCP感興趣,我沒有特定的文章或書籍可供推薦,但是如果您搜索「Eclipse RCP Tutorial」這樣的術語,您會發現很多匹配。