#ifndef _ALARMACTIONSETUP_H
#define _ALARMACTIONSETUP_H
static char AlarmActionSetup_h_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/AlarmActionSetup.h,v 1.2 1997/05/30 15:42:31 oreilly Exp $";

/*
$Log: AlarmActionSetup.h,v $
Revision 1.2  1997/05/30 15:42:31  oreilly
Added sticky alarms

 * Revision 1.1  96/10/28  09:13:10  09:13:10  oreilly (Thomas C. O'Reilly)
 * Initial revision
 * 
*/

#include <Vk/VkComponent.h>
#include "FriendlyWindow.h"
#include "Alarm.h"
#include "AlarmEditor.h"

/*
ActionSetupPanel provides GUI for user control of alarm actions
*/
class ActionSetupPanel : public VkComponent 
{
  public:
  
  ActionSetupPanel(const char *name, Widget Parent, int *alarmActionBits);
  ~ActionSetupPanel()
  {
  }
  
  const char *className()
  {
    return "ActionSetupPanel";
  }

  void alarmActions(int *actionBits)
  {
    for (int i = 0; i < NPriorityLevels; i++)
      actionBits[i] = _actionBits[i];
  }

  void setOkCallback(XtCallbackProc callback, XtPointer clientData);
  
  void setCancelCallback(XtCallbackProc callback, XtPointer clientData)
  {
    XtAddCallback(_cancel, XmNactivateCallback, callback, clientData);
  }
  
  
  protected:
  Widget _actionToggle[NPriorityLevels][NAlarmActions];
  int _actionBits[NPriorityLevels];
  void setAlarmActions();
  Widget _ok;
  Widget _cancel;
  
  private:
  static void actionToggleCallback(Widget w, XtPointer clientData,
				   XtPointer callData);
};


class ActionSetupWindow : public FriendlyWindow 
{
  public:
  ActionSetupWindow(const char *name, int *alarmActionBits);
  ~ActionSetupWindow()
  {
  }

  const char *className()
  {  
    return "ActionSetupWindow";
  }


  void setOkCallback(XtCallbackProc callback, XtPointer clientData)
  {
    panel->setOkCallback(callback, clientData);
  }

  void setCancelCallback(XtCallbackProc callback, XtPointer clientData)
  {
    panel->setCancelCallback(callback, clientData);
  }
  
  void alarmActions(int *actionBits)
  {
    panel->alarmActions(actionBits);
  }

  void setWindowDeleteCallback(XtCallbackProc callback, XtPointer clientData)
  {
  }
  
  ActionSetupPanel *panel;

};

 
#endif
