#include <sdk.h>
#include <wx/intl.h>
#include <wx/msgdlg.h>
#include <manager.h>
#include <messagemanager.h>
#include "compilererrors.h"
#include "compilermessages.h"

/*int idMessagesList = wxNewId();*/

BEGIN_EVENT_TABLE(CompilerMessages, SimpleListLog)

END_EVENT_TABLE()

CompilerMessages::CompilerMessages(wxNotebook* parent, const wxString& title, int numCols, int widths[], const wxArrayString& titles)
    : SimpleListLog(parent, title, numCols, widths, titles)
{
	//ctor
    int id = m_pList->GetId();
    Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_SELECTED,
            (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction)
            &CompilerMessages::OnClick);
    Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
            (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction)
            &CompilerMessages::OnDoubleClick);
}

CompilerMessages::~CompilerMessages()
{
	//dtor
}

void CompilerMessages::FocusError(int nr)
{
    m_pList->SetItemState(nr, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
    m_pList->EnsureVisible(nr);
}

void CompilerMessages::OnClick(wxCommandEvent& event)
{
    // single and double-click, behave the same

    // a compiler message has been clicked
    // go to the relevant file/line
    if (m_pList->GetSelectedItemCount() == 0 || !m_pErrors)
        return;

    // find selected item index
    int index = m_pList->GetNextItem(-1,
                                     wxLIST_NEXT_ALL,
                                     wxLIST_STATE_SELECTED);

    // call the CompilerErrors* ptr; it 'll do all the hard work ;)
    m_pErrors->GotoError(index);
}

void CompilerMessages::OnDoubleClick(wxCommandEvent& event)
{
    // single and double-click, behave the same
    OnClick(event);
    return;
}


syntax highlighted by Code2HTML, v. 0.9.1