#pragma once
#include "mof/widget/Container.hpp"
#include <memory>

namespace mof
{
namespace widget
{
	class Menu;

    class scroll_view : public WidgetView
    {
    public:
        
        scroll_view
        (
            std::shared_ptr<Menu> menu
        );
    	virtual ~scroll_view();

        virtual void update( );
        virtual void draw( ) const;
        virtual void setVisible(bool visible);

        virtual FrameNumber show( bool imidiately = false ); 
        virtual FrameNumber hide( bool imidiately = false );
        virtual FrameNumber focus( bool imidiately = false ); 
        virtual FrameNumber blur( bool imidiately = false );
        virtual FrameNumber click( bool imidiately = false );
		virtual mof::Vector2D getPreferredSize() const;

        const std::shared_ptr<WidgetView> getBody() const;
        std::shared_ptr<WidgetView> getBody();
    private:
        struct impl;
		std::unique_ptr<impl> pimpl_;
	
    };

}
}
