2016-10-04 62 views
0

我用例是处理Ctrl键(CMD)+在TextCellEditor小号Text控制一个组合键,它能利用全球环境基金的“编辑”标签上打开(语言是Scala中,我们对此深感抱歉):处理组合键时的动作已经被注册为它

text.addKeyListener(new KeyAdapter { 
    override def keyPressed(e: KeyEvent) = { 
    val ctrlKey = if (Util.isMac) SWT.COMMAND else SWT.CTRL 
    if (e.stateMask == ctrlKey && e.keyCode == 'a') { 
     text.selectAll() 
     e.doit = false 
    } 
    } 
}) 

但因为“全球性”的动作被登记为整个全球环境基金GraphicalEditor,我甚至不接收该事件。

我怎么能解决这个问题,并使处理程序接收关键事件?

回答

0

这里是我落得这样做,不知道这是否是最好的解决方法,但可以肯定的作品(在单元格编辑):

var originalEnabled: Boolean = true 

def globalSelectAllAction = Option(
    PlatformUI.getWorkbench 
    .getActiveWorkbenchWindow 
    .getActivePage 
    .getActiveEditor 
    .getEditorSite 
    .getActionBars 
    .getGlobalActionHandler(ActionFactory.SELECT_ALL.getId) 
) 

override def activate() { 
    super.activate() 
    originalEnabled = globalSelectAllAction.map(_.isEnabled).getOrElse(true) 
    globalSelectAllAction.foreach(_.setEnabled(false)) 
} 

override def deactivate() { 
    super.deactivate() 
    globalSelectAllAction.foreach(_.setEnabled(originalEnabled)) 
} 

这暂时禁止CMD(CTRL)+ A的动作而单元编辑器处于活动状态并在编辑器不见时重新启用它

相关问题