r2385 - in trunk/nuiton-utils/src/main/java/org/nuiton/util: . converter
Author: mallon Date: 2012-07-31 16:03:23 +0200 (Tue, 31 Jul 2012) New Revision: 2385 Url: http://nuiton.org/repositories/revision/nuiton-utils/2385 Log: Ajout d'un convertisseur de couleur. Added: trunk/nuiton-utils/src/main/java/org/nuiton/util/converter/ColorConverter.java Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java =================================================================== --- trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java 2012-07-31 10:40:40 UTC (rev 2384) +++ trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java 2012-07-31 14:03:23 UTC (rev 2385) @@ -26,6 +26,7 @@ package org.nuiton.util; +import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @@ -1426,6 +1427,17 @@ } /** + * Get option value as {@link Color}. + * + * @param key the option's key + * @return value as color + */ + public Color getOptionAsColor(String key) { + Color color = getOption(Color.class, key); + return color; + } + + /** * Get option value as {@link Properties}, this property must be a filepath * and file must be a properties. * <p/> Added: trunk/nuiton-utils/src/main/java/org/nuiton/util/converter/ColorConverter.java =================================================================== --- trunk/nuiton-utils/src/main/java/org/nuiton/util/converter/ColorConverter.java (rev 0) +++ trunk/nuiton-utils/src/main/java/org/nuiton/util/converter/ColorConverter.java 2012-07-31 14:03:23 UTC (rev 2385) @@ -0,0 +1,46 @@ +package org.nuiton.util.converter; + + +import org.apache.commons.beanutils.Converter; + +import java.awt.Color; +import java.util.Scanner; + +public class ColorConverter implements Converter { + + @Override + public Object convert(Class aClass, Object value) { + if (!isEnabled(aClass)) { + throw new IllegalArgumentException("unsupported type: " + aClass); + } + + String valueToString = (String) value; + /* + * To get color from a formatted string + * Two formatting cases : + * - 'java.awt.Color[r=255,g=51,b=51]', for example + * - hexa, like '#000000' + * */ + try { + if (valueToString.length() == 7 && valueToString.charAt(0) == '#') { + Color color = new Color(Integer.parseInt(valueToString.substring(1), 16)); + return color; + } else { + Scanner sc = new Scanner(valueToString); + sc.useDelimiter("\\D+"); + Color color = new Color(sc.nextInt(), sc.nextInt(), sc.nextInt()); + return color; + } + } catch (Exception ex) { + throw new IllegalArgumentException("colors must be of the form #xxxxxx ('#' followed by six hexadecimal digits), or the name of a constant field in java.awt.Color (found: '" + valueToString + "')"); + } + } + + protected boolean isEnabled(Class<?> aClass) { + return Color.class.equals(aClass); + } + + public Class<?> getType() { + return Color.class; + } +}
participants (1)
-
mallon@users.nuiton.org