using System;
namespace DevComponents.AdvTree
{
    /// 
    /// Specifies layout of the items in AdvTree control.
    /// 
    public enum eView
    {
        /// 
        /// Standard TreeView layout.
        /// 
        Tree,
        /// 
        /// ListView style tile layout.
        /// 
        Tile
    }
	/// Specifies the way background image is displayed on background.
	public enum eStyleBackgroundImage:int
	{
		/// Image is stretched to fill the background
		Stretch=0,
		/// Image is centered inside the background
		Center=1,
		/// Image is tiled inside the background
		Tile=2,
		/// 
		/// Image is drawn in top left corner of container space.
		/// 
		TopLeft=3,
		/// 
		/// Image is drawn in top right corner of container space.
		/// 
		TopRight=4,
		/// 
		/// Image is drawn in bottom left corner of container space.
		/// 
		BottomLeft=5,
		/// 
		/// Image is drawn in bottom right corner of container space.
		/// 
		BottomRight=6
	}
	/// Indicates alignment of a part of the cell like image or check box in relation to the text.
	public enum eCellPartAlignment:int
	{
		/// 
		/// Part is aligned to the left center of the text assuming left-to-right
		/// orientation.
		/// 
		NearCenter=0,
		/// 
		/// Part is aligned to the right center of the text assuming left-to-right
		/// orientation.
		/// 
		FarCenter=1,
		/// 
		/// Part is aligned to the top left of the text assuming left-to-right
		/// orientation.
		/// 
		NearTop=2,
		/// Part is aligned above the text and centered.
		CenterTop=3,
		/// 
		/// Part is aligned to the top right of the text assuming left-to-right
		/// orientation.
		/// 
		FarTop=4,
		/// 
		/// Part is aligned to the bottom left of the text assuming left-to-right
		/// orientation.
		/// 
		NearBottom=5,
		/// Part is aligned below the text and centered.
		CenterBottom=6,
		/// 
		/// Part is aligned to the bottom right of the text assuming left-to-right
		/// orientation.
		/// 
		FarBottom=7,
        /// 
        /// Part has default alignment that depends on the parent control view.
        /// 
        Default = 8
	}
	/// 
	/// Specifies how to trim characters from a text that does not completely fit into a element's shape.
	/// 
	public enum eStyleTextTrimming
	{
		/// 
		/// Specifies that the text is trimmed to the nearest character.
		/// 
		Character=System.Drawing.StringTrimming.Character,
		/// 
		/// Specifies that the text is trimmed to the nearest character, and an ellipsis is inserted at the end of a trimmed line.
		/// 
		EllipsisCharacter=System.Drawing.StringTrimming.EllipsisCharacter,
		/// 
		/// The center is removed from trimmed lines and replaced by an ellipsis. The algorithm keeps as much of the last slash-delimited segment of the line as possible.
		/// 
		EllipsisPath=System.Drawing.StringTrimming.EllipsisPath,
		/// 
		/// Specifies that text is trimmed to the nearest word, and an ellipsis is inserted at the end of a trimmed line.
		/// 
		EllipsisWord=System.Drawing.StringTrimming.EllipsisWord,
		/// 
		/// Specifies no trimming.
		/// 
		None=System.Drawing.StringTrimming.None,
		/// 
		/// Specifies that text is trimmed to the nearest word.
		/// 
		Word=System.Drawing.StringTrimming.Word
	}
    ///// 
    ///// Specifies the border type for style element.
    ///// 
    //public enum eStyleBorderType:int
    //{
    //    /// Indicates no border
    //    None,
    //    /// Border is a solid line
    //    Solid,
    //    /// Border is a solid dash line
    //    Dash,
    //    /// Border is solid dash-dot line
    //    DashDot,
    //    /// Border is solid dash-dot-dot line
    //    DashDotDot,
    //    /// Border consists of dots
    //    Dot,
    //    /// Etched Border
    //    Etched,
    //    /// Double Border
    //    Double
    //}
	/// 
	/// Indicates absolute vertical alignment of the content.
	/// 
	public enum eVerticalAlign
	{
		/// 
		/// Content is aligned to the top
		/// 
		Top,
		/// 
		/// Content is aligned in the middle
		/// 
		Middle,
		/// 
		/// Content is aligned at the bottom
		/// 
		Bottom
	}
	/// 
	/// Indicates absolute horizontal alignment
	/// 
	public enum eHorizontalAlign
	{
		/// 
		/// Content is left aligned
		/// 
		Left,
		/// 
		/// Content is centered
		/// 
		Center,
		/// 
		/// Content is right aligned
		/// 
		Right
	}
	/// 
	/// Indicates prefered node layout position on Map tree layout when node is the child node of the top-level root node.
	/// 
	public enum eMapPosition
	{
		/// 
		/// Node is positioned based on default algorithm.
		/// 
		Default,
		/// 
		/// Sub-root node and all nodes after it are positioned to the left of the root.
		/// 
		Near,
		/// 
		/// Sub-root node and all nodes before it are positioned to the right of the root.
		/// 
		Far
	}
    ///// 
    ///// Indicates corner type for the border around visual element.
    ///// 
    //public enum eCornerType
    //{
    //    /// 
    //    /// Specifies that corner type is inherited from parent setting.
    //    /// 
    //    Inherit,
    //    /// 
    //    /// Specifies square corner.
    //    /// 
    //    Square,
    //    /// 
    //    /// Specifies rounded corner.
    //    /// 
    //    Rounded,
    //    /// 
    //    /// Specifies diagonal corner.
    //    /// 
    //    Diagonal
    //}
	/// 
	/// Specifies the column header visibility for the node.
	/// 
	public enum eNodeHeaderVisibility
	{
		/// 
		/// Column header is automatically shown/hidden based on the node's position in the tree. When
		/// Node is first child node i.e. with index=0 the header will be shown, otherwise header will
		/// be hidden.
		/// 
		Automatic,
		/// 
		/// Column header is always displayed regardless of node's position.
		/// 
		AlwaysShow,
		/// 
		/// Column header is always hidden regardless of node's position.
		/// 
		AlwaysHide
	}
	/// 
	/// Indicates the part of the node.
	/// 
    public enum eNodeRectanglePart
	{
		/// 
		/// Bounds of complete node content except expand button. This also includes the child node bounds if node is expanded.
		/// 
		NodeContentBounds,
		/// 
		/// Bounds of the expand button which collapses/expands the node.
		/// 
		ExpandBounds,
        /// 
        /// Hit test bounds of the expand button which collapses/expands the node used by mouse routines to trigger node expansion/collapse.
        /// 
        ExpandHitTestBounds,
		/// 
		/// Bounds of all child nodes of give node.
		/// 
		ChildNodeBounds,
		/// 
		/// Bounds for cells inside a node.
		/// 
		CellsBounds,
		/// 
		/// Complete node bounds including expand button.
		/// 
		NodeBounds,
		/// 
		/// Bounds of the command button.
		/// 
		CommandBounds,
        /// 
        /// Bounds of child node columns if node has columns defined.
        /// 
        ColumnsBounds
	}
	/// 
	/// Indicates the part of the cell.
	/// 
	internal enum eCellRectanglePart
	{
		/// 
		/// Bounds of check box or Rectangle.Empty if there is no check-box.
		/// 
		CheckBoxBounds,
		/// 
		/// Bounds of image inside the cell or Rectangle.Empty if there is no image.
		/// 
		ImageBounds,
		/// 
		/// Text bounds inside of cell.
		/// 
		TextBounds,
		/// 
		/// Cell bounds
		/// 
		CellBounds
	}
	/// 
	/// Indicates part of the node mouse is placed over.
	/// 
	internal enum eMouseOverNodePart
	{
		/// 
		/// Mouse is not over any node part.
		/// 
		None,
		/// 
		/// Mouse is placed over the node.
		/// 
		Node,
		/// 
		/// Mouse is placed over node expand button.
		/// 
		Expand,
		/// 
		/// Mouse is placed over the cell.
		/// 
		Cell,
		/// 
		/// Mouse is placed over the command button.
		/// 
		Command
	}
    ///// 
    ///// Indicates white-space part of the style.
    ///// 
    //[Flags()]
    //public enum eSpacePart
    //{
    //    /// 
    //    /// Represents style padding.
    //    /// 
    //    Padding=1,
    //    /// 
    //    /// Represents style border.
    //    /// 
    //    Border=2,
    //    /// 
    //    /// Represents style margin.
    //    /// 
    //    Margin=4
    //}
    ///// 
    ///// Indicates the style side.
    ///// 
    //public enum eStyleSide
    //{
    //    /// 
    //    /// Specifies left side of the style.
    //    /// 
    //    Left,
    //    /// 
    //    /// Specifies right side of the style.
    //    /// 
    //    Right,
    //    /// 
    //    /// Specifies top side of the style.
    //    /// 
    //    Top,
    //    /// 
    //    /// Specifies bottom side of the style.
    //    /// 
    //    Bottom
    //}
	/// 
	/// Indicates the visibility of node expand part which allows user to expand/collaps node.
	/// 
	public enum eNodeExpandVisibility
	{
		/// 
		/// Default setting which indicates that when node has child nodes expand part is visible otherwise it is hidden.
		/// 
		Auto,
		/// 
		/// Expand part is always visible regardless of whether child nodes are present or not.
		/// 
		Visible,
		/// 
		/// Expand part is always hidden regardless of whether child nodes are present or not.
		/// 
		Hidden
	}
	/// 
	/// Specifies the action that raised a AdvTreeEventArgs event
	/// 
	public enum eTreeAction
	{
		/// 
		/// The event was caused by a keystroke.
		/// 
		Keyboard,
		/// 
		/// The event was caused by a mouse operation.
		/// 
		Mouse,
		/// 
		/// The event was caused by the Node collapsing.
		/// 
		Collapse,
		/// 
		/// The event was caused by the Node expanding.
		/// 
		Expand,
		/// 
		/// The event is caused programmatically from user code.
		/// 
		Code
	}
	/// 
	/// Specifies node connector type. Node connector is the type of the line/connection that is drawn to connect child node to it's parent node.
	/// 
	public enum eNodeConnectorType
	{
        ///// 
        ///// Curved line connector type.
        ///// 
        //Curve,
		/// 
		/// Straight line connector type.
		/// 
		Line
	}
    ///// 
    ///// Specifies the cap style with which the connector line will start or end.
    ///// 
    //public enum eConnectorCap
    //{
    //    /// 
    //    /// Specifies no cap.
    //    /// 
    //    None,
    //    /// 
    //    /// Round cap type.
    //    /// 
    //    Ellipse,
    //    /// 
    //    /// Arrow cap type.
    //    /// 
    //    Arrow
    //}
	/// 
	/// Specifies the layout type used to position the cells within the nodes.
	/// 
	public enum eCellLayout
	{
		/// 
		/// Specifies that default setting is to be used for cell layout. Default is Horizontal. When set to default on the Node, setting from Tree control is used.
		/// 
		Default,
		/// Horizontal layout positions the cells horizontally next to each other.
		Horizontal,
		/// 
		/// Vertical layout positions cell vertically on top of each other.
		/// 
		Vertical
	}
	/// 
	/// Specifies the layout type used to position the parts of the cell like image, checkbox and text.
	/// 
	public enum eCellPartLayout
	{
		/// 
		/// Specifies that default setting is to be used for cell parts layout. Default is Horizontal. When set to default on the Cell, setting from Tree control is used.
		/// 
		Default,
		/// Horizontal layout positions the parts of the cell horizontally next to each other.
		Horizontal,
		/// 
		/// Vertical layout positions parts of the cell vertically on top of each other.
		/// 
		Vertical
	}
    /// 
    /// Specifies the color scheme loaded by ColorScheme object.
    /// 
    public enum eColorSchemeStyle
    {
        /// 
        /// Indicates Office 2003 like color scheme.
        /// 
        Office2003,
        /// 
        /// Indicates VS.NET 2005 like color scheme.
        /// 
        VS2005,
        /// 
        /// Indicates Office 2007 like color scheme.
        /// 
        Office2007
    }
	/// 
	/// Specifies the currently selected system color scheme if running on Windows XP.
	/// 
	internal enum eWinXPColorScheme
	{
		/// 
		/// Color scheme cannot be determined.
		/// 
		Undetermined,
		/// 
		/// Blue color scheme.
		/// 
		Blue,
		/// 
		/// Olive green color scheme.
		/// 
		OliveGreen,
		/// 
		/// Silver color scheme.
		/// 
		Silver
	}
	/// 
	/// Specifies the flow of diagram layout related to the root node.
	/// 
	public enum eDiagramFlow
	{
		/// 
		/// Nodes are positioned from left to right with root node being the left-most node.
		/// 
		LeftToRight,
		/// 
		/// Nodes are positioned from right to left with root node being the right-most
		/// node.
		/// 
		RightToLeft,
		/// 
		/// Nodes are positioned from top to bottom with root node being the top node.
		/// 
		TopToBottom,
		/// 
		/// Nodes are positioned from bottom to top with root node being bottom node.
		/// 
		BottomToTop
	}
	
	/// 
	/// Specifies the flow of the map layout.
	/// 
	public enum eMapFlow
	{
		/// 
		/// Nodes are arranged around the root node.
		/// 
		Spread,
		/// 
		/// Nodes are arranged from below the root node.
		/// 
		TopToBottom,
		/// 
		/// Nodes are arranged above the root node.
		/// 
		BottomToTop,
		/// 
		/// Nodes are arranged to the right of the root node.
		/// 
		LeftToRight,
		/// 
		/// Nodes are arranged to the left of the root node.
		/// 
		RightToLeft
	}
	/// 
	/// Specifies the type of the expand button.
	/// 
	public enum eExpandButtonType
	{
		/// 
		/// Indicates elliptical expand button.
		/// 
		Ellipse,
		/// 
		/// Indicates rectangular expand button.
		/// 
		Rectangle,
		/// 
		/// Indicates that images are used for expand button. 
		/// 
		Image,
        /// 
        /// Indicates the Windows Vista style expand button.
        /// 
        Triangle
	}
	
	/// 
	/// Specifies the visual style for the tree control.
	/// 
	public enum eVisualStyle
	{
		/// 
		/// Indicates default visual style.
		/// 
		Default
	}
	/// 
	/// Specifies the layout type for the nodes.
	/// 
	public enum eNodeLayout
	{
		/// 
		/// Nodes are arranged around root node in map format.
		/// 
		Map,
		/// 
		/// Nodes are arranged from left-to-right in diagram format.
		/// 
		Diagram
	}
	
	/// 
	/// Specifies renderer type used to render nodes.
	/// 
	public enum eNodeRenderMode
	{
		
		/// 
		/// Specifies default renderer which allows most customization through AdvTree
		/// properties. Default renderer integrates with the Style architecture to provide
		/// customization on renderer behavior.
		/// 
		Default,
        ///// 
        ///// 	Specifies professional renderer. Professional renderer is custom renderer
        /////     which does not rely on Style architecture for customization of renderer appearance
        /////     since it provides much richer appearance than Default renderer.
        ///// 	Professional renderer colors can be controls through
        /////     NodeProfessionalColorTable object which is exposed by
        /////     NodeProfessionalRenderer.ColorTable property.
        ///// 
        //Professional,
		/// 
		/// Specifies that custom renderer is used. When set you must also set NodeRenderer
		/// to renderer you want to use.
		/// 
		Custom
	}
    /// 
    /// Specifies the node selection style.
    /// 
    public enum eSelectionStyle
    {
        /// 
        /// Node selector highlights the complete node row when node is selected.
        /// 
        FullRowSelect,
        /// 
        /// Node selector draws the rectangle that highlights the node content. Appearance similar to system tree view in Windows Vista.
        /// 
        HighlightCells,
        /// 
        /// Node selector draws hollow selection rectangle around the node.
        /// 
        NodeMarker,
    }
    /// 
    /// Specifies the rule for multi-node selection.
    /// 
    public enum eMultiSelectRule
    {
        /// 
        /// Allows multiple selection of nodes with same parent node only.
        /// 
        SameParent,
        /// 
        /// Allows multiple selection of any node.
        /// 
        AnyNode
    }
    /// 
    /// Gets or sets the image alignment inside of column header.
    /// 
    public enum eColumnImageAlignment
    {
        /// 
        /// Image is left aligned.
        /// 
        Left,
        /// 
        /// Image is right aligned.
        /// 
        Right
    }
    /// 
    /// Specifies the editor type used when cell is edited.
    /// 
    public enum eCellEditorType
    {
        /// 
        /// Indicates default, text based editor.
        /// 
        Default,
        /// 
        /// Indicates that Integer numeric editor will be used for editing the value of the cell or column.
        /// 
        NumericInteger,
        /// 
        /// Indicates that Double numeric editor will be used for editing the value of the cell or column.
        /// 
        NumericDouble,
        /// 
        /// Indicates that Currency numeric editor will be used for editing the value of the cell or column.
        /// 
        NumericCurrency,
        /// 
        /// Indicates that date editor will be used for editing the value of the cell or column.
        /// 
        Date,
        /// 
        /// Indicates that time editor will be used for editing the value of the cell or column.
        /// 
        Time,
        /// 
        /// Indicates that date and time editor will be used for editing the value of the cell or column.
        /// 
        DateTime,
        /// 
        /// Indicates that cell will use custom editor that you provide by handling AdvTree.ProvideCustomCellEditor event.
        /// 
        Custom
    }
    /// 
    /// Specifies the sort direction for the column header.
    /// 
    public enum eSortDirection
    {
        /// 
        /// No sort is specified.
        /// 
        None,
        /// 
        /// Ascending sorting is in effect, i.e. A-Z
        /// 
        Ascending,
        /// 
        /// Descending sorting is in effect, i.e. Z-A
        /// 
        Descending
    }
}