001    package escjava;
002    
003    import java.awt.Color;
004    
005    public class Status {
006        final static public int ILLEGAL = -1; // A value that should only be used
007                                              // for temporary initialization
008        final static public int NOTPROCESSED = 0;
009        final static public int RESOLVED_OK = 1;
010        final static public int RESOLVED_CAUTION = 2;
011        final static public int RESOLVED_ERROR = 3;
012        final static public int RESOLVED_COMPLETE = RESOLVED_ERROR;
013        final static public int PARSED_OK = 4;
014        final static public int PARSED_CAUTION = 5;
015        final static public int PARSED_ERROR = 6;
016        final static public int PARSING_COMPLETE = PARSED_ERROR;
017        final static public int TYPECHECKED_ERROR = 7;
018        final static public int TYPECHECKED_CAUTION = 8;
019        final static public int TYPECHECKED_WAITING = 9;
020        final static public int TYPECHECKED_OK = 10;
021        final static public int TYPECHECK_COMPLETE = TYPECHECKED_OK;
022        final static public int STATICCHECKED_ERROR = 11;
023        final static public int STATICCHECKED_CAUTION = 12;
024        final static public int STATICCHECKED_OK = 13;
025        final static public int STATICCHECKED_PASSEDIMMED = 14;
026        final static public int STATICCHECKED_TIMEOUT = 15;
027        final static public int CHILDERROR = 16;
028    
029        public static boolean isOK(int s) {
030            return  s == RESOLVED_OK || s == PARSED_OK
031                    || s == TYPECHECKED_OK || s == STATICCHECKED_OK
032                    || s == TYPECHECKED_WAITING
033                    || s == STATICCHECKED_PASSEDIMMED;
034        }
035    
036        public static boolean isError(int s) {
037            return s == RESOLVED_ERROR || s == PARSED_ERROR
038                    || s == TYPECHECKED_ERROR || s == STATICCHECKED_TIMEOUT
039                    || s == STATICCHECKED_ERROR;
040        }
041    
042        final static public boolean checkComplete(int s) {
043            return s > TYPECHECK_COMPLETE;
044        }
045    
046        final static public boolean typecheckComplete(int s) {
047            return s > PARSING_COMPLETE;
048        }
049    
050        final static public boolean parsingComplete(int s) {
051            return s > RESOLVED_COMPLETE;
052        }
053    
054        final static public boolean resolved(int s) {
055            return s > NOTPROCESSED;
056        }
057    
058        static public /*@ non_null @*/ String toString(int status) {
059            switch (status) {
060                case NOTPROCESSED: return "Not Processed";
061                case RESOLVED_OK: return "Resolved OK";
062                case RESOLVED_CAUTION: return "Resolved with Cautions";
063                case RESOLVED_ERROR: return "Resolved with Errors";
064                case PARSED_OK: return "Parsed OK";
065                case PARSED_CAUTION: return "Parsed with Cautions";
066                case PARSED_ERROR: return "Parsed with Errors";
067                case TYPECHECKED_ERROR: return "Typechecked with Errors";
068                case TYPECHECKED_CAUTION: return "Typechecked with Cautions";
069                case TYPECHECKED_WAITING: return "Typechecking children";
070                case TYPECHECKED_OK: return "Typechecked OK";
071                case STATICCHECKED_ERROR: return "Static checked with Warnings";
072                case STATICCHECKED_CAUTION: return "Static checked with Cautions";
073                case STATICCHECKED_OK: return "Static checked OK";
074                case STATICCHECKED_TIMEOUT: return "Static checking timed out";
075                case STATICCHECKED_PASSEDIMMED: return "Static checking passed - no body to check";
076                case CHILDERROR: return "Child node has an error";
077            }
078            return "ILLEGAL VALUE";
079        }
080    
081        static public Color toColor(int status) {
082            switch (status) {
083                case TYPECHECKED_WAITING:
084                case NOTPROCESSED: return null;
085                case RESOLVED_ERROR:
086                case PARSED_ERROR: return ColorOptions.typecheckError;
087                case RESOLVED_CAUTION:
088                case PARSED_CAUTION: return ColorOptions.typecheckCaution;
089                case RESOLVED_OK:
090                case PARSED_OK: return ColorOptions.typecheckOK;
091                case TYPECHECKED_ERROR: return ColorOptions.typecheckError;
092                case TYPECHECKED_CAUTION: return ColorOptions.typecheckCaution;
093                case TYPECHECKED_OK: return ColorOptions.typecheckOK;
094                case STATICCHECKED_ERROR: return ColorOptions.staticcheckError;
095                case STATICCHECKED_CAUTION: return ColorOptions.typecheckCaution;
096                case STATICCHECKED_PASSEDIMMED: return ColorOptions.staticcheckOK;
097                case STATICCHECKED_OK: return ColorOptions.staticcheckOK;
098                case STATICCHECKED_TIMEOUT: return ColorOptions.staticcheckTimeout;
099                case CHILDERROR: return ColorOptions.childError;
100            }
101            return null;
102        }
103    }