2013-05-08 54 views
0

我學會了如何編寫一個基於SWT的應用程序,遵循tutorial。但是,我不知道如何前進到一個GUI eclipse插件。如何在Eclipse插件中編寫基於SWT的GUI?

我正在編寫的插件是右鍵單擊Package Explorer中的任何IJavaElement節點,它將顯示一個更多的動作,該動作將彈出一個GUI對話框,讓我填寫一些值並將結果保存到我的數據庫。

現在我的問題是:

  • 我可以寫一個獨立的基於SWT GUI應用程序,但我不知道如何把下面的代碼片段在public void run(IAction action)

    Display display = new Display(); 
    Shell shell = new Shell(display); 
    
    shell.setLayout(new GridLayout()); 
    shell.open(); 
    
    while (!shell.isDisposed()) { 
        if (!display.readAndDispatch()) 
         display.sleep(); 
    } 
    display.dispose(); 
    

    我發現的所有SWT教程都是在主界面中創建Shell,Display,但看起來應該在Eclipse插件中做不同的處理。在開發Eclipse插件時,我必須使用JFace創建Dialog嗎?

  • 沒有在plugin.xml依賴關係中添加org.eclipse.swt(.cocoa.macosx.x86_64.source),只有在右鍵單擊IJavaElement時,我才能顯示該操作。但是,當我嘗試運行行動,日食會顯示

    Problem Occurred 
    Unhandled event loop exception 
    Not implemented [multiple displays] 
    

    我想這是因爲我新的更Display。但是,如果我將org.eclipse.swt(.cocoa.macosx.x86_64.source)添加到plugin.xml依賴項中,我的操作甚至不會顯示在彈出菜單中。

回答

3

您的代碼正在創建一個新的顯示 - 創建Eclipse插件時不應該這樣做。 Eclipse已經有顯示和事件循環運行。

嘗試把眼前這個代碼在動作:

Shell shell = new Shell(Display.getCurrent()); 

shell.setLayout(new GridLayout()); 
shell.open();