public override void UpdateView(Rect editorRect, Rect percentageRect, Event e, NodeGraph nodeGraph)
    {
        base.UpdateView(editorRect, percentageRect, e, nodeGraph);

        if(currentTimelineView == null)
            currentTimelineView = new NodeTimelineView();

        if (currentNodeGraph != null)
        {
            viewTitle = currentNodeGraph.graphName;
            currentNodeGraph.isInsidePropertyView = isInsidePropertyView;
            currentNodeGraph.zoom = _zoom;
            currentNodeGraph.panX = panX;
            currentNodeGraph.panY = panY;
            currentNodeGraph.typesOfNodes = typesOfNodes;
        }
        else{   viewTitle = "No Graph Loaded.";     }

        workSpaceRect = new Rect(panX + (editorRect.x / _zoom), panY, 10000, 10000);

        EditorZoomArea.Begin(_zoom, _zoomArea);

        GUI.BeginGroup(workSpaceRect);
        GUI.Box(new Rect(0, 0, 10000, 10000), viewTitle, viewSkin.GetStyle("bg_view"));

        //Draw a Grid
        DrawUtilities.DrawGrid(new Rect(0, 0, 10000, 10000), WorkPreferences.gridSpacingDark, WorkPreferences.gridColorOuter);
        DrawUtilities.DrawGrid(new Rect(0, 0, 10000, 10000), WorkPreferences.gridSpacingLight, WorkPreferences.gridColorInner);

        GUILayout.BeginArea(new Rect(0, 0, 10000, 10000));

        if (currentNodeGraph != null)
        {
            currentNodeGraph.UpdateGraphGUI(e, viewRect, new Rect(0, 0, 10000, 10000), viewSkin);
        }

        DrawStepOutOfNode(viewRect);

        GUILayout.EndArea();

        currentTimelineView.UpdateView(new Rect(panX, -panY + (viewRect.height / _zoom) - (50f / _zoom), 10000, 50f / _zoom),
                new Rect(0f, 1f, 1f, 1f), e, currentNodeGraph);
        currentTimelineView.ProcessEvents(e);

        EditorZoomArea.End();
        GUI.EndGroup();
    }
 public NodeWorkView() : base("Node View") {
     currentTimelineView = new NodeTimelineView();
     typesOfNodes = XMLUtilities.getNodeTypes();
 }