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);
}