blob: 0438e397dc139e9d04170f32c2ec16ac191ffb70 [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.ltk.ui.refactoring;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.util.Assert;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.ltk.core.refactoring.Refactoring;
/**
* An abstract base implementation of a refactoring wizard page. The class
* provides access to the refactoring wizard and to the refactoring itself.
* Refactoring wizard pages can only be added to a
* {@link org.eclipse.ltk.ui.refactoring.RefactoringWizard RefactoringWizard}.
* Adding them to a normal {@linkplain org.eclipse.jface.wizard.Wizard wizard}
* result in an exception.
* <p>
* Note: this class is not intended to be subclassed by clients. Clients should
* extend {@link org.eclipse.ltk.ui.refactoring.UserInputWizardPage}.
* </p>
*
* @see RefactoringWizard
* @see org.eclipse.ltk.core.refactoring.Refactoring
*/
public abstract class RefactoringWizardPage extends WizardPage {
public static final String REFACTORING_SETTINGS= "org.eclipse.ltk.ui.refactoring.settings"; //$NON-NLS-1$
/** Does the page belong to a conventional wizard? */
private final boolean fConventionalWizard;
/**
* Creates a new refactoring wizard page.
* <p>
* Note: this constructor is not intended to be used outside the refactoring
* framework.
* </p>
*
* @param name
* the page's name.
* @param wizard
* <code>true</code> if the page belongs to a conventional wizard, <code>false</code> otherwise
* @see org.eclipse.jface.wizard.IWizardPage#getName()
*
* @since 3.2
*/
protected RefactoringWizardPage(String name, boolean wizard) {
super(name);
fConventionalWizard= wizard;
}
/**
* Creates a new refactoring wizard page.
*
* @param name the page's name.
* @see org.eclipse.jface.wizard.IWizardPage#getName()
*/
protected RefactoringWizardPage(String name) {
super(name);
fConventionalWizard= false;
}
/**
* {@inheritDoc}
*
* This method asserts that the wizard passed as a parameter is of
* type <code>RefactoringWizard</code>.
*/
public void setWizard(IWizard newWizard) {
Assert.isTrue(fConventionalWizard || newWizard instanceof RefactoringWizard);
super.setWizard(newWizard);
}
/**
* Returns the refactoring associated with this wizard page. Returns
* <code>null</code> if the page isn't been added to any refactoring
* wizard yet.
*
* @return the refactoring associated with this refactoring wizard page
* or <code>null</code>
*/
protected Refactoring getRefactoring() {
RefactoringWizard wizard= getRefactoringWizard();
if (wizard == null)
return null;
return wizard.getRefactoring();
}
/**
* Returns the page's refactoring wizard.
*
* @return the page's refactoring wizard or <code>null</code> if the
* wizard hasn't been set yet
*/
protected RefactoringWizard getRefactoringWizard() {
IWizard wizard= getWizard();
if (wizard instanceof RefactoringWizard)
return (RefactoringWizard) wizard;
return null;
}
/**
* Performs any actions appropriate in response to the user having pressed
* the Finish button, or refuse if finishing now is not permitted. This
* method is called by the refactoring wizard on the currently active
* refactoring wizard page.
*
* @return <code>true</code> to indicate the finish request was accepted,
* and <code>false</code> to indicate that the finish request was
* refused
*/
protected boolean performFinish() {
return true;
}
/**
* Returns the refactoring wizard's dialog settings.
*
* @return the refactoring wizard's dialog settings or <code>null</code>
* if no settings are associated with the refactoring wizard dialog
*/
protected IDialogSettings getRefactoringSettings() {
IDialogSettings settings= getDialogSettings();
if (settings == null)
return null;
IDialogSettings result= settings.getSection(REFACTORING_SETTINGS);
if (result == null) {
result= new DialogSettings(REFACTORING_SETTINGS);
settings.addSection(result);
}
return result;
}
}