Source for org.jfree.xml.factory.objects.BasicStrokeObjectDescription

   1: /* ========================================================================
   2:  * JCommon : a free general purpose class library for the Java(tm) platform
   3:  * ========================================================================
   4:  *
   5:  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
   6:  * 
   7:  * Project Info:  http://www.jfree.org/jcommon/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it 
  10:  * under the terms of the GNU Lesser General Public License as published by 
  11:  * the Free Software Foundation; either version 2.1 of the License, or 
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but 
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
  22:  * USA.  
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
  25:  * in the United States and other countries.]
  26:  * 
  27:  * ---------------------------------
  28:  * BasicStrokeObjectDescription.java
  29:  * ---------------------------------
  30:  * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
  31:  *
  32:  * Original Author:  Thomas Morgner;
  33:  * Contributor(s):   David Gilbert (for Object Refinery Limited);
  34:  *
  35:  * $Id: BasicStrokeObjectDescription.java,v 1.4 2006/01/27 18:53:15 taqua Exp $
  36:  *
  37:  * Changes (from 19-Feb-2003)
  38:  * -------------------------
  39:  * 19-Feb-2003 : Added standard header and Javadocs (DG);
  40:  * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon
  41:  *
  42:  */
  43: 
  44: package org.jfree.xml.factory.objects;
  45: 
  46: import java.awt.BasicStroke;
  47: 
  48: /**
  49:  * An object-description for a <code>BasicStroke</code> object.
  50:  *
  51:  * @author Thomas Morgner
  52:  */
  53: public class BasicStrokeObjectDescription extends AbstractObjectDescription {
  54: 
  55:     /**
  56:      * Creates a new object description.
  57:      */
  58:     public BasicStrokeObjectDescription() {
  59:         super(BasicStroke.class);
  60:         setParameterDefinition("value", String.class);
  61:         setParameterDefinition("width", Float.class);
  62:         setParameterDefinition("dashes", Float[].class);
  63:     }
  64: 
  65:     /**
  66:      * Returns a parameter as a float.
  67:      *
  68:      * @param param  the parameter name.
  69:      *
  70:      * @return The float value.
  71:      */
  72:     private float getFloatParameter(final String param) {
  73:         final String p = (String) getParameter(param);
  74:         if (p == null) {
  75:             return 0;
  76:         }
  77:         try {
  78:             return Float.parseFloat(p);
  79:         }
  80:         catch (Exception e) {
  81:             return 0;
  82:         }
  83:     }
  84: 
  85:     /**
  86:      * Creates a new <code>BasicStroke</code> object based on this description.
  87:      *
  88:      * @return The <code>BasicStroke</code> object.
  89:      */
  90:     public Object createObject() {
  91: 
  92:         final float width = getFloatParameter("value");
  93:         if (width > 0) {
  94:           return new BasicStroke(width);
  95:         }
  96: 
  97:         Float realWidth = (Float) getParameter("width");
  98:         Float[] dashes = (Float[]) getParameter("dashes");
  99:         if (realWidth == null || dashes == null) {
 100:             return null;
 101:         }
 102:         float[] dashesPrimitive = new float[dashes.length];
 103:         for (int i = 0; i < dashes.length; i++) {
 104:           Float dash = dashes[i];
 105:           dashesPrimitive[i] = dash.floatValue();
 106:         }
 107:         return new BasicStroke(realWidth.floatValue(),
 108:                 BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER,
 109:                 10.0f, dashesPrimitive, 0.0f);
 110:     }
 111: 
 112:     /**
 113:      * Sets the parameters for this description to match the supplied object.
 114:      *
 115:      * @param o  the object (instance of <code>BasicStroke</code> required).
 116:      *
 117:      * @throws ObjectFactoryException if the supplied object is not an instance of
 118:      *         <code>BasicStroke</code>.
 119:      */
 120:     public void setParameterFromObject(final Object o) throws ObjectFactoryException {
 121:         if (!(o instanceof BasicStroke)) {
 122:             throw new ObjectFactoryException("Expected object of type BasicStroke");
 123:         }
 124:         final BasicStroke bs = (BasicStroke) o;
 125:         setParameter("value", String.valueOf(bs.getLineWidth()));
 126:     }
 127: }