Index: org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultJDynForm.java =================================================================== --- org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultJDynForm.java (revisión: 1148) +++ org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultJDynForm.java (copia de trabajo) @@ -70,6 +70,7 @@ import com.jgoodies.forms.layout.RowSpec; import java.util.Collection; import java.util.Map.Entry; +import org.gvsig.tools.dynform.spi.dynformfield.AbstractJDynFormField; @SuppressWarnings({"unchecked", "rawtypes"}) public class DefaultJDynForm implements JDynForm, JDynFormFieldListener { @@ -231,6 +232,9 @@ continue; } JDynFormField jfield = getServiceManager().createJDynFormField(fieldDefinition, null); + if( jfield instanceof AbstractJDynFormField ) { + ((AbstractJDynFormField)jfield).setForm(this); + } jfield.setReadOnly(this.readOnly); jfield.addListener(this); if (this.readOnly) { @@ -266,6 +270,9 @@ continue; } JDynFormField jfield = getServiceManager().createJDynFormField(fieldDefinition, null); + if( jfield instanceof AbstractJDynFormField ) { + ((AbstractJDynFormField)jfield).setForm(this); + } jfield.addListener(this); if (this.readOnly) { jfield.setReadOnly(readOnly); @@ -326,6 +333,9 @@ continue; } JDynFormField jfield = getServiceManager().createJDynFormField(fieldDefinition, null); + if( jfield instanceof AbstractJDynFormField ) { + ((AbstractJDynFormField)jfield).setForm(this); + } jfield.setReadOnly(this.readOnly); jfield.addListener(this); if (this.readOnly) { @@ -614,13 +624,6 @@ } public JDynFormField getField(String fieldName) { - if (this.contents == null) { - try { - this.initComponents(); - } catch (ServiceException e) { - throw new RuntimeException(e.getLocalizedMessage(), e); - } - } JDynFormField field = (JDynFormField) this.components.get(fieldName); return field; } Index: org.gvsig.tools.dynform/org.gvsig.tools.dynform.api/src/main/java/org/gvsig/tools/dynform/JDynFormField.java =================================================================== --- org.gvsig.tools.dynform/org.gvsig.tools.dynform.api/src/main/java/org/gvsig/tools/dynform/JDynFormField.java (revisión: 1148) +++ org.gvsig.tools.dynform/org.gvsig.tools.dynform.api/src/main/java/org/gvsig/tools/dynform/JDynFormField.java (copia de trabajo) @@ -77,4 +77,6 @@ public void fireMessageEvent(String message); public void clear(); + + public JDynForm getForm(); } Index: org.gvsig.tools.dynform/org.gvsig.tools.dynform.spi/src/main/java/org/gvsig/tools/dynform/spi/dynformfield/AbstractJDynFormField.java =================================================================== --- org.gvsig.tools.dynform/org.gvsig.tools.dynform.spi/src/main/java/org/gvsig/tools/dynform/spi/dynformfield/AbstractJDynFormField.java (revisión: 1148) +++ org.gvsig.tools.dynform/org.gvsig.tools.dynform.spi/src/main/java/org/gvsig/tools/dynform/spi/dynformfield/AbstractJDynFormField.java (copia de trabajo) @@ -44,11 +44,10 @@ import javax.swing.text.JTextComponent; import org.gvsig.tools.dynform.DynFormFieldDefinition; +import org.gvsig.tools.dynform.JDynForm; import org.gvsig.tools.dynform.JDynFormField; import org.gvsig.tools.dynform.spi.DynFormSPIManager; import org.gvsig.tools.dynobject.DynObject; -import org.gvsig.tools.observer.Observable; -import org.gvsig.tools.observer.Observer; import org.gvsig.tools.service.Manager; import org.gvsig.tools.service.spi.ServiceManager; import org.slf4j.Logger; @@ -73,6 +72,7 @@ private boolean readOnly = false; private List customActions; protected boolean emptyToNull = false; + private JDynForm form; public AbstractJDynFormField(DynObject parameters, @@ -370,5 +370,12 @@ } } + public void setForm(JDynForm form) { + this.form = form; + } + + public JDynForm getForm() { + return this.form; + } }