using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar.SuperGrid; namespace DevComponents.SuperGrid.Design { /// /// ColumnGroupHeaderCollectionEditor /// public class ColumnGroupHeaderCollectionEditor : CollectionEditor { #region Static variables static Size _lastSize = Size.Empty; static Point _lastLoc = Point.Empty; #endregion public ColumnGroupHeaderCollectionEditor(Type type) : base(type) { } #region CreateCollectionForm protected override CollectionForm CreateCollectionForm() { CollectionForm collectionForm = base.CreateCollectionForm(); if (collectionForm.Controls[0] is TableLayoutPanel) { TableLayoutPanel tlpf = collectionForm.Controls["overArchingTableLayoutPanel"] as TableLayoutPanel; if (tlpf != null) { PropertyGrid propertyGrid = tlpf.Controls["propertyBrowser"] as PropertyGrid; if (propertyGrid != null) { propertyGrid.HelpVisible = true; propertyGrid.GotFocus += PropertyGridGotFocus; propertyGrid.SelectedObjectsChanged += PropertyGridSelectedObjectsChanged; } } } collectionForm.Load += CollectionFormLoad; collectionForm.Resize += CollectionFormResize; collectionForm.LocationChanged += CollectionFormLocationChanged; return (collectionForm); } #region CollectionFormLoad void CollectionFormLoad(object sender, EventArgs e) { CollectionForm form = sender as CollectionForm; if (form != null) { if (_lastSize != Size.Empty) form.Size = _lastSize; if (_lastLoc != Point.Empty) form.Location = _lastLoc; } } #endregion #region CollectionFormResize void CollectionFormResize(object sender, EventArgs e) { CollectionForm form = sender as CollectionForm; if (form != null && form.Visible == true) _lastSize = form.Size; } #endregion #region CollectionFormLocationChanged void CollectionFormLocationChanged(object sender, EventArgs e) { CollectionForm form = sender as CollectionForm; if (form != null && form.Visible == true) _lastLoc = form.Location; } #endregion #region PropertyGridGotFocus void PropertyGridGotFocus(object sender, EventArgs e) { PropertyGrid propertyGrid = sender as PropertyGrid; if (propertyGrid != null) UpdateDesignerFocus(propertyGrid); } #endregion #region PropertyGridSelectedObjectsChanged void PropertyGridSelectedObjectsChanged(object sender, EventArgs e) { PropertyGrid propertyGrid = sender as PropertyGrid; if (propertyGrid != null) UpdateDesignerFocus(propertyGrid); } #endregion #region UpdateDesignerFocus private void UpdateDesignerFocus(PropertyGrid propertyGrid) { GridContainer row = Context.Instance as GridContainer; if (row != null) { GridElement item = propertyGrid.SelectedObject as GridElement; if (item != null) row.SuperGrid.DesignerElement = item; } } #endregion #endregion #region CreateCollectionItemType protected override Type CreateCollectionItemType() { return typeof(ColumnGroupHeader); } #endregion #region CreateNewItemTypes protected override Type[] CreateNewItemTypes() { return new Type[] { typeof(ColumnGroupHeader), }; } #endregion #region EditValue public override object EditValue( ITypeDescriptorContext context, IServiceProvider provider, object value) { object o = base.EditValue(context, provider, value); return (o); } #endregion #region CreateInstance protected override object CreateInstance(Type itemType) { ColumnGroupHeader item = (ColumnGroupHeader) base.CreateInstance(typeof (ColumnGroupHeader)); if (item != null) { GridColumnHeader gch = Context.Instance as GridColumnHeader; if (gch != null) { item.Name = GetGroupHeaderName(gch.GroupHeaders); } else { ColumnGroupHeader csh = Context.Instance as ColumnGroupHeader; if (csh != null) { item.Name = GetGroupHeaderName(csh.GroupHeaders); item.StartDisplayIndex = csh.StartDisplayIndex; item.EndDisplayIndex = csh.EndDisplayIndex; item.ShowColumnHeaders = csh.ShowColumnHeaders; } } } return (item); } #region GetGroupHeaderName private string GetGroupHeaderName(ColumnGroupHeaderCollection csc) { for (int i = 1; i < 200; i++) { string s = "GroupHeader" + i; if (csc[s] == null) return (s); } return (""); } #endregion #endregion } }