package org.openjump.core.ui.plugin;
import java.util.List;
import javax.swing.Icon;
import org.openjump.core.ui.swing.wizard.WizardGroup;
import com.vividsolutions.jump.task.TaskMonitor;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.registry.Registry;
import com.vividsolutions.jump.workbench.ui.WorkbenchFrame;
import com.vividsolutions.jump.workbench.ui.wizard.WizardDialog;
import com.vividsolutions.jump.workbench.ui.wizard.WizardPanel;
public class AbstractWizardPlugin extends AbstractThreadedUiPlugIn {
private WizardGroup wizard;
private WizardDialog dialog;
public AbstractWizardPlugin() {
}
public AbstractWizardPlugin(Icon icon) {
super(icon);
}
public AbstractWizardPlugin(String name, Icon icon, String toolTip) {
super(name, icon, toolTip);
}
public AbstractWizardPlugin(String name, Icon icon) {
super(name, icon);
}
public AbstractWizardPlugin(String name, String toolTip) {
super(name, toolTip);
}
public AbstractWizardPlugin(String name) {
super(name);
}
public boolean execute(PlugInContext context) throws Exception {
Registry registry = workbenchContext.getRegistry();
WorkbenchFrame workbenchFrame = context.getWorkbenchFrame();
dialog = new WizardDialog(workbenchFrame, getName(),
context.getErrorHandler());
wizard.initialize(workbenchContext, dialog);
List<WizardPanel> panels = wizard.getPanels();
String firstId = wizard.getFirstId();
if (panels.isEmpty() || firstId == null) {
return true;
}
dialog.init(panels);
dialog.setCurrentWizardPanel(firstId);
dialog.pack();
dialog.setVisible(true);
if (dialog.wasFinishPressed()) {
return true;
} else {
return false;
}
}
public void run(TaskMonitor monitor, PlugInContext context) throws Exception {
wizard.run(dialog, monitor);
}
public WizardGroup getWizard() {
return wizard;
}
protected void setWizard(WizardGroup wizard) {
this.wizard = wizard;
}
}