/**
* Copyright (c) 2012 by JP Moresmau
* This code is made available under the terms of the Eclipse Public License,
* version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html
*/
package net.sf.eclipsefp.haskell.ui.dialog;
import java.util.ArrayList;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.wizard.WizardPage;
/**
* Manager of validators
* @author JP Moresmau
*
*/
public final class ValidatorManager {
private final WizardPage fWizardPage;
private final ArrayList<Validator> validators = new ArrayList<>();
public ValidatorManager(final WizardPage wizardPage) {
fWizardPage = wizardPage;
}
public void addValidator(final Validator validator) {
validators.add( validator );
}
public void updatePage() {
String message = null;
int status=IMessageProvider.NONE;
boolean pageComplete = true;
for (Validator validator : validators) {
if (message == null && validator.getMessage() != null) {
message = validator.getMessage();
}
if (validator.getStatus()>status){
status=validator.getStatus();
if (validator.getMessage()!=null){
message = validator.getMessage();
}
}
if (pageComplete && !validator.isPageComplete()) {
pageComplete = false;
}
}
fWizardPage.setMessage( message,status );
fWizardPage.setPageComplete( pageComplete );
}
public void fullUpdate() {
for (Validator validator : validators) {
validator.update();
}
updatePage();
}
}