2011-07-29 24 views
0

好了,所以我真的很希望能多行(文本域)InputDialog爲添加到我的盧布。我想多行顯示InputDialog添加到我的盧布

我在盧布:: UI周圍的侷限性工作,創建了自己的模塊時,我想,我和我的盧布裝載更多的,則默認對話框盧布:: UI提供。正因爲如此,我已經能夠添加多選對話框,甚至得到多行顯示InputDialog通過創建一個覆蓋類,然後傳遞getTextStyle方法我自己的價值觀,使其多的工作。

這個問題是在該對話框中顯示多行文本框,但它的高度仍設置爲一條線,所以它本質上仍然只是一個單一的線箱。我知道,從Eclipse插件開發如何創建Java中的多對話,我只是無法弄清楚如何使使用JRuby在盧布成爲現實。

這裏是紅寶石

我當前的代碼用來請求多對話框

class MultiInputDialog < org.eclipse.jface.dialogs.InputDialog 
    def getInputTextStyle 
     org.eclipse.swt.SWT::MULTI | org.eclipse.swt.SWT::BORDER | org.eclipse.swt.SWT::V_SCROLL 
    end 
    end 

這裏是什麼代碼來執行它在Java中想。

Java的替代

InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(), "Test", "Please input text.", 
     "Test-Text", null) { 

    /** 
    * Override this method to make the text field multilined 
    * and give it a scroll bar. But... 
    */ 
    @Override 
    protected int getInputTextStyle() { 
     return SWT.MULTI | SWT.BORDER | SWT.V_SCROLL; 
    } 

    /** 
    * ...it still is just one line high. 
    * This hack is not very nice, but at least it gets the job done... ;o) 
    */ 
    @Override 
    protected Control createDialogArea(Composite parent) { 
     Control res = super.createDialogArea(parent); 
     ((GridData) this.getText().getLayoutData()).heightHint = 100; 
     return res; 
    } 
    }; 
    dlg.open(); 

所以你可以看到我已經想通了如何重寫getInputTextStyle,但寄託都我試圖模仿createDialogArea的倍率()已falied。任何建議或幫助,將不勝感激

回答

0

試試這個:

class MultiInputDialog < org.eclipse.jface.dialogs.InputDialog 
    def getInputTextStyle 
     org.eclipse.swt.SWT::MULTI | org.eclipse.swt.SWT::BORDER | org.eclipse.swt.SWT::V_SCROLL 
    end 
    def createDialogArea(parent) 
     control = super(parent) 
     getText.getLayoutData.heightHint = 100; 
     control 
    end 
    end 

乾杯, 最大

+0

謝謝你,非常完美。它還有助於我更好地瞭解如何在我的Ruble中使用更多的Eclipse API。 – arcaneadm