Author: adelmelle
Date: Tue Feb  1 20:47:54 2011
New Revision: 1066198

URL: http://svn.apache.org/viewvc?rev=1066198&view=rev
Log:
Small cleanup: extract TextDecorationMaker, move validation into 
convertProperty() and eliminate unnecessary TextDecorationProperty

Added:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
   (with props)
Removed:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationProperty.java
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOPropertyMapping.java

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOPropertyMapping.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOPropertyMapping.java?rev=1066198&r1=1066197&r2=1066198&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOPropertyMapping.java 
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOPropertyMapping.java Tue 
Feb  1 20:47:54 2011
@@ -62,7 +62,7 @@ import org.apache.fop.fo.properties.Spac
 import org.apache.fop.fo.properties.SpacingPropertyMaker;
 import org.apache.fop.fo.properties.StringProperty;
 import org.apache.fop.fo.properties.TableBorderPrecedence;
-import org.apache.fop.fo.properties.TextDecorationProperty;
+import org.apache.fop.fo.properties.TextDecorationMaker;
 import org.apache.fop.fo.properties.ToBeImplementedProperty;
 import org.apache.fop.fo.properties.URIProperty;
 import org.apache.fop.fo.properties.VerticalAlignShorthandParser;
@@ -1695,7 +1695,7 @@ public final class FOPropertyMapping imp
 
         // text-decoration
         //m  = new EnumProperty.Maker(PR_TEXT_DECORATION);
-        m  = new TextDecorationProperty.Maker(PR_TEXT_DECORATION);
+        m  = new TextDecorationMaker(PR_TEXT_DECORATION);
         m.setInherited(false);
         m.addEnum("none", getEnumProperty(EN_NONE, "NONE"));
         m.addEnum("underline", getEnumProperty(EN_UNDERLINE, "UNDERLINE"));

Added: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java?rev=1066198&view=auto
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
 (added)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
 Tue Feb  1 20:47:54 2011
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.fo.properties;
+
+import java.util.List;
+
+import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.FObj;
+import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.expr.NCnameProperty;
+import org.apache.fop.fo.expr.PropertyException;
+
+/**
+ * Dedicated {@link org.apache.fop.fo.properties.PropertyMaker} for handling 
the
+ * <a 
href="http://www.w3.org/TR/xsl/#text-decoration";><code>text-decoration</code></a>
+ * property.
+ */
+public class TextDecorationMaker extends ListProperty.Maker {
+
+    /**
+     * Create a maker for the given property id.
+     * @param propId id of the property for which a maker should be created
+     */
+    public TextDecorationMaker(int propId) {
+        super(propId);
+    }
+
+    /**
+     * {@inheritDoc}
+     * Add validation rules for the <code>text-decoration</code> property.
+     */
+    @Override
+    public Property convertProperty(Property p,
+                                    PropertyList propertyList,
+                                    FObj fo)
+                        throws PropertyException {
+
+        ListProperty listProp = (ListProperty) super.convertProperty(p, 
propertyList, fo);
+        List lst = listProp.getList();
+        boolean none = false;
+        boolean under = false;
+        boolean over = false;
+        boolean through = false;
+        boolean blink = false;
+        int enumValue;
+        for (int i = lst.size(); --i >= 0;) {
+            Property prop = (Property)lst.get(i);
+            if (prop instanceof NCnameProperty) {
+                prop = checkEnumValues(prop.getString());
+                lst.set(i, prop);
+            }
+            enumValue = prop.getEnum();
+            switch (enumValue) {
+                case Constants.EN_NONE:
+                    if (under | over | through | blink) {
+                        throw new PropertyException("Invalid combination of 
values");
+                    }
+                    none = true;
+                    break;
+                case Constants.EN_UNDERLINE:
+                case Constants.EN_NO_UNDERLINE:
+                case Constants.EN_OVERLINE:
+                case Constants.EN_NO_OVERLINE:
+                case Constants.EN_LINE_THROUGH:
+                case Constants.EN_NO_LINE_THROUGH:
+                case Constants.EN_BLINK:
+                case Constants.EN_NO_BLINK:
+                    if (none) {
+                        throw new PropertyException
+                                ("'none' specified, no additional values 
allowed");
+                    }
+                    switch (enumValue) {
+                        case Constants.EN_UNDERLINE:
+                        case Constants.EN_NO_UNDERLINE:
+                            if (!under) {
+                                under = true;
+                                continue;
+                            }
+                        case Constants.EN_OVERLINE:
+                        case Constants.EN_NO_OVERLINE:
+                            if (!over) {
+                                over = true;
+                                continue;
+                            }
+                        case Constants.EN_LINE_THROUGH:
+                        case Constants.EN_NO_LINE_THROUGH:
+                            if (!through) {
+                                through = true;
+                                continue;
+                            }
+                        case Constants.EN_BLINK:
+                        case Constants.EN_NO_BLINK:
+                            if (!blink) {
+                                blink = true;
+                                continue;
+                            }
+                        default:
+                            throw new PropertyException("Invalid combination 
of values");
+                    }
+                default:
+                    throw new PropertyException("Invalid value specified: " + 
prop);
+            }
+        }
+        return listProp;
+    }
+}

Propchange: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/TextDecorationMaker.java
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to