下面列出了怎么用org.eclipse.jface.action.IMenuListener2的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* 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);
}
}
}