private void OnGetCurrentNodesCompleted(object sender, RendererNodesEventArgs e)
        {
            // TODO: When TODO item ID:1001 is being done a replacement for the following needs to be considered too.
            this.uxMapSurface.Children.Clear();

            RenderingContextInfo contextInfo = new RenderingContextInfo();

            contextInfo.SurfaceHeight   = this.Height;
            contextInfo.SurfaceWidth    = this.Width;
            contextInfo.SurfaceTopLeftX = 0;
            contextInfo.SurfaceTopLeftY = 0;

            foreach (KeyValuePair <Guid, INodeRenderer> nodeRenderer in e.View.NodeRenderers)
            {
                nodeRenderer.Value.Context = contextInfo;
                UIElement nodeRendererControl = nodeRenderer.Value as UIElement;

                if (nodeRendererControl != null)
                {
                    this.uxMapSurface.Children.Add(nodeRendererControl);
                }
            }

            foreach (KeyValuePair <Guid, IRelationshipRenderer> relationshipRenderer in e.View.RelationshipRenderers)
            {
                UIElement relationshipRendererControl = relationshipRenderer.Value as UIElement;

                if (relationshipRendererControl != null)
                {
                    this.uxMapSurface.Children.Add(relationshipRendererControl);
                }
            }
        }
        private void OnGetRelatedNodesByIdCompleted(object sender, ReturnedNodesEventArgs e)
        {
            int count  = 0;
            int length = e.Nodes.Length - 1;

            if (Views.ContainsKey(FocalNodeId))
            {
                CurrentView = Views[FocalNodeId];
            }
            else
            {
                CurrentView = new NavigatorView();

                Views.Add(FocalNodeId, CurrentView);

                SingleDepthNodeRenderer focalNodeRenderer = null;

                foreach (INodeProxy nodeProxy in e.Nodes)
                {
                    if (nodeProxy.Id == FocalNodeId)
                    {
                        if (FocalNode == null)
                        {
                            FocalNode = nodeProxy;

                            focalNodeRenderer = new SingleDepthNodeRenderer(CurrentView, FocalNode, ThemeManagementObject, "Focal");

                            CurrentView.NodeRenderers.Add(focalNodeRenderer.Node.Id, focalNodeRenderer);

                            focalNodeRenderer.NodePositionUpdating += new EventHandler(OnNodePositionUpdating);
                            focalNodeRenderer.NodeDoubleClicked    += new EventHandler <NodeClickedArgs>(OnNodeDoubleClicked);
                        }
                    }
                    else
                    {
                        SingleDepthNodeRenderer nodeRenderer = new SingleDepthNodeRenderer(CurrentView, nodeProxy, ThemeManagementObject, "Default");

                        nodeRenderer.NodeIndex = count;
                        nodeRenderer.NodeCount = length;

                        CurrentView.NodeRenderers.Add(nodeRenderer.Node.Id, nodeRenderer);

                        nodeRenderer.NodePositionUpdating += new EventHandler(OnNodePositionUpdating);
                        nodeRenderer.NodeDoubleClicked    += new EventHandler <NodeClickedArgs>(OnNodeDoubleClicked);

                        count++;
                    }
                }

                if (focalNodeRenderer == null)
                {
                    return;
                }

                foreach (INodeRenderer nodeRenderer in CurrentView.NodeRenderers.Values)
                {
                    foreach (IDescriptorProxy descriptor in nodeRenderer.Node.Descriptors)
                    {
                        if (!CurrentView.RelationshipRenderers.ContainsKey(descriptor.Relationship.Id))
                        {
                            bool relationshipIsPresent = true;

                            foreach (IDescriptorProxy alternateDescriptor in descriptor.Relationship.Descriptors)
                            {
                                if (!CurrentView.NodeRenderers.ContainsKey(alternateDescriptor.Node.Id))
                                {
                                    relationshipIsPresent = false;
                                    break;
                                }
                            }

                            if (relationshipIsPresent)
                            {
                                ImprovedArrow arrow = new ImprovedArrow(CurrentView, descriptor.Relationship);

                                CurrentView.RelationshipRenderers.Add(descriptor.Relationship.Id, arrow);
                            }
                        }
                    }
                }
            }

            RendererNodesEventArgs rendererNodesEventArgs = new RendererNodesEventArgs(CurrentView);

            if (GetCurrentNodesCompleted != null)
            {
                GetCurrentNodesCompleted.Invoke(sender, rendererNodesEventArgs);
            }
        }
        private void OnGetCurrentNodesCompleted(object sender, RendererNodesEventArgs e)
        {
            // TODO: When TODO item ID:1001 is being done a replacement for the following needs to be considered too.
            this.uxMapSurface.Children.Clear();

            RenderingContextInfo contextInfo = new RenderingContextInfo();

            contextInfo.SurfaceHeight = this.Height;
            contextInfo.SurfaceWidth = this.Width;
            contextInfo.SurfaceTopLeftX = 0;
            contextInfo.SurfaceTopLeftY = 0;

            foreach (KeyValuePair<Guid, INodeRenderer> nodeRenderer in e.View.NodeRenderers)
            {
                nodeRenderer.Value.Context = contextInfo;
                UIElement nodeRendererControl = nodeRenderer.Value as UIElement;

                if (nodeRendererControl != null)
                {
                    this.uxMapSurface.Children.Add(nodeRendererControl);
                }
            }

            foreach (KeyValuePair<Guid, IRelationshipRenderer> relationshipRenderer in e.View.RelationshipRenderers)
            {
                UIElement relationshipRendererControl = relationshipRenderer.Value as UIElement;

                if (relationshipRendererControl != null)
                {
                    this.uxMapSurface.Children.Add(relationshipRendererControl);
                }
            }
        }
        private void OnGetRelatedNodesByIdCompleted(object sender, ReturnedNodesEventArgs e)
        {
            int count = 0;
            int length = e.Nodes.Length - 1;

            if (Views.ContainsKey(FocalNodeId))
            {
                CurrentView = Views[FocalNodeId];
            }
            else
            {
                CurrentView = new NavigatorView();

                Views.Add(FocalNodeId, CurrentView);

                SingleDepthNodeRenderer focalNodeRenderer = null;

                foreach (INodeProxy nodeProxy in e.Nodes)
                {
                    if (nodeProxy.Id == FocalNodeId)
                    {
                        if (FocalNode == null)
                        {
                            FocalNode = nodeProxy;

                            focalNodeRenderer = new SingleDepthNodeRenderer(CurrentView, FocalNode, ThemeManagementObject, "Focal");

                            CurrentView.NodeRenderers.Add(focalNodeRenderer.Node.Id, focalNodeRenderer);

                            focalNodeRenderer.NodePositionUpdating += new EventHandler(OnNodePositionUpdating);
                            focalNodeRenderer.NodeDoubleClicked += new EventHandler<NodeClickedArgs>(OnNodeDoubleClicked);
                        }
                    }
                    else
                    {
                        SingleDepthNodeRenderer nodeRenderer = new SingleDepthNodeRenderer(CurrentView, nodeProxy, ThemeManagementObject, "Default");

                            nodeRenderer.NodeIndex = count;
                            nodeRenderer.NodeCount = length;

                            CurrentView.NodeRenderers.Add(nodeRenderer.Node.Id, nodeRenderer);

                            nodeRenderer.NodePositionUpdating += new EventHandler(OnNodePositionUpdating);
                            nodeRenderer.NodeDoubleClicked += new EventHandler<NodeClickedArgs>(OnNodeDoubleClicked);

                            count++;
                    }
                }

                if (focalNodeRenderer == null)
                {
                    return;
                }

                foreach (INodeRenderer nodeRenderer in CurrentView.NodeRenderers.Values)
                {
                    foreach (IDescriptorProxy descriptor in nodeRenderer.Node.Descriptors)
                    {
                        if (!CurrentView.RelationshipRenderers.ContainsKey(descriptor.Relationship.Id))
                        {
                            bool relationshipIsPresent = true;

                            foreach (IDescriptorProxy alternateDescriptor in descriptor.Relationship.Descriptors)
                            {
                                if (!CurrentView.NodeRenderers.ContainsKey(alternateDescriptor.Node.Id))
                                {
                                    relationshipIsPresent = false;
                                    break;
                                }
                            }

                            if (relationshipIsPresent)
                            {
                                ImprovedArrow arrow = new ImprovedArrow(CurrentView, descriptor.Relationship);

                                CurrentView.RelationshipRenderers.Add(descriptor.Relationship.Id, arrow);
                            }
                        }
                    }
                }
            }

            RendererNodesEventArgs rendererNodesEventArgs = new RendererNodesEventArgs(CurrentView);

            if (GetCurrentNodesCompleted != null)
            {
                GetCurrentNodesCompleted.Invoke(sender, rendererNodesEventArgs);
            }
        }