/*! * @file creaPanelButtonContainer.h * @brief implements PanelButtonContainer class * @author Diego CACERES (diego.caceres[AT]creatis.insa-lyon.fr) * @date 2011-06-02 */ #include "creaPanelButtonContainer.h" namespace creaPanelButtonContainer { BEGIN_EVENT_TABLE(PanelButtonContainer,wxPanel) //(*EventTable(ButtonContainerPanel) //*) END_EVENT_TABLE() // ---------------------------------------------------------------------------------- typedef creaButtonContainer::model::TConcreteFunctor< PanelButtonContainer > TConcreteFunctor; // ---------------------------------------------------------------------------------- PanelButtonContainer::PanelButtonContainer( wxWindow* parent, ButtonContainerSettings* bcSettings ) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("creaPanelButtonContainer") ) { this->m_ButtonContainerSettings = bcSettings; this->m_ButtonPanel = new wxPanel( this ); //Class that manages the cartobutton event!!! TConcreteFunctor* functor = new TConcreteFunctor( this, &PanelButtonContainer::GenericButtonEvent ); //end of the event definition this->m_ButtonContainerPanel = new ButtonContainerPanel( this, this->m_ButtonContainerSettings->GetButtonGroupSettings( functor ) ); //Using AuiManager to Manage the Panels this->m_AuiManager = new wxAuiManager( this, wxAUI_MGR_DEFAULT ); this->m_AuiManager->AddPane( this->m_ButtonPanel, wxAuiPaneInfo( ).Name( _T("ButtonPanel") ).Caption( _("Panel") ). CaptionVisible( true ).CloseButton( false ).Bottom( ).Resizable( true ) ); //CartoButtonPanel Management this->m_AuiManager->AddPane( this->m_ButtonContainerPanel, wxAuiPaneInfo( ).Name( _T("creaButtonContainer") ).Caption( _("creaButtonContainer") ). CaptionVisible( false ).CloseButton( false ).Center( ).Resizable( true ) ); this->m_AuiManager->Update( ); } // ---------------------------------------------------------------------------------- PanelButtonContainer::~PanelButtonContainer( ) { } // ---------------------------------------------------------------------------------- void PanelButtonContainer::UpdatePanel( const std::string &buttonName ) { try { //Hiding the last CartoSettingsPanel this->m_ButtonPanel->Show( false ); //Finding the CartoSettingsPanel of the ButtonClicket this->m_ButtonPanel = this->m_ButtonContainerSettings->GetPanelButton( buttonName ); //changing the parent of the panel! if ( this->m_ButtonPanel->GetParent( ) != this ) { this->m_ButtonPanel->Reparent( this ); }//fi //CartoSettingsPanel Management this->m_AuiManager->GetPane( _T("ButtonPanel") ).window = this->m_ButtonPanel; //Updating the manager this->m_AuiManager->Update( ); }//yrt catch ( const std::exception& e ) { std::cerr << "PanelButtonContainer::UpdatePanel( const std::string &buttonName )" << "exception: " << e.what( ) << std::endl; std::cout << "Maybe the panel of the button is NULL" << std::endl; exit( 1 ); }//hctac } // ---------------------------------------------------------------------------------- void PanelButtonContainer::GenericButtonEvent( const std::string &buttonName ) { this->UpdatePanel( buttonName ); } // ---------------------------------------------------------------------------------- }//ecapseman