2
// TreeViewDropAdorner.cs
5
// Eric Maupin <ermau@xamarin.com>
7
// Copyright (c) 2012 Xamarin, Inc.
9
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
// of this software and associated documentation files (the "Software"), to deal
11
// in the Software without restriction, including without limitation the rights
12
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
// copies of the Software, and to permit persons to whom the Software is
14
// furnished to do so, subject to the following conditions:
16
// The above copyright notice and this permission notice shall be included in
17
// all copies or substantial portions of the Software.
19
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28
using System.Windows.Documents;
29
using System.Windows.Media;
30
using System.Windows.Shapes;
32
namespace Xwt.WPFBackend
34
public class TreeViewDropAdorner
37
public TreeViewDropAdorner (ExTreeViewItem item, RowDropPosition position)
40
IsHitTestVisible = false;
42
double indent = ((item.Level + 1) * LevelToIndentConverter.IndentSize) + 5;
44
this.shape = new System.Windows.Shapes.Rectangle();
45
this.shape.Stroke = Brushes.DimGray;
46
this.shape.Width = item.ActualWidth - indent;
49
case RowDropPosition.Into:
50
this.shape.Height = item.ActualHeight;
51
this.shape.Margin = new Thickness (indent, 0, 0, 0);
52
this.shape.StrokeDashArray = new DoubleCollection { 1, 0, 1 };
55
case RowDropPosition.Before:
56
this.shape.Height = 1;
57
this.shape.Margin = new Thickness (indent, 0, 0, 0);
60
case RowDropPosition.After:
61
this.shape.Height = 1;
62
this.shape.Margin = new Thickness (indent, item.ActualHeight, 0, 0);
67
private readonly Shape shape;
69
protected override int VisualChildrenCount
74
protected override Visual GetVisualChild (int index)
79
protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint)
81
this.shape.Measure (constraint);
82
return this.shape.DesiredSize;
85
protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
87
this.shape.Arrange (new Rect (this.shape.DesiredSize));
b'\\ No newline at end of file'