类org.eclipse.jface.action.IMenuListener2源码实例Demo

下面列出了怎么用org.eclipse.jface.action.IMenuListener2的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: tracecompass   文件: TmfView.java
/**
 * Add the "New view" action to the view menu. This action spawns a new view of
 * the same type as the caller.
 */
private void contributeNewViewActionToLocalMenu(IMenuManager menuManager) {
    if (!menuManager.isEmpty()) {
        menuManager.add(new Separator());
    }
    if (this instanceof ITmfPinnable) {
        MenuManager newViewMenu = new MenuManager(MessageFormat.format(Messages.TmfView_NewViewActionText, this.getTitle()));
        newViewMenu.setImageDescriptor(Activator.getDefault().getImageDescripterFromPath(ITmfImageConstants.IMG_UI_NEW_VIEW));
        newViewMenu.setRemoveAllWhenShown(true);
        newViewMenu.addMenuListener(new IMenuListener2() {
            @Override
            public void menuAboutToShow(IMenuManager mgr) {
                Set<@NonNull ITmfTrace> openedTraces = TmfTraceManager.getInstance().getOpenedTraces();
                ITmfTrace activeTrace = ((ITmfPinnable) TmfView.this).getTrace();
                if (activeTrace != null) {
                    mgr.add(new NewTmfViewAction(TmfView.this, activeTrace, true));
                    mgr.add(new Separator());
                }
                for (ITmfTrace trace : openedTraces) {
                    mgr.add(new NewTmfViewAction(TmfView.this, trace));
                }
                mgr.add(new Separator());
                mgr.add(new NewTmfViewAction(TmfView.this, null));
            }

            @Override
            public void menuAboutToHide(IMenuManager manager) {
                /* Clear menu to release action references to trace instances */
                manager.removeAll();
            }
        });
        menuManager.add(newViewMenu);
    } else {
        NewTmfViewAction action = new NewTmfViewAction(TmfView.this);
        menuManager.add(action);
    }
}
 
/**
 * Notifies any menu listeners that a menu is about to hide.
 * Only listeners registered at the time this method is called are notified.
 *
 * @param manager the menu manager
 *
 */
private void fireAboutToHide(IMenuManager manager) {
    final Object[] listeners = this.listeners.getListeners();
    for (int i = 0; i < listeners.length; ++i) {
        final Object listener = listeners[i];
        if (listener instanceof IMenuListener2) {
            final IMenuListener2 listener2 = (IMenuListener2) listener;
            listener2.menuAboutToHide(manager);
        }
    }
}