Подтверждение прямого редактирования в 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).