blob: 21e34ec14b6471f2116a4d48e1a7b7a60aae2868 [file] [log] [blame]
package org.eclipse.ui.internal.dialogs;
/**********************************************************************
Copyright (c) 2002 IBM Corp. and others.
All rights reserved.   This program and the accompanying materials
are made available under the terms of the Common Public License v0.5
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v05.html
 
Contributors:
**********************************************************************/
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
/**
* A dialog to show a multi-step wizard to the end user.
* <p>
* In typical usage, the client instantiates this class with
* a multi-step wizard. The dialog serves as the wizard container
* and orchestrates the presentation of its pages.
* <p>
* The standard layout is roughly as follows:
* it has an area at the top containing both the
* wizard's title, description, and image; the actual wizard page
* appears in the middle; below that is a progress indicator
* (which is made visible if needed); and at the bottom
* of the page is message line and a button bar containing
* Help, Next, Back, Finish, and Cancel buttons (or some subset).
* </p>
* <p>
* This class is not intended to be subclassed by clients.
* </p>
*/
public class MultiStepWizardDialog extends WizardDialog {
private MultiStepWizard multiStepWizard;
/**
* Creates a new wizard dialog for the given wizard.
*
* @param parentShell the parent shell
* @param newWizard the multi-step wizard this dialog is working on
*/
public MultiStepWizardDialog(Shell parentShell, MultiStepWizard newWizard) {
super(parentShell, newWizard);
multiStepWizard = newWizard;
multiStepWizard.setWizardDialog(this);
}
/**
* Forces the wizard dialog to close
*/
/* package */ void forceClose() {
super.finishPressed();
}
/* (non-Javadoc)
* Method declared on WizardDialog.
*/
protected void backPressed() {
if (multiStepWizard.isConfigureStepMode())
multiStepWizard.getStepContainer().backPressed();
else
super.backPressed();
}
/* (non-Javadoc)
* Method declared on WizardDialog.
*/
protected void finishPressed() {
if (multiStepWizard.isConfigureStepMode()) {
boolean success = multiStepWizard.getStepContainer().performFinish();
if (success)
multiStepWizard.getStepContainer().processCurrentStep();
} else {
super.finishPressed();
}
}
/**
* Returns the multi-step wizard for this dialog
*/
/* package */ MultiStepWizard getMultiStepWizard() {
return multiStepWizard;
}
/* (non-Javadoc)
* Method declared on WizardDialog.
*/
protected void helpPressed() {
if (multiStepWizard.isConfigureStepMode())
multiStepWizard.getStepContainer().helpPressed();
else
super.helpPressed();
}
/* (non-Javadoc)
* Method declared on WizardDialog.
*/
protected void nextPressed() {
if (multiStepWizard.isConfigureStepMode())
multiStepWizard.getStepContainer().nextPressed();
else
super.nextPressed();
}
/**
* Sets the label for the finish button
*/
/* package */ void setFinishLabel(String label) {
Button button = getButton(IDialogConstants.FINISH_ID);
if (button == null)
return;
if (label == null) {
if (!button.getText().equals(IDialogConstants.FINISH_LABEL)) {
button.setText(IDialogConstants.FINISH_LABEL);
((Composite)button.getParent()).layout(true);
}
} else {
button.setText(label);
((Composite)button.getParent()).layout(true);
}
}
/**
* Updates everything in the dialog
*/
/* package */ void updateAll() {
super.update();
}
/**
* Updates the layout of the dialog
*/
/* package */ void updateLayout() {
super.updateSize(getCurrentPage());
}
}