Browse Source

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
pull/1/head
Tomáš Linhart 16 years ago
parent
commit
1c343c66bf
  1. 58
      src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs
  2. 8
      src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs

58
src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyGraphLayout.cs

@ -13,28 +13,26 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
{ {
public class DependencyGraphLayout : GraphLayout<DependencyVertex, DependencyEdge, DependencyGraph> public class DependencyGraphLayout : GraphLayout<DependencyVertex, DependencyEdge, DependencyGraph>
{ {
private Style _defaultVertexControlStyle;
public event MouseButtonEventHandler VertexClick; public event MouseButtonEventHandler VertexClick;
public event MouseButtonEventHandler VertexRightClick; public event MouseButtonEventHandler VertexRightClick;
public VertexControl SelectedVertexControl { get; set; }
public void ChangeGraph(DependencyGraph graph) public void ChangeGraph(DependencyGraph graph)
{ {
try try {
{
if (graph != null && graph.VertexCount > 0) if (graph != null && graph.VertexCount > 0)
{
Graph = graph; Graph = graph;
} } catch {} // ignore it if it fails
}
catch
{
} // ignore it if it fails
AttachEvents(); AttachEvents();
} }
private void AttachEvents() private void AttachEvents()
{ {
foreach (UIElement element in this.Children) foreach (UIElement element in Children)
{ {
var vertex = element as VertexControl; var vertex = element as VertexControl;
@ -248,7 +246,47 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
if (VertexClick != null) if (VertexClick != null)
VertexClick(sender, e); VertexClick(sender, e);
// TODO: Implement SelectedVertex and change its color var vertex = sender as VertexControl;
if (vertex != null)
{
if (SelectedVertexControl == vertex)
{
SelectedVertexControl.Style = _defaultVertexControlStyle;
SelectedVertexControl = null;
return;
}
if (SelectedVertexControl != null)
{
SelectedVertexControl.Style = vertex.Style;
}
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() public void ResetGraph()

8
src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyVertex.cs

@ -23,12 +23,10 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
{ {
var dependencyVertex = obj as DependencyVertex; var dependencyVertex = obj as DependencyVertex;
if (obj == null) if (dependencyVertex == null)
return false; return false;
else
{ return Node.Equals(dependencyVertex.Node);
return this.Node.Equals(dependencyVertex.Node);
}
} }
public override int GetHashCode() public override int GetHashCode()

Loading…
Cancel
Save