package com.gorillalogic.monkeyconsole.navigator;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonMenuConstants;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
import org.eclipse.ui.navigator.WizardActionGroup;
public class CustomNewActionProvider extends CommonActionProvider {
private static final String NEW_MENU_NAME = "common.new.menu";//$NON-NLS-1$
private ActionFactory.IWorkbenchAction showDlgAction;
private WizardActionGroup newWizardActionGroup;
private boolean contribute = false;
@Override
public void init(ICommonActionExtensionSite anExtensionSite) {
if (anExtensionSite.getViewSite() instanceof ICommonViewerWorkbenchSite) {
IWorkbenchWindow window = ((ICommonViewerWorkbenchSite) anExtensionSite.getViewSite()).getWorkbenchWindow();
showDlgAction = ActionFactory.NEW.create(window);
newWizardActionGroup = new WizardActionGroup(window, PlatformUI.getWorkbench().getNewWizardRegistry(),WizardActionGroup.TYPE_NEW, anExtensionSite.getContentService());
contribute =true;
}
}
@Override
public void fillContextMenu(IMenuManager menu) {
IMenuManager submenu = new MenuManager("New", NEW_MENU_NAME);
if(!contribute) {
return;
}
// fill the menu from the commonWizard contributions
newWizardActionGroup.setContext(getContext());
newWizardActionGroup.fillContextMenu(submenu);
submenu.add(new Separator(ICommonMenuConstants.GROUP_ADDITIONS));
// Add other ..
submenu.add(new Separator());
submenu.add(showDlgAction);
// append the submenu after the GROUP_NEW group.
menu.insertAfter(ICommonMenuConstants.GROUP_NEW, submenu);
}
@Override
public void dispose() {
if (showDlgAction!=null) {
showDlgAction.dispose();
showDlgAction = null;
}
super.dispose();
}
}