/******************************************************************************* * 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; } }