Browse Source

Bug fixes for SharpTreeView.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4051 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Ivan Shumilin 17 years ago
parent
commit
a2f922fa86
  1. 4
      src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml
  2. 3
      src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml.cs
  3. 1
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/ICSharpCode.TreeView.csproj
  4. 10
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/LinesRenderer.cs
  5. 28
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpGridView.cs
  6. 5
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNode.cs
  7. 20
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeView.cs
  8. 4
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs
  9. 62
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/Themes/Generic.xaml

4
src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml

@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
Grid.Column="1"
Margin="10 0 0 0">
<ListView.View>
<GridView>
<sd:SharpGridView>
<GridView.Columns>
<GridViewColumn>
<GridViewColumn.CellTemplate>
@ -56,7 +56,7 @@ @@ -56,7 +56,7 @@
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</sd:SharpGridView>
</ListView.View>
</sd:SharpTreeView>

3
src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml.cs

@ -21,9 +21,12 @@ namespace ICSharpCode.TreeView.Demo @@ -21,9 +21,12 @@ namespace ICSharpCode.TreeView.Demo
InitializeComponent();
treeView1.Root = new FolderNode("c:\\");
//treeView1.ShowRoot = false;
//treeView1.SelectionChanged += new SelectionChangedEventHandler(treeView1_SelectionChanged);
treeView2.Root = new FolderNode("c:\\");
//treeView2.ShowRootExpander = true;
//treeView2.ShowRoot = false;
}
//void treeView1_SelectionChanged(object sender, SelectionChangedEventArgs e)

1
src/Libraries/SharpTreeView/ICSharpCode.TreeView/ICSharpCode.TreeView.csproj

@ -70,6 +70,7 @@ @@ -70,6 +70,7 @@
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="SharpGridView.cs" />
<Compile Include="SharpTreeNode.cs" />
<Compile Include="SharpTreeNodeCollection.cs" />
<Compile Include="SharpTreeNodeView.cs" />

10
src/Libraries/SharpTreeView/ICSharpCode.TreeView/LinesRenderer.cs

@ -25,10 +25,14 @@ namespace ICSharpCode.TreeView @@ -25,10 +25,14 @@ namespace ICSharpCode.TreeView
protected override void OnRender(DrawingContext dc)
{
var indent = NodeView.CalculateIndent();
if (indent == 0) return;
var p = new Point(indent + 4.5, 0);
if (!NodeView.Node.IsRoot || NodeView.ParentTreeView.ShowRootExpander) {
dc.DrawLine(pen, new Point(p.X, ActualHeight / 2), new Point(p.X + 10, ActualHeight / 2));
}
if (NodeView.Node.IsRoot) return;
if (NodeView.Node.IsLast) {
dc.DrawLine(pen, p, new Point(p.X, ActualHeight / 2));
}
@ -36,8 +40,6 @@ namespace ICSharpCode.TreeView @@ -36,8 +40,6 @@ namespace ICSharpCode.TreeView
dc.DrawLine(pen, p, new Point(p.X, ActualHeight));
}
dc.DrawLine(pen, new Point(p.X, ActualHeight / 2), new Point(p.X + 10, ActualHeight / 2));
var current = NodeView.Node;
while (true) {
p.X -= 19;

28
src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpGridView.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;
namespace ICSharpCode.TreeView
{
public class SharpGridView : GridView
{
static SharpGridView()
{
ItemContainerStyleKey =
new ComponentResourceKey(typeof(SharpTreeView), "GridViewItemContainerStyleKey");
}
public static ResourceKey ItemContainerStyleKey { get; private set; }
protected override object ItemContainerDefaultStyleKey
{
get
{
return ItemContainerStyleKey;
}
}
}
}

5
src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNode.cs

@ -61,6 +61,11 @@ namespace ICSharpCode.TreeView @@ -61,6 +61,11 @@ namespace ICSharpCode.TreeView
get { return Parent != null ? Parent.Level + 1 : 0; }
}
public bool IsRoot
{
get { return Parent == null; }
}
//bool isSelected;
//public bool IsSelected

20
src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeView.cs

@ -15,6 +15,9 @@ namespace ICSharpCode.TreeView @@ -15,6 +15,9 @@ namespace ICSharpCode.TreeView
{
static SharpTreeView()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(SharpTreeView),
new FrameworkPropertyMetadata(typeof(SharpTreeView)));
SelectionModeProperty.OverrideMetadata(typeof(SharpTreeView),
new FrameworkPropertyMetadata(SelectionMode.Extended));
@ -137,7 +140,7 @@ namespace ICSharpCode.TreeView @@ -137,7 +140,7 @@ namespace ICSharpCode.TreeView
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
var container = element as SharpTreeViewItem;
SharpTreeViewItem container = element as SharpTreeViewItem;
container.ParentTreeView = this;
}
@ -203,15 +206,28 @@ namespace ICSharpCode.TreeView @@ -203,15 +206,28 @@ namespace ICSharpCode.TreeView
#region Drag and Drop
protected override void OnDragEnter(DragEventArgs e)
{
OnDragOver(e);
}
protected override void OnDragOver(DragEventArgs e)
{
e.Effects = DragDropEffects.None;
e.Handled = true;
if (Root != null && !ShowRoot && Root.Children.Count == 0) {
Root.InternalCanDrop(e, 0);
}
}
protected override void OnDragOver(DragEventArgs e)
protected override void OnDrop(DragEventArgs e)
{
e.Effects = DragDropEffects.None;
e.Handled = true;
if (Root != null && !ShowRoot && Root.Children.Count == 0) {
Root.InternalDrop(e, 0);
}
}
internal void HandleDragEnter(SharpTreeViewItem item, DragEventArgs e)

4
src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs

@ -75,7 +75,9 @@ namespace ICSharpCode.TreeView @@ -75,7 +75,9 @@ namespace ICSharpCode.TreeView
CaptureMouse();
if (e.ClickCount == 2) {
Node.IsExpanded = !Node.IsExpanded;
if (!Node.IsRoot || ParentTreeView.ShowRootExpander) {
Node.IsExpanded = !Node.IsExpanded;
}
}
}
}

62
src/Libraries/SharpTreeView/ICSharpCode.TreeView/Themes/Generic.xaml

@ -93,6 +93,17 @@ @@ -93,6 +93,17 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Default:SharpTreeView}"
BasedOn="{StaticResource {x:Type ListBox}}">
<Style.Triggers>
<Trigger Property="ShowRoot"
Value="False">
<Setter Property="Padding"
Value="5 0 0 0" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="{x:Static Default:SharpTreeView.DefaultItemContainerStyleKey}"
TargetType="{x:Type Default:SharpTreeViewItem}">
@ -110,6 +121,57 @@ @@ -110,6 +121,57 @@
</Style.Triggers>
</Style>
<Style x:Key="{x:Static Default:SharpGridView.ItemContainerStyleKey}"
TargetType="{x:Type ListViewItem}">
<Setter Property="Background"
Value="Transparent" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected"
Value="true">
<Setter TargetName="Bd"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected"
Value="true" />
<Condition Property="Selector.IsSelectionActive"
Value="false" />
</MultiTrigger.Conditions>
<Setter TargetName="Bd"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
</MultiTrigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Default:SharpTreeViewItem}">
<Setter Property="FocusVisualStyle"
Value="{x:Null}" />

Loading…
Cancel
Save