Я хочу добавить многострочный InputDialog в мой рубль - PullRequest
0 голосов
/ 29 июля 2011

Хорошо, поэтому я действительно хотел бы иметь возможность добавить многострочный (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 (), сбилось. Любые предложения или помощь будут с благодарностью

1 Ответ

0 голосов
/ 31 июля 2011

Попробуйте это:

  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

Ура, Max

...