126 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing.Design;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Drawing;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Design
 | 
						|
{
 | 
						|
    public class SuperTooltipInfoEditor : UITypeEditor 
 | 
						|
    {
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Edits the value of the specified object using the editor style indicated by GetEditStyle.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="context">An ITypeDescriptorContext that can be used to gain additional context information.</param>
 | 
						|
        /// <param name="provider">An IServiceProvider that this editor can use to obtain services.</param>
 | 
						|
        /// <param name="value">The object to edit.</param>
 | 
						|
        /// <returns>The new value of the object.</returns>
 | 
						|
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 | 
						|
        {
 | 
						|
            if (context != null && context.Instance != null && provider != null)
 | 
						|
            {
 | 
						|
                IWindowsFormsEditorService m_EditorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
 | 
						|
 | 
						|
                SuperTooltipInfo info = value as SuperTooltipInfo;
 | 
						|
 | 
						|
                SuperTooltip superTooltipInstance = null;
 | 
						|
                if (context.PropertyDescriptor != null)
 | 
						|
                {
 | 
						|
                    string name = context.PropertyDescriptor.DisplayName;
 | 
						|
                    IDesignerHost dh = provider.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
                    if (dh != null && dh.Container!=null)
 | 
						|
                    {
 | 
						|
                        foreach (IComponent comp in dh.Container.Components)
 | 
						|
                        {
 | 
						|
                            SuperTooltip st = comp as SuperTooltip;
 | 
						|
                            if (st != null && st.Site != null)
 | 
						|
                            {
 | 
						|
                                if (name.EndsWith(st.Site.Name))
 | 
						|
                                {
 | 
						|
                                    superTooltipInstance = st;
 | 
						|
                                    break;
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                if (info == null)
 | 
						|
                {
 | 
						|
                    info = new SuperTooltipInfo();
 | 
						|
                    if (!(context.Instance is SuperTooltip))
 | 
						|
                    {
 | 
						|
                        if (superTooltipInstance != null && superTooltipInstance.DefaultTooltipSettings!=null)
 | 
						|
                        {
 | 
						|
                            info.BodyImage = superTooltipInstance.DefaultTooltipSettings.BodyImage;
 | 
						|
                            info.BodyText = superTooltipInstance.DefaultTooltipSettings.BodyText;
 | 
						|
                            info.Color = superTooltipInstance.DefaultTooltipSettings.Color;
 | 
						|
                            info.CustomSize = superTooltipInstance.DefaultTooltipSettings.CustomSize;
 | 
						|
                            info.FooterImage = superTooltipInstance.DefaultTooltipSettings.FooterImage;
 | 
						|
                            info.FooterText = superTooltipInstance.DefaultTooltipSettings.FooterText;
 | 
						|
                            info.FooterVisible = superTooltipInstance.DefaultTooltipSettings.FooterVisible;
 | 
						|
                            info.HeaderText = superTooltipInstance.DefaultTooltipSettings.HeaderText;
 | 
						|
                            info.HeaderVisible = superTooltipInstance.DefaultTooltipSettings.HeaderVisible;
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                            info.Color = eTooltipColor.System;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                
 | 
						|
                if (m_EditorService != null)
 | 
						|
                {
 | 
						|
                    SuperTooltipVisualEditor tipDesigner = new SuperTooltipVisualEditor();
 | 
						|
                    tipDesigner.EditorProvider = new CustomTypeEditorProvider(context.Container, provider);
 | 
						|
                    tipDesigner.EditorService = m_EditorService;
 | 
						|
                    tipDesigner.SuperTooltipInfo = info;
 | 
						|
                    tipDesigner.ParentSuperTooltip = superTooltipInstance;
 | 
						|
                    
 | 
						|
                    Form f = new Form();
 | 
						|
                    f.Controls.Add(tipDesigner);
 | 
						|
                    f.AcceptButton = tipDesigner.buttonOK;
 | 
						|
                    f.CancelButton = tipDesigner.buttonCancel;
 | 
						|
                    f.Size = new Size(tipDesigner.Size.Width+SystemInformation.Border3DSize.Width*4,
 | 
						|
                        tipDesigner.Size.Height+SystemInformation.Border3DSize.Height*4+SystemInformation.CaptionHeight);
 | 
						|
                    tipDesigner.Dock = DockStyle.Fill;
 | 
						|
                    f.StartPosition = FormStartPosition.CenterScreen;
 | 
						|
                    f.MinimizeBox = false;
 | 
						|
                    f.MaximizeBox = false;
 | 
						|
                    f.Text = "SuperTooltip Editor";
 | 
						|
                    m_EditorService.ShowDialog(f);
 | 
						|
 | 
						|
                    //m_EditorService.DropDownControl(tipDesigner);
 | 
						|
 | 
						|
                    if (!tipDesigner.Canceled)
 | 
						|
                    {
 | 
						|
                        SuperTooltipInfo returnInfo = tipDesigner.SuperTooltipInfo;
 | 
						|
                        f.Dispose();
 | 
						|
                        return returnInfo;
 | 
						|
                    }
 | 
						|
                    f.Dispose();
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return value;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the editor style used by the EditValue method.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="context">An ITypeDescriptorContext that can be used to gain additional context information.</param>
 | 
						|
        /// <returns>A UITypeEditorEditStyle value that indicates the style of editor used by EditValue. If the UITypeEditor does not support this method, then GetEditStyle will return None.
 | 
						|
        /// </returns>
 | 
						|
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
 | 
						|
        {
 | 
						|
            if (context != null && context.Instance != null)
 | 
						|
            {
 | 
						|
                return UITypeEditorEditStyle.Modal;
 | 
						|
            }
 | 
						|
            return base.GetEditStyle(context);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |