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.