#ifndef _JOYSTICKSETUP_H
#define _JOYSTICKSETUP_H

#include <Vk/VkOptionMenu.h>
#include "TextField.h"
#include "DmGuiObject.h"

enum
{
  JoystickSpeedMode, JoystickThrustMode
};


class JoystickSetup : public DmGuiObject
{
  public:
  JoystickSetup(const char *name, Widget parent);
  ~JoystickSetup();
  
  virtual const char *className()
  {
    return "JoystickSetup";
  }
  
  virtual void updateGui(DM_Item handle = 0);
  
  protected:
  VkOptionMenu *_mode;
  VkOptionMenu *_range;
  VkOptionMenu *_deadBand;
  TextField *_deadBandValue;
  
  static VkMenuDesc _modeMenuDesc[];
  static VkMenuDesc _rangeMenuDesc[];
  static VkMenuDesc _deadBandMenuDesc[];

  DmEnumObject *_dmMode;
  DmNat16Object *_dmRange;
  DmNat16Object *_dmDeadBand;
  DmBooleanObject *_dmSelectableRange;
  
  Widget _fullRange;
  
  void writeGainSwitch(Boolean fullRange);
  
  private:

  static void modeCallback(Widget w,
			   XtPointer clientData,
			   XtPointer callData);
  
  static void rangeCallback(Widget w,
			    XtPointer clientData,
			    XtPointer callData);


  static void deadBandCallback(Widget w,
			       XtPointer clientData,
			       XtPointer callData);  

  static void fullRangeCallback(Widget w,
				XtPointer clientData,
				XtPointer callData);  

};


#endif
