You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by im...@apache.org on 2007/10/17 10:16:44 UTC

svn commit: r585407 - in /myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm: component/dynaForm/DynaForm.java component/dynaForm/DynaFormRenderer.java guiBuilder/GuiBuilder.java guiBuilder/impl/jsf/JsfGuiBuilder.java

Author: imario
Date: Wed Oct 17 01:16:43 2007
New Revision: 585407

URL: http://svn.apache.org/viewvc?rev=585407&view=rev
Log:
deal with changing uris

Modified:
    myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaForm.java
    myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaFormRenderer.java
    myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/GuiBuilder.java
    myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/impl/jsf/JsfGuiBuilder.java

Modified: myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaForm.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaForm.java?rev=585407&r1=585406&r2=585407&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaForm.java (original)
+++ myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaForm.java Wed Oct 17 01:16:43 2007
@@ -39,6 +39,7 @@
 	public static final String COMPONENT_FAMILY = "org.apache.myfaces.orchestra.dynaForm.DynaForm";
 
 	public static final String DYNA_FORM_CREATED = "org.apache.myfaces.dynaForm.CREATED";
+	public static final String DYNA_FORM_URI = "org.apache.myfaces.dynaForm.URI";
 
 	private String uri;
 	private String bundle;

Modified: myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaFormRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaFormRenderer.java?rev=585407&r1=585406&r2=585407&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaFormRenderer.java (original)
+++ myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/component/dynaForm/DynaFormRenderer.java Wed Oct 17 01:16:43 2007
@@ -61,12 +61,10 @@
 		@SuppressWarnings("unchecked")
 		public void newComponent(String fieldName, UIComponent label, UIComponent component)
 		{
-			component.getAttributes().put(
-				DynaForm.DYNA_FORM_CREATED, Boolean.TRUE);
-
 			UIColumn column = new UIColumn();
 			column.getChildren().add(component);
 			column.setHeader(label);
+			column.getAttributes().put(DynaForm.DYNA_FORM_CREATED, Boolean.TRUE);
 
 			int addPos = -1;
 			UIComponent dataIndicator = this.destCmp.findComponent("data");
@@ -99,9 +97,6 @@
 		@SuppressWarnings("unchecked")
 		public void newComponent(String fieldName, UIComponent label, UIComponent component)
 		{
-			component.getAttributes().put(
-				DynaForm.DYNA_FORM_CREATED, Boolean.TRUE);
-
 			this.destCmp.getChildren().add(label);
 			this.destCmp.getChildren().add(component);
 		}
@@ -127,11 +122,44 @@
 		UIComponent layoutComponent = findLayoutComponent(dynaForm);
 		ViewType viewType = getViewType(layoutComponent);
 
+		// check if the uri has changed since the last rendering. This can happen
+		// if the uri points to a value-binding
+		String previousUri = (String) dynaForm.getAttributes().get(DynaForm.DYNA_FORM_URI);
+		if (previousUri != null && !previousUri.equals(dynaForm.getUri()))
+		{
+			removeDynaFormCreatedComponents(dynaForm);
+		}
+
 		// create & add components
 		boolean needAdd = processPreviouslyAdded(context, layoutComponent);
 		if (needAdd)
 		{
+			dynaForm.getAttributes().put(DynaForm.DYNA_FORM_URI, dynaForm.getUri());
 			addComponents(context, dynaForm, layoutComponent, viewType);
+		}
+	}
+
+	public void removeDynaFormCreatedComponents(UIComponent base)
+	{
+		List children = base.getChildren();
+		if (children == null || children.size() < 1 )
+		{
+			return;
+		}
+
+		Iterator iterChildren = children.iterator();
+		while (iterChildren.hasNext())
+		{
+			UIComponent component = (UIComponent) iterChildren.next();
+
+			if (Boolean.TRUE.equals(component.getAttributes().get(DynaForm.DYNA_FORM_CREATED)))
+			{
+				iterChildren.remove();
+			}
+			else
+			{
+				removeDynaFormCreatedComponents(component);
+			}
 		}
 	}
 

Modified: myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/GuiBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/GuiBuilder.java?rev=585407&r1=585406&r2=585407&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/GuiBuilder.java (original)
+++ myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/GuiBuilder.java Wed Oct 17 01:16:43 2007
@@ -38,7 +38,7 @@
     /**
      * check if this field should be rendered display only
      */
-    protected boolean isDisplayOnly(FieldInterface field)
+    public boolean isDisplayOnly(FieldInterface field)
     {
         return displayOnly || (isIdAsDisplayOnly() && field.isId());
     }
@@ -59,7 +59,7 @@
     }
 
     /**
-     * set if the guiBuilder should build all id fields display only 
+     * set if the guiBuilder should build all id fields display only
      */
     public void setIdAsDisplayOnly(boolean idAsDisplayOnly)
     {

Modified: myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/impl/jsf/JsfGuiBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/impl/jsf/JsfGuiBuilder.java?rev=585407&r1=585406&r2=585407&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/impl/jsf/JsfGuiBuilder.java (original)
+++ myfaces/orchestra/trunk/core15/src/main/java/org/apache/myfaces/orchestra/dynaForm/guiBuilder/impl/jsf/JsfGuiBuilder.java Wed Oct 17 01:16:43 2007
@@ -23,6 +23,7 @@
 import org.apache.myfaces.orchestra.dynaForm.metadata.FieldInterface;
 import org.apache.myfaces.orchestra.dynaForm.metadata.Selection;
 import org.apache.myfaces.orchestra.dynaForm.metadata.utils.TypeInfos;
+import org.apache.myfaces.orchestra.dynaForm.component.dynaForm.DynaForm;
 import org.apache.myfaces.orchestra.lib.OrchestraException;
 
 import javax.faces.component.UIComponent;
@@ -745,6 +746,9 @@
 	public void fireNewComponent(FieldInterface field, UIComponent cmp)
 	{
 		UIOutput labelCmp = createLabelFor(field.getBaseName(), cmp);
+
+		cmp.getAttributes().put(DynaForm.DYNA_FORM_CREATED, Boolean.TRUE);
+		labelCmp.getAttributes().put(DynaForm.DYNA_FORM_CREATED, Boolean.TRUE);
 
 		newComponentListener.newComponent(field.getName(), labelCmp, cmp);
 	}