758 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			758 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Text;
 | |
| using System.ComponentModel.Design;
 | |
| using System.ComponentModel;
 | |
| using System.Windows.Forms;
 | |
| using System.Collections;
 | |
| using System.Drawing;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.Design
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Represents Windows Forms Designer for Wizard control.
 | |
|     /// </summary>
 | |
|     public class WizardDesigner : System.Windows.Forms.Design.ControlDesigner
 | |
|     {
 | |
|         #region Internal Implementation
 | |
| 		WizardPageNavigationControl m_NavigationControl=null;
 | |
| 
 | |
|         public override void Initialize(IComponent component)
 | |
|         {
 | |
|             base.Initialize(component);
 | |
|             if (!component.Site.DesignMode)
 | |
|                 return;
 | |
| 
 | |
|             IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | |
|             if (cc != null)
 | |
|             {
 | |
|                 cc.ComponentRemoved += new ComponentEventHandler(this.OnComponentRemoved);
 | |
|             }
 | |
| 
 | |
| 			// Setup navigation box in lower left corner
 | |
| 			Wizard w=component as Wizard;
 | |
| 			if(w!=null)
 | |
| 			{
 | |
| 				WizardPageNavigationControl wpn=new WizardPageNavigationControl();
 | |
| 				wpn.Location=new Point(4, w.panelFooter.Height - wpn.Height - 4);
 | |
| 				w.panelFooter.Controls.Add(wpn);
 | |
| 				wpn.BackColor=SystemColors.Control;
 | |
| 				m_NavigationControl=wpn;
 | |
| 			}
 | |
| 
 | |
| #if !TRIAL
 | |
| 			IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
| 			if (dh != null)
 | |
| 				dh.LoadComplete += new EventHandler(dh_LoadComplete);
 | |
| #endif
 | |
|         }
 | |
|         protected override void Dispose(bool disposing)
 | |
|         {
 | |
|             IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | |
|             if (cc != null)
 | |
|             {
 | |
|                 cc.ComponentRemoved -= new ComponentEventHandler(this.OnComponentRemoved);
 | |
|             }
 | |
| 
 | |
|             base.Dispose(disposing);
 | |
|         }
 | |
| 
 | |
|         private void OnComponentRemoved(object sender, ComponentEventArgs e)
 | |
|         {
 | |
|             if (e.Component is WizardPage)
 | |
|             {
 | |
|                 WizardPage page = e.Component as WizardPage;
 | |
|                 Wizard w = this.Control as Wizard;
 | |
| 
 | |
|                 if (page != null && w.WizardPages.Contains(page))
 | |
|                 {
 | |
|                     IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|                     if (cc != null)
 | |
|                         cc.OnComponentChanging(w, TypeDescriptor.GetProperties(w)["WizardPages"]);
 | |
| 
 | |
|                     w.WizardPages.Remove(page);
 | |
| 
 | |
|                     if (cc != null)
 | |
|                         cc.OnComponentChanged(w, TypeDescriptor.GetProperties(w)["WizardPages"], null, null);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void DoDefaultAction()
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         public override DesignerVerbCollection Verbs
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 DesignerVerb[] verbs = null;
 | |
|                 verbs = new DesignerVerb[]
 | |
| 					{
 | |
| 						new DesignerVerb("Create Inner Page", new EventHandler(CreatePage)),
 | |
| 						new DesignerVerb("Create Welcome Page", new EventHandler(CreateWelcomePage)),
 | |
| 						new DesignerVerb("Create Outer Page", new EventHandler(CreateOuterPage)),
 | |
|                         new DesignerVerb("Delete Page", new EventHandler(DeletePage)),
 | |
|                         new DesignerVerb("Next Page", new EventHandler(NextPage)),
 | |
|                         new DesignerVerb("Previous Page", new EventHandler(PreviousPage)),
 | |
|                         new DesignerVerb("Goto Page/Change Order", new EventHandler(GotoPage))
 | |
|                     };
 | |
|                 return new DesignerVerbCollection(verbs);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| #if FRAMEWORK20
 | |
|         public override void InitializeNewComponent(IDictionary defaultValues)
 | |
|         {
 | |
|             base.InitializeNewComponent(defaultValues);
 | |
|             SetDesignTimeDefaults();
 | |
|         }
 | |
| #else
 | |
| 		public override void OnSetComponentDefaults()
 | |
| 		{
 | |
| 			base.OnSetComponentDefaults();
 | |
|             SetDesignTimeDefaults();
 | |
| 		}
 | |
| #endif
 | |
| 
 | |
|         private void SetDesignTimeDefaults()
 | |
|         {
 | |
|             Wizard w = this.Control as Wizard;
 | |
|             if (w == null)
 | |
|                 return;
 | |
|             TypeDescriptor.GetProperties(w)["HeaderImageVisible"].SetValue(w, true);
 | |
|             TypeDescriptor.GetProperties(w)["Dock"].SetValue(w,DockStyle.Fill);
 | |
| 
 | |
|             SetDefaultFooterStyle(w);
 | |
| #if !TRIAL
 | |
| 			string key = GetLicenseKey();
 | |
| 			w.LicenseKey = key;
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         private void GotoPage(object sender, EventArgs e)
 | |
|         {
 | |
|             Wizard w = this.Control as Wizard;
 | |
|             IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
 | |
|             GotoPage(w, cc, ss);
 | |
|         }
 | |
| 
 | |
|         internal static void GotoPage(Wizard w, IComponentChangeService cc, ISelectionService ss)
 | |
|         {
 | |
|             if (w == null)
 | |
|                 return;
 | |
| 
 | |
|             WizardPageOrderDialog d = new WizardPageOrderDialog();
 | |
|             d.SetWizard(w);
 | |
|             d.StartPosition = FormStartPosition.CenterScreen;
 | |
|             if (d.ShowDialog() == DialogResult.OK)
 | |
|             {
 | |
|                 string pageName = d.SelectedPageName;
 | |
|                 
 | |
|                 if (d.OrderChanged)
 | |
|                 {
 | |
|                     if (cc != null)
 | |
|                         cc.OnComponentChanging(w, TypeDescriptor.GetProperties(w)["WizardPages"]);
 | |
| 
 | |
|                     string[] newOrder = d.OrderedPageNames;
 | |
|                     w.WizardPages.IgnoreEvents = true;
 | |
|                     try
 | |
|                     {
 | |
|                         WizardPageCollection col = new WizardPageCollection();
 | |
|                         w.WizardPages.CopyTo(col);
 | |
|                         w.WizardPages.Clear();
 | |
|                         foreach (string pn in newOrder)
 | |
|                             w.WizardPages.Add(col[pn]);
 | |
|                     }
 | |
|                     finally
 | |
|                     {
 | |
|                         w.WizardPages.IgnoreEvents = false;
 | |
|                     }
 | |
| 
 | |
|                     if (cc != null)
 | |
|                         cc.OnComponentChanged(w, TypeDescriptor.GetProperties(w)["WizardPages"], null, null);
 | |
|                 }
 | |
| 
 | |
|                 if (pageName != "")
 | |
|                     w.SelectedPage = w.WizardPages[pageName];
 | |
|                 else if (d.OrderChanged)
 | |
|                     w.SelectedPageIndex = 0;
 | |
| 
 | |
|                 if (ss != null && (pageName!="" || d.OrderChanged))
 | |
|                     ss.SetSelectedComponents(new WizardPage[] { w.SelectedPage }, SelectionTypes.Replace);
 | |
|             }
 | |
|             d.Dispose();
 | |
|         }
 | |
| 
 | |
|         private void CreatePage(object sender, EventArgs e)
 | |
|         {
 | |
|             IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
|             IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
 | |
| 
 | |
|             CreatePage(this.Control as Wizard, true, dh, cc, ss, m_WizardStyle);
 | |
|         }
 | |
| 
 | |
|         private void CreateWelcomePage(object sender, EventArgs e)
 | |
|         {
 | |
|             IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
|             IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
 | |
| 
 | |
|             CreateWelcomePage(this.Control as Wizard, dh, cc, ss, this.WizardStyle);
 | |
|         }
 | |
| 
 | |
|         private void CreateOuterPage(object sender, EventArgs e)
 | |
|         {
 | |
|             IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
|             IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
 | |
| 
 | |
|             CreatePage(this.Control as Wizard, false, dh, cc, ss, m_WizardStyle);
 | |
|         }
 | |
| 
 | |
|         private void DeletePage(object sender, EventArgs e)
 | |
|         {
 | |
|             IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
|             IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             Wizard w = this.Control as Wizard;
 | |
|             if (w == null)
 | |
|                 return;
 | |
|             DeletePage(w.SelectedPage, dh, cc);
 | |
|         }
 | |
| 
 | |
|         internal static void DeletePage(WizardPage page, IDesignerHost dh, IComponentChangeService cc)
 | |
|         {
 | |
|             if (page == null || !(page.Parent is Wizard))
 | |
|                 return;
 | |
| 
 | |
|             Wizard w = page.Parent as Wizard;
 | |
| 
 | |
|             DesignerTransaction dt = dh.CreateTransaction();
 | |
| 
 | |
|             try
 | |
|             {
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanging(w, TypeDescriptor.GetProperties(w)["WizardPages"]);
 | |
| 
 | |
|                 w.WizardPages.Remove(page);
 | |
| 
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanged(w, TypeDescriptor.GetProperties(w)["WizardPages"], null, null);
 | |
| 
 | |
|                 dh.DestroyComponent(page);
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if (!dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void NextPage(object sender, EventArgs e)
 | |
|         {
 | |
|             SelectNextPage(this.Control as Wizard);
 | |
|         }
 | |
| 
 | |
|         private void PreviousPage(object sender, EventArgs e)
 | |
|         {
 | |
|             SelectPreviousPage(this.Control as Wizard);
 | |
|         }
 | |
| 
 | |
|         internal static bool SelectNextPage(Wizard w)
 | |
|         {
 | |
|             if (w == null)
 | |
|                 return false;
 | |
| 
 | |
|             WizardPage page = w.GetNextPage();
 | |
|             if (page != null)
 | |
|             {
 | |
|                 w.SelectedPage = page;
 | |
|                 return true;
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         internal static bool SelectPreviousPage(Wizard w)
 | |
|         {
 | |
|             if (w == null)
 | |
|                 return false;
 | |
| 
 | |
|             WizardPage page = w.GetBackPage();
 | |
|             if (page != null)
 | |
|             {
 | |
|                 w.SelectedPage = page;
 | |
|                 return true;
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         private enum eWizardImages
 | |
|         {
 | |
|             WelcomeDefault,
 | |
|             BackgroundOffice2007
 | |
|         }
 | |
| 
 | |
|         private static Image LoadWizardImage(eWizardImages wizardImage)
 | |
|         {
 | |
|             string wizardImageName = "WizardWelcomeImage.png";
 | |
|             if (wizardImage == eWizardImages.BackgroundOffice2007)
 | |
|                 wizardImageName = "WizardOffice2007Background.png";
 | |
|             try
 | |
|             {
 | |
|                 Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
 | |
|                 string path = "";
 | |
|                 try
 | |
|                 {
 | |
|                     if (key != null)
 | |
|                         key = key.OpenSubKey("Software\\DevComponents\\DotNetBar");
 | |
|                     if (key != null)
 | |
|                         path = key.GetValue("InstallationFolder", "").ToString();
 | |
|                 }
 | |
|                 finally { if (key != null) key.Close(); }
 | |
| 
 | |
|                 if (path != "")
 | |
|                 {
 | |
|                     if (path.Substring(path.Length - 1, 1) != "\\")
 | |
|                         path += "\\";
 | |
| 
 | |
|                     if (System.IO.File.Exists(path + wizardImageName))
 | |
|                         path += wizardImageName;
 | |
|                     else
 | |
|                         path = "";
 | |
|                 }
 | |
| 
 | |
|                 if (path != "")
 | |
|                 {
 | |
|                     return new Bitmap(path);
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|             }
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         internal static void ApplyOffice2007WelcomePageStyle(WizardPage page, IDesignerHost dh, IComponentChangeService cc)
 | |
|         {
 | |
|             DesignerTransaction dt = null;
 | |
|             if (dh != null) dt = dh.CreateTransaction();
 | |
|             
 | |
|             try
 | |
|             {
 | |
|                 if (cc != null) cc.OnComponentChanging(page, null);
 | |
|                 page.BackColor = Color.Transparent;
 | |
|                 page.Style.Reset();
 | |
|                 //page.BackColor = ColorScheme.GetColor(0xBBDBF7);
 | |
|                 //page.CanvasColor = page.BackColor;
 | |
|                 //page.Style.BackColor = Color.Empty;
 | |
|                 //page.Style.BackColor2 = Color.Empty;
 | |
|                 //page.Style.BackColorBlend.Clear();
 | |
|                 //page.Style.BackColorBlend.AddRange(new BackgroundColorBlend[] {
 | |
|                 //new BackgroundColorBlend(ColorScheme.GetColor(0xBBDBF7), 0f),
 | |
|                 //new BackgroundColorBlend(ColorScheme.GetColor(0xBBDBF7), .3f),
 | |
|                 //new BackgroundColorBlend(ColorScheme.GetColor(0xF3F9FE), .9f),
 | |
|                 //new BackgroundColorBlend(ColorScheme.GetColor(0xFEFFFF), 1f)});
 | |
|                 //page.Style.BackColorGradientAngle = 90;
 | |
|                 //page.Style.BackgroundImage = GetWelcomeImage(eWizardImages.BackgroundOffice2007);
 | |
|                 //page.Style.BackgroundImagePosition = eStyleBackgroundImage.TopLeft;
 | |
| 
 | |
|                 if (cc != null) cc.OnComponentChanged(page, null, null, null);
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|                 throw;
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if (dt != null && !dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal static void ApplyOffice2007InnerPageStyle(WizardPage page, IDesignerHost dh, IComponentChangeService cc)
 | |
|         {
 | |
|             if (cc != null) cc.OnComponentChanging(page, null);
 | |
|             
 | |
|             page.BackColor = Color.Transparent;
 | |
|             page.Style.Reset();
 | |
|             
 | |
|             if (cc != null) cc.OnComponentChanged(page, null, null, null);
 | |
|         }
 | |
| 
 | |
|         internal static void ApplyDefaultInnerPageStyle(WizardPage page, IDesignerHost dh, IComponentChangeService cc)
 | |
|         {
 | |
|             if (cc != null) cc.OnComponentChanging(page, null);
 | |
| 
 | |
|             page.BackColor = SystemColors.Control;
 | |
|             if (!page.InteriorPage)
 | |
|             {
 | |
|                 TypeDescriptor.GetProperties(page.Style)["BackColor"].SetValue(page.Style, Color.White);
 | |
|             }
 | |
|             
 | |
|             if (cc != null) cc.OnComponentChanged(page, null, null, null);
 | |
|         }
 | |
| 
 | |
|         internal static void ApplyDefaultWelcomePageStyle(WizardPage page, IDesignerHost dh, IComponentChangeService cc)
 | |
|         {
 | |
|             DesignerTransaction dt = null;
 | |
|             if (dh != null) dt = dh.CreateTransaction();
 | |
|             
 | |
|             try
 | |
|             {
 | |
|                 page.BackColor = Color.White;
 | |
|                 page.Style.BackColorBlend.Clear();
 | |
|                 TypeDescriptor.GetProperties(page)["InteriorPage"].SetValue(page, false);
 | |
|                 TypeDescriptor.GetProperties(page)["BackColor"].SetValue(page, Color.White);
 | |
|                 TypeDescriptor.GetProperties(page)["CanvasColor"].SetValue(page, Color.White);
 | |
|                 TypeDescriptor.GetProperties(page.Style)["BackColor"].SetValue(page.Style, Color.White);
 | |
|                 TypeDescriptor.GetProperties(page.Style)["BackColor2"].SetValue(page.Style, Color.Empty);
 | |
|                 TypeDescriptor.GetProperties(page.Style)["BackgroundImage"].SetValue(page.Style, LoadWizardImage(eWizardImages.WelcomeDefault));
 | |
|                 TypeDescriptor.GetProperties(page.Style)["BackgroundImagePosition"].SetValue(page.Style, eStyleBackgroundImage.TopLeft);
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|                 throw;
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if (dt != null && !dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal static WizardPage CreateWelcomePage(Wizard parent, IDesignerHost dh, IComponentChangeService cc, ISelectionService ss, eWizardStyle style)
 | |
|         {
 | |
|             DesignerTransaction dt = dh.CreateTransaction();
 | |
|             WizardPage page = null;
 | |
|             try
 | |
|             {
 | |
|                 page = dh.CreateComponent(typeof(WizardPage)) as WizardPage;
 | |
| 
 | |
|                 if(style == eWizardStyle.Default)
 | |
|                     ApplyDefaultWelcomePageStyle(page, null, null);
 | |
|                 else
 | |
|                     ApplyOffice2007WelcomePageStyle(page, null, null);
 | |
|                 //TypeDescriptor.GetProperties(page)["InteriorPage"].SetValue(page, false);
 | |
|                 //TypeDescriptor.GetProperties(page)["BackColor"].SetValue(page, Color.White);
 | |
|                 //TypeDescriptor.GetProperties(page)["CanvasColor"].SetValue(page, Color.White);
 | |
|                 //TypeDescriptor.GetProperties(page.Style)["BackColor"].SetValue(page.Style, Color.White);
 | |
|                 //TypeDescriptor.GetProperties(page.Style)["BackgroundImage"].SetValue(page.Style, GetWelcomeImage(false));
 | |
|                 //TypeDescriptor.GetProperties(page.Style)["BackgroundImagePosition"].SetValue(page.Style, eStyleBackgroundImage.TopLeft);
 | |
|                 page.Size = new Size(534, 289);
 | |
| 
 | |
|                 // Load labels onto the page, first Welcome to the Wizard...
 | |
|                 System.Windows.Forms.Label label = dh.CreateComponent(typeof(System.Windows.Forms.Label)) as System.Windows.Forms.Label;
 | |
|                 page.Controls.Add(label);
 | |
|                 label.Location = new Point(210, 18);
 | |
|                 label.Text = "Welcome to the <Wizard Name> Wizard";
 | |
|                 label.BackColor = Color.Transparent;
 | |
|                 try
 | |
|                 {
 | |
|                     label.Font = new Font("Tahoma", 16);
 | |
|                     TypeDescriptor.GetProperties(label)["AutoSize"].SetValue(label, false);
 | |
|                 }
 | |
|                 catch { }
 | |
|                 label.Size = new Size(310, 66);
 | |
|                 label.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
 | |
| 
 | |
|                 // Wizard description label...
 | |
|                 label = dh.CreateComponent(typeof(System.Windows.Forms.Label)) as System.Windows.Forms.Label;
 | |
|                 page.Controls.Add(label);
 | |
|                 label.Location = new Point(210, 100);
 | |
|                 label.Text = "This wizard will guide you through the <Enter Process Name>.\r\n\r\n<Enter brief description of the process wizard is covering.>";
 | |
|                 label.BackColor = Color.Transparent;
 | |
|                 try
 | |
|                 {
 | |
|                     TypeDescriptor.GetProperties(label)["AutoSize"].SetValue(label, false);
 | |
|                 }
 | |
|                 catch { }
 | |
|                 label.Size = new Size(309, 157);
 | |
|                 label.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
 | |
| 
 | |
|                 // Click Next to Continue label...
 | |
|                 label = dh.CreateComponent(typeof(System.Windows.Forms.Label)) as System.Windows.Forms.Label;
 | |
|                 page.Controls.Add(label);
 | |
|                 label.Location = new Point(210, 266);
 | |
|                 label.Text = "To continue, click Next.";
 | |
|                 label.Size = new Size(120, 13);
 | |
|                 label.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
 | |
|                 label.BackColor = Color.Transparent;
 | |
|                 
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["WizardPages"]);
 | |
|                 parent.WizardPages.Add(page);
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["WizardPages"], null, null);
 | |
| 
 | |
| 
 | |
|                 if (ss != null)
 | |
|                     ss.SetSelectedComponents(new WizardPage[] { page }, SelectionTypes.Replace);
 | |
| 
 | |
|                 TypeDescriptor.GetProperties(parent)["SelectedPageIndex"].SetValue(parent, parent.WizardPages.IndexOf(page));
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if (!dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
| 
 | |
|             return page;
 | |
|         }
 | |
| 
 | |
|         internal static WizardPage CreatePage(Wizard parent, bool innerPage, IDesignerHost dh, IComponentChangeService cc, ISelectionService ss, eWizardStyle wizardStyle)
 | |
|         {
 | |
|             DesignerTransaction dt = dh.CreateTransaction();
 | |
|             WizardPage page=null;
 | |
|             try
 | |
|             {
 | |
|                 page = dh.CreateComponent(typeof(WizardPage)) as WizardPage;
 | |
| 				
 | |
| 				page.AntiAlias=false;
 | |
|                 page.InteriorPage = innerPage;
 | |
|                 if (innerPage)
 | |
|                 {
 | |
|                     page.PageTitle = "< Wizard step title >";
 | |
|                     page.PageDescription = "< Wizard step description >";
 | |
|                 }
 | |
|                 if (wizardStyle == eWizardStyle.Default)
 | |
|                     ApplyDefaultInnerPageStyle(page, dh, cc);
 | |
|                 else if (wizardStyle == eWizardStyle.Office2007)
 | |
|                     ApplyOffice2007InnerPageStyle(page, dh, cc);
 | |
|                 //else
 | |
|                 //{
 | |
|                 //    TypeDescriptor.GetProperties(page.Style)["BackColor"].SetValue(page.Style, Color.White);
 | |
|                 //}
 | |
| 
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["WizardPages"]);
 | |
|                 parent.WizardPages.Add(page);
 | |
|                 if (cc != null)
 | |
|                     cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["WizardPages"], null, null);
 | |
| 
 | |
|                 if (ss != null)
 | |
|                     ss.SetSelectedComponents(new WizardPage[] { page }, SelectionTypes.Replace);
 | |
| 
 | |
|                 TypeDescriptor.GetProperties(parent)["SelectedPageIndex"].SetValue(parent, parent.WizardPages.IndexOf(page));
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if (!dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
| 
 | |
|             return page;
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseDragBegin(int x, int y)
 | |
|         {
 | |
|             Wizard w = this.Control as Wizard;
 | |
| 
 | |
|             if (w != null)
 | |
|             {
 | |
|                 Point p = w.NextButtonControl.Parent.PointToClient(new Point(x, y));
 | |
|                 if (w.NextButtonControl.Enabled && w.NextButtonControl.Visible && w.NextButtonControl.Bounds.Contains(p))
 | |
|                 {
 | |
|                     SelectNextPage(w);
 | |
|                     return;
 | |
|                 }
 | |
|                 else if (w.BackButtonControl.Enabled && w.BackButtonControl.Visible && w.BackButtonControl.Bounds.Contains(p))
 | |
|                 {
 | |
|                     SelectPreviousPage(w);
 | |
|                     return;
 | |
|                 }
 | |
| 				if(m_NavigationControl!=null)
 | |
| 				{
 | |
| 					p = m_NavigationControl.PointToClient(new Point(x, y));
 | |
| 					if(m_NavigationControl.LinkNext.Bounds.Contains(p))
 | |
| 					{
 | |
| 						SelectNextPage(w);
 | |
| 						return;
 | |
| 					}
 | |
| 					else if(m_NavigationControl.LinkBack.Bounds.Contains(p))
 | |
| 					{
 | |
| 						SelectPreviousPage(w);
 | |
| 						return;
 | |
| 					}
 | |
| 				}
 | |
|             }
 | |
| 
 | |
|             base.OnMouseDragBegin(x, y);
 | |
|         }
 | |
| 
 | |
|         protected override void PreFilterProperties(System.Collections.IDictionary properties)
 | |
|         {
 | |
|             base.PreFilterProperties(properties);
 | |
| 
 | |
|             properties["WizardStyle"] = TypeDescriptor.CreateProperty(
 | |
|                 this.GetType(),
 | |
|                 "WizardStyle",
 | |
|                 typeof(eWizardStyle),
 | |
|                 new Attribute[] { 
 | |
|                     new BrowsableAttribute(true), 
 | |
|                     new DesignOnlyAttribute(true),
 | |
|                     new DefaultValueAttribute(eWizardStyle.Default), 
 | |
|                     new DescriptionAttribute("Indicates the visual appearance style of the Wizard")});
 | |
|         }
 | |
| 
 | |
|         private eWizardStyle m_WizardStyle = eWizardStyle.Default;
 | |
|         public eWizardStyle WizardStyle
 | |
|         {
 | |
|             get { return m_WizardStyle; }
 | |
|             set
 | |
|             {
 | |
|                 if(m_WizardStyle!=value)
 | |
|                 {
 | |
|                     m_WizardStyle = value;
 | |
|                     ((Wizard)this.Control).ButtonStyle = m_WizardStyle;
 | |
| 
 | |
|                     IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
|                     if(dh!=null && !dh.Loading)
 | |
|                         ChangeWizardStyle(m_WizardStyle);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void SetDefaultFooterStyle(Wizard w)
 | |
|         {
 | |
|             w.FooterStyle.BackColor = System.Drawing.SystemColors.Control;
 | |
|             w.FooterStyle.BackColorGradientAngle = 90;
 | |
|             w.FooterStyle.BorderBottomWidth = 1;
 | |
|             w.FooterStyle.BorderColor = System.Drawing.SystemColors.Control;
 | |
|             w.FooterStyle.BorderLeftWidth = 1;
 | |
|             w.FooterStyle.BorderRightWidth = 1;
 | |
|             w.FooterStyle.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Etched;
 | |
|             w.FooterStyle.BorderTopColor = System.Drawing.SystemColors.Control;
 | |
|             w.FooterStyle.BorderTopWidth = 1;
 | |
|             w.FooterStyle.TextAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Center;
 | |
|             w.FooterStyle.TextColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
 | |
|         }
 | |
| 
 | |
|         private void ChangeWizardStyle(eWizardStyle style)
 | |
|         {
 | |
|             IComponentChangeService cc = GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | |
|             IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
| 
 | |
|             DesignerTransaction dt = dh.CreateTransaction();
 | |
|             try
 | |
|             {
 | |
|                 Wizard w = this.Control as Wizard;
 | |
| 
 | |
|                 w.FooterStyle.Reset();
 | |
|                 if (style == eWizardStyle.Office2007)
 | |
|                 {
 | |
|                     w.FooterStyle.BackColor = Color.Transparent;
 | |
|                     w.BackColor = Color.FromArgb(205, 229, 253);
 | |
|                     w.ForeColor = ColorScheme.GetColor(0x0F3981);
 | |
|                     w.BackgroundImage = LoadWizardImage(eWizardImages.BackgroundOffice2007);
 | |
|                     w.HeaderStyle.Reset();
 | |
|                     w.HeaderStyle.BackColor = Color.Transparent;// ColorScheme.GetColor(0xBFD7F3);
 | |
|                     w.HeaderStyle.BackColor2 = Color.Empty; // ColorScheme.GetColor(0xDBF1FE);
 | |
|                     w.HeaderStyle.BackColorGradientAngle = 90;
 | |
|                     w.HeaderStyle.BorderBottomColor = ColorScheme.GetColor(0x799DB6);
 | |
|                     w.HeaderStyle.BorderBottomWidth = 1;
 | |
|                     w.HeaderStyle.BorderBottom = eStyleBorderType.Solid;
 | |
|                     w.HeaderHeight = 90;
 | |
|                     w.HeaderDescriptionVisible = false;
 | |
|                     w.HeaderImageAlignment = eWizardTitleImageAlignment.Left;
 | |
|                     w.HeaderCaptionFont = new Font(w.Font.FontFamily, 12, FontStyle.Bold);
 | |
|                 }
 | |
|                 else if (style == eWizardStyle.Default)
 | |
|                 {
 | |
|                     SetDefaultFooterStyle(w);
 | |
|                     w.BackgroundImage = null;
 | |
|                     w.BackColor = SystemColors.Control;
 | |
|                     w.ForeColor = SystemColors.ControlText;
 | |
|                     w.HeaderStyle.Reset();
 | |
|                     w.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
 | |
|                     w.HeaderStyle.BackColorGradientAngle = 90;
 | |
|                     w.HeaderStyle.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Etched;
 | |
|                     w.HeaderStyle.BorderBottomWidth = 1;
 | |
|                     w.HeaderStyle.BorderColor = System.Drawing.SystemColors.Control;
 | |
|                     w.HeaderStyle.BorderLeftWidth = 1;
 | |
|                     w.HeaderStyle.BorderRightWidth = 1;
 | |
|                     w.HeaderStyle.BorderTopWidth = 1;
 | |
|                     w.HeaderStyle.TextAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Center;
 | |
|                     w.HeaderStyle.TextColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
 | |
|                     w.HeaderHeight = 60;
 | |
|                     w.HeaderDescriptionVisible = true;
 | |
|                     w.HeaderCaptionFont = new Font(w.Font, FontStyle.Bold);
 | |
|                     w.HeaderImageAlignment = eWizardTitleImageAlignment.Right;
 | |
|                 }
 | |
| 
 | |
|                 for (int i = 0; i < w.WizardPages.Count; i++)
 | |
|                 {
 | |
|                     WizardPage p = w.WizardPages[i];
 | |
|                     if (!p.InteriorPage && i==0)
 | |
|                     {
 | |
|                         if (style == eWizardStyle.Default)
 | |
|                             ApplyDefaultWelcomePageStyle(p, null, cc);
 | |
|                         else if (style == eWizardStyle.Office2007)
 | |
|                             ApplyOffice2007WelcomePageStyle(p, null, cc);
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         if (style == eWizardStyle.Default)
 | |
|                             ApplyDefaultInnerPageStyle(p, null, cc);
 | |
|                         else if (style == eWizardStyle.Office2007)
 | |
|                             ApplyOffice2007InnerPageStyle(p, null, cc);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             catch
 | |
|             {
 | |
|                 dt.Cancel();
 | |
|             }
 | |
|             finally
 | |
|             {
 | |
|                 if(!dt.Canceled)
 | |
|                     dt.Commit();
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Licensing Stuff
 | |
| #if !TRIAL
 | |
|         private string GetLicenseKey()
 | |
| 		{
 | |
| 			string key = "";
 | |
| 			Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.LocalMachine;
 | |
| 			regkey = regkey.OpenSubKey("Software\\DevComponents\\Licenses", false);
 | |
| 			if (regkey != null)
 | |
| 			{
 | |
| 				object keyValue = regkey.GetValue("DevComponents.DotNetBar.DotNetBarManager2");
 | |
| 				if (keyValue != null)
 | |
| 					key = keyValue.ToString();
 | |
| 			}
 | |
| 			return key;
 | |
| 		}
 | |
| 		private void dh_LoadComplete(object sender, EventArgs e)
 | |
| 		{
 | |
| 			IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | |
| 			if (dh != null)
 | |
| 				dh.LoadComplete -= new EventHandler(dh_LoadComplete);
 | |
| 
 | |
| 			string key = GetLicenseKey();
 | |
| 			Wizard w = this.Control as Wizard;
 | |
| 			if (key != "" && w != null && w.LicenseKey == "" && w.LicenseKey != key)
 | |
| 				TypeDescriptor.GetProperties(w)["LicenseKey"].SetValue(w, key);
 | |
| 		}
 | |
| #endif
 | |
|         #endregion
 | |
|     }
 | |
| }
 |