Отключить Alt + Enter для TreeViewer в Eclipse - PullRequest
1 голос
/ 21 июня 2011



Я добавил ключевой слушатель к дереву в SWT, и когда я нажимаю Alt +, введите состояние события ключа - keyCode = 65536 и statemask = 0, когда это должно было быть keyCode = ' \ r 'и маска состояния = 65536.
Ниже приведен фрагмент кода, который я написал -

mViewer.getTree().addListener(SWT.KeyDown, new Listener() {
            @Override
            public void handleEvent(Event e) {
                if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
                    e.doit = false;
                }
            }
        });

Рабочая среда Eclipse фильтрует некоторые события перед тем, как делегировать события слушателям в компонентах. Есть ли способ, которым я могу отключить alt + enter, чтобы не выполнять свойства show в eclipse на одном из средств просмотра дерева?

С наилучшими пожеланиями, Кешав

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Вы увидите все события нажатия клавиш / выключения - даже если ключ является ключом состояния. Итак, первое событие для клавиши Alt вниз ...

Последовательность должна быть:

  • KeyDown: stateMask = 0 и keyCode = 65536
  • KeyDown: stateMask = 65536 и keyCode = '\ r'
  • KeyUp: stateMask = 65536 и keyCode = '\ r'
  • KeyUp: stateMask = 0 и keyCode = 65536
1 голос
/ 28 июня 2011

Вы можете переопределить определенную глобальную команду для определенного средства просмотра несколькими различными способами:

  • Добавить слушателя, чтобы отфильтровать последовательность клавиш - хотя это не всегда возможно.
  • Добавьте фильтр Display, чтобы сделать то же самое - фильтр можно добавлять / удалять при фокусировке входа / выхода на элементе управления Viewer.
  • Добавить новый контекст в приложение и переопределить необходимые привязки клавиш для нового контекста - контекст активируется / деактивируется при фокусировке входа / выхода на элементе управления Viewer

Я предпочитаю это последнее решение, так как могу переопределить определенные привязки клавиш для Viewer из любого плагина, используя обычную точку расширения привязки ...

1 голос
/ 21 июня 2011

Попробуйте следующий код:

mViewer.getTree().addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
            // your code
            e.doit = false;
        }
    }
});

И импорт вам нужен:

import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
...