using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.ComponentModel.Design; using System.ComponentModel; using System.Drawing; namespace DevComponents.DotNetBar.Layout.Design { public class LayoutGroupDesigner : LayoutItemBaseDesigner { #region Constructor #endregion #region Implementation public override System.Collections.ICollection AssociatedComponents { get { LayoutGroup group = (LayoutGroup)this.Component; if (group.Items.Count>0) { ArrayList list = new ArrayList(); foreach (LayoutItemBase child in group.Items) { if (child.Site != null) list.Add(child); } return list; } return base.AssociatedComponents; } } public override DesignerVerbCollection Verbs { get { DesignerVerb[] verbs; verbs = new DesignerVerb[] { new DesignerVerb("Add Spacer", new EventHandler(AddSpacerItem)), new DesignerVerb("Add Group", new EventHandler(AddGroupItem)), new DesignerVerb("Apply Panel Style", new EventHandler(PanelStyle)), new DesignerVerb("Apply Group Panel Style", new EventHandler(GroupPanelStyle)), new DesignerVerb("Remove Panel Style", new EventHandler(RemovePanelStyle)) }; return new DesignerVerbCollection(verbs); } } private void AddSpacerItem(object sender, EventArgs e) { AddSpacerItem(); } private void AddSpacerItem() { IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost)); LayoutGroup lc = this.Component as LayoutGroup; if (lc == null || dh == null) return; DesignerTransaction dt = dh.CreateTransaction("Creating Spacer Item"); try { IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService; if (cc != null) { cc.OnComponentChanging(this.Component, null); cc.OnComponentChanging(lc, TypeDescriptor.GetProperties(lc)["Items"]); } LayoutSpacerItem item = null; item = dh.CreateComponent(typeof(LayoutSpacerItem)) as LayoutSpacerItem; item.Width = 32; item.Height = 32; lc.Items.Add(item); lc.InvalidateLayout(); if (cc != null) { cc.OnComponentChanged(lc, TypeDescriptor.GetProperties(lc)["Items"], null, null); cc.OnComponentChanged(this.Component, null, null, null); } SelectComponent(item, SelectionTypes.Replace); } catch { dt.Cancel(); } finally { if (!dt.Canceled) dt.Commit(); } } private void AddGroupItem(object sender, EventArgs e) { AddGroupItem(); } private void AddGroupItem() { IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost)); LayoutGroup lc = this.Component as LayoutGroup; if (lc == null || dh == null) return; DesignerTransaction dt = dh.CreateTransaction("Creating Group Item"); try { IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService; if (cc != null) { cc.OnComponentChanging(this.Component, null); cc.OnComponentChanging(lc, TypeDescriptor.GetProperties(lc)["Items"]); } LayoutGroup item = null; item = dh.CreateComponent(typeof(LayoutGroup)) as LayoutGroup; item.Width = 200; item.Height = 100; item.TextPosition = eLayoutPosition.Top; item.MinSize = new Size(120, 32); lc.Items.Add(item); lc.InvalidateLayout(); if (cc != null) { cc.OnComponentChanged(lc, TypeDescriptor.GetProperties(lc)["Items"], null, null); cc.OnComponentChanged(this.Component, null, null, null); } SelectComponent(item, SelectionTypes.Replace); } catch { dt.Cancel(); } finally { if (!dt.Canceled) dt.Commit(); } } private void PanelStyle(object sender, EventArgs e) { LayoutGroup group = (LayoutGroup)this.Component; IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost)); if (group == null || dh == null) return; DesignerTransaction dt = dh.CreateTransaction("Apply Panel Style"); TypeDescriptor.GetProperties(group)["Appearance"].SetValue(group, eGroupAppearance.Panel); // group.Appearance = eGroupAppearance.Panel; TypeDescriptor.GetProperties(group)["CaptionHeight"].SetValue(group, 22); // group.CaptionHeight = 22; TypeDescriptor.GetProperties(group)["TextLineAlignment"].SetValue(group, DevComponents.DotNetBar.Layout.eTextLineAlignment.Middle); // group.TextLineAlignment = DevComponents.DotNetBar.Layout.eTextLineAlignment.Middle; TypeDescriptor.GetProperties(group)["TextPosition"].SetValue(group, DevComponents.DotNetBar.Layout.eLayoutPosition.Top); // group.TextPosition = DevComponents.DotNetBar.Layout.eLayoutPosition.Top; TypeDescriptor.GetProperties(group)["TextAlignment"].SetValue(group, eTextAlignment.Default); // group.TextAlignment = eTextAlignment.Default; if (string.IsNullOrEmpty(group.Text)) TypeDescriptor.GetProperties(group)["Text"].SetValue(group, "Caption"); // group.Text = "Caption"; dt.Commit(); } private void GroupPanelStyle(object sender, EventArgs e) { LayoutGroup group = (LayoutGroup)this.Component; IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost)); if (group == null || dh == null) return; DesignerTransaction dt = dh.CreateTransaction("Apply Group Panel Style"); TypeDescriptor.GetProperties(group)["Appearance"].SetValue(group, eGroupAppearance.GroupPanel); // group.Appearance = eGroupAppearance.GroupPanel; TypeDescriptor.GetProperties(group)["CaptionHeight"].SetValue(group, 18); // group.CaptionHeight = 18; TypeDescriptor.GetProperties(group)["TextLineAlignment"].SetValue(group, DevComponents.DotNetBar.Layout.eTextLineAlignment.Middle); // group.TextLineAlignment = DevComponents.DotNetBar.Layout.eTextLineAlignment.Middle; TypeDescriptor.GetProperties(group)["TextPosition"].SetValue(group, DevComponents.DotNetBar.Layout.eLayoutPosition.Top); // group.TextPosition = DevComponents.DotNetBar.Layout.eLayoutPosition.Top; TypeDescriptor.GetProperties(group)["TextAlignment"].SetValue(group, eTextAlignment.Center); // group.TextAlignment = eTextAlignment.Center; if (string.IsNullOrEmpty(group.Text)) TypeDescriptor.GetProperties(group)["Text"].SetValue(group, "Caption"); // group.Text = "Caption"; dt.Commit(); } private void RemovePanelStyle(object sender, EventArgs e) { LayoutGroup group = (LayoutGroup)this.Component; IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost)); if (group == null || dh == null) return; DesignerTransaction dt = dh.CreateTransaction("Remove Panel Style"); TypeDescriptor.GetProperties(group)["Appearance"].SetValue(group, eGroupAppearance.None); // group.Appearance = eGroupAppearance.None; TypeDescriptor.GetProperties(group)["TextLineAlignment"].SetValue(group, DevComponents.DotNetBar.Layout.eTextLineAlignment.Default); // group.TextLineAlignment = DevComponents.DotNetBar.Layout.eTextLineAlignment.Default; TypeDescriptor.GetProperties(group)["CaptionHeight"].SetValue(group, 0); // group.CaptionHeight = 0; TypeDescriptor.GetProperties(group)["TextPosition"].SetValue(group, DevComponents.DotNetBar.Layout.eLayoutPosition.Default); // group.TextPosition = DevComponents.DotNetBar.Layout.eLayoutPosition.Default; TypeDescriptor.GetProperties(group)["TextAlignment"].SetValue(group, eTextAlignment.Default); // group.TextAlignment = eTextAlignment.Default; TypeDescriptor.GetProperties(group)["Text"].SetValue(group, ""); // group.Text = "Caption"; dt.Commit(); } protected virtual void SelectComponent(IComponent comp, SelectionTypes selectionType) { ISelectionService selection = (ISelectionService)this.GetService(typeof(ISelectionService)); if (selection != null && comp != null) { ArrayList arr = new ArrayList(1); arr.Add(comp); selection.SetSelectedComponents(arr, selectionType); } } #endregion } }