/// <summary>
        /// Initializes a new instance of the <see cref="FieldControlTab"/> class.
        /// </summary>
        /// <param name="source">
        /// The source.
        /// </param>
        /// <param name="offset">
        /// The offset.
        /// </param>
        /// <param name="fieldControl">
        /// The field control.
        /// </param>
        /// <param name="rootLinkId">
        /// The root link identifier.
        /// </param>
        public FieldControlTab(FieldControlTab source, int offset, FieldControl fieldControl, int rootLinkId)
        {
            this.FieldControl = fieldControl;
            this.Label        = source?.Label;
            this.Type         = source?.Type;
            var count = source?.NumberOfFields ?? 0;

            if (count > 0)
            {
                this.AllFields = new List <UPConfigFieldControlField>(count);
                for (var i = 0; i < count; i++)
                {
                    this.AllFields.Add(
                        new UPConfigFieldControlField(
                            source.FieldAtIndex(i),
                            offset + i,
                            this,
                            fieldControl.InfoAreaId,
                            rootLinkId));
                }
            }

            this.attributes          = source?.AttributeArray;
            this.attributeDictionary = source?.AttributeDictionary;
        }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class.
 /// </summary>
 /// <param name="source">
 /// The source.
 /// </param>
 /// <param name="mode">
 /// The mode.
 /// </param>
 /// <param name="tabConfig">
 /// The tab configuration.
 /// </param>
 public UPConfigFieldControlField(UPConfigFieldControlField source, int mode, FieldControlTab tabConfig)
 {
     this.Field = source.Field;
     this.TabIndependentFieldIndex = source.TabIndependentFieldIndex;
     this.Attributes        = source.Attributes.AttributesForMode(mode);
     this.TargetFieldNumber = source.TargetFieldNumber;
     this.ExplicitLabel     = source.ExplicitLabel;
     this.Function          = source.Function;
     this.TabConfig         = tabConfig;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="FieldControlTab"/> class.
        /// </summary>
        /// <param name="source">
        /// The source.
        /// </param>
        /// <param name="mode">
        /// The mode.
        /// </param>
        /// <param name="fieldControl">
        /// The field control.
        /// </param>
        public FieldControlTab(FieldControlTab source, int mode, FieldControl fieldControl)
        {
            this.FieldControl = fieldControl;

            this.Label = source?.Label;
            this.Type  = source?.Type;

            if (source != null && source.NumberOfFields > 0)
            {
                var fieldArray = new List <UPConfigFieldControlField>(source.NumberOfFields);
                fieldArray.AddRange(source.Fields.Select(field => new UPConfigFieldControlField(field, mode, this)));
                this.AllFields = fieldArray;
            }
            else
            {
                this.AllFields = new List <UPConfigFieldControlField>();
            }
        }
示例#4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class.
        /// </summary>
        /// <param name="source">
        /// The source.
        /// </param>
        /// <param name="tabIndependentFieldIndex">
        /// Index of the tab independent field.
        /// </param>
        /// <param name="tabConfig">
        /// The tab configuration.
        /// </param>
        /// <param name="rootInfoAreaId">
        /// The root information area identifier.
        /// </param>
        /// <param name="rootLinkId">
        /// The root link identifier.
        /// </param>
        public UPConfigFieldControlField(
            UPConfigFieldControlField source,
            int tabIndependentFieldIndex,
            FieldControlTab tabConfig,
            string rootInfoAreaId,
            int rootLinkId)
        {
            if (rootInfoAreaId != null && rootInfoAreaId == source.Field.InfoAreaId && rootLinkId >= 0 && rootLinkId == source.Field.LinkId)
            {
                this.Field = UPCRMField.FieldWithFieldIdInfoAreaIdLinkId(source.Field.FieldId, source.Field.InfoAreaId, -1);
            }
            else
            {
                this.Field = source.Field;
            }

            this.TabIndependentFieldIndex = tabIndependentFieldIndex;
            this.Attributes        = source.Attributes;
            this.TargetFieldNumber = source.TargetFieldNumber;
            this.ExplicitLabel     = source.ExplicitLabel;
            this.Function          = source.Function;
            this.TabConfig         = tabConfig;
        }
示例#5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class.
        /// </summary>
        /// <param name="def">
        /// The definition.
        /// </param>
        /// <param name="tabIndependentFieldIndex">
        /// Index of the tab independent field.
        /// </param>
        /// <param name="tabConfig">
        /// The tab configuration.
        /// </param>
        public UPConfigFieldControlField(List <object> def, int tabIndependentFieldIndex, FieldControlTab tabConfig)
        {
            var linkId = 0;

            if (def.Count > 7)
            {
                linkId = JObjectExtensions.ToInt(def[7]);
            }

            var fieldattributedef = (def[2] as JArray)?.ToObject <List <object> >();

            this.Attributes = fieldattributedef != null
                                  ? new FieldAttributes(fieldattributedef)
                                  : FieldAttributes.NoAttribute;

            UPCRMFieldParentLink fieldParentLink = null;
            var parentLinkString = this.Attributes.ExtendedOptionForKey("parentLink");

            if (!string.IsNullOrEmpty(parentLinkString))
            {
                fieldParentLink = UPCRMFieldParentLink.LinkFromString(parentLinkString);
            }

            if (fieldParentLink != null)
            {
                this.Field = new UPCRMField(
                    JObjectExtensions.ToInt(def[1]),
                    (string)def[0],
                    linkId > 0 ? linkId : -1,
                    fieldParentLink);
            }
            else if (linkId > 0)
            {
                this.Field = new UPCRMField(JObjectExtensions.ToInt(def[1]), (string)def[0], linkId);
            }
            else
            {
                this.Field = new UPCRMField(JObjectExtensions.ToInt(def[1]), (string)def[0]);
            }

            if (def.Count > 3)
            {
                this.TargetFieldNumber = JObjectExtensions.ToInt(def[3]);
            }

            var val = def[4] as string;

            if (val != null)
            {
                this.ExplicitLabel = val;
            }

            // val = [def objectAtIndex:5];
            // if (val != [NSNull null]) tooltip = (NSString *) val;
            if (def.Count() > 6)
            {
                val = def[6] as string;
                if (val != null)
                {
                    this.Function = val;
                }
            }

            this.TabConfig = tabConfig;
            this.TabIndependentFieldIndex = tabIndependentFieldIndex;
        }
示例#6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FieldControl"/> class.
        /// </summary>
        /// <param name="definition">
        /// The definition.
        /// </param>
        public FieldControl(List <object> definition)
        {
            if (definition == null || definition.Count < 6)
            {
                return;
            }

            this.UnitName    = (string)definition[0];
            this.InfoAreaId  = (string)definition[1];
            this.ControlName = (string)definition[2];

            var tabdefs = (definition[3] as JArray)?.ToObject <List <object> >();

            if (tabdefs == null)
            {
                return;
            }

            var sortFieldDef = (definition[4] as JArray)?.ToObject <List <object> >();
            var attributeDef = (definition[5] as JArray)?.ToObject <List <object> >();

            // empty minidetails
            int i, count = tabdefs.Count;

            if (count > 0)
            {
                var tabs        = new List <FieldControlTab>(count);
                var fieldOffset = 0;
                for (i = 0; i < count; i++)
                {
                    var tabDef = (tabdefs[i] as JArray)?.ToObject <List <object> >();
                    if (tabDef == null)
                    {
                        continue;
                    }

                    var tab = new FieldControlTab(tabDef, fieldOffset, this);
                    tabs.Add(tab);
                    fieldOffset += tab.NumberOfFields;
                }

                this.Tabs = tabs;
            }

            if (sortFieldDef != null)
            {
                count = sortFieldDef.Count;
                var sortFields = new List <FieldControlSortField>(count);
                for (i = 0; i < count; i++)
                {
                    var sdef = (sortFieldDef[i] as JArray)?.ToObject <List <object> >();
                    if (sdef == null)
                    {
                        return;
                    }

                    sortFields.Add(new FieldControlSortField(sdef, this.InfoAreaId));
                }

                this.sortFields = sortFields;
            }

            if (attributeDef != null)
            {
                var attributes = new Dictionary <string, string>();
                foreach (JArray keyval in attributeDef)
                {
                    attributes[keyval[0].ToObject <string>()] = keyval[1]?.ToObject <string>();
                }

                this.Attributes = attributes;
            }
        }