protected override void OnHelpRequested(HelpEventArgs hevent)
        {
            base.OnHelpRequested(hevent);
            Point   helpAt    = this.PointToClient(hevent.MousePos);
            Control acControl = this.GetChildAtPoint(helpAt);

            if (acControl != null && acControl is ArgumentPanel)
            {
                ArgumentPanel panel = acControl as ArgumentPanel;
                panel.Focus();
                if (panel.FieldConfig != null && panel.FieldConfig.Tooltip != null && !panel.FieldConfig.Tooltip.Equals(String.Empty))
                {
                    ToolTip toolTip = panel.ToolTip;
                    toolTip.Show(panel.FieldConfig.Tooltip, this, helpAt, toolTip.AutoPopDelay);
                }
            }
        }
 private void SetFirstArgumentPanelFocus()
 {
     this.Wizard.Focus();
     this.Focus();
     if (this.Configuration != null && this.Configuration.Fields.Length >= 1)
     {
         IValueInfoService metaDataService =
             (IValueInfoService)GetService(typeof(IValueInfoService));
         ValueInfo argument = metaDataService.GetInfo(this.Configuration.Fields[0].ValueName);
         if (argument != null)
         {
             ArgumentPanel firstArgumentPanel =
                 (ArgumentPanel)Arguments[argument];
             firstArgumentPanel.Focus();
         }
     }
 }
 private void RecipeArgumentChanged(object sender, ComponentChangedEventArgs e)
 {
     try
     {
         if (e.Component == null)
         {
             throw new ArgumentNullException("Component");
         }
         // Forward call to appropriate providers.
         ArgumentPanel argumentPanel = (ArgumentPanel)Arguments[((ValueInfo)e.Component)];
         if (argumentPanel != null)
         {
             argumentPanel.UpdateValueInternal(e.NewValue);
         }
     }
     catch (Exception ex)
     {
         ErrorHelper.Show((IUIService)GetService(typeof(IUIService)), ex);
     }
 }
 public override void EndInit()
 {
     if (IsInitializing)
     {
         base.EndInit();
         if (!IsInitializing)
         {
             bool usingHelp    = !string.IsNullOrEmpty(this.Configuration.Help);
             int  heightNeeded = 0;
             IsInitializing = true;
             IServiceProvider serviceProvider = (IServiceProvider)GetService(typeof(IServiceProvider));
             this.SuspendLayout();
             ArgumentPanel[] argumentPanels = new ArgumentPanel[this.Configuration.Fields.Length];
             for (int i = 0; i < this.Configuration.Fields.Length; i++)
             {
                 argumentPanels[i] = CreateEditingPanel(this.Configuration.Fields[i]);
                 ((System.ComponentModel.ISupportInitialize)(argumentPanels[i])).BeginInit();
                 argumentPanels[i].SuspendLayout();
                 this.Controls.Add(argumentPanels[i]);
                 this.Controls.SetChildIndex(argumentPanels[i], 0);
                 ((System.ComponentModel.ISupportInitialize)(argumentPanels[i])).EndInit();
                 argumentPanels[i].ResumeLayout();
                 heightNeeded += argumentPanels[i].Height;
                 usingHelp    |= !string.IsNullOrEmpty(this.Configuration.Fields[i].Help);
             }
             for (int i = this.Configuration.Fields.Length; --i >= 0;)
             {
                 argumentPanels[i].TabIndex = i;
             }
             heightNeeded += InfoRTBoxSize.Height;
             if (usingHelp && this.Height < heightNeeded)
             {
                 this.MinimumSize = new Size(this.Width, heightNeeded);
                 this.Height      = heightNeeded;
             }
             this.ResumeLayout();
             IsInitializing = false;
         }
     }
 }
        private ArgumentPanel CreateEditingPanel(Configuration.Field field)
        {
            IValueInfoService metaDataService =
                (IValueInfoService)GetService(typeof(IValueInfoService));
            ValueInfo argument = metaDataService.GetInfo(field.ValueName);

            if (argument == null)
            {
                throw new ArgumentNullException("Field");
            }
            ArgumentPanel          argumentPanel = null;
            ITypeResolutionService loaderService =
                (ITypeResolutionService)GetService(typeof(ITypeResolutionService));
            Type argType = argument.Type;

            if (argType == null)
            {
                throw new TypeLoadException(
                          String.Format(
                              CultureInfo.CurrentCulture, Properties.Resources.WizardGatheringService_CannotLoadTypeStepField,
                              argument.Name,
                              this.Configuration.Title));
            }
            if (argType == typeof(bool) ||               // The type is a simple boolean value, so let's use ArgumentPanelBool
                argType == typeof(Nullable <bool>))
            {
                argumentPanel = new ArgumentPanelBool();
            }
            else
            {
                if (!string.IsNullOrEmpty(field.PanelType))
                {
                    Type paneltype = loaderService.GetType(field.PanelType);
                    argumentPanel = (ArgumentPanelTypeEditor)Activator.CreateInstance(paneltype);
                }
                else
                {
                    argumentPanel = new ArgumentPanelTypeEditor();
                }
                //First try to use any UITypeEditor defined for our type
                Type editorType = field.Editor == null ? null : loaderService.GetType(field.Editor.Type);
                if (editorType != null)
                {
                    UITypeEditor editorInstance = (UITypeEditor)Activator.CreateInstance(editorType);
                    if (editorInstance is IAttributesConfigurable)
                    {
                        ImmutableKeyStringDictionary values = new ImmutableKeyStringDictionary();
                        if (field.Editor.AnyAttr != null)
                        {
                            foreach (XmlAttribute xattr in field.Editor.AnyAttr)
                            {
                                values.Add(xattr.Name, xattr.Value);
                            }
                        }
                        ((IAttributesConfigurable)editorInstance).Configure(values);
                    }
                    ((ArgumentPanelTypeEditor)argumentPanel).EditorInstance = editorInstance;
                }
                ((ArgumentPanelTypeEditor)argumentPanel).ConverterInstance = argument.Converter;
            }
            argumentPanel.FieldConfig = field;
            this.Arguments[argument]  = argumentPanel;
            return(argumentPanel);
        }