Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6043 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61pull/1/head
15 changed files with 247 additions and 57 deletions
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using QuickGraph; |
||||
|
||||
namespace ICSharpCode.CodeQualityAnalysis.Controls |
||||
{ |
||||
public class DependencyEdge : Edge<DependencyVertex> |
||||
{ |
||||
public DependencyEdge(DependencyVertex source, DependencyVertex target) : base(source, target) |
||||
{ |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using QuickGraph; |
||||
|
||||
namespace ICSharpCode.CodeQualityAnalysis.Controls |
||||
{ |
||||
public class DependencyGraph : BidirectionalGraph<DependencyVertex, DependencyEdge> |
||||
{ |
||||
} |
||||
} |
@ -0,0 +1,61 @@
@@ -0,0 +1,61 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Windows; |
||||
using System.Windows.Input; |
||||
using GraphSharp.Controls; |
||||
using QuickGraph; |
||||
|
||||
namespace ICSharpCode.CodeQualityAnalysis.Controls |
||||
{ |
||||
public class DependencyGraphLayout : GraphLayout<DependencyVertex, DependencyEdge, DependencyGraph> |
||||
{ |
||||
public event MouseButtonEventHandler VertexClick; |
||||
|
||||
public void ChangeGraph(DependencyGraph graph) |
||||
{ |
||||
try |
||||
{ |
||||
if (graph != null && graph.VertexCount > 0) |
||||
{ |
||||
this.Graph = graph; |
||||
} |
||||
} |
||||
catch |
||||
{ |
||||
} // ignore it if it fails
|
||||
|
||||
foreach (UIElement element in this.Children) |
||||
{ |
||||
var vertex = element as VertexControl; |
||||
|
||||
if (vertex != null) |
||||
{ |
||||
vertex.PreviewMouseLeftButtonDown += vertex_MouseLeftButtonDown; |
||||
vertex.MouseDoubleClick += vertex_MouseDoubleClick; |
||||
} |
||||
} |
||||
} |
||||
|
||||
private void vertex_MouseDoubleClick(object sender, MouseButtonEventArgs e) |
||||
{ |
||||
var vertexControl = sender as VertexControl; |
||||
if (vertexControl != null) |
||||
{ |
||||
var vertex = vertexControl.Vertex as DependencyVertex; |
||||
if (vertex != null && vertex.Node.Dependency != null) |
||||
{ |
||||
this.ChangeGraph(vertex.Node.Dependency.BuildDependencyGraph()); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private void vertex_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) |
||||
{ |
||||
VertexClick(sender, e); |
||||
|
||||
// TODO: Implement SelectedVertex and change its color
|
||||
} |
||||
} |
||||
} |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
|
||||
namespace ICSharpCode.CodeQualityAnalysis.Controls |
||||
{ |
||||
public class DependencyVertex |
||||
{ |
||||
public INode Node { get; private set; } |
||||
|
||||
public DependencyVertex(INode node) |
||||
{ |
||||
Node = node; |
||||
} |
||||
|
||||
public override string ToString() |
||||
{ |
||||
return Node.ToString(); |
||||
} |
||||
|
||||
public override bool Equals(object obj) |
||||
{ |
||||
var dependencyVertex = obj as DependencyVertex; |
||||
|
||||
if (obj == null) |
||||
return false; |
||||
else |
||||
{ |
||||
return this.Node.Equals(dependencyVertex.Node); |
||||
} |
||||
} |
||||
|
||||
public override int GetHashCode() |
||||
{ |
||||
return this.Node.GetHashCode(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
|
||||
namespace ICSharpCode.CodeQualityAnalysis |
||||
{ |
||||
public interface INode |
||||
{ |
||||
string Name { set; get; } |
||||
IDependency Dependency { set; get; } |
||||
string GetInfo(); |
||||
} |
||||
} |
Loading…
Reference in new issue