diff options
Diffstat (limited to 'org.eclipse.mylyn.commons.repositories.ui/src/org/eclipse/mylyn/internal/commons/repositories/ui/wizards/NewRepositoryWizardSelectionPage.java')
-rw-r--r-- | org.eclipse.mylyn.commons.repositories.ui/src/org/eclipse/mylyn/internal/commons/repositories/ui/wizards/NewRepositoryWizardSelectionPage.java | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.commons.repositories.ui/src/org/eclipse/mylyn/internal/commons/repositories/ui/wizards/NewRepositoryWizardSelectionPage.java b/org.eclipse.mylyn.commons.repositories.ui/src/org/eclipse/mylyn/internal/commons/repositories/ui/wizards/NewRepositoryWizardSelectionPage.java new file mode 100644 index 00000000..0790c150 --- /dev/null +++ b/org.eclipse.mylyn.commons.repositories.ui/src/org/eclipse/mylyn/internal/commons/repositories/ui/wizards/NewRepositoryWizardSelectionPage.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * 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.mylyn.internal.commons.repositories.ui.wizards; + +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.internal.dialogs.WorkbenchWizardSelectionPage; +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 NewRepositoryWizardSelectionPage extends WorkbenchWizardSelectionPage { + + private final IWizardCategory wizardCategories; + + // widgets + private NewRepositoryWizardNewPage newResourcePage; + + private final IWizardDescriptor[] primaryWizards; + + private final 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 NewRepositoryWizardSelectionPage(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 NewRepositoryWizardNewPage(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() + */ + @Override + 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; + } +} |