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