2016-10-04 95 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的動作而單元編輯器處於活動狀態並在編輯器不見時重新啓用它

相關問題