org.eclipse.jface.wizard.WizardSelectionPage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.jface Show documentation
Show all versions of org.eclipse.jface Show documentation
This is org.eclipse.jface jar used by Scout SDK
The newest version!
/*******************************************************************************
* Copyright (c) 2000, 2015 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.jface.wizard;
import java.util.ArrayList;
import java.util.List;
/**
* An abstract implementation of a wizard page that manages a
* set of embedded wizards.
*
* A wizard selection page should present a list of wizard nodes
* corresponding to other wizards. When the end user selects one of
* them from the list, the first page of the selected wizard becomes
* the next page. The only new methods introduced by this class are
* getSelectedNode
and setSelectedNode
.
* Otherwise, the subclass contract is the same as WizardPage
.
*
*/
public abstract class WizardSelectionPage extends WizardPage {
/**
* The selected node; null
if none.
*/
private IWizardNode selectedNode = null;
/**
* List of wizard nodes that have cropped up in the past
* (element type: IWizardNode
).
*/
private List selectedWizardNodes = new ArrayList<>();
/**
* Creates a new wizard selection page with the given name, and
* with no title or image.
*
* @param pageName the name of the page
*/
protected WizardSelectionPage(String pageName) {
super(pageName);
// Cannot finish from this page
setPageComplete(false);
}
/**
* Adds the given wizard node to the list of selected nodes if
* it is not already in the list.
*
* @param node the wizard node, or null
*/
private void addSelectedNode(IWizardNode node) {
if (node == null) {
return;
}
if (selectedWizardNodes.contains(node)) {
return;
}
selectedWizardNodes.add(node);
}
/**
* The WizardSelectionPage
implementation of
* this IWizardPage
method returns true
* if there is a selected node.
*/
@Override
public boolean canFlipToNextPage() {
return selectedNode != null;
}
/**
* The WizardSelectionPage
implementation of an IDialogPage
* method disposes of all nested wizards. Subclasses may extend.
*/
@Override
public void dispose() {
super.dispose();
// notify nested wizards
for (int i = 0; i < selectedWizardNodes.size(); i++) {
selectedWizardNodes.get(i).dispose();
}
}
/**
* The WizardSelectionPage
implementation of
* this IWizardPage
method returns the first page
* of the currently selected wizard if there is one.
*/
@Override
public IWizardPage getNextPage() {
if (selectedNode == null) {
return null;
}
boolean isCreated = selectedNode.isContentCreated();
IWizard wizard = selectedNode.getWizard();
if (wizard == null) {
setSelectedNode(null);
return null;
}
if (!isCreated) {
// Allow the wizard to create its pages
wizard.addPages();
}
return wizard.getStartingPage();
}
/**
* Returns the currently selected wizard node within this page.
*
* @return the wizard node, or null
if no node is selected
*/
public IWizardNode getSelectedNode() {
return selectedNode;
}
/**
* Sets or clears the currently selected wizard node within this page.
*
* @param node the wizard node, or null
to clear
*/
protected void setSelectedNode(IWizardNode node) {
addSelectedNode(node);
selectedNode = node;
if (isCurrentPage()) {
getContainer().updateButtons();
}
}
}