package org.xmind.cathy.internal.renderer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.inject.Inject; import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer; import org.eclipse.e4.ui.model.application.MApplication; import org.eclipse.e4.ui.model.application.ui.menu.MMenu; import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution; import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement; import org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer; public class XMenuManagerRenderer extends MenuManagerRenderer { private static final String[] retainedIconMenus = { "org.xmind.ui.toolbar.mindmap.topic.menu", //$NON-NLS-1$ "org.xmind.ui.toolbar.export.export.menu", //$NON-NLS-1$ "org.xmind.ui.toolbar.mindmap.insert.menu" //$NON-NLS-1$ }; @Inject private MApplication application; @Override public void processContributions(MMenu menuModel, String elementId, boolean isMenuBar, boolean isPopup) { if (elementId == null) { return; } List<MMenuElement> elements = menuModel.getChildren(); for (MMenuElement menuItem : elements) { if (menuItem instanceof MMenuElement) { if (!checkRetainedIconMenu(menuModel)) { ((MMenuElement) menuItem).setIconURI(null); } menuItem.setTooltip(""); //$NON-NLS-1$ } } final ArrayList<MMenuContribution> toContribute = new ArrayList<MMenuContribution>(); ContributionsAnalyzer.XXXgatherMenuContributions(menuModel, application.getMenuContributions(), elementId, toContribute, null, isPopup); for (MMenuContribution contri : toContribute) { List<MMenuElement> children = contri.getChildren(); for (MMenuElement me : children) { if (!checkRetainedIconMenu(menuModel)) { ((MMenuElement) me).setIconURI(null); } me.setTooltip(""); //$NON-NLS-1$ } } super.processContributions(menuModel, elementId, isMenuBar, isPopup); } private boolean checkRetainedIconMenu(MMenu menuModel) { return Arrays.asList(retainedIconMenus) .contains(menuModel.getElementId()); } }