package org.docear.plugin.core.ui.wizard;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author genzmehr@docear.org
*
*/
public class WizardController implements ActionListener {
private final Wizard wizard;
/***********************************************************************************
* CONSTRUCTORS
**********************************************************************************/
public WizardController(Wizard wizard) {
this.wizard = wizard;
}
/***********************************************************************************
* METHODS
**********************************************************************************/
/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
@Override
public void actionPerformed(ActionEvent e) {
if(wizard.isCancelControl(e.getSource())) {
wizard.cancel();
}
else {
if(e.getSource().equals(wizard.getSession().getNextButton())) {
WizardPageDescriptor desc = wizard.getSession().getCurrentDescriptor().getNextPageDescriptor(wizard.getSession());
if(desc == null || Wizard.FINISH_PAGE.equals(desc)) {
wizard.finish();
}
else {
wizard.getSession().getTraversalLog().add(wizard.getSession().getCurrentDescriptor());
wizard.setCurrentPage(desc.getIdentifier());
}
}
else if(e.getSource().equals(wizard.getSession().getBackButton())) {
WizardPageDescriptor desc = wizard.getSession().getCurrentDescriptor().getBackPageDescriptor(wizard.getSession());
if(desc == null) {
wizard.getSession().getBackButton().setEnabled(false);
}
else {
wizard.setCurrentPage(desc.getIdentifier());
}
}
else if(e.getSource().equals(wizard.getSession().getSkipButton())) {
WizardPageDescriptor desc = wizard.getSession().getCurrentDescriptor().getSkipPageDescriptor(wizard.getSession());
if(desc == null || Wizard.FINISH_PAGE.equals(desc)) {
wizard.finish();
}
else {
wizard.setCurrentPage(desc.getIdentifier());
}
}
}
}
}