/******************************************************************************* * Copyright (c) 2011, 2014 Wind River Systems, Inc. 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: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.ui.wizards.newWizard; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.te.ui.activator.UIPlugin; import org.eclipse.tcf.te.ui.interfaces.ImageConsts; import org.eclipse.tcf.te.ui.nls.Messages; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.wizards.IWizardCategory; /** * The New Target wizard implementation. * * @noextend This class is not intended to be subclassed by clients. */ public final class NewWizard extends Wizard implements INewWizard { // The new target wizard registry to use private NewWizardRegistry wizardRegistry; // The new wizard selection page instance private NewWizardSelectionPage mainPage; /** * Constructor. */ public NewWizard(String categoryId) { super(); setWindowTitle(Messages.NewWizard_dialog_title); setForcePreviousAndNextButtons(true); setNeedsProgressMonitor(true); // Initialize the dialog settings for this wizard IDialogSettings settings = UIPlugin.getDefault().getDialogSettings(); String sectionName = this.getClass().getName(); if (settings.getSection(sectionName) == null) settings.addNewSection(sectionName); setDialogSettings(settings.getSection(sectionName)); wizardRegistry = NewWizardRegistry.getInstance(); IWizardCategory category = categoryId != null ? wizardRegistry.findCategory(categoryId): null; mainPage = new NewWizardSelectionPage(wizardRegistry, category); } /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#dispose() */ @Override public void dispose() { super.dispose(); mainPage = null; } /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#getDefaultPageImage() */ @Override public Image getDefaultPageImage() { return UIPlugin.getImage(ImageConsts.NEW_TARGET_WIZARD); } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection) */ @Override public void init(IWorkbench workbench, IStructuredSelection selection) { if (mainPage != null) mainPage.init(workbench, selection); } /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#addPages() */ @Override public void addPages() { if (mainPage != null) addPage(mainPage); } /* (non-Javadoc) * @see org.eclipse.rse.ui.wizards.AbstractSystemWizard#performFinish() */ @Override public boolean performFinish() { if (mainPage != null) { // Trigger the saving of the widget values of // the main wizard selection page mainPage.saveWidgetValues(); // If the finish is invoked directly from the main page, // call performFinish() for the selected wizard too. if (mainPage.equals(getContainer().getCurrentPage())) { if (mainPage.canFinishEarly() && mainPage.getSelectedNode() != null) { // Get the selected wizard IWizard wizard = mainPage.getSelectedNode().getWizard(); if (wizard != null) { wizard.setContainer(getContainer()); wizard.performFinish(); } } } } return true; } /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#canFinish() */ @Override public boolean canFinish() { if (mainPage != null && mainPage.equals(getContainer().getCurrentPage())) { return mainPage.canFinishEarly(); } return super.canFinish(); } }