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

Loading…
Cancel
Save