text: ﻿//========= Copyright Valve Corporation, All rights reserved. ============//
  //
  // Purpose: 
  //
  // $NoKeywords: $
  //
  //=============================================================================//
  
  #ifndef BASEATTRIBUTEDOUBLECHOICEPANEL_H
  #define BASEATTRIBUTEDOUBLECHOICEPANEL_H
  
  #ifdef _WIN32
  #pragma once
  #endif
  
  #include "dme_controls/BaseAttributePanel.h"
  
  
  //-----------------------------------------------------------------------------
  // Forward declarations
  //-----------------------------------------------------------------------------
  class CDmElement;
  struct AttributeWidgetInfo_t;
  
  namespace vgui
  {
  	class IScheme;
  	class Panel;
  	class Label;
  	class ComboBox;
  }
  
  //-----------------------------------------------------------------------------
  // Purpose: Helper to horizontally lay out the two child combo boxes used by
  //  CBaseAttributeDoubleChoicePanel below
  //-----------------------------------------------------------------------------
  class CDoubleComboBoxContainerPanel : public vgui::Panel
  {
  	DECLARE_CLASS_SIMPLE( CDoubleComboBoxContainerPanel, vgui::Panel );
  public:
  	CDoubleComboBoxContainerPanel( vgui::Panel *parent, char const *name );
  	void AddComboBox( int slot, vgui::ComboBox *box );
  
  private:
  
  	virtual void PerformLayout();
  
  	vgui::ComboBox	*m_pBoxes[ 2 ];
  };
  
  //-----------------------------------------------------------------------------
  // CBaseAttributeDoubleChoicePanel (similar to CBaseAttributeChoicePanel, but with side by side combo boxes)
  //-----------------------------------------------------------------------------
  class CBaseAttributeDoubleChoicePanel : public CBaseAttributePanel
  {
  	DECLARE_CLASS_SIMPLE( CBaseAttributeDoubleChoicePanel, CBaseAttributePanel );
  
  public:
  	CBaseAttributeDoubleChoicePanel( vgui::Panel *parent,	const AttributeWidgetInfo_t &info );
  
  	virtual void PostConstructor();
  	virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  
  protected:
  	virtual void Refresh();
  
  private:
  	// Derived classes can re-implement this to fill the combo box however they like
  	virtual void PopulateComboBoxes( vgui::ComboBox *pComboBox[2] ) = 0;
  	virtual void SetAttributeFromComboBoxes( vgui::ComboBox *pComboBox[2], KeyValues *pKeyValues[ 2 ] ) = 0;
  	virtual void SetComboBoxesFromAttribute( vgui::ComboBox *pComboBox[2] ) = 0;
  
  	MESSAGE_FUNC_PTR( OnTextChanged, "TextChanged", panel );
  
  	virtual void Apply();
  	virtual vgui::Panel *GetDataPanel();
  
  	CDoubleComboBoxContainerPanel		*m_pContainerPanel;
  	vgui::ComboBox	*m_pData[2];
  };
  
  
  #endif // BASEATTRIBUTEDOUBLECHOICEPANEL_H
  