public override void Run(Canguro.Controller.CommandServices services)
{
services.StoreSelection();
LineElement line = services.GetLine();
List<LinkedList<LineElement>> graph = GetLineGraph(services.Model);
ItemList<Joint> joints = services.Model.JointList;
int numJoints = joints.Count;
bool[] colors = new bool[numJoints];
Stack<LineElement> stack = new Stack<LineElement>();
stack.Push(line);
while (stack.Count > 0)
{
line = stack.Pop();
line.IsSelected = true;
if (!colors[line.I.Id])
{
line.I.IsSelected = true;
visit(graph, (int)line.I.Id, stack, line);
colors[line.I.Id] = true;
}
if (!colors[line.J.Id])
{
line.J.IsSelected = true;
visit(graph, (int)line.J.Id, stack, line);
colors[line.J.Id] = true;
}
}
services.RestoreSelection();
services.Model.ChangeSelection(null);
}