001/*
002 * Copyright (c) 2010 The Regents of the University of California.
003 * All rights reserved.
004 *
005 * '$Author: welker $'
006 * '$Date: 2010-05-06 05:21:26 +0000 (Thu, 06 May 2010) $' 
007 * '$Revision: 24234 $'
008 * 
009 * Permission is hereby granted, without written agreement and without
010 * license or royalty fees, to use, copy, modify, and distribute this
011 * software and its documentation for any purpose, provided that the above
012 * copyright notice and the following two paragraphs appear in all copies
013 * of this software.
014 *
015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
019 * SUCH DAMAGE.
020 *
021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
026 * ENHANCEMENTS, OR MODIFICATIONS.
027 *
028 */
029
030package org.kepler.sms;
031
032import java.lang.reflect.Field;
033import java.util.regex.Matcher;
034import java.util.regex.Pattern;
035
036/**
037 * Created by IntelliJ IDEA.
038 * User: sean
039 * Date: Jul 16, 2009
040 * Time: 4:37:50 PM
041 */
042public class Color {
043        public Color() {}
044        public Color(java.awt.Color color) {
045                this.color = color;
046                this.colorString = color.getRed() + "," + color.getGreen() + "," + color.getBlue();
047        }
048        
049        private static java.awt.Color DEFAULT_COLOR = java.awt.Color.WHITE;
050        
051        public Color(String colorString) {
052                initializeAsStaticField(colorString);
053                if (color == null) {
054                        initializeAsRGB(colorString);
055                }
056                if (color == null) {
057                        initializeAsDefault();
058                }
059        }
060        
061        public static Color getDefaultColor() {
062                return new Color(DEFAULT_COLOR);
063        }
064
065        private void initializeAsDefault() {
066                this.color = DEFAULT_COLOR;
067                setColorString();
068        }
069
070        public void initializeAsStaticField(String string) {
071                Class awtColorClass = java.awt.Color.class;
072                try {
073                        Field field = awtColorClass.getField(string.toUpperCase());
074                        this.color = (java.awt.Color) field.get(null);
075                        setColorString();
076                }
077                catch(NoSuchFieldException ignored) {}
078                catch(IllegalAccessException ignored) {}
079        }
080        
081        public void initializeAsRGB(String string) {
082                Pattern pattern = Pattern.compile("([0-9]+),([0-9]+),([0-9]+)");
083                Matcher matcher = pattern.matcher(string);
084                if (matcher.matches()) {
085                        int r = Integer.valueOf(matcher.group(1));
086                        int g = Integer.valueOf(matcher.group(2));
087                        int b = Integer.valueOf(matcher.group(3));
088                        this.color = new java.awt.Color(r, g, b);
089                        setColorString();
090                }
091        }
092        
093        public void setColor(java.awt.Color color) {
094                this.color = color;
095                this.setColorString();
096        }
097
098        private void setColorString() {
099                colorString = color.getRed() + "," + color.getGreen() + "," + color.getBlue();
100        }
101
102        @Override
103        public String toString() {
104                return colorString;
105        }
106        
107        public java.awt.Color getAwtColor() {
108                return this.color;
109        }
110        
111        private java.awt.Color color;
112        private String colorString;
113        
114        public static Color RED = new Color(java.awt.Color.RED);
115}