[richfaces-svn-commits] JBoss Rich Faces SVN: r6159 - in trunk/sandbox/ui/inplaceSelect: src/main/java/org/richfaces/renderkit and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Feb 19 07:25:41 EST 2008


Author: abelevich
Date: 2008-02-19 07:25:41 -0500 (Tue, 19 Feb 2008)
New Revision: 6159

Modified:
   trunk/sandbox/ui/inplaceSelect/pom.xml
   trunk/sandbox/ui/inplaceSelect/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
Log:
extends inplaceSelect from combobox  

Modified: trunk/sandbox/ui/inplaceSelect/pom.xml
===================================================================
--- trunk/sandbox/ui/inplaceSelect/pom.xml	2008-02-19 12:23:34 UTC (rev 6158)
+++ trunk/sandbox/ui/inplaceSelect/pom.xml	2008-02-19 12:25:41 UTC (rev 6159)
@@ -50,6 +50,12 @@
   	      <groupId>org.richfaces.framework</groupId>
   	      <artifactId>richfaces-api</artifactId>
   	      <version>3.2.0-SNAPSHOT</version>
-  	    </dependency>
+    </dependency>
+	<dependency>
+  	      <groupId>org.richfaces.ui</groupId>
+  	      <artifactId>combobox</artifactId>
+  	      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+
   </dependencies>
 </project>
\ No newline at end of file

Modified: trunk/sandbox/ui/inplaceSelect/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
===================================================================
--- trunk/sandbox/ui/inplaceSelect/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java	2008-02-19 12:23:34 UTC (rev 6158)
+++ trunk/sandbox/ui/inplaceSelect/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java	2008-02-19 12:25:41 UTC (rev 6159)
@@ -3,21 +3,108 @@
  */
 package org.richfaces.renderkit;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.model.SelectItem;
 
-import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+import org.ajax4jsf.util.InputUtils;
+import org.ajax4jsf.util.SelectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.richfaces.component.UIInplaceSelect;
 
 /**
  * @author Anton Belevich
  *
  */
-public class InplaceSelectBaseRenderer extends HeaderResourcesRendererBase{
+public class InplaceSelectBaseRenderer extends ComboBoxBaseRenderer{
+	
+    private static Log logger = LogFactory.getLog(InplaceSelectBaseRenderer.class);
+    private static final String RICH_INPLACE_SELECT_CLASSES = "rich-iselect-item rich-iselect-item-normal";
+    private ArrayList <String> valuesList = null;
 
-	protected Class<? extends UIComponent> getComponentClass() {
-		return UIInplaceSelect.class;
+	@Override
+	protected void doDecode(FacesContext context, UIComponent component) {
+		UIInplaceSelect inplaceInput = null;
+
+		if (component instanceof UIInplaceSelect) {
+		    inplaceInput = (UIInplaceSelect) component;
+		} else {
+		    if (logger.isDebugEnabled()) {
+			logger.debug("No decoding necessary since the component " 
+				     + component.getId() + 
+				     " is not an instance or a sub class of UIComboBox");
+		    }
+		    return;
+		}	
+		
+		if (InputUtils.isDisabled(inplaceInput) || InputUtils.isReadOnly(inplaceInput)) {
+		    if (logger.isDebugEnabled()) {
+			logger.debug(("No decoding necessary since the component "
+				      + component.getId() + " is disabled"));
+			}
+		}
+		
+		String clientId = component.getClientId(context);
+		if (clientId == null) {
+		    throw new NullPointerException("component " + inplaceInput.getClientId(context) + " client id is NULL" );
+		}
+		
+		clientId = clientId + "inplaceValue";		
+		Map request = context.getExternalContext().getRequestParameterMap();
+		if (request.containsKey(clientId)) {
+			String newValue = (String)request.get(clientId);
+			inplaceInput.setSubmittedValue(newValue);
+		}
 	}
 	
+	@Override
+	public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) throws ConverterException {
+		UIInplaceSelect select = null;
+		Converter converter = null;
+		if (component instanceof UIInplaceSelect) {
+			select = (UIInplaceSelect)component;
+			converter = select.getConverter();
+		}
+		return getConvertedValue(context, component, submittedValue, converter);
+	}
 	
-
+	public void encodeItems( FacesContext context, UIComponent component) throws IOException {
+		valuesList = new ArrayList<String>();
+		ResponseWriter writer = context.getResponseWriter();
+		
+		List <SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
+		if(!selectItems.isEmpty()) {
+			for (Iterator <SelectItem> iterator = selectItems.iterator(); iterator.hasNext();) {
+				SelectItem selectItem = iterator.next();
+				String value = getConvertedStringValue(context, component, selectItem.getValue());
+				valuesList.add(value);
+				encodeSuggestion(writer, component, value, RICH_INPLACE_SELECT_CLASSES);
+			}
+		}
+	}
+	
+	@Override
+	protected String getConvertedStringValue(FacesContext context, UIComponent component, Object value) {
+		UIInplaceSelect select = null;
+		Converter converter = null;
+		if (component instanceof UIInplaceSelect) {
+			select = (UIInplaceSelect)component;
+			converter = select.getConverter(); 
+		}
+		return getConvertedStringValue(context, component, value, converter);
+	}
+	
+	protected Class <? extends UIComponent> getComponentClass() {
+		return UIInplaceSelect.class;
+	}
 }




More information about the richfaces-svn-commits mailing list