blob: 71c5673b0ee21a91ac1d09c62849b5e5929f2bd4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.common.frameworks.internal.ui;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.swt.widgets.Control;
/**
* This object encompas a set of Validation status Creation date: (9/10/2001 5:35:12 PM)
*
* @author: Administrator
*/
public class ValidationStatus {
// TODO make all these vars private and change errMsgs & errStatus to maps so the same methods
// can be used as with warnings & info
Hashtable errMsgs = new Hashtable();
Hashtable errStatus = new Hashtable();
Hashtable tControls = new Hashtable();
Map warnMsgs;
Map warnStatus;
Map infoMsgs;
Map infoStatus;
/**
* ValidationStatus constructor comment.
*/
public ValidationStatus() {
super();
}
/*
* Look for any error. If there is more than one, return errors according to their key. i.e.,
* lower key errors will be returned first.
*/
public String getLastErrMsg() {
//TODO once ivars are changed to maps, pass this to getLastMsg()
Enumeration e = errStatus.keys();
String[] errs = new String[errStatus.size()];
for (int i = 0; i < errs.length; i++)
errs[i] = null;
boolean foundOne = false;
while (e.hasMoreElements()) {
Integer key = (Integer) e.nextElement();
if (!((Boolean) errStatus.get(key)).booleanValue()) {
errs[key.intValue() % errs.length] = (String) errMsgs.get(key);
foundOne = true;
}
}
if (foundOne)
for (int i = 0; i < errs.length; i++)
if (errs[i] != null)
return errs[i];
return null;
}
private Map getWarningMsgs() {
if (warnMsgs == null)
warnMsgs = new HashMap();
return warnMsgs;
}
private Map getWarningStatusMap() {
if (warnStatus == null)
warnStatus = new HashMap();
return warnStatus;
}
private Map getInfoMsgs() {
if (infoMsgs == null)
infoMsgs = new HashMap();
return infoMsgs;
}
private Map getInfoStatusMap() {
if (infoStatus == null)
infoStatus = new HashMap();
return infoStatus;
}
public String getLastWarningMsg() {
return getLastMsg(warnStatus, warnMsgs);
}
public String getLastInfoMsg() {
return getLastMsg(infoStatus, infoMsgs);
}
/*
* Look for any status. If there is more than one, return status according to their key. i.e.,
* lower key status will be returned first.
*/
private String getLastMsg(Map statusMap, Map msgMap) {
if (statusMap == null)
return null;
Iterator e = statusMap.keySet().iterator();
String[] infos = new String[statusMap.size()];
for (int i = 0; i < infos.length; i++)
infos[i] = null;
boolean foundOne = false;
while (e.hasNext()) {
Integer key = (Integer) e.next();
if (!((Boolean) statusMap.get(key)).booleanValue()) {
infos[key.intValue() % infos.length] = (String) msgMap.get(key);
foundOne = true;
}
}
if (foundOne)
for (int i = 0; i < infos.length; i++)
if (infos[i] != null)
return infos[i];
return null;
}
public String getLastErrMsgAndFocus() {
Enumeration e = errStatus.keys();
Integer theOne = null;
while (e.hasMoreElements()) {
Integer key = (Integer) e.nextElement();
if (!((Boolean) errStatus.get(key)).booleanValue()) {
if (theOne == null || key.intValue() < theOne.intValue()) {
theOne = key;
}
}
}
if (theOne != null) {
Control control = (Control) tControls.get(theOne);
if (control != null) {
control.setFocus();
}
return ((String) errMsgs.get(theOne));
}
return null;
}
public boolean hasError(Integer key) {
Boolean stat = (Boolean) errStatus.get(key);
if (stat != null)
return stat.booleanValue();
return true;
}
public void setControl(Integer key, Control control) {
tControls.put(key, control);
}
public void setErrorStatus(Integer key, Boolean status, String msg) {
errMsgs.put(key, msg);
errStatus.put(key, status);
}
public void setErrorStatus(Integer key, String msg) {
errMsgs.put(key, msg);
errStatus.put(key, new Boolean(false));
}
public void setWarningStatus(Integer key, String msg) {
getWarningMsgs().put(key, msg);
getWarningStatusMap().put(key, new Boolean(false));
}
public void setInfoStatus(Integer key, String msg) {
getInfoMsgs().put(key, msg);
getInfoStatusMap().put(key, new Boolean(false));
}
public void setOKStatus(Integer key) {
errMsgs.put(key, ""); //$NON-NLS-1$
errStatus.put(key, new Boolean(true));
if (warnMsgs != null)
warnMsgs.put(key, ""); //$NON-NLS-1$
if (warnStatus != null)
warnStatus.put(key, new Boolean(true));
if (infoMsgs != null)
infoMsgs.put(key, ""); //$NON-NLS-1$
if (infoStatus != null)
infoStatus.put(key, new Boolean(true));
}
public void setStatus(Integer key, boolean ok, String msg) {
errMsgs.put(key, msg);
errStatus.put(key, new Boolean(ok));
}
}