//
// $Source: /cvsroot/gambit/gambit/sources/gui/dlefglegend.cc,v $
// $Date: 2005/12/12 07:17:05 $
// $Revision: 1.8 $
//
// DESCRIPTION:
// Declaration of dialog to set tree layout parameters
//
// This file is part of Gambit
// Copyright (c) 2002, The Gambit Project
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//

#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif  // WX_PRECOMP

#include "dlefglegend.h"


//==========================================================================
//                 class gbtLegendDialog: Implementation
//==========================================================================

gbtLegendDialog::gbtLegendDialog(wxWindow *p_parent,
			   const gbtStyle &p_options)	
  : wxDialog(p_parent, -1, _("Labels"), wxDefaultPosition)
{
  wxStaticBoxSizer *nodeGroup = 
    new wxStaticBoxSizer(new wxStaticBox(this, -1, _("Node labeling")),
			 wxVERTICAL);

  wxString nodeLabelList[] = { _("no label"), 
			       _("the node's label"), 
			       _("the player's name"),
			       _("the information set's label"),
			       _("the information set's number"),
			       _("the realization probability"),
			       _("the belief probability"),
			       _("the payoff of reaching the node") };

  wxBoxSizer *nodeAboveSizer = new wxBoxSizer(wxHORIZONTAL);
  nodeAboveSizer->Add(new wxStaticText(this, wxID_STATIC,
				       _("Display")),
		      0, wxALL | wxALIGN_CENTER, 5);
  m_nodeAbove = new wxChoice(this, -1,
			     wxDefaultPosition, wxDefaultSize,
			     8, nodeLabelList);
  m_nodeAbove->SetSelection(p_options.NodeAboveLabel());
  nodeAboveSizer->Add(m_nodeAbove, 1, wxALL | wxALIGN_CENTER, 5);
  nodeAboveSizer->Add(new wxStaticText(this, wxID_STATIC,
				       _("above each node")),
		      0, wxALL | wxALIGN_CENTER, 5);
  nodeGroup->Add(nodeAboveSizer, 0, wxALL | wxEXPAND, 5);

  wxBoxSizer *nodeBelowSizer = new wxBoxSizer(wxHORIZONTAL);
  nodeBelowSizer->Add(new wxStaticText(this, wxID_STATIC,
				       _("Display")),
		      0, wxALL | wxALIGN_CENTER, 5);
  m_nodeBelow = new wxChoice(this, -1,
			     wxDefaultPosition, wxDefaultSize,
			     8, nodeLabelList);
  m_nodeBelow->SetSelection(p_options.NodeBelowLabel());
  nodeBelowSizer->Add(m_nodeBelow, 1, wxALL | wxALIGN_CENTER, 5);
  nodeBelowSizer->Add(new wxStaticText(this, wxID_STATIC,
				       _("below each node")),
		      0, wxALL | wxALIGN_CENTER, 5);
  nodeGroup->Add(nodeBelowSizer, 0, wxALL | wxEXPAND, 5);


  wxStaticBoxSizer *actionGroup = 
    new wxStaticBoxSizer(new wxStaticBox(this, -1, _("Action labeling")),
			 wxVERTICAL);

  wxString actionLabelList[] = { _("no label"), 
				 _("the name of the action"),
				 _("the probability the action is played"), 
				 _("the value of the action") };

  wxBoxSizer *actionAboveSizer = new wxBoxSizer(wxHORIZONTAL);
  actionAboveSizer->Add(new wxStaticText(this, wxID_STATIC,
					 _("Display")),
		      0, wxALL | wxALIGN_CENTER, 5);
  m_actionAbove = new wxChoice(this, -1,
			       wxDefaultPosition, wxDefaultSize,
			       4, actionLabelList);
  m_actionAbove->SetSelection(p_options.BranchAboveLabel());
  actionAboveSizer->Add(m_actionAbove, 1, wxALL | wxALIGN_CENTER, 5);
  actionAboveSizer->Add(new wxStaticText(this, wxID_STATIC,
					 _("above each action")),
		      0, wxALL | wxALIGN_CENTER, 5);
  actionGroup->Add(actionAboveSizer, 0, wxALL | wxEXPAND, 5);

  wxBoxSizer *actionBelowSizer = new wxBoxSizer(wxHORIZONTAL);
  actionBelowSizer->Add(new wxStaticText(this, wxID_STATIC,
					 _("Display")),
		      0, wxALL | wxALIGN_CENTER, 5);
  m_actionBelow = new wxChoice(this, -1,
			       wxDefaultPosition, wxDefaultSize,
			       4, actionLabelList);
  m_actionBelow->SetSelection(p_options.BranchBelowLabel());
  actionBelowSizer->Add(m_actionBelow, 1, wxALL | wxALIGN_CENTER, 5);
  actionBelowSizer->Add(new wxStaticText(this, wxID_STATIC,
					 _("below each action")),
		      0, wxALL | wxALIGN_CENTER, 5);
  actionGroup->Add(actionBelowSizer, 0, wxALL | wxEXPAND, 5);

  wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
  topSizer->Add(nodeGroup, 0, wxEXPAND | wxALL, 5);
  topSizer->Add(actionGroup, 0, wxEXPAND | wxALL, 5);

  wxBoxSizer *buttonSizer = new wxBoxSizer(wxHORIZONTAL);
  buttonSizer->Add(new wxButton(this, wxID_CANCEL, _("Cancel")), 0, wxALL, 5);
  wxButton *okButton = new wxButton(this, wxID_OK, _("OK"));
  okButton->SetDefault();
  buttonSizer->Add(okButton, 0, wxALL, 5);
  topSizer->Add(buttonSizer, 0, wxALL | wxALIGN_RIGHT, 5);

  SetSizer(topSizer);
  topSizer->Fit(this);
  topSizer->SetSizeHints(this);
  Layout();
  CenterOnParent();
}


syntax highlighted by Code2HTML, v. 0.9.1