External/Aga.Controls/Tree/FixedRowHeightLayout.cs
author moel.mich
Sun, 23 Sep 2012 18:37:43 +0000
changeset 380 573f1fff48b2
permissions -rw-r--r--
Fixed Issue 387. The new implementation does not try to start a ring 0 driver that already exists, but could not be opened. It tries to delete the driver and install it new. The driver is now stored temporarily in the application folder. The driver is not correctly removed on system shutdown.
moel@345
     1
using System;
moel@345
     2
using System.Collections.Generic;
moel@345
     3
using System.Text;
moel@345
     4
using System.Drawing;
moel@345
     5
moel@345
     6
namespace Aga.Controls.Tree
moel@345
     7
{
moel@345
     8
	internal class FixedRowHeightLayout : IRowLayout
moel@345
     9
	{
moel@345
    10
		private TreeViewAdv _treeView;
moel@345
    11
moel@345
    12
		public FixedRowHeightLayout(TreeViewAdv treeView, int rowHeight)
moel@345
    13
		{
moel@345
    14
			_treeView = treeView;
moel@345
    15
			PreferredRowHeight = rowHeight;
moel@345
    16
		}
moel@345
    17
moel@345
    18
		private int _rowHeight;
moel@345
    19
		public int PreferredRowHeight
moel@345
    20
		{
moel@345
    21
			get { return _rowHeight; }
moel@345
    22
			set { _rowHeight = value; }
moel@345
    23
		}
moel@345
    24
moel@345
    25
		public Rectangle GetRowBounds(int rowNo)
moel@345
    26
		{
moel@345
    27
			return new Rectangle(0, rowNo * _rowHeight, 0, _rowHeight);
moel@345
    28
		}
moel@345
    29
moel@345
    30
		public int PageRowCount
moel@345
    31
		{
moel@345
    32
			get
moel@345
    33
			{
moel@345
    34
				return Math.Max((_treeView.DisplayRectangle.Height - _treeView.ColumnHeaderHeight) / _rowHeight, 0);
moel@345
    35
			}
moel@345
    36
		}
moel@345
    37
moel@345
    38
		public int CurrentPageSize
moel@345
    39
		{
moel@345
    40
			get
moel@345
    41
			{
moel@345
    42
				return PageRowCount;
moel@345
    43
			}
moel@345
    44
		}
moel@345
    45
moel@345
    46
		public int GetRowAt(Point point)
moel@345
    47
		{
moel@345
    48
			point = new Point(point.X, point.Y + (_treeView.FirstVisibleRow * _rowHeight) - _treeView.ColumnHeaderHeight);
moel@345
    49
			return point.Y / _rowHeight;
moel@345
    50
		}
moel@345
    51
moel@345
    52
		public int GetFirstRow(int lastPageRow)
moel@345
    53
		{
moel@345
    54
			return Math.Max(0, lastPageRow - PageRowCount + 1);
moel@345
    55
		}
moel@345
    56
moel@345
    57
		public void ClearCache()
moel@345
    58
		{
moel@345
    59
		}
moel@345
    60
	}
moel@345
    61
}