public async Task CustomFieldDefitions_CreateAuditField()
        {
            var client = await GetTestClientAsync();

            const string fieldId = "CX.AUDIT364";
            await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId);

            var description = "AUDIT user id field for 364";
            var format      = LoanFieldFormat.AUDIT;
            var audit       = new FieldAudit("364", AuditData.UserID);
            var customField = new CustomFieldDefinition(fieldId, description, format)
            {
                Audit = audit
            };
            await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField);

            customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId);

            Assert.AreEqual(fieldId, customField.Id);
            Assert.AreEqual(description, customField.Description);
            Assert.AreEqual(format, customField.Format.EnumValue);
            Assert.AreEqual(audit.FieldId, customField.Audit.FieldId);
            Assert.AreEqual(audit.Data.EnumValue, customField.Audit.Data.EnumValue);
            Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId));
        }
Ejemplo n.º 2
0
        public static IDictionary <string, object> GetUnobtrusiveValidationAtributes(this CustomFieldDefinition field)
        {
            var result = new Dictionary <string, object>();

            foreach (var rule in field.GetClientValidationRules())
            {
                var prefix = "data-val-" + rule.ValidationType;
                if (result.ContainsKey(prefix))
                {
                    continue;
                }

                result.Add(prefix, rule.ErrorMessage ?? String.Empty);

                foreach (var kvp in rule.ValidationParameters)
                {
                    result.Add(prefix + "-" + kvp.Key, kvp.Value == null ? String.Empty : kvp.Value.ToString());
                }
            }

            if (result.Count > 0)
            {
                result.Add("data-val", "true");
            }

            return(result);
        }
Ejemplo n.º 3
0
        internal override Grouping GetSubgrouping(object val)
        {
            CustomFieldDefinition defn =
                CustomFieldsManager.GetCustomFieldDefinition(val.ToString());

            return(defn == null ? null : new CustomFieldGrouping(defn, null));
        }
Ejemplo n.º 4
0
        protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
        {
            builder.AddCssClass("form-list");

            var itemsHtml = new StringBuilder();
            var i         = 0;

            foreach (var item in field.SelectionItems)
            {
                itemsHtml.AppendLine("<li>");

                var checkboxId = field.Name + "_" + i;
                var checkbox   = new TagBuilder("input");
                checkbox.MergeAttribute("id", checkboxId);
                checkbox.MergeAttribute("type", "checkbox");
                checkbox.MergeAttribute("name", field.Name);
                checkbox.MergeAttribute("value", item.Value);

                var label = new TagBuilder("label");
                label.InnerHtml = item.Text;
                label.AddCssClass("inline");
                label.MergeAttribute("for", checkboxId);

                itemsHtml.AppendLine(checkbox.ToString(TagRenderMode.SelfClosing));
                itemsHtml.AppendLine(label.ToString());

                itemsHtml.AppendLine("</li>");

                i++;
            }

            builder.InnerHtml = itemsHtml.ToString();

            base.BuildControl(builder, field, value, htmlAttributes, viewContext);
        }
        public async Task CustomFieldDefitions_CreateUpdateAndDelete()
        {
            var client = await GetTestClientAsync();

            const string fieldId = "CX.ABC";
            await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId);

            var description = "A, B, C";
            var format      = LoanFieldFormat.DATE;
            var customField = new CustomFieldDefinition(fieldId, description, format);
            await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField);

            customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId);

            Assert.AreEqual(fieldId, customField.Id);
            Assert.AreEqual(description, customField.Description);
            Assert.AreEqual(format, customField.Format.EnumValue);
            description            += " easy as 1, 2, 3";
            customField.Description = description;
            await client.Settings.Loan.CustomFields.UpdateCustomFieldAsync(customField);

            customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId);

            Assert.AreEqual(fieldId, customField.Id);
            Assert.AreEqual(description, customField.Description);
            Assert.AreEqual(format, customField.Format.EnumValue);
            Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId));
        }
Ejemplo n.º 6
0
        private void SetValue(CustomFieldDefinition definition, Control control, Object value)
        {
            switch (definition.Type)
            {
            case CustomFieldDefinition.Types.Date:
            {
                DateTimePicker dateControl = (DateTimePicker)control;
                DateTimePicker timeControl = (DateTimePicker)dateControl.Tag;

                if (value != null)
                {
                    dateControl.Checked = true;
                    dateControl.Value   = (DateTime)value;
                    timeControl.Value   = (DateTime)value;
                }
                else
                {
                    dateControl.Checked = false;
                }
            }
            break;

            case CustomFieldDefinition.Types.String:
                TextBox textBox = control as TextBox;
                if (textBox == null)
                {
                    return;
                }

                textBox.Text = (String)value;
                break;
            }
        }
Ejemplo n.º 7
0
 protected virtual void BuildControl(TagBuilder builder, CustomFieldDefinition fieldDefinition, string fieldValue, object htmlAttributes, ViewContext viewContext)
 {
     if (htmlAttributes != null)
     {
         builder.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes), true);
     }
 }
Ejemplo n.º 8
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            CustomFieldDefinition customFieldDefinition = lbCustomFields.SelectedItem as CustomFieldDefinition;

            if (customFieldDefinition == null)
            {
                return;
            }

            string name = customFieldDefinition.Name.Ellipsise(50);

            if (!MainWindow.Confirm(connection, Program.MainWindow, Messages.MESSAGEBOX_CONFIRM, Messages.MESSAGEBOX_DELETE_CUSTOM_FIELD, name))
            {
                return;
            }

            int selIdx = lbCustomFields.SelectedIndex;

            lbCustomFields.Items.RemoveAt(selIdx);
            DelegatedAsyncAction action = new DelegatedAsyncAction(connection,
                                                                   String.Format(Messages.DELETE_CUSTOM_FIELD, name),
                                                                   String.Format(Messages.DELETING_CUSTOM_FIELD, name),
                                                                   String.Format(Messages.DELETED_CUSTOM_FIELD, name),
                                                                   delegate(Session session)
            {
                CustomFieldsManager.RemoveCustomField(session, connection, customFieldDefinition);
            });

            action.RunAsync();
        }
Ejemplo n.º 9
0
        private Object GetValue(CustomFieldDefinition definition, Control control)
        {
            switch (definition.Type)
            {
            case CustomFieldDefinition.Types.Date:
            {
                DateTimePicker dateControl = (DateTimePicker)control;
                if (!dateControl.Checked)
                {
                    return(null);
                }
                DateTimePicker timeControl = (DateTimePicker)dateControl.Tag;
                DateTime       date        = dateControl.Value;
                DateTime       time        = timeControl.Value;

                return(new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second));
            }

            case CustomFieldDefinition.Types.String:
                TextBox textBox = control as TextBox;
                if (textBox == null)
                {
                    return(null);
                }

                string text = textBox.Text;
                return(text == "" ? null : text);

            default:
                throw new InvalidEnumArgumentException();
            }
        }
Ejemplo n.º 10
0
        protected override void BuildControl(TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, ViewContext viewContext)
        {
            builder.MergeAttribute("type", Type, true);

            if (Type == "text")
            {
                builder.MergeAttribute("value", value, true);
            }

            base.BuildControl(builder, field, value, htmlAttributes, viewContext);
        }
Ejemplo n.º 11
0
        private void UpdateFieldTranslation(CustomFieldDefinition original, CustomFieldDefinitionModel translated, string prefix, List <PropertyTranslation> translations)
        {
            translations.Add(new PropertyTranslation(prefix + "Label", original.Label, translated.Label));
            translations.Add(new PropertyTranslation(prefix + "DefaultValue", original.DefaultValue, translated.DefaultValue));

            foreach (var item in translated.SelectionItems)
            {
                var originalItem = original.SelectionItems.FirstOrDefault(i => i.Value == item.Value);
                translations.Add(new PropertyTranslation(prefix + "SelectionItems[" + item.Value + "]", originalItem.Text, item.Text));
            }
        }
Ejemplo n.º 12
0
        private CustomFieldModel MapOrDefault <T>(CustomFieldDefinition definition, T field) where T : ICustomField
        {
            if (field == null)
            {
                return(new CustomFieldModel {
                    FieldName = definition.Name
                });
            }

            return(Mapper.Map <T, CustomFieldModel>(field));
        }
Ejemplo n.º 13
0
        public CustomFieldGrouping(XmlNode node)
            : base(node)
        {
            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.Name == CustomFieldDefinition.TAG_NAME)
                {
                    definition = new CustomFieldDefinition(childNode);
                    return;
                }
            }

            throw new Exception(string.Format("Custom field declaration with no {0}", CustomFieldDefinition.TAG_NAME));
        }
Ejemplo n.º 14
0
        public IHtmlString Render(CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
        {
            var container = new TagBuilder("div");

            container.AddCssClass("custom-file");
            container.Attributes.Add("data-toggle", "fileupload");

            var textbox = new TagBuilder("input");

            textbox.Attributes.Add("type", "text");
            textbox.Attributes.Add("name", field.Name);
            textbox.MergeAttributes(field.GetUnobtrusiveValidationAtributes());

            RouteValueDictionary additionHtmlAttributes = null;

            if (htmlAttributes != null)
            {
                additionHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

                var databind = additionHtmlAttributes["data-bind"];
                if (databind != null)
                {
                    additionHtmlAttributes.Remove("data-bind");
                    textbox.MergeAttribute("data-bind", databind.ToString());
                }

                container.MergeAttributes(additionHtmlAttributes);
            }

            var button = new TagBuilder("a");

            button.AddCssClass("button");

            var span = new TagBuilder("span");

            var fileInput = new TagBuilder("input");

            fileInput.Attributes.Add("type", "file");
            fileInput.Attributes.Add("id", field.Name);
            fileInput.Attributes.Add("name", field.Name);

            span.InnerHtml   = fileInput.ToString(TagRenderMode.SelfClosing);
            button.InnerHtml = "Browse..." + span.ToString();

            container.InnerHtml = String.Concat(textbox.ToString(TagRenderMode.SelfClosing), button.ToString());

            return(new HtmlString(container.ToString()));
        }
Ejemplo n.º 15
0
        private ItemMetadataSchema CreateMetadataSchema()
        {
            var customFields = new CustomFieldDefinition[2];

            customFields[0] = new CustomFieldDefinition(CUSTOM_FIELD_ID, typeof(ulong));
            customFields[1] = new CustomFieldDefinition(CUSTOM_FIELD_TIMESTAMP, typeof(ulong));

            var identityRule = new IdentityRule[1];

            identityRule[0] = new IdentityRule(new uint[] { CUSTOM_FIELD_ID });

            var result = new ItemMetadataSchema(customFields, identityRule);

            return
                (result);
        }
Ejemplo n.º 16
0
        protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
        {
            base.BuildControl(builder, field, value, htmlAttributes, viewContext);

            var html = new StringBuilder();

            html.Append("<option value=\"\"></option>");

            foreach (var item in field.SelectionItems)
            {
                html.AppendFormat("<option value=\"{0}\">{1}</option>", item.Value, item.Text)
                .AppendLine();
            }

            builder.InnerHtml = html.ToString();
        }
        private void btnDelete_Click(object sender, EventArgs e)
        {
            CustomFieldDefinition customFieldDefinition = lbCustomFields.SelectedItem as CustomFieldDefinition;

            if (customFieldDefinition == null)
            {
                return;
            }

            string name = customFieldDefinition.Name.Ellipsise(50);

            if (!Program.RunInAutomatedTestMode)
            {
                using (var dialog = new WarningDialog(string.Format(Messages.MESSAGEBOX_DELETE_CUSTOM_FIELD, name),
                                                      ThreeButtonDialog.ButtonYes, ThreeButtonDialog.ButtonNo)
                {
                    WindowTitle = Messages.MESSAGEBOX_CONFIRM
                })
                {
                    if (dialog.ShowDialog(Program.MainWindow) != DialogResult.Yes)
                    {
                        return;
                    }
                }
            }

            if (connection != null && !connection.IsConnected)
            {
                MainWindow.ShowDisconnectedMessage(Program.MainWindow);
                return;
            }

            int selIdx = lbCustomFields.SelectedIndex;

            lbCustomFields.Items.RemoveAt(selIdx);
            DelegatedAsyncAction action = new DelegatedAsyncAction(connection,
                                                                   String.Format(Messages.DELETE_CUSTOM_FIELD, name),
                                                                   String.Format(Messages.DELETING_CUSTOM_FIELD, name),
                                                                   String.Format(Messages.DELETED_CUSTOM_FIELD, name),
                                                                   delegate(Session session)
            {
                CustomFieldsManager.RemoveCustomField(session, connection, customFieldDefinition);
            });

            action.RunAsync();
        }
Ejemplo n.º 18
0
        public virtual IHtmlString Render(CustomFieldDefinition fieldDefinition, string fieldValue, object htmlAttributes, ViewContext viewContext)
        {
            var builder = new TagBuilder(TagName);

            builder.MergeAttribute("name", fieldDefinition.Name);

            var validationAttributes = fieldDefinition.GetUnobtrusiveValidationAtributes();

            if (validationAttributes != null && validationAttributes.Count > 0)
            {
                builder.MergeAttributes(validationAttributes, true);
            }

            BuildControl(builder, fieldDefinition, fieldValue, htmlAttributes, viewContext);

            return(new HtmlString(builder.ToString(TagRenderMode)));
        }
Ejemplo n.º 19
0
        public IHtmlString Render(CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
        {
            var input = new TagBuilder("input");

            input.Attributes.Add("type", "hidden");
            input.Attributes.Add("name", field.Name);

            var text = new TagBuilder("span");

            text.InnerHtml = field.DefaultValue;

            var html = new StringBuilder();

            html.AppendLine(input.ToString(TagRenderMode.SelfClosing));
            html.AppendLine(text.ToString());

            return(new HtmlString(html.ToString()));
        }
Ejemplo n.º 20
0
        private PropertyAccessor CalcProperty()
        {
            if (column.StartsWith(CustomFieldsManager.CUSTOM_FIELD))
            {
                string fieldName = column.Substring(CustomFieldsManager.CUSTOM_FIELD.Length);
                CustomFieldDefinition customFieldDefinition = CustomFieldsManager.GetCustomFieldDefinition(fieldName);
                if (customFieldDefinition == null)  // a custom field that existed at the time the search was created but no longer exists
                {
                    return(o => null);
                }

                if (customFieldDefinition.Type == CustomFieldDefinition.Types.Date)
                {
                    return(delegate(IXenObject o)
                    {
                        object val = CustomFieldsManager.GetCustomFieldValue(o, customFieldDefinition);
                        return (DateTime?)(val is DateTime ? val : null);
                    });
                }
                else
                {
                    return(delegate(IXenObject o)
                    {
                        object val = CustomFieldsManager.GetCustomFieldValue(o, customFieldDefinition);
                        return val == null ? null : val.ToString();
                    });
                }
            }

            ColumnNames c;

            try
            {
                c = (ColumnNames)Enum.Parse(typeof(ColumnNames), column);
            }
            catch (ArgumentException)
            {
                return(null);
            }
            PropertyNames propertyName = PropertyAccessors.GetSortPropertyName(c);

            return(PropertyAccessors.Get(propertyName));
        }
Ejemplo n.º 21
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            NewCustomFieldDialog dialog = new NewCustomFieldDialog(connection);

            if (dialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            CustomFieldDefinition definition = dialog.Definition;

            DelegatedAsyncAction action = new DelegatedAsyncAction(connection,
                                                                   String.Format(Messages.ADD_CUSTOM_FIELD, definition.Name),
                                                                   String.Format(Messages.ADDING_CUSTOM_FIELD, definition.Name),
                                                                   String.Format(Messages.ADDED_CUSTOM_FIELD, definition.Name),
                                                                   delegate(Session session)
            {
                CustomFieldsManager.AddCustomField(session, connection, definition);
            });

            action.RunAsync();
        }
Ejemplo n.º 22
0
        internal override QueryFilter GetSubquery(object parent, object val)
        {
            System.Diagnostics.Trace.Assert(val != null);

            CustomFieldDefinition defn =
                CustomFieldsManager.GetCustomFieldDefinition(definition.Name);

            System.Diagnostics.Trace.Assert(defn != null);

            if (defn.Type == CustomFieldDefinition.Types.String)
            {
                return(new CustomFieldQuery(defn, (string)val, StringPropertyQuery.PropertyQueryType.exactmatch));
            }
            else if (defn.Type == CustomFieldDefinition.Types.Date)
            {
                return(new CustomFieldDateQuery(defn, (DateTime)val, DatePropertyQuery.PropertyQueryType.exact));
            }
            else
            {
                return(base.GetSubquery(parent, val));
            }
        }
Ejemplo n.º 23
0
        internal override QueryFilter GetSubquery(object parent, object val)
        {
            System.Diagnostics.Trace.Assert(val != null);

            // Clicked on a key in the tree (which is now in val).
            if (parent == null)
            {
                CustomFieldDefinition defn =
                    CustomFieldsManager.GetCustomFieldDefinition(val.ToString());
                System.Diagnostics.Trace.Assert(defn != null);

                if (defn.Type == CustomFieldDefinition.Types.String)
                {
                    return(new CustomFieldQuery(defn, String.Empty, StringPropertyQuery.PropertyQueryType.exactmatch));
                }
                else
                {
                    return(new CustomFieldDateQuery(defn, DateTime.Now, DatePropertyQuery.PropertyQueryType.exact));
                }
            }

            // Clicked on a value in the tree (key is in parent, value is in val).
            else
            {
                CustomFieldDefinition defn =
                    CustomFieldsManager.GetCustomFieldDefinition(parent.ToString());
                System.Diagnostics.Trace.Assert(defn != null);

                if (defn.Type == CustomFieldDefinition.Types.String)
                {
                    return(new CustomFieldQuery(defn, val.ToString(), StringPropertyQuery.PropertyQueryType.exactmatch));
                }
                else
                {
                    return(new CustomFieldDateQuery(defn, (DateTime)val, DatePropertyQuery.PropertyQueryType.exact));
                }
            }
        }
        public async Task CustomFieldDefitions_CreateDropdownField()
        {
            var client = await GetTestClientAsync();

            const string fieldId = "CX.PETS";
            await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId);

            var description = "Borrower's own pets";
            var format      = LoanFieldFormat.DROPDOWNLIST;
            var options     = new[] { "Dog", "Cat", "Other", "Multiple" };
            var customField = new CustomFieldDefinition(fieldId, description, format)
            {
                Options = options
            };
            await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField);

            customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId);

            Assert.AreEqual(fieldId, customField.Id);
            Assert.AreEqual(description, customField.Description);
            Assert.AreEqual(format, customField.Format.EnumValue);
            CollectionAssert.AreEqual(options, customField.Options.ToList());
            Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId));
        }
Ejemplo n.º 25
0
 public CustomFieldDateQuery(CustomFieldDefinition definition, DateTime query, DatePropertyQuery.PropertyQueryType type)
     : base(definition)
 {
     this.query = query;
     this.type  = type;
 }
Ejemplo n.º 26
0
 public CustomFieldQuery(CustomFieldDefinition definition, String query, StringPropertyQuery.PropertyQueryType type)
     : base(definition)
 {
     this.query = query;
     this.type  = type;
 }
Ejemplo n.º 27
0
 public CustomFieldQueryBase(CustomFieldDefinition definition)
 {
     this.definition = definition;
 }
		public CustomFieldDefinition[] getCustomFieldDefinitions() {
			string[] result = buffer.customFields.Split(new [] { '\r', '\n' });
			List<string> list = new List<string>();
			for (int i = 0;i < result.Length;i++) {
				if (!result[i].Equals("")) {
					list.Add(result[i]);
				}
			}
			
			
			CustomFieldDefinition[] definitions = new CustomFieldDefinition[list.Count];
			for (int i = 0;i < list.Count; i++) {
				definitions[i] = new CustomFieldDefinition(list[i]);
			}
			return definitions;
		}
Ejemplo n.º 29
0
 protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
 {
     base.BuildControl(builder, field, value, htmlAttributes, viewContext);
     builder.InnerHtml = value;
 }
Ejemplo n.º 30
0
        private void Rebuild(bool revertValues)
        {
            CustomFieldDefinition[] customFieldDefinitions = CustomFieldsManager.GetCustomFields(xenObject.Connection).ToArray();

            tableLayoutPanel.SuspendLayout();

            // Add new custom fields
            foreach (CustomFieldDefinition customFieldDefinition in customFieldDefinitions)
            {
                Object value = CustomFieldsManager.GetCustomFieldValue(xenObject, customFieldDefinition);

                if (!controls.ContainsKey(customFieldDefinition))
                {
                    // Create the display label
                    Label lblKey = new Label();
                    lblKey.Text         = customFieldDefinition.Name.EscapeAmpersands();
                    lblKey.Margin       = new Padding(3, 7, 3, 3);
                    lblKey.Font         = Program.DefaultFont;
                    lblKey.Width        = (int)tableLayoutPanel.ColumnStyles[0].Width;
                    lblKey.AutoEllipsis = true;
                    lblKey.AutoSize     = false;

                    tableLayoutPanel.Controls.Add(lblKey);

                    // Create value field
                    Control control;

                    switch (customFieldDefinition.Type)
                    {
                    case CustomFieldDefinition.Types.String:
                        TextBox textBox = new TextBox();
                        textBox.Text = (String)value;

                        tableLayoutPanel.Controls.Add(textBox);
                        tableLayoutPanel.SetColumnSpan(textBox, 2);
                        textBox.Dock = DockStyle.Fill;
                        control      = textBox;
                        break;

                    case CustomFieldDefinition.Types.Date:
                        DateTimePicker date = new DateTimePicker();
                        date.MinDate      = DateTime.MinValue;
                        date.MaxDate      = DateTime.MaxValue;
                        date.Dock         = DockStyle.Fill;
                        date.MinimumSize  = new Size(0, 24);
                        date.ShowCheckBox = true;
                        date.Format       = DateTimePickerFormat.Long;
                        if (value != null)
                        {
                            date.Value   = (DateTime)value;
                            date.Checked = true;
                        }
                        else
                        {
                            date.Checked = false;
                        }
                        tableLayoutPanel.Controls.Add(date);

                        DateTimePicker time = new DateTimePicker();
                        time.MinDate     = DateTime.MinValue;
                        time.MaxDate     = DateTime.MaxValue;
                        time.Dock        = DockStyle.Fill;
                        time.MinimumSize = new Size(0, 24);
                        time.Format      = DateTimePickerFormat.Time;
                        time.ShowUpDown  = true;
                        if (value != null)
                        {
                            time.Value   = (DateTime)value;
                            time.Enabled = true;
                        }
                        else
                        {
                            time.Enabled = false;
                        }
                        tableLayoutPanel.Controls.Add(time);
                        // Tag so we can remove this control later
                        date.Tag           = time;
                        date.ValueChanged += delegate(Object sender, EventArgs e)
                        {
                            time.Enabled = date.Checked;
                        };

                        control = date;
                        break;

                    default:
                        throw new InvalidEnumArgumentException();
                    }

                    controls[customFieldDefinition] = new KeyValuePair <Label, Control>(lblKey, control);
                }
                else if (revertValues)
                {
                    KeyValuePair <Label, Control> kvp = controls[customFieldDefinition];

                    SetValue(customFieldDefinition, kvp.Value, value);
                }
            }

            // Remove old ones
            CustomFieldDefinition[] definitions = new CustomFieldDefinition[controls.Keys.Count];
            controls.Keys.CopyTo(definitions, 0);

            foreach (CustomFieldDefinition definition in definitions)
            {
                if (Array.IndexOf <CustomFieldDefinition>(customFieldDefinitions, definition) > -1)
                {
                    continue;
                }

                KeyValuePair <Label, Control> kvp = controls[definition];

                tableLayoutPanel.Controls.Remove(kvp.Value);
                tableLayoutPanel.Controls.Remove(kvp.Key);

                DateTimePicker timeControl = kvp.Value.Tag as DateTimePicker;
                if (timeControl != null)
                {
                    tableLayoutPanel.Controls.Remove(timeControl);
                }

                controls.Remove(definition);

                kvp.Key.Dispose();
                kvp.Value.Dispose();
            }

            tableLayoutPanel.ResumeLayout();
        }
Ejemplo n.º 31
0
 public CustomFieldGrouping(CustomFieldDefinition definition, Grouping subgrouping)
     : base(subgrouping)
 {
     this.definition = definition;
 }