diff --git a/org.adempiere.base.process/src/org/idempiere/process/ImportCSVProcess.java b/org.adempiere.base.process/src/org/idempiere/process/ImportCSVProcess.java index 22b4af1791..55ae8b7a98 100644 --- a/org.adempiere.base.process/src/org/idempiere/process/ImportCSVProcess.java +++ b/org.adempiere.base.process/src/org/idempiere/process/ImportCSVProcess.java @@ -35,17 +35,22 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; +import org.adempiere.base.Core; import org.adempiere.base.IGridTabImporter; import org.adempiere.base.equinox.EquinoxExtensionLocator; import org.adempiere.exceptions.AdempiereException; +import org.compiere.model.DataStatusEvent; +import org.compiere.model.DataStatusListener; +import org.compiere.model.GridField; import org.compiere.model.GridTab; import org.compiere.model.GridWindow; import org.compiere.model.MImportTemplate; +import org.compiere.model.MLookup; import org.compiere.process.ProcessInfoParameter; import org.compiere.process.SvrProcess; import org.compiere.util.Env; -public class ImportCSVProcess extends SvrProcess { +public class ImportCSVProcess extends SvrProcess implements DataStatusListener { private InputStream m_file_istream = null; private int p_AD_ImportTemplate_ID = 0; @@ -112,6 +117,7 @@ public class ImportCSVProcess extends SvrProcess { if (m_gridTab == null) throw new Exception("No Active Tab"); + m_gridTab.addDataStatusListener(this); } protected IGridTabImporter initImporter() throws Exception { @@ -142,4 +148,44 @@ public class ImportCSVProcess extends SvrProcess { m_file_istream.close(); } + /** + * @param e + * @see DataStatusListener#dataStatusChanged(DataStatusEvent) + */ + public void dataStatusChanged(DataStatusEvent e) + { + int col = e.getChangedColumn(); + if (log.isLoggable(Level.CONFIG)) log.config("(" + m_gridTab + ") Col=" + col + ": " + e.toString()); + + // Process Callout + GridField mField = m_gridTab.getField(col); + if (mField != null + && (mField.getCallout().length() > 0 + || (Core.findCallout(m_gridTab.getTableName(), mField.getColumnName())).size()>0 + || m_gridTab.hasDependants(mField.getColumnName()))) + { + String msg = m_gridTab.processFieldChange(mField); // Dependencies & Callout + if (msg.length() > 0) + { + log.warning(msg); + } + + // Refresh the list on dependant fields + for (GridField dependentField : m_gridTab.getDependantFields(mField.getColumnName())) + { + // if the field has a lookup + if (dependentField != null && dependentField.getLookup() instanceof MLookup) + { + MLookup mLookup = (MLookup)dependentField.getLookup(); + // if the lookup is dynamic (i.e. contains this columnName as variable) + if (mLookup.getValidation().indexOf("@"+mField.getColumnName()+"@") != -1) + { + mLookup.refresh(); + } + } + } // for all dependent fields + + } + } + } diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index c5266477e2..eab8bb971a 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -1145,7 +1145,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo); if (!isInsertRecord()) { - log.warning ("Inset Not allowed in TabNo=" + m_vo.TabNo); + log.warning ("Insert Not allowed in TabNo=" + m_vo.TabNo); return false; } // Prevent New Where Main Record is processed