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/11/19 16:03:14 UTC

svn commit: r596319 - in /myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago: ./ component/ model/ renderkit/html/ taglib/component/

Author: bommel
Date: Mon Nov 19 07:03:11 2007
New Revision: 596319

URL: http://svn.apache.org/viewvc?rev=596319&view=rev
Log:
(TOBAGO-546) selectOneChoice should support coloring and images

Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UISelectItem.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/model/SelectItem.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/StyleClasses.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTag.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTagDeclaration.java

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java Mon Nov 19 07:03:11 2007
@@ -71,6 +71,12 @@
   public static final String ATTR_INLINE = "inline";
   public static final String ATTR_INNER_HEIGHT = "innerHeight";
   public static final String ATTR_INNER_WIDTH = "innerWidth";
+  public static final String ATTR_ITEM_DESCRIPTION = "itemDescription";
+  public static final String ATTR_ITEM_DISABLED = "itemDisabled";
+  public static final String ATTR_ITEM_LABEL = "itemLabel";
+  public static final String ATTR_ITEM_IMAGE = "itemImage";
+  public static final String ATTR_ITEM_VALUE = "itemValue";
+
   public static final String ATTR_LABEL = "label";
   public static final String ATTR_LABEL_POSITION = "labelPosition";
 //  public static final String ATTR_LABEL_WITH_ACCESS_KEY = "labelWithAccessKey";
@@ -114,6 +120,7 @@
   public static final String ATTR_PREFORMATED = "preformated";
   public static final String ATTR_READONLY = "readonly";
   public static final String ATTR_REFERENCE = "reference";
+  public static final String ATTR_RELATIVE = "relative";
   public static final String ATTR_RENDERED = "rendered";
   public static final String ATTR_RENDERER_TYPE = "rendererType";
   public static final String ATTR_RENDER_AS = "renderAs";

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UISelectItem.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UISelectItem.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UISelectItem.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UISelectItem.java Mon Nov 19 07:03:11 2007
@@ -20,17 +20,45 @@
 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_IMAGE;
 
 import javax.faces.el.ValueBinding;
+import javax.faces.context.FacesContext;
 
 /*
  * User: weber
  * Date: Apr 11, 2005
  * Time: 11:15:35 AM
  */
-public class UISelectItem extends javax.faces.component.UISelectItem {
+public class UISelectItem extends javax.faces.component.UISelectItem implements SupportsMarkup {
 
   public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.SelectItem";
 
   private String itemImage;
+  private String[] markup;
+
+  public void restoreState(FacesContext context, Object state) {
+    Object[] values = (Object[]) state;
+    super.restoreState(context, values[0]);
+    itemImage = (String) values[1];
+    markup = (String[]) values[2];
+  }
+
+  public Object saveState(FacesContext context) {
+    Object[] values = new Object[3];
+    values[0] = super.saveState(context);
+    values[1] = itemImage;
+    values[2] = markup;
+    return values;
+  }
+
+  public String[] getMarkup() {
+    if (markup != null) {
+      return markup;
+    }
+    return ComponentUtil.getMarkupBinding(getFacesContext(), this);
+  }
+
+  public void setMarkup(String[] markup) {
+    this.markup = markup;
+  }
 
   public void setImage(String image) {
     setItemImage(image);

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/model/SelectItem.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/model/SelectItem.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/model/SelectItem.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/model/SelectItem.java Mon Nov 19 07:03:11 2007
@@ -17,28 +17,28 @@
  * limitations under the License.
  */
 
+import org.apache.myfaces.tobago.component.SupportsMarkup;
 import org.apache.myfaces.tobago.component.UISelectItem;
 
 /*
- * User: weber
  * Date: Apr 5, 2005
  * Time: 6:11:16 PM
  */
-public class SelectItem extends javax.faces.model.SelectItem {
+public class SelectItem extends javax.faces.model.SelectItem implements SupportsMarkup {
 
   private static final long serialVersionUID = 2582455665060354639L;
 
   private String image;
+  private String[] markup = new String[0];
 
   public SelectItem() {
     super();
   }
 
   public SelectItem(UISelectItem component) {
-    super(component.getItemValue() == null ? "" : component.getItemValue(),
+    this(component.getItemValue() == null ? "" : component.getItemValue(),
         component.getItemLabel(), component.getItemDescription(),
-        component.isItemDisabled());
-    image = component.getItemImage();
+        component.isItemDisabled(), component.getItemImage(), component.getMarkup());
   }
 
   public SelectItem(Object value) {
@@ -54,14 +54,23 @@
   }
 
   public SelectItem(Object value, String label, String description, String image) {
-    super(value, label, description);
-    this.image = image;
+    this(value, label, description, false, image);
+  }
+
+  public SelectItem(Object value, String label, String description, String image, String[] markup) {
+    this(value, label, description, false, image, markup);
   }
 
   public SelectItem(Object value, String label, String description,
                     boolean disabled, String image) {
+    this(value, label, description, disabled, image, null);
+  }
+
+  public SelectItem(Object value, String label, String description,
+                    boolean disabled, String image, String[] markup) {
     super(value, label, description, disabled);
     this.image = image;
+    this.markup = markup;
   }
 
   public String getImage() {
@@ -70,5 +79,13 @@
 
   public void setImage(String image) {
     this.image = image;
+  }
+
+  public String[] getMarkup() {
+    return markup;
+  }
+
+  public void setMarkup(String[] markup) {
+    this.markup = markup;
   }
 }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java Mon Nov 19 07:03:11 2007
@@ -33,8 +33,9 @@
 import static org.apache.myfaces.tobago.TobagoConstants.FACET_LAYOUT;
 import static org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_OUT;
 import org.apache.myfaces.tobago.component.ComponentUtil;
-import org.apache.myfaces.tobago.component.UIPage;
+import org.apache.myfaces.tobago.component.SupportsMarkup;
 import org.apache.myfaces.tobago.component.UIData;
+import org.apache.myfaces.tobago.component.UIPage;
 import org.apache.myfaces.tobago.context.ResourceManagerUtil;
 import org.apache.myfaces.tobago.renderkit.LabelWithAccessKey;
 import org.apache.myfaces.tobago.renderkit.LayoutInformationProvider;
@@ -45,9 +46,9 @@
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriterWrapper;
 
+import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIInput;
-import javax.faces.component.NamingContainer;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.model.SelectItem;
@@ -570,17 +571,34 @@
       if (item instanceof SelectItemGroup) {
         writer.startElement(HtmlConstants.OPTGROUP, null);
         writer.writeAttribute(HtmlAttributes.LABEL, item.getLabel(), true);
+        if (item.isDisabled()) {
+          writer.writeAttribute(HtmlAttributes.DISABLED, true);
+        }
         SelectItem[] selectItems = ((SelectItemGroup) item).getSelectItems();
         renderSelectItems(component, Arrays.asList(selectItems), values, writer, facesContext);
         writer.endElement(HtmlConstants.OPTGROUP);
       } else {
         writer.startElement(HtmlConstants.OPTION, null);
         final Object itemValue = item.getValue();
-        String formattedValue
-            = RenderUtil.getFormattedValue(facesContext, component, itemValue);
+        String formattedValue = RenderUtil.getFormattedValue(facesContext, component, itemValue);
         writer.writeAttribute(HtmlAttributes.VALUE, formattedValue, true);
+        if (item instanceof org.apache.myfaces.tobago.model.SelectItem) {
+          String image = ((org.apache.myfaces.tobago.model.SelectItem) item).getImage();
+          if (image != null) {
+            String imagePath = ResourceManagerUtil.getImageWithPath(facesContext, image);
+            writer.writeStyleAttribute("background-image=url('" + imagePath+ "')");
+          }
+        }
+        if (item instanceof SupportsMarkup) {
+          StyleClasses optionStyle = new StyleClasses();
+          optionStyle.addMarkupClass((SupportsMarkup) item, getRendererName(facesContext, component), "option"  );
+          writer.writeClassAttribute(optionStyle);
+        }
         if (RenderUtil.contains(values, item.getValue())) {
           writer.writeAttribute(HtmlAttributes.SELECTED, true);
+        }
+        if (item.isDisabled()) {
+          writer.writeAttribute(HtmlAttributes.DISABLED, true);
         }
         writer.writeText(item.getLabel());
         writer.endElement(HtmlConstants.OPTION);

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/StyleClasses.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/StyleClasses.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/StyleClasses.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/StyleClasses.java Mon Nov 19 07:03:11 2007
@@ -139,15 +139,18 @@
 
   public void addMarkupClass(UIComponent component, String rendererName, String sub) {
     if (component instanceof SupportsMarkup) {
-      String[] markups = ((SupportsMarkup) component).getMarkup();
-      for (String markup: markups) {
-        if (!StringUtils.isBlank(markup)) {
-          Theme theme = ClientProperties.getInstance(FacesContext.getCurrentInstance().getViewRoot()).getTheme();
-          if (theme.getRenderersConfig().isMarkupSupported(rendererName, markup)) {
-            addMarkupClass(rendererName, sub, markup);
-          } else if (!"none".equals(markup)) {
-            LOG.warn("Unknown markup='" + markup + "'");
-          }
+      addMarkupClass((SupportsMarkup)component, rendererName, sub);
+    }
+  }
+
+  public void addMarkupClass(SupportsMarkup supportsMarkup, String rendererName, String sub) {
+    for (String markup: supportsMarkup.getMarkup()) {
+      if (!StringUtils.isBlank(markup)) {
+        Theme theme = ClientProperties.getInstance(FacesContext.getCurrentInstance().getViewRoot()).getTheme();
+        if (theme.getRenderersConfig().isMarkupSupported(rendererName, markup)) {
+          addMarkupClass(rendererName, sub, markup);
+        } else if (!"none".equals(markup)) {
+          LOG.warn("Unknown markup='" + markup + "'");
         }
       }
     }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTag.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTag.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTag.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTag.java Mon Nov 19 07:03:11 2007
@@ -17,6 +17,11 @@
  * limitations under the License.
  */
 
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ITEM_DESCRIPTION;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ITEM_DISABLED;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ITEM_LABEL;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ITEM_IMAGE;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ITEM_VALUE;
 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_IMAGE;
 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
 import org.apache.myfaces.tobago.component.ComponentUtil;
@@ -32,6 +37,7 @@
   private String itemValue;
   private String value;
   private String itemImage;
+  private String markup;
 
 
   public String getComponentType() {
@@ -44,12 +50,14 @@
 
   protected void setProperties(UIComponent component) {
     super.setProperties(component);
-    ComponentUtil.setStringProperty(component, "itemDescription", itemDescription);
-    ComponentUtil.setBooleanProperty(component, "itemDisabled", itemDisabled);
-    ComponentUtil.setStringProperty(component, "itemLabel", itemLabel);
-    ComponentUtil.setStringProperty(component, "itemValue", itemValue);
+    ComponentUtil.setStringProperty(component, ATTR_ITEM_DESCRIPTION, itemDescription);
+    ComponentUtil.setBooleanProperty(component, ATTR_ITEM_DISABLED, itemDisabled);
+    ComponentUtil.setStringProperty(component, ATTR_ITEM_LABEL, itemLabel);
+    ComponentUtil.setStringProperty(component, ATTR_ITEM_VALUE, itemValue);
     ComponentUtil.setStringProperty(component, ATTR_VALUE, value);
+    ComponentUtil.setStringProperty(component, ATTR_ITEM_IMAGE, itemImage);
     ComponentUtil.setStringProperty(component, ATTR_IMAGE, itemImage);
+    ComponentUtil.setMarkup(component, markup);
   }
 
   public void release() {
@@ -60,6 +68,7 @@
     itemValue = null;
     value = null;
     itemImage = null;
+    markup = null;
   }
 
   public String getItemDescription() {
@@ -108,5 +117,13 @@
 
   public void setItemImage(String itemImage) {
     this.itemImage = itemImage;
+  }
+
+  public String getMarkup() {
+    return markup;
+  }
+
+  public void setMarkup(String markup) {
+    this.markup = markup;
   }
 }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTagDeclaration.java?rev=596319&r1=596318&r2=596319&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTagDeclaration.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SelectItemTagDeclaration.java Mon Nov 19 07:03:11 2007
@@ -24,6 +24,7 @@
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
 import org.apache.myfaces.tobago.taglib.decl.HasBinding;
 import org.apache.myfaces.tobago.taglib.decl.HasId;
+import org.apache.myfaces.tobago.taglib.decl.HasMarkup;
 
 /*
  * Created by IntelliJ IDEA.
@@ -39,7 +40,7 @@
  */
 @Tag(name = "selectItem", bodyContent = BodyContent.EMPTY)
 @UIComponentTag(uiComponent = "org.apache.myfaces.tobago.component.UISelectItem")
-public interface SelectItemTagDeclaration extends TobagoTagDeclaration, HasBinding, HasId {
+public interface SelectItemTagDeclaration extends TobagoTagDeclaration, HasBinding, HasId, HasMarkup {
   /**
    * Flag indicating whether the option created
    * by this component is disabled.