/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield 
 *
 * This library is open source and may be redistributed and/or modified under  
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 
 * (at your option) any later version.  The full license is in LICENSE file
 * included with this distribution, and on the openscenegraph.org website.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 * OpenSceneGraph Public License for more details.
*/

#ifndef OSGGA_SETSCENEVIEWGEHVISITOR
#define OSGGA_SETSCENEVIEWGEHVISITOR 1

#include <osgGA/GUIEventHandlerVisitor>
#include <osgUtil/SceneView>

namespace osgGA{

// Some forward declarations
class GUIEventHandler;
class MatrixManipulator;

/**
SetSceneViewGUIEventHandlerVisitor which visits various types of
GUIEventHandler and sets them up appropriately, given a new scene
view.
*/
class OSGGA_EXPORT SetSceneViewVisitor: public GUIEventHandlerVisitor
{
    public:

        SetSceneViewVisitor(GUIEventAdapter* in,
                               GUIActionAdapter* out,
                               osgUtil::SceneView* sv):
                               GUIEventHandlerVisitor(in,out),
                               _sceneView(sv) {}
 
        virtual ~SetSceneViewVisitor()         {}

        virtual void visit(MatrixManipulator& cm);
        virtual void visit(StateSetManipulator& cm);

    private:

        osg::ref_ptr<osgUtil::SceneView> _sceneView;

};

};

#endif
