private bool ContinueOnCheckCodeChanged(string currentCheckCode)
        {
            string             checkCodeFromField = string.Empty;
            EditorComboBoxItem selectedField      = ((EditorComboBoxItem)cbxFields.Items[currentFieldItem]);

            if (cbxEvents.SelectedIndex == 0 && (selectedField).IDVal is IFieldWithCheckCodeBefore)
            {
                Field beforeField = (selectedField).IDVal as Field;
                checkCodeFromField = ((IFieldWithCheckCodeBefore)beforeField).CheckCodeBefore;
            }
            else if (cbxEvents.SelectedIndex == 1 && (selectedField).IDVal is IFieldWithCheckCodeAfter)
            {
                Field afterField = (selectedField).IDVal as Field;
                checkCodeFromField = ((IFieldWithCheckCodeAfter)afterField).CheckCodeAfter;
            }
            else if (cbxEvents.SelectedIndex == 1 && (selectedField).IDVal is IFieldWithCheckCodeClick)
            {
                Field afterField = (selectedField).IDVal as Field;
                checkCodeFromField = ((IFieldWithCheckCodeClick)afterField).CheckCodeClick;
            }
            else if (selectedField.IDVal is Page)
            {
                if (cbxEvents.SelectedIndex == 0)
                {
                    checkCodeFromField = ((Page)selectedField.IDVal).CheckCodeBefore;
                }
                else
                {
                    checkCodeFromField = ((Page)selectedField.IDVal).CheckCodeAfter;
                }
            }
            else
            {
                if (selectedField.Type.Equals("View"))
                {
                    if (cbxEvents.SelectedIndex == 0)
                    {
                        checkCodeFromField = ((View)selectedField.IDVal).CheckCodeBefore;
                    }
                    else
                    {
                        checkCodeFromField = ((View)selectedField.IDVal).WebSurveyId;
                    }
                }
                else if (selectedField.Type.Equals("Record"))
                {
                    if (cbxEvents.SelectedIndex == 0)
                    {
                        checkCodeFromField = ((View)selectedField.IDVal).RecordCheckCodeBefore;
                    }
                    else
                    {
                        checkCodeFromField = ((View)selectedField.IDVal).RecordCheckCodeAfter;
                    }
                }
                else if (selectedField.Type.Equals("DefinedVariables"))
                {
                    checkCodeFromField = ((View)selectedField.IDVal).CheckCodeVariableDefinitions;
                }
            }

            checkCodeFromField = checkCodeFromField.Trim().Trim(Environment.NewLine.ToCharArray());
            if (!checkCodeFromField.Equals(currentCheckCode.Trim().Trim(Environment.NewLine.ToCharArray())))
            {
                DialogResult result = MsgBox.ShowQuestion(SharedStrings.CHECKCODE_CHANGED, MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    if (string.IsNullOrEmpty(currentCheckCode) || CompileCheckCode(currentCheckCode))
                    {
                        txtTextArea.Text = currentCheckCode;
                        Save(cbxFields.SelectedIndex);
                        ResetCheckCodeIndicator();
                    }
                    else
                    {
                        cbxFields.SelectedItem = cbxFields.Items[currentFieldItem];
                        return(false);
                    }
                }
            }
            return(true);
        }
        /// <summary>
        /// Saves the contents of the editor
        /// </summary>
        /// <param name="indexToSave">Index of the item to save.</param>
        public void Save(int indexToSave)
        {
            EditorComboBoxItem selectedItem = (EditorComboBoxItem)cbxFields.Items[indexToSave];
            string             checkCode    = txtTextArea.Text.Replace("\n", "\r\n");

            checkCode = checkCode.Trim(Environment.NewLine.ToCharArray());

            IMetadataProvider metadata = GetMetadata();

            if (cbxEvents.SelectedIndex == 0 && (selectedItem).IDVal is IFieldWithCheckCodeBefore)
            {
                Field beforeField = (selectedItem).IDVal as Field;
                ((IFieldWithCheckCodeBefore)beforeField).CheckCodeBefore = checkCode;
                metadata.CreateControlBeforeCheckCode(beforeField.Id, ((IFieldWithCheckCodeBefore)beforeField).CheckCodeBefore, this.view);
            }
            else if (cbxEvents.SelectedIndex == 1 && (selectedItem).IDVal is IFieldWithCheckCodeAfter)
            {
                Field afterField = (selectedItem).IDVal as Field;
                ((IFieldWithCheckCodeAfter)afterField).CheckCodeAfter = checkCode;
                metadata.CreateControlAfterCheckCode(afterField.Id, ((IFieldWithCheckCodeAfter)afterField).CheckCodeAfter, this.view);
            }
            else if (cbxEvents.SelectedIndex == 1 && (selectedItem).IDVal is IFieldWithCheckCodeClick)
            {
                Field afterField = (selectedItem).IDVal as Field;
                ((IFieldWithCheckCodeClick)afterField).CheckCodeClick = checkCode;
                metadata.CreateControlAfterCheckCode(afterField.Id, ((IFieldWithCheckCodeClick)afterField).CheckCodeClick, this.view);
            }

            #region Replaced this code with the code above using the interfaces
            //if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is InputTextBoxField)
            //{
            //    if (cbxEvents.SelectedIndex == 0)
            //    {
            //        ((InputTextBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeBefore = txtTextArea.Text;
            //        metadata.CreateControlBeforeCheckCode(((InputTextBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //    }
            //    else
            //    {
            //        ((InputTextBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeAfter = txtTextArea.Text;
            //        metadata.CreateControlAfterCheckCode(((InputTextBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //    }
            //}
            //else if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is TableBasedDropDownField)
            //{
            //    if (cbxEvents.SelectedIndex == 0)
            //    {
            //        ((TableBasedDropDownField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeBefore = txtTextArea.Text;
            //        metadata.CreateControlBeforeCheckCode(((TableBasedDropDownField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //    }
            //    else
            //    {
            //        ((TableBasedDropDownField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeAfter = txtTextArea.Text;
            //        metadata.CreateControlAfterCheckCode(((TableBasedDropDownField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //    }
            //}
            //else if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is CommandButtonField)
            //{
            //    ((CommandButtonField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeClick = txtTextArea.Text;
            //    metadata.CreateControlAfterCheckCode(((CommandButtonField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //}
            //else if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is CheckBoxField)
            //{
            //    ((CheckBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeAfter = txtTextArea.Text;
            //    metadata.CreateControlAfterCheckCode(((CheckBoxField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //}
            //else if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is OptionField)
            //{
            //    ((OptionField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeAfter = txtTextArea.Text;
            //    metadata.CreateControlAfterCheckCode(((OptionField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //}
            //else if (((EditorComboBoxItem)cbxFields.SelectedItem).IDVal is YesNoField)
            //{
            //    ((YesNoField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).CheckCodeAfter = txtTextArea.Text;
            //    metadata.CreateControlAfterCheckCode(((YesNoField)((EditorComboBoxItem)cbxFields.SelectedItem).IDVal).Id, txtTextArea.Text, this.View);
            //}
            #endregion

            else if ((selectedItem).IDVal is Page)
            {
                if (cbxEvents.SelectedIndex == 0)
                {
                    ((Page)(selectedItem).IDVal).CheckCodeBefore = checkCode;
                    metadata.CreatePageBeforeCheckCode(((Page)(selectedItem).IDVal).Id, checkCode, this.View);
                }
                else
                {
                    ((Page)(selectedItem).IDVal).CheckCodeAfter = checkCode;
                    metadata.CreatePageAfterCheckCode(((Page)(selectedItem).IDVal).Id, checkCode, this.View);
                }
            }
            else if ((selectedItem).Type.Equals("View"))
            {
                if (cbxEvents.SelectedIndex == 0)
                {
                    ((View)(selectedItem).IDVal).CheckCodeBefore = checkCode;
                    metadata.CreateViewBeforeCheckCode(((View)(selectedItem).IDVal).Id, checkCode);
                }
                else
                {
                    ((View)(selectedItem).IDVal).WebSurveyId = checkCode;
                    metadata.CreateViewAfterCheckCode(((View)(selectedItem).IDVal).Id, checkCode);
                }
            }
            else if ((selectedItem).Type.Equals("Record"))
            {
                if (cbxEvents.SelectedIndex == 0)
                {
                    ((View)(selectedItem).IDVal).RecordCheckCodeBefore = checkCode;
                    metadata.CreateRecordBeforeCheckCode(((View)(selectedItem).IDVal).Id, checkCode);
                }
                else
                {
                    ((View)(selectedItem).IDVal).RecordCheckCodeAfter = checkCode;
                    metadata.CreateRecordAfterCheckCode(((View)(selectedItem).IDVal).Id, checkCode);
                }
            }
            else
            {
                ((View)(selectedItem).IDVal).CheckCodeVariableDefinitions = checkCode;
                metadata.CreateCheckCodeVariableDefinition(((View)(selectedItem).IDVal).Id, checkCode);
                //if (ShouldUndefineVariables())
                //{
                //    UndefineVariables();
                //}
                //LoadDeclaredVariables();
            }
        }