#ifndef _DMSLIDER_H
#define _DMSLIDER_H

#include "DmGuiObject.h"


/*
CLASS 
DmSlider

DESCRIPTION
Display and set a DataManager item value using a 
Motif "scale" widget

AUTHOR
Tom O'Reilly
*/
class DmSlider : public DmGuiObject {

public:

  DmSlider(const char *name, Widget parent, DmObject *dmObject,
	   int period);

  ~DmSlider();

  virtual const char *className() {
    return "DmSlider";
  }


protected:

  Boolean _sliding;
  DmObject *_dmObject;
  Widget _scaleWidget;

  ///////////////////////////////////////////////////////////////////
  // Set DataManager item value based on slider position
  virtual void setDmValue(int position) = 0;

private:

  static void sliderCallback(Widget w,
			     XtPointer clientData,
			     XtPointer callData);
};



class DmInt16Slider : public DmSlider {

public:

  DmInt16Slider(const char *name, Widget parent, DmInt16Object *dmObject,
		int period);

  ~DmInt16Slider();


  virtual const char *className() {
    return "DmInt16Slider";
  }


  virtual void updateGui(DM_Item dmItem = 0);

protected:

  ///////////////////////////////////////////////////////////////////
  // Set DataManager item value based on slider position
  virtual void setDmValue(int position);

};


#endif
