/// <summary>
        /// Update the preview according to the current Editor state.
        /// In case of the preview a temporary object will only be updated.
        /// </summary>
        private void UpdatePreview()
        {
            labelObj style = mapControl.Target;

            if (style != null)
            {
                Update(style);
                if (style.getTextString() == null || style.getTextString() == "")
                {
                    style.setText("Sample Text");
                }
                style.setExpression("");
                mapControl.RefreshView();
            }
        }
        /// <summary>
        /// Update the label object according to the current Editor state.
        /// </summary>
        /// <param name="label">The object to be updated.</param>
        private void Update(labelObj label)
        {
            label.anglemode          = (MS_POSITIONS_ENUM)comboBoxAngleMode.SelectedItem;
            label.autominfeaturesize = checkBoxAutoMinFeatureSize.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;
            label.partials           = checkBoxPartials.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;
            label.force = checkBoxForce.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;

            label.setExpression(this.textBoxExpression.Text);
            label.setText(this.textBoxText.Text);

            colorPickerColor.ApplyTo(label.color);
            colorPickerOutlineColor.ApplyTo(label.outlinecolor);
            colorPickerShadowColor.ApplyTo(label.shadowcolor);

            label.size        = int.Parse(textBoxSize.Text);
            label.minsize     = int.Parse(textBoxMinSize.Text);
            label.maxsize     = int.Parse(textBoxMaxSize.Text);
            label.mindistance = int.Parse(textBoxMinDistance.Text);
            label.offsetx     = int.Parse(textBoxOffsetX.Text);
            label.offsety     = int.Parse(textBoxOffsetY.Text);
            if (textBoxWrap.Text == "")
            {
                label.wrap = '\0';
            }
            else
            {
                label.wrap = Convert.ToChar(textBoxWrap.Text);
            }

            label.shadowsizex = int.Parse(textBoxShadowSizeX.Text);
            label.shadowsizey = int.Parse(textBoxShadowSizeY.Text);

            if (textBoxEncoding.Text == "")
            {
                label.encoding = null;
            }
            else
            {
                label.encoding = textBoxEncoding.Text;
            }
            label.angle = double.Parse(textBoxAngle.Text);

            label.position = (int)comboBoxPosition.SelectedItem;

            label.align = (int)comboBoxAlign.SelectedItem;

            if ((string)(comboBoxFont.SelectedItem) == "(none)")
            {
                label.font = null;
            }
            else
            {
                label.font = (string)(comboBoxFont.SelectedItem);
            }

            label.priority = int.Parse(textBoxPriority.Text);
            if (textBoxMaxScale.Text == "")
            {
                label.maxscaledenom = -1;
            }
            else
            {
                label.maxscaledenom = double.Parse(textBoxMaxScale.Text);
            }

            if (textBoxMinScale.Text == "")
            {
                label.minscaledenom = -1;
            }
            else
            {
                label.minscaledenom = double.Parse(textBoxMinScale.Text);
            }
            label.maxlength      = int.Parse(textBoxMaxLength.Text);
            label.minfeaturesize = int.Parse(textBoxMinFeatureSize.Text);
            label.buffer         = int.Parse(textBoxBuffer.Text);
            label.repeatdistance = int.Parse(textBoxRepeatDistance.Text);

            if (isStyleChanged)
            {
                // reconstruct styles
                while (label.numstyles > 0)
                {
                    label.removeStyle(0);
                }
                // insert styles in reverse order
                for (int i = listViewStyles.Items.Count - 1; i >= 0; --i)
                {
                    ListViewItem item  = listViewStyles.Items[i];
                    styleObj     style = (styleObj)item.Tag;
                    label.insertStyle(style.clone(), -1);
                }
            }
        }
        /// <summary>
        /// Update the label object according to the current Editor state.
        /// </summary>
        /// <param name="label">The object to be updated.</param>
        private void Update(labelObj label)
        {
            label.anglemode = (int)comboBoxAngleMode.SelectedItem;
            label.autominfeaturesize = checkBoxAutoMinFeatureSize.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;
            label.partials = checkBoxPartials.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;
            label.force = checkBoxForce.Checked ? mapscript.MS_TRUE : mapscript.MS_FALSE;

            label.setExpression(this.textBoxExpression.Text);
            label.setText(this.textBoxText.Text);

            colorPickerColor.ApplyTo(label.color);
            colorPickerOutlineColor.ApplyTo(label.outlinecolor);
            colorPickerShadowColor.ApplyTo(label.shadowcolor);

            label.type = MS_FONT_TYPE.MS_TRUETYPE;
            label.size = double.Parse(textBoxSize.Text);
            label.minsize = double.Parse(textBoxMinSize.Text);
            label.maxsize = double.Parse(textBoxMaxSize.Text);
            label.mindistance = int.Parse(textBoxMinDistance.Text);
            label.offsetx = int.Parse(textBoxOffsetX.Text);
            label.offsety = int.Parse(textBoxOffsetY.Text);
            if (textBoxWrap.Text == "")
                label.wrap = '\0';
            else
                label.wrap = Convert.ToChar(textBoxWrap.Text);

            label.shadowsizex = int.Parse(textBoxShadowSizeX.Text);
            label.shadowsizey = int.Parse(textBoxShadowSizeY.Text);

            if (textBoxEncoding.Text == "")
                label.encoding = null;
            else
                label.encoding = textBoxEncoding.Text;
            label.angle = double.Parse(textBoxAngle.Text);

            label.position = (int)comboBoxPosition.SelectedItem;

            label.align = (int)comboBoxAlign.SelectedItem;

            if ((string)(comboBoxFont.SelectedItem) == "(none)")
                label.font = null;
            else
                label.font = (string)(comboBoxFont.SelectedItem);

            label.priority = int.Parse(textBoxPriority.Text);
            if (textBoxMaxScale.Text == "")
                label.maxscaledenom = -1;
            else
                label.maxscaledenom = double.Parse(textBoxMaxScale.Text);

            if (textBoxMinScale.Text == "")
                label.minscaledenom = -1;
            else
                label.minscaledenom = double.Parse(textBoxMinScale.Text);
            label.maxlength = int.Parse(textBoxMaxLength.Text);
            label.minfeaturesize = int.Parse(textBoxMinFeatureSize.Text);
            label.buffer = int.Parse(textBoxBuffer.Text);
            label.repeatdistance = int.Parse(textBoxRepeatDistance.Text);

            if (isStyleChanged)
            {
                // reconstruct styles
                while (label.numstyles > 0)
                    label.removeStyle(0);
                // insert styles in reverse order
                for (int i = listViewStyles.Items.Count - 1; i >= 0; --i)
                {
                    ListViewItem item = listViewStyles.Items[i];
                    styleObj style = (styleObj)item.Tag;
                    label.insertStyle(style.clone(), -1);
                }
            }
        }