2010-09-10 222 views
2

我想從菜單欄捕捉用戶選擇,例如,如果用戶在菜單中按下了File,我的插件將打印「文件按下」。 我想出瞭如何通過IselectionService來查看選擇,但仍然不知道如何使用主菜單欄(或工具欄)進行查看。eclipse監聽器主菜單欄選擇

thanx的幫助


更多細節:

我要去更精確地解釋我的問題有點:
我想捕捉頂級菜單操作和工具欄,可問題是我真的不知道如何創建和附加偵聽器。
這是插件的ISelectionListener
我的目的是聆聽工作臺頂層菜單選項和工具欄。
thanx的幫助

// the listener we register with the selection service 
private ISelectionListener listener = new ISelectionListener() { 
    public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection) { 
    // we ignore our own selections 
    if (sourcepart != SelectionView.this) { 
     showSelection(sourcepart, selection); 
    } 
    } 
}; 
... 
... 
public void createPartControl(Composite parent) { 
    ... 
    getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(listener); 

PS:大部分我發現有關菜單監聽器是SWT的東西對於某些觀點或者我已經創建的窗口,那不是我的意思,我需要監聽到主頂級菜單和工具欄在eclipse工作臺中。

回答

1

如果您知道位置URI(您可以使用PluginSpy查詢),you can add an handler以便對該菜單事件做出反應。

注:Menu Contribution article提到locationURI爲:

  • 主菜單是 「org.eclipse.ui.main.menu
  • 主要toolbor是 「org.eclipse.ui.main.toolbar
+0

嘿,thanx爲快速回復:) – 2010-09-12 13:49:41

+0

請再看看我的問題,我編輯它! – 2010-09-12 17:48:20

+0

@amir:我再次查看了你的問題(並且實際編輯了它),但是現在沒有添加新的元素。還在尋找。 – VonC 2010-09-12 18:08:46

1

宥可以嘗試使用ICommandService: 與這個服務你可以註冊一個IExecutionListener。

這樣你就可以跟蹤所有執行的命令,但恐怕這樣你就無法跟蹤激活命令本身的菜單項。

希望它可以幫助

+0

我只是想告訴你,我從SmartTutor插件獲得了一些幫助,這些插件讓我感到非常興奮。捕獲菜單上的所有操作。 – 2010-11-13 07:57:28

+0

這裏是網站:http://code.google.com/p/smarttutor/ – 2010-11-13 07:57:59

+0

cerealk你的權利,它的作品。 Iam現在尋找主菜單下拉事件和鼠標懸停事件在日食上的菜單和menuitems。需要幫助 – 2011-03-08 13:30:47

0

我只是想告訴你,我得到了一些幫助,從誰做Smarttutor插件的傢伙,這excatly我需要什麼。捕獲菜單上的所有操作。 - amir farah 31秒前編輯我只是想告訴你,我從SmartTutor插件中獲得了一些幫助,這些插件激發我需要什麼。捕獲菜單上的所有操作。
這裏是網站:code.google.com/p/smarttutor