blob: 4e4ea3157f8cca213f1de7f811e714209dc99422 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.actions;
import java.util.List;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.internal.registry.WizardsRegistryReader;
/**
* A <code>NewWizardMenu</code> augments <code>BaseNewWizardMenu</code> with IDE-specific
* actions: New Project... (always shown) and New Example... (shown only if there are example wizards installed).
*/
public class NewWizardMenu extends BaseNewWizardMenu {
private final IAction newProjectAction;
private final IAction newExampleAction;
private boolean enabled = true;
/**
* Creates a new wizard shortcut menu for the IDE.
*
* @param window
* the window containing the menu
*/
public NewWizardMenu(IWorkbenchWindow window) {
this(window, null);
}
/**
* Creates a new wizard shortcut menu for the IDE.
*
* @param window
* the window containing the menu
* @param id
* the identifier for this contribution item
*/
public NewWizardMenu(IWorkbenchWindow window, String id) {
super(window, id);
newProjectAction = new NewProjectAction(window);
newExampleAction = new NewExampleAction(window);
}
/**
* Create a new wizard shortcut menu.
* <p>
* If the menu will appear on a semi-permanent basis, for instance within
* a toolbar or menubar, the value passed for <code>register</code> should be true.
* If set, the menu will listen to perspective activation and update itself
* to suit. In this case clients are expected to call <code>deregister</code>
* when the menu is no longer needed. This will unhook any perspective
* listeners.
* </p>
*
* @param innerMgr the location for the shortcut menu contents
* @param window the window containing the menu
* @param register if <code>true</code> the menu listens to perspective changes in
* the window
* @deprecated use NewWizardMenu(IWorkbenchWindow) instead
*/
public NewWizardMenu(IMenuManager innerMgr, IWorkbenchWindow window,
boolean register) {
this(window, null);
fillMenu(innerMgr);
// Must be done after constructor to ensure field initialization.
}
/* (non-Javadoc)
* Fills the menu with New Wizards.
*/
private void fillMenu(IContributionManager innerMgr) {
// Remove all.
innerMgr.removeAll();
IContributionItem[] items = getContributionItems();
for (int i = 0; i < items.length; i++) {
innerMgr.add(items[i]);
}
}
/**
* Removes all listeners from the containing workbench window.
* <p>
* This method should only be called if the shortcut menu is created with
* <code>register = true</code>.
* </p>
*
* @deprecated has no effect
*/
public void deregisterListeners() {
// do nothing
}
/**
* Return whether or not any examples are in the current install.
*
* @return boolean
*/
private boolean hasExamples() {
return registryHasCategory(WizardsRegistryReader.FULL_EXAMPLES_WIZARD_CATEGORY);
}
/* (non-Javadoc)
* @see org.eclipse.ui.actions.BaseNewWizardMenu#addItems(org.eclipse.jface.action.IContributionManager)
*/
protected void addItems(List list) {
list.add(new ActionContributionItem(newProjectAction));
list.add(new Separator());
if (addShortcuts(list)) {
list.add(new Separator());
}
if (hasExamples()) {
list.add(new ActionContributionItem(newExampleAction));
list.add(new Separator());
}
list.add(new ActionContributionItem(getShowDialogAction()));
}
/* (non-Javadoc)
* Method declared on IContributionItem.
*/
public boolean isEnabled() {
return enabled;
}
/**
* Sets the enabled state of the receiver.
*
* @param enabledValue if <code>true</code> the menu is enabled; else
* it is disabled
*/
public void setEnabled(boolean enabledValue) {
this.enabled = enabledValue;
}
/* (non-Javadoc)
* @see org.eclipse.ui.actions.BaseNewWizardMenu#getContributionItems()
*/
protected IContributionItem[] getContributionItems() {
if (isEnabled()) {
return super.getContributionItems();
}
return new IContributionItem[0];
}
}