Подтверждение прямого редактирования в GEF EditParts

Вступление:
Я пишу плагин Eclipse, содержащий редактор, который я реализую с помощью GEF. У меня есть узлы и ребра в моем редакторе. У узлов есть имена, и я хочу отредактировать имя узлов с помощью прямого редактирования.

Я устанавливаю политику прямого редактирования для частей редактирования узла:

installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NodeNameDirectEditPolicy());

и политика прямого редактирования реализует команду прямого редактирования.

Проблема в том, что для подтверждения прямого редактирования мне нужно нажать STRG + ENTER. Если я только нажимаю ENTER, прямое редактирование расширяется до новой строки. Есть ли способ сделать так, чтобы прямое редактирование могло быть подтверждено просто нажатием ENTER? имена многострочных узлов не нужны.

1 ответ

Решение

Вы должны быть в состоянии достичь этого путем расширения TextCellEditor(Composite parent, int style) конструктор в вашем собственном расширении TextCellEditor,

Потом при звонке createCellEditorOn(Composite composite) в вашем DirectEditManager класс расширения, пусть вернет new YOURTextCellEditor(composite, SWT.SINGLE),

Вывести подробный:

Ваша собственная реализация TextCellEditor конструктор

public YOURTextCellEditor(Composite parent, int style) {
  super(parent, style);
}

createCellEditorOn(Composite composite) в вашей реализации DirectEditManager`

@Override
protected CellEditor createCellEditorOn(Composite composite) {
    return new YOURTextCellEditor(composite, SWT.SINGLE);
}

Возможно, проверьте, если вы возвращаете новый экземпляр YOURTextCellEditor с SWT.MULTI или же SWT.MULTI|SWT.WRAP или аналогично, это заставляет SWT вашего редактора текстовых ячеек управлять многострочным текстовым виджетом (см. обзор SWT Widgets).

Другие вопросы по тегам