Ejemplo n.º 1
0
 private void UpdateSelectedItem()
 {
     if (IsSelectedItemSelectable())
     {
         _selectedItem = (IScriptValueListItem)this.SelectedItem;
     }
     else
     {
         _selectedItem = null;
     }
 }
Ejemplo n.º 2
0
        protected override void OnMeasureItem(MeasureItemEventArgs e)
        {
            IScriptValueListItem item = this.Items[e.Index] as IScriptValueListItem;

            if (item == null)
            {
                return;
            }
            string text = item.DisplayText;
            var    m    = e.Graphics.MeasureString(text, item.IsLabel ? _labelFont : this.Font);

            e.ItemHeight = (int)m.Height;
        }
Ejemplo n.º 3
0
        protected override void OnKeyDown(KeyEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(e.KeyData.ToString());
            switch (e.KeyData)
            {
            case Keys.Escape:
                _selectedItem = null;
                if (ItemSelected != null)
                {
                    ItemSelected(this, EventArgs.Empty);
                }
                break;

            case Keys.Enter:
                UpdateSelectedItem();
                if (_selectedItem != null && ItemSelected != null)
                {
                    ItemSelected(this, EventArgs.Empty);
                }
                break;

            case Keys.Up:
                if (SelectedIndex > 0)
                {
                    SelectedIndex -= 1;
                }
                e.Handled = IsSelectedItemSelectable();
                break;

            case Keys.Down:
                if (SelectedIndex < Items.Count - 1)
                {
                    SelectedIndex += 1;
                }
                e.Handled = IsSelectedItemSelectable();
                break;
            }
            base.OnKeyDown(e);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Edits the value of the specified object.
        /// </summary>
        /// <param name="ctx">An <see cref="ITypeDescriptorContext"/> that can be used to gain additional context information.</param>
        /// <param name="provider">An <see cref="IServiceProvider"/> through which editing services may be obtained.</param>
        /// <param name="value">An instance of the value being edited.</param>
        /// <returns>A string containing the new value of the object.</returns>
        public override object EditValue(ITypeDescriptorContext ctx, IServiceProvider provider, object value)
        {
            // sanity
            if (provider == null)
            {
                return(value);
            }

            object instance;
            FlexDesignerHostServices services;

            if (!Util.EditableModelHelper.GetInstanceAndServices(ctx, out instance, out services))
            {
                return(value);
            }

            IGetReportsService   grs = services.GetGetReportService();
            IScriptEditorService ses = services.GetScriptEditorService();

            if (grs == null || ses == null)
            {
                return(value);
            }

            C1FlexReport report = grs.Report;

            if (report == null)
            {
                return(value);
            }

            // Handle both string and ScriptStringValue properties:
            Type targetType = ctx != null && ctx.PropertyDescriptor != null ? ctx.PropertyDescriptor.PropertyType : typeof(string);

            // script editor call:
            Func <object, object> doEdit = (v_) =>
            {
                string dataSourceName;
                ScriptEditorContextKind contextKind;
                EditorScriptContextBase.GuessContextName(report, instance, ctx.PropertyDescriptor.Name, out dataSourceName, out contextKind);
                object result;
                if (ses.EditScript(report, dataSourceName, contextKind, instance, ctx.PropertyDescriptor.Name, null, true, out result))
                {
                    return(result);
                }
                else
                {
                    return(v_);
                }
            };

            // select editor style
            UITypeEditorEditStyle style = GetEditStyle(ctx);
            object retValue;

            switch (style)
            {
            case UITypeEditorEditStyle.None:
                retValue = value;
                break;

            case UITypeEditorEditStyle.Modal:
                retValue = doEdit(value);
                break;

            case UITypeEditorEditStyle.DropDown:
                _edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
                if (_edSvc != null)
                {
                    // show the list
                    _edSvc.DropDownControl(_listBox);
                    _edSvc = null;
                    IScriptValueListItem selectedItem = _listBox.GetSelectedItem();
                    if (selectedItem == null)
                    {
                        retValue = value;
                    }
                    else if (selectedItem.IsScriptEditor)
                    {
                        retValue = doEdit(value);
                    }
                    else if (selectedItem.IsValue)
                    {
                        retValue = Util.ScriptValueHelper.TextToObject(selectedItem.Text, targetType, selectedItem.IsExpression);
                    }
                    else
                    {
                        retValue = value;
                    }
                }
                else
                {
                    retValue = value;
                }
                break;

            default:
                System.Diagnostics.Debug.Assert(false);
                retValue = null;
                break;
            }
            // return whatever we got
            return(retValue);
        }