void ThreadSearchLoggerList::Update()
{
    ThreadSearchLoggerBase::Update();

    // Adds/Removes listview header and adds/removes vertical rules
    m_pListLog->SetSingleStyle(wxLC_NO_HEADER, !m_ThreadSearchPlugin.GetDisplayLogHeaders());
    m_pListLog->SetSingleStyle(wxLC_VRULES,     m_ThreadSearchPlugin.GetDrawLogLines());
    SetListColumns();
}
//
//OnRefreshProgram
//
BOOL CProgramProperties::OnRefreshProgram()
{
    BOOL bResult = FALSE;

    if(!OnUpdate())
        return FALSE;


    if(m_pDemux != NULL && m_pGraphBuilder != NULL){

            if(m_number_of_programs != 0){
            PopulateTransportStreamInfo();
            SetListColumns();
            AddListViewItems();
            SetEsListColumns();
        }
    }

    return TRUE;

} //OnRefreshProgram
ThreadSearchLoggerList::ThreadSearchLoggerList(ThreadSearchView& threadSearchView,
                                               ThreadSearch& threadSearchPlugin,
                                               InsertIndexManager::eFileSorting fileSorting,
                                               wxPanel* pParent,
                                               long id)
                       : ThreadSearchLoggerBase(threadSearchView, threadSearchPlugin, fileSorting),
                       m_IndexOffset(0),
                       m_SortColumn(-1),
                       m_Ascending(true)
{
    m_pListLog = new wxListCtrl(pParent, id, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER);
    m_pListLog->SetMinSize(wxSize(100,100));

    int size = Manager::Get()->GetConfigManager(_T("message_manager"))->ReadInt(_T("/log_font_size"), platform::macosx ? 10 : 8);
    wxFont default_font(size, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
    m_pListLog->SetFont(default_font);

    SetListColumns();

    // Events are managed dynamically to be able to stop/start management when required.
    ConnectEvents(pParent);
}
//
// OnReceiveMessage
//
// Virtual method called by base class with Window messages
//
INT_PTR CProgramProperties::OnReceiveMessage(HWND hwnd,
                                           UINT uMsg,
                                           WPARAM wParam,
                                           LPARAM lParam)
{
    switch(uMsg)
    {
        case WM_INITDIALOG:
        {
            m_hwndDialog = hwnd;
            PopulateTransportStreamInfo( );

            m_hwndProgList = GetDlgItem (hwnd, IDC_PROGLIST) ;
            ASSERT(m_hwndProgList);

            m_hwndEsList = GetDlgItem (hwnd, IDC_ES_LIST) ;
            ASSERT(m_hwndEsList);

            // populate program list
            SetListColumns();
            AddListViewItems();

            // set elementary stream list
            SetEsListColumns();

            return TRUE;
        }

        case WM_DESTROY:
        {
            DestroyWindow(m_hwndDialog);
            return TRUE;
        }

        case WM_COMMAND:
        {

            switch (LOWORD (wParam)) {

                case IDC_VIEWBUTTON :
                    OnViewProgram () ;
                    m_bAvStreaming = TRUE;
                    break ;

                case IDC_REFRESHBUTTON :
                    OnRefreshProgram () ;
                    break ;

                case IDC_STOPBUTTON :
                    if(m_bAvStreaming == TRUE){
                        UnmapAvPIDs();
                        m_bAvStreaming = FALSE;
                    }
                    break ;
            };
            return TRUE;
        }

        case WM_NOTIFY:
        {
            switch (wParam)
            {
                 case IDC_PROGLIST:

                    LPNM_LISTVIEW   pnlv = (LPNM_LISTVIEW)lParam;
                    BOOL itemSelected = FALSE;
                    WORD program_number;
                    UINT ii;

                    switch (pnlv->hdr.code)
                    {
                        case NM_CLICK:

                            ii = ListView_GetItemCount(m_hwndProgList);
                            for(; ii; ii--)
                            {
                                if(0!= ListView_GetItemState(
                                        m_hwndProgList,
                                        ii-1,
                                        LVIS_SELECTED))
                                break;
                            }


                            TCHAR szTmp[MAX_LEN];
                            ListView_GetItemText( m_hwndProgList,
                                                  ii-1,
                                                  0, // first column
                                                  szTmp,
                                                  MAX_LEN);
                            program_number = (WORD) _wtoi(szTmp);
                            Dump1(TEXT("selected program number = %s\n"), szTmp);
                            Dump1(TEXT("selected program number = %#x\n"), program_number);

                            SetEsListColumns();
                            AddEsListViewItems( program_number);

                            break;

                        default:
                            break;
                    }

                    return TRUE;

            } // end switch (wParam)
        }

        default:
            return FALSE;
    }

    return TRUE;

} // OnReceiveMessage