253 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Drawing;
 | 
						|
using System.Windows.Forms;
 | 
						|
using DevComponents.DotNetBar.SuperGrid;
 | 
						|
 | 
						|
namespace DevComponents.SuperGrid.Design
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// GridColumnCollectionEditor
 | 
						|
    /// </summary>
 | 
						|
    public class GridColumnCollectionEditor : CollectionEditor
 | 
						|
    {
 | 
						|
        #region Static variables
 | 
						|
 | 
						|
        static Size _lastSize = Size.Empty;
 | 
						|
        static Point _lastLoc = Point.Empty;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        public GridColumnCollectionEditor(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(GridColumn);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CreateNewItemTypes
 | 
						|
 | 
						|
        protected override Type[] CreateNewItemTypes()
 | 
						|
        {
 | 
						|
            return new Type[]
 | 
						|
            {
 | 
						|
                typeof(GridTextBoxXEditControl),
 | 
						|
                typeof(GridButtonXEditControl),
 | 
						|
                typeof(GridCheckBoxXEditControl),
 | 
						|
                typeof(GridColorPickerEditControl),
 | 
						|
                typeof(GridComboBoxExEditControl),
 | 
						|
                typeof(GridComboTreeEditControl),
 | 
						|
                typeof(GridDateTimeInputEditControl),
 | 
						|
                typeof(GridDateTimePickerEditControl),
 | 
						|
                typeof(GridDoubleInputEditControl),
 | 
						|
                typeof(GridImageEditControl),
 | 
						|
                typeof(GridIntegerInputEditControl),
 | 
						|
                typeof(GridIpAddressInputEditControl),
 | 
						|
                typeof(GridLabelXEditControl),
 | 
						|
                typeof(GridMaskedTextBoxEditControl),
 | 
						|
                typeof(GridMicroChartEditControl),
 | 
						|
                typeof(GridNumericUpDownEditControl),
 | 
						|
                typeof(GridImageEditControl),
 | 
						|
                typeof(GridProgressBarXEditControl),
 | 
						|
                typeof(GridRadialMenuEditControl),
 | 
						|
                typeof(GridRatingStarEditControl),
 | 
						|
                typeof(GridSliderEditControl),
 | 
						|
                typeof(GridSwitchButtonEditControl),
 | 
						|
                typeof(GridTextBoxDropDownEditControl),
 | 
						|
            };
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region EditValue
 | 
						|
 | 
						|
        public override object EditValue(
 | 
						|
            ITypeDescriptorContext context, IServiceProvider provider, object value)
 | 
						|
        {
 | 
						|
            object o = base.EditValue(context, provider, value);
 | 
						|
 | 
						|
            if (Context != null)
 | 
						|
            {
 | 
						|
                GridPanel panel = Context.Instance as GridPanel;
 | 
						|
 | 
						|
                if (panel != null)
 | 
						|
                {
 | 
						|
                    if (panel.SuperGrid.DesignerElement is GridColumn)
 | 
						|
                        panel.SuperGrid.DesignerElement = null;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return (o);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CreateInstance
 | 
						|
 | 
						|
        protected override object CreateInstance(Type itemType)
 | 
						|
        {
 | 
						|
            GridColumn item = (GridColumn)base.CreateInstance(typeof(GridColumn));
 | 
						|
 | 
						|
            if (item != null)
 | 
						|
            {
 | 
						|
                item.EditorType = itemType;
 | 
						|
 | 
						|
                item.Name = GetColumnName(item);
 | 
						|
            }
 | 
						|
 | 
						|
            return (item);
 | 
						|
        }
 | 
						|
 | 
						|
        #region GetColumnName
 | 
						|
 | 
						|
        private string GetColumnName(GridColumn item)
 | 
						|
        {
 | 
						|
            GridPanel panel = Context.Instance as GridPanel;
 | 
						|
 | 
						|
            if (panel != null)
 | 
						|
            {
 | 
						|
                for (int i = 1; i < 200; i++)
 | 
						|
                {
 | 
						|
                    string s = "Column" + i;
 | 
						|
 | 
						|
                    if (panel.Columns[s] == null)
 | 
						|
                        return (s);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return (this.GetDisplayText(item));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
    }
 | 
						|
}
 |