blob: 85068fc97c80c400a7209001b2c1d4f509b6c842 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2006 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.internal.dialogs;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
import org.eclipse.ui.internal.WorkbenchMessages;
import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
import org.eclipse.ui.wizards.IWizardCategory;
import org.eclipse.ui.wizards.IWizardDescriptor;
/**
* New wizard selection tab that allows the user to either select a
* registered 'New' wizard to be launched, or to select a solution or
* projects to be retrieved from an available server. This page
* contains two visual tabs that allow the user to perform these tasks.
*
* Temporarily has two inner pages. The new format page is used if the system
* is currently aware of activity categories.
*/
class NewWizardSelectionPage extends WorkbenchWizardSelectionPage {
private IWizardCategory wizardCategories;
// widgets
private NewWizardNewPage newResourcePage;
private IWizardDescriptor [] primaryWizards;
private boolean projectsOnly;
private boolean canFinishEarly = false, hasPages = true;
/**
* Create an instance of this class.
*
* @param workbench the workbench
* @param selection the current selection
* @param root the wizard root element
* @param primary the primary wizard elements
* @param projectsOnly if only projects should be shown
*/
public NewWizardSelectionPage(IWorkbench workbench,
IStructuredSelection selection, IWizardCategory root,
IWizardDescriptor[] primary, boolean projectsOnly) {
super("newWizardSelectionPage", workbench, selection, null, WorkbenchTriggerPoints.NEW_WIZARDS);//$NON-NLS-1$
setTitle(WorkbenchMessages.NewWizardSelectionPage_description);
wizardCategories = root;
primaryWizards = primary;
this.projectsOnly = projectsOnly;
}
/**
* Makes the next page visible.
*/
public void advanceToNextPageOrFinish() {
if (canFlipToNextPage()) {
getContainer().showPage(getNextPage());
} else if (canFinishEarly()) {
if (getWizard().performFinish()) {
((WizardDialog)getContainer()).close();
}
}
}
/** (non-Javadoc)
* Method declared on IDialogPage.
*/
public void createControl(Composite parent) {
IDialogSettings settings = getDialogSettings();
newResourcePage = new NewWizardNewPage(this, wizardCategories,
primaryWizards, projectsOnly);
newResourcePage.setDialogSettings(settings);
Control control = newResourcePage.createControl(parent);
getWorkbench().getHelpSystem().setHelp(control,
IWorkbenchHelpContextIds.NEW_WIZARD_SELECTION_WIZARD_PAGE);
setControl(control);
}
/**
* Since Finish was pressed, write widget values to the dialog store so that they
*will persist into the next invocation of this wizard page
*/
protected void saveWidgetValues() {
newResourcePage.saveWidgetValues();
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#canFlipToNextPage()
*/
public boolean canFlipToNextPage() {
// if the current page advertises that it does have pages then ask it via the super call
if (hasPages) {
return super.canFlipToNextPage();
}
return false;
}
/**
* Sets whether the selected wizard advertises that it does provide pages.
*
* @param newValue whether the selected wizard has pages
* @since 3.1
*/
public void setHasPages(boolean newValue) {
hasPages = newValue;
}
/**
* Sets whether the selected wizard advertises that it can finish early.
*
* @param newValue whether the selected wizard can finish early
* @since 3.1
*/
public void setCanFinishEarly(boolean newValue) {
canFinishEarly = newValue;
}
/**
* Answers whether the currently selected page, if any, advertises that it may finish early.
*
* @return whether the page can finish early
* @since 3.1
*/
public boolean canFinishEarly() {
return canFinishEarly;
}
}