private void setField(FieldDictionary dictionary, OMMFieldEntry fentry, FidDef fiddef,
            boolean ripple, boolean add)
    {
        FieldValue field = getValue(fiddef.getName());
        if (field == null)
        {
            if (add)
            {
                short type = fentry.getDataType();
                if (type == OMMTypes.UNKNOWN)
                    type = fiddef.getOMMType();
                int listCount = _entries.size();
                int row = _row;
                int col = _column;
                if (row == -1)
                    row = listCount;
                else if (col == -1)
                    col = listCount;

                field = new FieldValue(_model, fiddef);
                _entries.put(fiddef.getName(), field);
                field.update(fentry);
            }
        }
        else if (ripple && (fiddef.getRippleFieldId() != 0))
        {
            Object tmp = field.getStringValue();
            setFirstField(fentry, fiddef, field);
            while ((fiddef.getRippleFieldId() != 0)
                    && ((field = getValue(dictionary.getFidDef(fiddef.getRippleFieldId()).getName())) != null))
            {
                tmp = field.setValue(tmp);
                short fieldId = field.getFieldId();
                fiddef = dictionary.getFidDef(fieldId);
            }
        }
        else
        {
            setFirstField(fentry, fiddef, field);
        }
    }