root/src/apps/debugger/user_interface/gui/team_settings_window/TeamSettingsWindow.cpp
/*
 * Copyright 2013-2016, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */
#include "TeamSettingsWindow.h"

#include <Button.h>
#include <LayoutBuilder.h>
#include <TabView.h>

#include "AppMessageCodes.h"
#include "ExceptionStopConfigView.h"
#include "ImageStopConfigView.h"
#include "SignalsConfigView.h"


TeamSettingsWindow::TeamSettingsWindow(::Team* team,
        UserInterfaceListener* listener, BHandler* target)
        :
        BWindow(BRect(), "Team settings", B_TITLED_WINDOW,
                B_AUTO_UPDATE_SIZE_LIMITS | B_CLOSE_ON_ESCAPE),
        fTeam(team),
        fListener(listener),
        fCloseButton(NULL),
        fTarget(target)
{
}


TeamSettingsWindow::~TeamSettingsWindow()
{
        BMessenger(fTarget).SendMessage(MSG_TEAM_SETTINGS_WINDOW_CLOSED);
}


TeamSettingsWindow*
TeamSettingsWindow::Create(::Team* team,
        UserInterfaceListener* listener, BHandler* target)
{
        TeamSettingsWindow* self = new TeamSettingsWindow(
                team, listener, target);

        try {
                self->_Init();
        } catch (...) {
                delete self;
                throw;
        }

        return self;
}


void
TeamSettingsWindow::Show()
{
        CenterOnScreen();
        BWindow::Show();
}


void
TeamSettingsWindow::_Init()
{
        BTabView* tabView = new BTabView("config tab view");
        BLayoutBuilder::Group<>(this, B_VERTICAL)
                .SetInsets(B_USE_DEFAULT_SPACING)
                .Add(tabView)
                .AddGroup(B_HORIZONTAL)
                        .AddGlue()
                        .Add(fCloseButton = new BButton("Close", new BMessage(
                                        B_QUIT_REQUESTED)))
                .End();

        SignalsConfigView* signalsView = SignalsConfigView::Create(fTeam,
                fListener);
        tabView->AddTab(signalsView);
        ImageStopConfigView* imageView = ImageStopConfigView::Create(fTeam,
                fListener);
        tabView->AddTab(imageView);
        ExceptionStopConfigView* exceptionView = ExceptionStopConfigView::Create(
                fTeam, fListener);
        tabView->AddTab(exceptionView);

        fCloseButton->SetTarget(this);
}