Редактирование ячейки NatTable должно быть отключено при наборе любых «обычных» символов, таких как буквы или цифры - PullRequest
0 голосов
/ 27 июня 2019
  1. Я хочу отменить регистрацию редактирования ячейки NatTable при вводе любых «обычных» символов, таких как буквы или цифры.т.е. при наборе любой цифры или символа ничего не поделаешь.

  2. Еще один вопрос: я зарегистрировал TABLE_CYCLE_TRAVERSAL_STRATEGY в моем слое сетки, отлично работает с клавишами со стрелками и табуляцией.Но когда мы нажимаем клавишу ввода, выделение ячейки перемещается в следующую ячейку.

gridLayer.registerCommandHandler(new MoveCellSelectionCommandHandler(this.selectionLayer,
new EditTraversalStrategy(ITraversalStrategy.TABLE_CYCLE_TRAVERSAL_STRATEGY, this.natTable)));

Но я хочу реализовать такой способ, что при нажатии клавиши Enter мне нужноредактировать выбранную ячейку.

1 Ответ

1 голос
/ 27 июня 2019

Вам необходимо создать и зарегистрировать пользовательские конфигурации.

  1. DefaultEditBindings Вам необходимо удалить эти две конфигурации, чтобы избежать активации режима редактирования при нажатии клавиши

    * 1007.*
  2. DefaultSelectionBindings#configureMoveDownBindings() Удалите следующие строки, чтобы отключить движение выделения на ENTER

    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.NONE, SWT.CR), action);
    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.MOD1, SWT.CR), action);
    
  3. Зарегистрируйте следующую привязку пользовательского интерфейса для включения редактирования на ENTER иSHIFT + ENTER

    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.NONE, SWT.CR),
            new KeyEditAction());
    uiBindingRegistry.registerKeyBinding(
            new KeyEventMatcher(SWT.MOD1, SWT.CR),
            new KeyEditAction());
    

Также необходимо убедиться, что конфигурации по умолчанию не зарегистрированы, установив для параметра конструктора useDefaultConfiguration значение false.В противном случае упомянутые привязки пользовательского интерфейса все еще регистрируются и срабатывают (например, для SelectionLayer вам нужен настроенный DefaultSelectionLayerConfiguration, который регистрирует настроенный DefaultSelectionBindings).

...