//
// C++ Implementation: gplane
//
// Description: 
//
//
// Author: Andre Roth <andre@dreamlab.net>, (C) 2005
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "gplane.h"
#include "wxg.h"
#include "graphicscontext.h"

using namespace goeland_wx;

BEGIN_EVENT_TABLE( gPlane, wxScrolledWindow )
        EVT_PAINT       ( gPlane::OnPaint )
        EVT_LEFT_DOWN   ( gPlane::OnMouseLeftDown )
        EVT_LEFT_UP     ( gPlane::OnMouseLeftUp )
        EVT_MOTION      ( gPlane::OnMouseMove )
END_EVENT_TABLE( )

gPlane::gPlane( wxGFrame *frame, wxWindowID id, const wxPoint &pos, const wxSize &size )
 : wxScrolledWindow( (wxWindow *) frame, id, pos, size, wxSUNKEN_BORDER)
{
        SetBackgroundColour( *wxWHITE );
        this->frame = frame;

}


gPlane::~gPlane()
{
}


void gPlane::OnMouseLeftDown( wxMouseEvent &event )
{
        int x = event.GetX( ), y = event.GetY( );
        printf( "Mouse Down\n" );
        frame->leonardo->ButtonPressed( 1, x, y, event.m_shiftDown );

/*      wxPaintDC dc( this );
        if( pointer_x >= 0 )
        {
                dc.SetPen( *wxWHITE_PEN );
                dc.SetBrush( *wxWHITE_BRUSH );
                dc.DrawRectangle( pointer_x, pointer_y, 25, 25 );
        }*/
}


void gPlane::OnMouseLeftUp( wxMouseEvent &event )
{
        int x = event.GetX( ), y = event.GetY( );
        printf( "Mouse Up\n" );
        frame->leonardo->ButtonReleased( 1, x, y, event.m_shiftDown );
}

void gPlane::OnMouseMove( wxMouseEvent &event )
{
        int x = event.GetX( ), y = event.GetY( );
//      printf( "Mouse Move\n" );
        frame->leonardo->Motion( x, y, event.m_shiftDown );
}

void gPlane::OnPaint( wxPaintEvent &WXUNUSED(event) )
{
        printf( "OnPaint\n" );
        goeland_base::GraphicsContext *gc = frame->leonardo->getGraphicsContext();
        if( gc )
        {
                gc->Start();
                frame->leonardo->draw( *gc );
                gc->Stop();
        }
}