2017-02-13 30 views
0

Мне нужно реализовать привязку ключа удаления, чтобы при нажатии клавиши удаления удалялся выбранный узел дерева. Я уже реализовал удаление в buttonListener, но мне нужно реализовать то же самое с DEL Key.Как реализовать привязку ключа delete в RCP 3.X

plugin.xml

<extension 
    point="org.eclipse.ui.bindings"> 
    <key 
     commandId="org.eclipse.ui.edit.delete" 
     contextId="org.eclipse.ui.contexts.dialogAndWindow" 
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" 
     sequence="M1+DEL"> //just tried for CTRL+DEL key but i need only for DEL Key 
    </key> 
</extension> 

Должен ли я добавить команды? Что должно быть в атрибутах команд? Где я могу назвать это действие в своем коде?

ответ

0

Большинство плагинов просто используют прослушиватель клавиш на дереве для этого. Что-то вроде:

treeViewer.getTree().addKeyListener(new KeyAdapter() { 
    @Override 
    public void keyPressed(KeyEvent event) { 
     if (event.character == SWT.DEL && event.stateMask == 0) { 
     // TODO handle delete 
     } 
    } 
}); 

Обратите внимание, что Eclipse, уже обязательным для удаления:

<key 
    commandId="org.eclipse.ui.edit.delete" 
    sequence="DEL" 
    schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" /> 

, так что вы можете быть в состоянии определить обработчик для команды org.eclipse.ui.edit.delete но вы должны убедиться, что обработчик активен только когда ваш просмотр/редактор активен.

+0

Я сделал это с помощью Key Listener. Но я хочу попробовать это, добавив действия и команды. Я не знаю, где получить доступ или вызвать это действие. Как активировать обработчик? Не могли бы вы помочь? – Sudeep

+0

Я не могу найти примеры в Eclipse, используя обработчик для этого, почти все использует прослушиватель ключей. Вы должны определить обработчик 'org.eclipse.ui.handlers' и использовать элементы' 'для определения, когда он активен. –