#############################################################################
## Name:        lib/Wx/DemoModules/wxAUI.pm
## Purpose:     AUI (Advanced User Interface) demo
## Author:      Mattia Barbon
## Modified by:
## Created:     12/11/2006
## RCS-ID:      $Id: wxAUI.pm 2189 2007-08-21 18:15:31Z mbarbon $
## Copyright:   (c) 2006-2007 Mattia Barbon
## Licence:     This program is free software; you can redistribute it and/or
##              modify it under the same terms as Perl itself
#############################################################################

package Wx::DemoModules::wxAUI;

use strict;
use base qw(Wx::Frame Class::Accessor::Fast);

use Wx::AUI;
use Wx qw(:misc :frame :toolbar :textctrl :aui);
use Wx::Event qw();
use Wx::ArtProvider qw(:artid);

__PACKAGE__->mk_accessors( qw(manager) );

sub new {
    my( $class, $parent ) = @_;
    my $self = $class->SUPER::new
      ( $parent, -1, 'wxPerl AUI demo' );

    $self->manager( Wx::AuiManager->new );
    $self->manager->SetManagedWindow( $self );
    $self->SetIcon( Wx::GetWxPerlIcon );

    $self->SetSize( 500, 400 );

    my $tb1 = Wx::ToolBar->new( $self, -1, [-1, -1], [-1, -1], wxTB_FLAT );
    $tb1->AddTool( 101, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) );
    $tb1->AddTool( 102, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) );
    $tb1->AddTool( 103, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) );
    $tb1->AddTool( 104, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) );
    $tb1->Realize;

    my $tb2 = Wx::ToolBar->new( $self, -1, [-1, -1], [-1, -1], wxTB_FLAT );
    $tb2->AddTool( 101, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) );
    $tb2->AddTool( 102, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) );
    $tb2->AddTool( 103, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) );
    $tb2->AddTool( 104, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) );
    $tb2->Realize;

    $self->manager->AddPane
      ( $self->create_textctrl, Wx::AuiPaneInfo->new->Name( "text_control" )
        ->CenterPane->Position( 1 )->Resizable );
    $self->manager->AddPane
      ( $self->create_textctrl, Wx::AuiPaneInfo->new->Name( "text_control2" )
        ->CenterPane->TopDockable->BottomDockable->Floatable->Movable
        ->PinButton->Caption( "Floating" )->CaptionVisible->Float
        ->Resizable );
    $self->manager->AddPane
      ( $self->create_notebook, Wx::AuiPaneInfo->new->Name( "notebook" )
        ->CenterPane->TopDockable->BottomDockable->Floatable->Movable
        ->PinButton->Caption( "Notebook" )->CaptionVisible->Position( 2 ) );

    $self->manager->AddPane
      ( $tb1, Wx::AuiPaneInfo->new->Name( "tb1" )->Caption( "Toolbar 1" )
        ->ToolbarPane->Top->Row( 1 )->LeftDockable( 0 )->RightDockable( 0 ) );
    $self->manager->AddPane
      ( $tb2, Wx::AuiPaneInfo->new->Name( "tb2" )->Caption( "Toolbar 2" )
        ->ToolbarPane->LeftDockable( 0 )->RightDockable( 0 )->Float );

    $self->manager->Update;

    return $self;
}

sub DESTROY {
    my( $self ) = @_;

    $self->manager->UnInit;
}

my $count = 0;
sub _create_textctrl {
    my( $self, $parent, $text ) = @_;

    $text ||= sprintf "This is text box %d", ++$count;
    return Wx::TextCtrl->new( $parent, -1, $text, [0, 0], [150, 90],
                              wxNO_BORDER | wxTE_MULTILINE );
}

sub create_textctrl {
    my( $self, $text ) = @_;

    return $self->_create_textctrl( $self, $text );
}

sub create_notebook {
    my( $self ) = @_;
    my $book = Wx::AuiNotebook->new( $self, -1, [-1, -1], [300, 300],
                                     wxAUI_NB_TAB_MOVE|wxAUI_NB_TAB_SPLIT);

    my $icon = Wx::Bitmap->new( Wx::GetWxPerlIcon );
    $book->AddPage( $self->_create_textctrl( $book ),
                    "Notebook page 1", 0, $icon );
    $book->AddPage( $self->_create_textctrl( $book ),
                    "Notebook page 2", 0, $icon );
    $book->AddPage( $self->_create_textctrl( $book ),
                    "Notebook page 3", 0, $icon );

    return $book;
}

sub add_to_tags { qw(managed) }
sub title { 'AUI' }

1;