From 1c343c66bf57d41b4da038ccbcb0ca89bd4047b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Linhart?= Date: Fri, 9 Jul 2010 22:45:38 +0000 Subject: [PATCH] Added a support for a selected vertex. The selected vertex got different color and can be deselected by clicking its again. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6079 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/Controls/DependencyGraphLayout.cs | 58 +++++++++++++++---- .../Src/Controls/DependencyVertex.cs | 8 +-- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs index 8e66031afe..0881b3285d 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs @@ -13,28 +13,26 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls { public class DependencyGraphLayout : GraphLayout { + private Style _defaultVertexControlStyle; + public event MouseButtonEventHandler VertexClick; public event MouseButtonEventHandler VertexRightClick; + public VertexControl SelectedVertexControl { get; set; } + public void ChangeGraph(DependencyGraph graph) { - try - { + try { if (graph != null && graph.VertexCount > 0) - { Graph = graph; - } - } - catch - { - } // ignore it if it fails + } catch {} // ignore it if it fails AttachEvents(); } private void AttachEvents() { - foreach (UIElement element in this.Children) + foreach (UIElement element in Children) { var vertex = element as VertexControl; @@ -247,8 +245,48 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls { if (VertexClick != null) VertexClick(sender, e); + + var vertex = sender as VertexControl; + if (vertex != null) + { + if (SelectedVertexControl == vertex) + { + SelectedVertexControl.Style = _defaultVertexControlStyle; + SelectedVertexControl = null; + return; + } + + if (SelectedVertexControl != null) + { + SelectedVertexControl.Style = vertex.Style; + } - // TODO: Implement SelectedVertex and change its color + SelectedVertexControl = vertex; + + _defaultVertexControlStyle = vertex.Style; + + // workaround which doesnt brake triggers of highlighting + var style = new Style(); + + foreach (Setter setter in vertex.Style.Setters) + { + style.Setters.Add(setter); + } + + foreach (var trigger in vertex.Style.Triggers) + { + style.Triggers.Add(trigger); + } + + style.Setters.Add(new Setter + { + Property = Control.BackgroundProperty, + Value = new SolidColorBrush(Color.FromRgb(255, 165, 0)) // orange + }); + + + SelectedVertexControl.Style = style; + } } public void ResetGraph() diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs index 7adc19f306..27b841be46 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs @@ -23,12 +23,10 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls { var dependencyVertex = obj as DependencyVertex; - if (obj == null) + if (dependencyVertex == null) return false; - else - { - return this.Node.Equals(dependencyVertex.Node); - } + + return Node.Equals(dependencyVertex.Node); } public override int GetHashCode()