// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de package net.sf.eclipsefp.haskell.ui.wizards; import net.sf.eclipsefp.haskell.ui.util.DefaultStatus; import net.sf.eclipsefp.haskell.ui.util.StatusUtil; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.wizard.WizardPage; /** <p>a wizard page that provides status presentation facilities for * subclasses.</p> * * @author Leif Frenzel */ public abstract class StatusWizardPage extends WizardPage { private IStatus currentStatus; private boolean pageVisible; public StatusWizardPage( final String name ) { super( name ); pageVisible = false; currentStatus = new DefaultStatus(); } // interface methods of WizardPage ////////////////////////////////// @Override public void setVisible( final boolean visible ) { super.setVisible( visible ); pageVisible = visible; // policy: wizards are not allowed to come up with an error message if( visible && currentStatus.matches( IStatus.ERROR ) ) { currentStatus = new DefaultStatus(); ( ( DefaultStatus )currentStatus ).setError( "" ); //$NON-NLS-1$ } updateStatus( currentStatus ); } protected void updateStatus( final IStatus[] status ) { updateStatus( StatusUtil.getMostSevere( status ) ); } // helping methods ////////////////// private void updateStatus( final IStatus status ) { currentStatus = status; setPageComplete( !status.matches( IStatus.ERROR ) ); if( pageVisible ) { StatusUtil.applyToStatusLine( this, status ); } } }