/// <summary>
        /// draw view GUI, buttons and all
        /// </summary>
        public override void DrawView(Rect editorRect, Rect PercentRect, Event e, NodeGraph graph)
        {
            base.DrawView(editorRect, PercentRect, e, graph);
            ProcessEvents(e);
            if (graph != null)
            {
                title = graph.name;
            }
            else
            {
                title = GetTitle();
            }

            GUI.DrawTextureWithTexCoords(new Rect(body.position + pan, body.size), backgroundTexture, new Rect(0, 0, body.width / backgroundTexture.width,
                                                                                                               body.height / backgroundTexture.height));
            GUI.Box(body, title, skin.GetStyle("WorkViewBackground"));
            if (graph != null)
            {
                float btnH = 25, btnMY = 10;
                graph.DrawGraph(e, body);
                if (GUI.Button(new Rect(0, editorRect.y + btnMY, 80, btnH), "Compile"))
                {
                    graph.Compile();
                }
                GUI.Toggle(new Rect(100, editorRect.y + btnMY, 200, btnH), graph.compiled, "Has Compiled: ");
                if (GUI.Button(new Rect(0, editorRect.y + btnH + 2 * btnMY, 80, btnH), "Save"))
                {
                    NodeUtilities.UpdateGraph(graph);
                }
                if (GUI.Button(new Rect(0, editorRect.y + 2 * (btnH + 2 * btnMY), 80, btnH), "Resize"))
                {
                    foreach (NodeBase n in graph.nodes)
                    {
                        n.Resize(true);
                    }
                }
            }

            if (SelectedPin != null)
            {
                // is a window currently showing? if so, don't constantly draw to mouse pos
                if (NCPopup != null)
                {
                    DrawConnectionToMouse(NCPopup.mouseLoc);
                }
                else if (window.nodeCreateView != null)
                {
                    DrawConnectionToMouse(window.nodeCreateView.mouseLoc);
                }
                else
                {
                    DrawConnectionToMouse(e.mousePosition);
                }
            }
        }