blob: b433dfeb643fd2b6695f9e85b065a260ba08969c [file] [log] [blame]
package org.eclipse.debug.internal.ui;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.debug.core.ILauncher;
import org.eclipse.debug.ui.ILaunchWizard;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardNode;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.swt.graphics.Point;
/**
* A wizard node represents a "potential" wizard. Wizard nodes
* allow the user to pick from several available nested wizards.
*/
public class LaunchWizardNode implements IWizardNode {
private static final String PREFIX= "launch_wizard_node.";
private static final String ERROR= PREFIX + "error.";
protected IWizard fWizard;
protected IWizardPage fParentWizardPage;
protected ILauncher fLauncher;
protected String fMode;
/**
* Creates a node that holds onto a wizard element.
* The wizard element provides information on how to create
* the wizard supplied by the ISV's extension.
*/
public LaunchWizardNode(IWizardPage aWizardPage, ILauncher launcher, String mode) {
fParentWizardPage= aWizardPage;
fLauncher= launcher;
fMode= mode;
}
/**
* Returns the wizard represented by this wizard node.
*/
public ILaunchWizard createWizard() throws CoreException {
IConfigurationElement config= fLauncher.getConfigurationElement();
ILaunchWizard wizard= (ILaunchWizard)DebugUIPlugin.getDefault().createExtension(config, "wizard");
wizard.init(fLauncher, fMode, ((LaunchWizard)fParentWizardPage.getWizard()).getSelection());
return wizard;
}
/**
* @see org.eclipse.jface.wizard.IWizardNode#getExtent()
*/
public Point getExtent() {
return new Point(-1, -1);
}
/**
* @see org.eclipse.jface.wizards.IWizardNode#getWizard()
*/
public IWizard getWizard() {
if (fWizard != null) {
return fWizard; // we've already created it
}
try {
fWizard= createWizard(); // create instance of target wizard
} catch (CoreException e) {
DebugUIUtils.errorDialog(fParentWizardPage.getControl().getShell(), ERROR, e.getStatus());
return null;
}
return fWizard;
}
/**
* @see org.eclipse.jface.wizard.IWizardNode#isContentCreated()
*/
public boolean isContentCreated() {
return fWizard != null;
}
/**
* @see org.eclipse.jface.wizard.IWizardNode#dispose()
*/
public void dispose() {
// Do nothing since the wizard wasn't created via reflection.
fWizard= null;
}
/**
* Returns the description specified for the launcher associated
* with the wizard node.
*/
public String getDescription() {
IConfigurationElement config= fLauncher.getConfigurationElement();
String description= config.getAttribute("description");
if (description == null) {
description= "";
}
return description;
}
}