// return the height of this gui area
        public static void OnGUI(Rect footerRect, AXNodeGraphEditorWindow editor)
        {
            Event e = Event.current;

            AXModel model = editor.model;



            float statusBarY = footerRect.y;

            GUI.Box(footerRect, GUIContent.none);

            float bSize = 32;

            Rect vButtonRect = new Rect(4, statusBarY - 3, bSize, bSize);


            GUIStyle s        = new GUIStyle(EditorStyles.label);
            Color    oldColor = s.normal.textColor;

            s.alignment        = TextAnchor.MiddleLeft;
            s.normal.textColor = ArchimatixEngine.AXGUIColors["GrayText"];
            s.fixedWidth       = 120;

            Color vcolor = Color.white;

            vcolor.a = .5f;

            GUI.color = vcolor;
            GUI.Label(vButtonRect, "AX v" + ArchimatixEngine.version, s);
            GUI.color = Color.white;



            Rect mButtonRect = new Rect(90, statusBarY, bSize, bSize);
            Rect tooltipRect = new Rect(mButtonRect.x - 10, statusBarY - 25, 100, bSize);

            GUIStyle labelstyle = GUI.skin.GetStyle("Label");

            labelstyle.alignment = TextAnchor.MiddleLeft;

            Color prevGUIColor = GUI.color;

            Color gcol = GUI.color;

            GUI.backgroundColor = Color.gray;

            tooltipRect.x = mButtonRect.x - 10;
            // BUTTON: Close All Controls
            if (mButtonRect.Contains(Event.current.mousePosition))             // TOOLTIP
            {
                gcol.a = .8f;
                GUI.Label(tooltipRect, "Close All Controls");
            }
            else
            {
                gcol.a = .5f;
            }
            GUI.color = gcol;
            if (GUI.Button(mButtonRect, editor.CloseAllControlsIcon))
            {
                editor.closeAllControls();
            }


            // BUTTON: Close All Tools
            mButtonRect.x += bSize + 3;
            tooltipRect.x  = mButtonRect.x - 10;

            if (mButtonRect.Contains(Event.current.mousePosition))            // TOOLTIP
            {
                gcol.a    = .8f;
                GUI.color = gcol;
                GUI.Label(tooltipRect, "Close All Tools");
            }
            else
            {
                gcol.a = .5f;
            }
            GUI.color = gcol;
            if (GUI.Button(mButtonRect, editor.CloseAllToolsIcon))
            {
                editor.closeTools();
            }


            // BUTTON: Show All Nodes
            mButtonRect.x += bSize + 3;
            tooltipRect.x  = mButtonRect.x - 10;

            if (mButtonRect.Contains(Event.current.mousePosition))            // TOOLTIP
            {
                gcol.a    = .8f;
                GUI.color = gcol;
                GUI.Label(tooltipRect, "Show All Nodes");
            }
            else
            {
                gcol.a = .5f;
            }
            GUI.color = gcol;
            if (GUI.Button(mButtonRect, editor.ShowAllNodesIcon))
            {
                foreach (AXParametricObject po in model.parametricObjects)
                {
                    po.isOpen = true;
                }
            }


            // zoomScale

            mButtonRect.x    += bSize + 3;
            tooltipRect.x     = mButtonRect.x - 10;
            mButtonRect.width = 45;
            if (mButtonRect.Contains(Event.current.mousePosition))            // TOOLTIP
            {
                gcol.a    = .8f;
                GUI.color = gcol;
                GUI.Label(tooltipRect, "Zoom Scale");
            }
            else
            {
                gcol.a = .5f;
            }
            GUI.color = gcol;
            if (GUI.Button(mButtonRect, ("" + (model.zoomScale * 100)) + "%"))
            {
                editor.zoomScale = 1;
                model.zoomScale  = 1;
                editor.Repaint();
            }



            GUI.color = prevGUIColor;


            //GUI.Label (new Rect (position.width / 2, statusBarY + 10, 100, 20), "Archimatix v " + ArchimatixEngine.version);



            if (model != null)
            {
                //Debug.Log("model.stats_TriangleCount="+model.stats_TriangleCount);
                EditorGUI.LabelField(new Rect(editor.position.width - 335, statusBarY + 7, 100, 20), "Vertices: " + model.stats_VertCount, s);
                EditorGUI.LabelField(new Rect(editor.position.width - 230, statusBarY + 7, 100, 20), "Triangles: " + model.stats_TriangleCount, s);



                EditorGUI.BeginChangeCheck();
                EditorGUIUtility.labelWidth = 70;
                //model.segmentReductionFactor = EditorGUI.Slider( new Rect(position.width-120, statusBarY+7, 115, 20), "Detail Level", model.segmentReductionFactor, 0, 1);
                model.segmentReductionFactor = EditorGUI.Slider(new Rect(editor.position.width - 120, statusBarY + 7, 115, 20), "Detail Level", model.segmentReductionFactor, 0, 1);
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RegisterCompleteObjectUndo(model, "Segment Reduction");
                    model.isAltered();
                }
            }

            Handles.BeginGUI( );
            Handles.color = Color.gray;
            Handles.DrawLine(
                new Vector3(0, statusBarY, 0),
                new Vector3(editor.position.width, statusBarY, 0));
            Handles.EndGUI();


            s.normal.textColor = oldColor;
        }