Browse Source

Scrolling in TreeMatrixControl

pull/19/head
PeterForstmeier 14 years ago
parent
commit
241cb1aaca
  1. 41
      src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs
  2. 3
      src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml.cs

41
src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs

@ -50,7 +50,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls @@ -50,7 +50,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
InitializeComponent();
matrixControl.Colorizer = new DependencyColorizer();
matrixControl.HoveredCellChanged += OnHoverChanged;
}
@ -59,15 +58,13 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls @@ -59,15 +58,13 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
var leftCol = leftTree.Items.SourceCollection as INotifyCollectionChanged;
leftCol.CollectionChanged += BuildLeftINodeList;
Helper.FillTree(leftTree, module);
var topCol = topTree.Items.SourceCollection as INotifyCollectionChanged;
topCol.CollectionChanged += BuildTopINodeList;
leftTree.MouseMove += LeftTree_MouseMove;
topTree.MouseMove += TopTree_MouseMove;
var topCol = topTree.Items.SourceCollection as INotifyCollectionChanged;
topCol.CollectionChanged += BuildTopINodeList;
Helper.FillTree(leftTree, module);
Helper.FillTree(topTree, module);
}
@ -89,7 +86,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls @@ -89,7 +86,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
if (n != null) {
matrixControl.HighlightLine(HeaderType.Rows,n.INode);
leftTree.SelectedItem = n;
leftTree.FocusNode(n);
}
}
@ -99,7 +95,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls @@ -99,7 +95,6 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
if (n != null) {
matrixControl.HighlightLine(HeaderType.Columns,n.INode);
topTree.SelectedItem = n;
topTree.FocusNode(n);
}
}
@ -163,42 +158,54 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls @@ -163,42 +158,54 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
#endregion
#region OnHoover
void OnHoverChanged(object sender ,HoveredCellEventArgs <Relationship> e)
{
if (e.HoveredCell.RowIndex < leftTree.Items.Count) {
var leftNode = leftTree.Items[e.HoveredCell.RowIndex] as DependecyTreeNode;
leftTree.SelectedItem = leftNode;
leftTree.FocusNode(leftNode);
}
if (e.HoveredCell.ColumnIndex < topTree.Items.Count )
{
var topNode = topTree.Items[e.HoveredCell.ColumnIndex] as DependecyTreeNode;
topTree.SelectedItem = topNode;
topTree.FocusNode(topNode);
}
}
#endregion
#region Tree Scroll
bool scrollerWorking;
void LeftTree_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
Console.WriteLine("Left TreeScroll {0} - {1}",e.VerticalOffset * matrixControl.CellHeight,leftTree.Items.Count);
scrollerWorking = true;
scrollViewer.ScrollToVerticalOffset(e.VerticalOffset * matrixControl.CellHeight);
Console.WriteLine("--");
scrollerWorking = false;
}
void TopTree_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
// Console.WriteLine("Top TreeScroll ");
// scrollViewer.ScrollToHorizontalOffset(e.VerticalChange * matrixControl.CellHeight);
// Console.WriteLine("--");
scrollerWorking = true;
scrollViewer.ScrollToHorizontalOffset(e.VerticalOffset * matrixControl.CellWidth);
scrollerWorking = false;
}
#endregion
#region ScrollViewer Scroll
void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
// Console.WriteLine("ScrollViewer_ScrollChanged {0} _ {1}",e.VerticalChange,scrollViewer != null);
//leftScrollViewer.ScrollToVerticalOffset (e.VerticalChange * matrixControl.CellHeight);
if (scrollerWorking) {
return;
}
leftScrollViewer.ScrollToVerticalOffset (e.VerticalOffset / matrixControl.CellHeight);
topScrollViewer.ScrollToVerticalOffset (e.HorizontalOffset / matrixControl.CellWidth);
}
#endregion
}
}

3
src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml.cs

@ -131,9 +131,10 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -131,9 +131,10 @@ namespace ICSharpCode.CodeQualityAnalysis
private void definitionTree_SelectedItemChanged(object sender, SelectionChangedEventArgs e)
{
var item = definitionTree.SelectedItem as DependecyTreeNode;
var item = e.AddedItems[0] as DependecyTreeNode;
if (item != null && item.INode.Dependency != null)
{
definitionTree.SelectedItem = item;
var graph = item.INode.Dependency.BuildDependencyGraph();
graphLayout.ChangeGraph(graph);
}

Loading…
Cancel
Save