/* ** j###t ########## #### #### ** j###t ########## #### #### ** j###T "###L J###" ** ######P' ########## ######### ** ######k, ########## T######T ** ####~###L #### ** #### q###L ########## .##### ** #### \###L ########## #####" ** ** $Id$ ** ** Class History ** ** Date Name Description ** ---------|------------|----------------------------------------------- ** 19Aug98 subtle start of recorded history ** */ package key; import key.collections.StringKeyCollection; import java.io.IOException; import java.util.Enumeration; /** * Qualifier * * This class it used to convert colour names into their * respective codes, and vice versa. * */ public final class Qualifiers { public static final String UNKNOWN_STRING = "unknown"; public static final char UNKNOWN_CODE = ' '; public static final String SUPPRESSION_STRING = "suppressed"; public static final char SUPPRESSION_CODE = '!'; public static final String UNSUPPRESSION_STRING = "unsuppressed"; public static final char UNSUPPRESSION_CODE = '#'; /** * A StringKeyCollection containing all the possible * colour codes. */ private static StringKeyCollection colours; /** * A StringKeyCollection containing all the possible * colourable classes. They're all subclasses * of communication. */ //private static StringKeyCollection classes; static { colours = new StringKeyCollection(); try { colours.link( new QualifierCode( UNKNOWN_CODE, UNKNOWN_STRING ) ); colours.link( new QualifierCode( SUPPRESSION_CODE, SUPPRESSION_STRING ) ); colours.link( new QualifierCode( UNSUPPRESSION_CODE, UNSUPPRESSION_STRING ) ); // iso 6429 defines colours.link( new QualifierCode( 'd', "dark") ); colours.link( new QualifierCode( 'D', "grey" ) ); colours.link( new QualifierCode( 'r', "red" ) ); colours.link( new QualifierCode( 'R', "brightRed" ) ); colours.link( new QualifierCode( 'g', "green" ) ); colours.link( new QualifierCode( 'G', "brightGreen" ) ); colours.link( new QualifierCode( 'y', "yellow" ) ); colours.link( new QualifierCode( 'Y', "brightYellow" ) ); colours.link( new QualifierCode( 'b', "blue" ) ); colours.link( new QualifierCode( 'B', "brightBlue" ) ); colours.link( new QualifierCode( 'm', "magenta" ) ); colours.link( new QualifierCode( 'M', "brightMagenta" ) ); colours.link( new QualifierCode( 'c', "cyan" ) ); colours.link( new QualifierCode( 'C', "brightCyan" ) ); colours.link( new QualifierCode( 'w', "white" ) ); colours.link( new QualifierCode( 'W', "brightWhite" ) ); // other defines colours.link( new QualifierCode( 'h', "hilight" ) ); colours.link( new QualifierCode( '_', "underline" ) ); colours.link( new QualifierCode( 'n', "normal" ) ); colours.link( new QualifierCode( 'N', "brightNormal" ) ); // defines that can't be used by users colours.link( new QualifierCode( '\021', "blink" ) ); colours.link( new QualifierCode( '\022', "reverse" ) ); // feel free to add more colour codes here } catch( BadKeyException e ) { Log.debug( "key.Qualifier", e.toString() + " while associating colours with their codes." ); } catch( NonUniqueKeyException e ) { Log.debug( "key.Qualifier", e.toString() + " while associating colours with their codes." ); } } protected static QualifierCode getCode( char code ) { for( Enumeration e = colours.elements(); e.hasMoreElements(); ) { QualifierCode cc = (QualifierCode) e.nextElement(); if( cc.code == code ) return( cc ); } return( null ); } /** * Returns UNKNOWN_STRING if the * colour can't be found. */ public static String getCodeName( char code ) { QualifierCode cc = getCode( code ); if( cc != null ) return( cc.getName() ); else return( UNKNOWN_STRING ); } /** * Returns UNKNOWN_CODE if the colour * can't be found */ public static char getCodeCode( String name ) { QualifierCode cc = (QualifierCode) colours.get( name ); if( cc != null ) return( cc.code ); else return( UNKNOWN_CODE ); } } final class QualifierCode implements Symbol { char code; String name; public QualifierCode( char characterCode, String colourName ) { code = characterCode; name = colourName; } public final String getName() { return( name ); } public final Object getKey() { return( name ); } public final void setKey( Object key ) { name = (String) key; } public final Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); } }