/*
 * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
 * http://www.gnu.org/licenses/lgpl-3.0.html
 */

#ifndef MULTISELECTDLG_H
#define MULTISELECTDLG_H

#include <wx/intl.h>
#include <wx/string.h>
#include <wx/dynarray.h>
#include "scrollingdialog.h"

class DLLIMPORT MultiSelectDlg : public wxScrollingDialog
{
    public:
        MultiSelectDlg(wxWindow* parent,
                       const wxArrayString& items,
                       const wxString& wildcard,
                       const wxString& label = _("Select items:"),
                       const wxString& title = _("Multiple selection"));
        MultiSelectDlg(wxWindow* parent,
                       const wxArrayString& items,
                       bool selectall = false,
                       const wxString& label = _("Select items:"),
                       const wxString& title = _("Multiple selection"));
        ~MultiSelectDlg() override;

        wxArrayString GetSelectedStrings() const;
        wxArrayInt GetSelectedIndices() const;

        void SelectWildCard(const wxString& wild, bool select = true, bool clearOld = false);
    protected:
        void Init(const wxArrayString& items, const wxString& wildcard);
        void UpdateStatus();
        void OnWildcard(wxCommandEvent& event);
        void OnToggle(wxCommandEvent& event);
        void OnSelectAll(wxCommandEvent& event);
        void OnDeselectAll(wxCommandEvent& event);
        void OnItemToggle(wxCommandEvent& event);
    private:
        DECLARE_EVENT_TABLE();
};

#endif // MULTISELECTDLG_H
