// $Id: gc_migtab.h,v 1.4 2018/01/03 21:32:59 mkkuhner Exp $

/*
Copyright 2002-2005 Mary K. Kuhner, Peter Beerli, and Joseph Felsenstein

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/

/* Authors: Mary Kuhner, Jon Yamato, and Joseph Felsenstein */


/* NOTE:  8/29/2014 Mary edited gc_migtab.cpp to reverse the sense
of "from" and "to" in the migration matrix, since it was producing
XML files that were backwards to what LAMARC assumes.  She did NOT
change variable names or anything else to match, so there are probably
misleading variable names in this part of the converter and in the
corresponding XML output routines.  Maintainers beware!  DEBUG */

#ifndef GC_MIGTAB_H
#define GC_MIGTAB_H

#include "gc_clickpanel.h"
#include "gc_gridpanel.h"

class wxWindow;


class gcMigCell : public gcClickCell
{
  private:
    gcMigCell();            // undefined
    size_t                  m_cellId;
    matrix_cell_type        m_cellType;

  protected:
  public:
    gcMigCell(wxWindow * parent, GCStructures & st_var, const size_t cellId, matrix_cell_type cellType);
    ~gcMigCell();

    void        ToDataStore(GCStructures & st_var, wxString newText);

    size_t       GetCellId();
    matrix_cell_type   GetCellType();

    void    NotifyLeftDClick();
};

class gcDivCell : public gcClickCell
{
  private:
    gcDivCell();            // undefined
    size_t                  m_cellId;
    matrix_cell_type        m_cellType;

  protected:
  public:
    gcDivCell(wxWindow * parent, GCStructures & st_var, const size_t cellId, bool isParent, matrix_cell_type cellType);
    ~gcDivCell();

    void        ToDataStore(GCStructures & st_var, wxString newText);

    size_t       GetCellId();
    matrix_cell_type   GetCellType();

    void    NotifyLeftDClick();
};

class gcMigTab : public gcInfoPane
{
  private:
    gcMigTab();        // undefined
    wxWindow *         m_parent;

  protected:
    wxPanel *   MakeContent();
    wxString    MakeLabel();

  public:
    gcMigTab(wxWindow * parent, GCLogic & logic);
    virtual ~gcMigTab();
};

#endif  // GC_MIGTAB_H

//____________________________________________________________________________________
