#ifndef _DMENUMSWITCH_H
#define _DMENUMSWITCH_H

#include "DmGuiObject.h"
#include <Vk/VkRadioBox.h>
#include "array.h"

/*
CLASS 
DmEnumSwitch

DESCRIPTION
Display and set a DmEnumObject item value using a 
Motif "radiobox" widget

AUTHOR
Tom O'Reilly
*/

class DmEnumSwitch : public DmGuiObject {

public:

  DmEnumSwitch(const char *name, Widget parent, DmEnumObject *dmObject,
	       int period = AperiodicGuaranteed);

  ~DmEnumSwitch();


  virtual const char *className() {
    return "DmEnumSwitch";
  }

  virtual void updateGui(DM_Item dmItem = 0);

  void addValue(char *valueName, Int32 value);

protected:

  struct WidgetValue {
    Widget widget;
    Int32 value;
  };

  DmEnumObject *_dmObject;

  ///////////////////////////////////////////////////////////////////
  // Set data manager object, with value corresponding to specified 
  // widget
  void setValue(Widget widget);

  ///////////////////////////////////////////////////////////////////
  // Display data manager object value, by setting corresponding widget
  virtual void displayValue(Int32 value);

  VkRadioBox *_radioBox;

  // Table of widgets and their corresponding enum values
  DynArray<WidgetValue *> _widgetValues;


private:

  static void toggleCallback(Widget w, 
			     XtPointer clientData,
			     XtPointer callData);

};


#endif
