Хорошо, поэтому я действительно хотел бы иметь возможность добавить многострочный (textarea) InputDialog к моему рублю.
Я обошел ограничения в Ruble :: UI и создал свой собственный модуль, который я загружаю своим рублем, когда мне нужно больше диалогов по умолчанию, которые предоставляет Ruble :: UI. Из-за этого я смог добавить диалоговые окна множественного выбора и даже заставил Multiline InputDialog работать, создав класс переопределения, а затем передав метод getTextStyle мои собственные значения, чтобы сделать его многострочным.
Проблема заключается в том, что в диалоговом окне отображается многострочное текстовое поле, но его высота по-прежнему установлена на одну строку, поэтому по сути это все еще просто однострочное поле. Я знаю от разработчика плагинов Eclipse, как создать многострочный диалог в Java, я просто не могу понять, как сделать это в рублях, используя jruby.
Вот мой текущий код в ruby
Используется для запроса Multi Dialog
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 (), сбилось. Любые предложения или помощь будут с благодарностью