452 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			452 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.ComponentModel;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.SuperGrid.Style
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Represents the base visual style.
 | |
|     /// </summary>
 | |
|     [ToolboxItem(false), DesignTimeVisible(false)]
 | |
|     public class BaseVisualStyle : INotifyPropertyChanged, IDisposable
 | |
|     {
 | |
|         #region Private variables
 | |
| 
 | |
|         private string _Class = "";
 | |
|         private object _Tag;
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Public properties
 | |
| 
 | |
|         #region Class
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the class style belongs to. 
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | |
|         public string Class
 | |
|         {
 | |
|             get { return (_Class); }
 | |
| 
 | |
|             set
 | |
|             {
 | |
|                 if (_Class != value)
 | |
|                 {
 | |
|                     _Class = value;
 | |
| 
 | |
|                     OnPropertyChangedEx("Class", VisualChangeType.Layout);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region IsEmpty
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets whether the style is logically Empty.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | |
|         [Description("Gets whether the style is logically Empty.")]
 | |
|         public virtual bool IsEmpty
 | |
|         {
 | |
|             get { return (_Tag == null); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Tag
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the user defined reference Tag.
 | |
|         /// </summary>
 | |
|         [Browsable(false)]
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | |
|         [Description("User defined reference Tag.")]
 | |
|         public object Tag
 | |
|         {
 | |
|             get { return (_Tag); }
 | |
|             set { _Tag = value; }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region ApplyStyle
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Applies the style to instance of this style.
 | |
|         /// </summary>
 | |
|         /// <param name="style">Style to apply.</param>
 | |
|         public void ApplyStyle(BaseVisualStyle style)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region GetApplyStyleTypes
 | |
| 
 | |
|         internal StyleType[] GetApplyStyleTypes(StyleType e)
 | |
|         {
 | |
|             StyleType[] css = null;
 | |
| 
 | |
|             switch (e)
 | |
|             {
 | |
|                 case StyleType.Default:
 | |
|                     css = new StyleType[] { StyleType.Default};
 | |
|                     break;
 | |
| 
 | |
|                 case StyleType.Empty:
 | |
|                 case StyleType.MouseOver:
 | |
|                 case StyleType.ReadOnly:
 | |
|                 case StyleType.Selected:
 | |
|                 case StyleType.NotSelectable:
 | |
|                     css = new StyleType[] { StyleType.Default, e };
 | |
|                     break;
 | |
| 
 | |
|                 case StyleType.SelectedMouseOver:
 | |
|                     css = new StyleType[] { StyleType.Default, StyleType.Selected, e };
 | |
|                     break;
 | |
| 
 | |
|                 case StyleType.ReadOnlyMouseOver:
 | |
|                     css = new StyleType[] { StyleType.Default, StyleType.ReadOnly, e };
 | |
|                     break;
 | |
| 
 | |
|                 case StyleType.ReadOnlySelected:
 | |
|                     css = new StyleType[] { StyleType.Default, StyleType.Selected, StyleType.ReadOnly, e };
 | |
|                     break;
 | |
| 
 | |
|                 case StyleType.ReadOnlySelectedMouseOver:
 | |
|                     css = new StyleType[] { StyleType.Default, StyleType.Selected, StyleType.ReadOnly, StyleType.ReadOnlySelected, e };
 | |
|                     break;
 | |
|             }
 | |
| 
 | |
|             return (css);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Copy
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns the copy of the style.
 | |
|         /// </summary>
 | |
|         /// <returns>Copy of the style.</returns>
 | |
|         public BaseVisualStyle Copy()
 | |
|         {
 | |
|             BaseVisualStyle style = new BaseVisualStyle();
 | |
| 
 | |
|             CopyTo(style);
 | |
| 
 | |
|             return (style);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region CopyTo
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns the copy of the style.
 | |
|         /// </summary>
 | |
|         /// <returns>Copy of the style.</returns>
 | |
|         public void CopyTo(BaseVisualStyle copy)
 | |
|         {
 | |
|             copy.Class = _Class;
 | |
|             copy.Tag = _Tag;
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region INotifyPropertyChanged Members
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Occurs when property value has changed.
 | |
|         /// </summary>
 | |
|         public event PropertyChangedEventHandler PropertyChanged;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Raises the PropertyChanged event.
 | |
|         /// </summary>
 | |
|         /// <param name="e">Event arguments</param>
 | |
|         protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
 | |
|         {
 | |
|             PropertyChangedEventHandler eh = PropertyChanged;
 | |
| 
 | |
|             if (eh != null)
 | |
|                 eh(this, e);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Default PropertyChanged processing
 | |
|         /// </summary>
 | |
|         /// <param name="s"></param>
 | |
|         protected void OnPropertyChanged(string s)
 | |
|         {
 | |
|             if (PropertyChanged != null)
 | |
|                 OnPropertyChanged(new VisualPropertyChangedEventArgs(s));
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Default PropertyChanged processing
 | |
|         /// </summary>
 | |
|         /// <param name="s"></param>
 | |
|         /// <param name="changeType">invalidate</param>
 | |
|         protected void OnPropertyChangedEx(string s, VisualChangeType changeType)
 | |
|         {
 | |
|             if (PropertyChanged != null)
 | |
|                 OnPropertyChanged(new VisualPropertyChangedEventArgs(s, changeType));
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region UpdateChangeHandler
 | |
| 
 | |
|         /// <summary>
 | |
|         /// UpdateChangeHandler
 | |
|         /// </summary>
 | |
|         /// <param name="oldValue"></param>
 | |
|         /// <param name="newValue"></param>
 | |
|         protected void UpdateChangeHandler(
 | |
|             INotifyPropertyChanged oldValue, INotifyPropertyChanged newValue)
 | |
|         {
 | |
|             if (oldValue != null)
 | |
|                 oldValue.PropertyChanged -= ValuePropertyChanged;
 | |
| 
 | |
|             if (newValue != null)
 | |
|                 newValue.PropertyChanged += ValuePropertyChanged;
 | |
|         }
 | |
| 
 | |
|         void ValuePropertyChanged(object sender, PropertyChangedEventArgs e)
 | |
|         {
 | |
|             OnPropertyChanged(e);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region IDisposable
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Dispose
 | |
|         /// </summary>
 | |
|         public virtual void Dispose()
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
|     }
 | |
| 
 | |
|     #region enums
 | |
| 
 | |
|     #region Alignment
 | |
| 
 | |
|     ///<summary>
 | |
|     /// Alignment of the content
 | |
|     ///</summary>
 | |
|     public enum Alignment
 | |
|     {
 | |
|         ///<summary>
 | |
|         ///</summary>
 | |
|         NotSet = -1,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// TopLeft
 | |
|         ///</summary>
 | |
|         TopLeft,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// TopCenter
 | |
|         ///</summary>
 | |
|         TopCenter,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// TopRight
 | |
|         ///</summary>
 | |
|         TopRight,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// MiddleLeft
 | |
|         ///</summary>
 | |
|         MiddleLeft,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// MiddleCenter
 | |
|         ///</summary>
 | |
|         MiddleCenter,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// MiddleRight
 | |
|         /// </summary>
 | |
|         MiddleRight,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// BottomLeft
 | |
|         /// </summary>
 | |
|         BottomLeft,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// BottomCenter
 | |
|         /// </summary>
 | |
|         BottomCenter,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// BottomRight
 | |
|         /// </summary>
 | |
|         BottomRight,
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region BorderSide
 | |
| 
 | |
|     internal enum BorderSide
 | |
|     {
 | |
|         Top,
 | |
|         Left,
 | |
|         Bottom,
 | |
|         Right
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region CellHighlightMode
 | |
| 
 | |
|     ///<summary>
 | |
|     /// Specifies the mode of cell highlighting
 | |
|     /// to employ when a grid cell is selected
 | |
|     ///</summary>
 | |
|     public enum CellHighlightMode
 | |
|     {
 | |
|         ///<summary>
 | |
|         /// No highlighting
 | |
|         ///</summary>
 | |
|         None,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Entire cell will be Highlighted
 | |
|         ///</summary>
 | |
|         Full,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Partial cell will be Highlighted
 | |
|         ///</summary>
 | |
|         Partial,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Cell content only will be Highlighted
 | |
|         ///</summary>
 | |
|         Content,
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region ImageHighlightMode
 | |
| 
 | |
|     ///<summary>
 | |
|     /// ImageHighlightMode
 | |
|     ///</summary>
 | |
|     public enum ImageHighlightMode
 | |
|     {
 | |
|         ///<summary>
 | |
|         /// NotSet
 | |
|         ///</summary>
 | |
|         NotSet = -1,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Default
 | |
|         ///</summary>
 | |
|         Default,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Always
 | |
|         ///</summary>
 | |
|         Always,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Never
 | |
|         ///</summary>
 | |
|         Never,
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region ImageOverlay
 | |
| 
 | |
|     ///<summary>
 | |
|     /// How to Overlay the Image with
 | |
|     /// respect to the content
 | |
|     ///</summary>
 | |
|     public enum ImageOverlay
 | |
|     {
 | |
|         ///<summary>
 | |
|         ///</summary>
 | |
|         NotSet = -1,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// None
 | |
|         ///</summary>
 | |
|         None,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Top
 | |
|         ///</summary>
 | |
|         Top,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// Bottom
 | |
|         ///</summary>
 | |
|         Bottom,
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region Tbool
 | |
| 
 | |
|     ///<summary>
 | |
|     /// TBool - Three state boolean
 | |
|     ///</summary>
 | |
|     public enum Tbool
 | |
|     {
 | |
|         ///<summary>
 | |
|         /// NotSet
 | |
|         ///</summary>
 | |
|         NotSet,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// True
 | |
|         ///</summary>
 | |
|         True,
 | |
| 
 | |
|         ///<summary>
 | |
|         /// False
 | |
|         ///</summary>
 | |
|         False
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region VisualChangeType
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Defines visual property change type.
 | |
|     /// </summary>
 | |
|     public enum VisualChangeType
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Visual style has changed so layout is impacted
 | |
|         /// </summary>
 | |
|         Layout,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Visual style has changed so visuals are impacted, but not layout
 | |
|         /// </summary>
 | |
|         Render
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #endregion
 | |
| }
 |