Можно ли изменить как текстовый виджет SWT переносить слова? - PullRequest
4 голосов
/ 12 мая 2011

Платформа разработки представляет собой Eclipse RCP 3.4 на Fedora (она использует собственный компонент Gtk).Мне нужно избегать переноса слов.

, т. Е. «Hello World» отображается как регистр № 1, но мне нужен регистр № 2.

1|Hello    |    2|Hello Wor|
 |World    |     |ld       |

Есть ли простое решение?

Я видел, что текстовый дескриптор SWT собран с OS.GTK_WRAP_WORD_CHAR режимом переноса.Я хотел бы проверить поведение с константой, как OS.GTK_WRAP_WORD или OS.GTK_WRAP_NONE, но я не знаю, как совершить это чудо?Можно ли программно изменить конкретную конфигурацию платформы?

РЕДАКТИРОВАТЬ 1 - Есть решение от одного из моих коллег:

import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.gtk.OS;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class SampleGrabExcess {
   public static void main(String[] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.setLayout(new GridLayout());
      shell.setSize(70, 70);

      GridData gridData = new GridData();
      Text addressText = new Text(shell, SWT.BORDER | SWT.MULTI) {
         @Override
         protected void checkSubclass() {}

         @Override
         protected void checkWidget() {
            OS.gtk_text_view_set_wrap_mode(handle, 1);
            super.checkWidget();
         }

      };
      gridData = new GridData();
      gridData.horizontalAlignment = SWT.FILL;
      gridData.grabExcessHorizontalSpace = true;
      gridData.verticalAlignment = SWT.FILL;
      gridData.grabExcessVerticalSpace = true;
      addressText.setLayoutData(gridData);
      addressText.setText("Hello World.");

      shell.open();

      while (!shell.isDisposed()) {
         if (!display.readAndDispatch()) {
            display.sleep();
         }
      }
   }
}

Результат ожидаемый.Я ищу решение от http://dev.eclipse.org.

1 Ответ

0 голосов
/ 12 мая 2011

Нет, я не понимаю, как вы могли бы это сделать.

Кстати, даже если бы вы могли, установив режим на OS.GTK_WRAP_WORD и OS.GTK_WRAP_NONE, вы не получите желаемого поведения, так какпервый разрывает строку между словами, как OS.GTK_WRAP_WORD_CHAR, а второй вообще не прерывает строки.Вы ищете режим GTK_WRAP_CHAR.Однако тот факт, что такая константа, как OS.GTK_WRAP_CHAR, даже не объявлена ​​в org.eclipse.swt.internal.gtk.OS , указывает на то, что создатели SWT, вероятно, были против разрешения такого поведения, даже втеория.

...