You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/01/02 16:31:04 UTC

svn commit: r491816 - in /myfaces/tobago/trunk: contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/ core/src/main/java/org/apache/myfaces/tobago/component/

Author: bommel
Date: Tue Jan  2 07:31:03 2007
New Revision: 491816

URL: http://svn.apache.org/viewvc?view=rev&rev=491816
Log:
(TOBAGO-107) tc:page should use a reasonable default width+height and state

Added:
    myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/UIPageRule.java
Modified:
    myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java

Modified: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java?view=diff&rev=491816&r1=491815&r2=491816
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java (original)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java Tue Jan  2 07:31:03 2007
@@ -25,6 +25,7 @@
 import org.apache.myfaces.tobago.event.TabChangeSource;
 import org.apache.myfaces.tobago.event.SheetStateChangeSource;
 import org.apache.myfaces.tobago.component.OnComponentCreated;
+import org.apache.myfaces.tobago.component.UIPage;
 import static org.apache.myfaces.tobago.TobagoConstants.TOBAGO_COMPONENT_CREATED;
 
 import javax.faces.component.UIComponent;
@@ -45,6 +46,9 @@
     MetaRuleset metaRuleset = super.createMetaRuleset(aClass);
     if (SortActionSource.class.isAssignableFrom(aClass)) {
       metaRuleset.addRule(SortActionSourceRule.INSTANCE);
+    }
+    if (UIPage.class.isAssignableFrom(aClass)) {
+      metaRuleset.addRule(UIPageRule.INSTANCE);
     }
     if (TabChangeSource.class.isAssignableFrom(aClass)) {
       metaRuleset.addRule(TabChangeSourceRule.INSTANCE);

Added: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/UIPageRule.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/UIPageRule.java?view=auto&rev=491816
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/UIPageRule.java (added)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/UIPageRule.java Tue Jan  2 07:31:03 2007
@@ -0,0 +1,102 @@
+package org.apache.myfaces.tobago.facelets;
+
+/*
+ * 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.
+ */
+
+import com.sun.facelets.tag.MetadataTarget;
+import com.sun.facelets.tag.MetaRule;
+import com.sun.facelets.tag.Metadata;
+import com.sun.facelets.tag.TagAttribute;
+import com.sun.facelets.FaceletContext;
+import com.sun.facelets.el.LegacyValueBinding;
+import org.apache.myfaces.tobago.component.UIPage;
+import org.apache.myfaces.tobago.component.ComponentUtil;
+
+import javax.faces.component.UIComponent;
+
+/*
+ * Created by IntelliJ IDEA.
+ * User: bommel
+ * Date: Jan 2, 2007
+ * Time: 3:35:58 PM
+ */
+public class UIPageRule extends MetaRule {
+  public static final UIPageRule INSTANCE = new UIPageRule();
+
+  public Metadata applyRule(String name, TagAttribute attribute,
+      MetadataTarget metadataTarget) {
+    if (metadataTarget.isTargetInstanceOf(UIPage.class)) {
+      if (!attribute.isLiteral()) {
+        Class type = metadataTarget.getPropertyType(name);
+        if (type == null) {
+          type = Object.class;
+        }
+        return new UIPageDimensionExpression(name, type, attribute);
+      } else {
+        if ("width".equals(name)) {
+          return new UIPageWidthMapper(attribute);
+        }
+        if ("height".equals(name)) {
+          return new UIPageHeightMapper(attribute);
+        }
+      }
+    }
+    return null;
+  }
+
+  static final class UIPageDimensionExpression extends Metadata {
+    private final String name;
+    private final TagAttribute attr;
+    private final Class type;
+
+    public UIPageDimensionExpression(String name, Class type, TagAttribute attr) {
+      this.name = name;
+      this.attr = attr;
+      this.type = type;
+    }
+
+    public void applyMetadata(FaceletContext ctx, Object instance) {
+      ((UIComponent) instance).setValueBinding(name, new LegacyValueBinding(attr.getValueExpression(ctx, type)));
+    }
+  }
+
+  static final class UIPageWidthMapper extends Metadata {
+    private final TagAttribute attribute;
+
+    public UIPageWidthMapper(TagAttribute attribute) {
+      this.attribute = attribute;
+    }
+
+    public void applyMetadata(FaceletContext ctx, Object instance) {
+      UIPage page = (UIPage) instance;
+      page.setWidth(new Integer(ComponentUtil.removePx(attribute.getValue())));
+    }
+  }
+
+  static final class UIPageHeightMapper extends Metadata {
+    private final TagAttribute attribute;
+
+    public UIPageHeightMapper(TagAttribute attribute) {
+      this.attribute = attribute;
+    }
+
+    public void applyMetadata(FaceletContext ctx, Object instance) {
+      UIPage page = (UIPage) instance;
+      page.setHeight(new Integer(ComponentUtil.removePx(attribute.getValue())));
+    }
+  }
+}

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java?view=diff&rev=491816&r1=491815&r2=491816
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java Tue Jan  2 07:31:03 2007
@@ -644,7 +644,7 @@
     }
   }
 
-  private static String removePx(String value) {
+  public static String removePx(String value) {
     if (value!=null&&value.endsWith("px")) {
       value = value.substring(0, value.length() - 2);
     }