#ifndef _BUTTONGROUP_H
#define _BUTTONGROUP_H

#include <Vk/VkComponent.h>
#include "array.h"

/*
ButtonGroup contains multiple xmPushButtonWidgets. The labels for each
button appear *inside* the buttons, unlike the standard Motif checkbox
and radiobox stuff.
*/
class ButtonGroup : public VkComponent
{
  public:
  
  typedef enum
  {
    FillVertical, FillHorizontal

  } FillDirection;
  
  
  ButtonGroup(const char *name, Widget parent, 
	      Boolean radioBehavior = False,
	      FillDirection fillDirection = FillHorizonal,
	      int fillLimit);


  void add(const char *name);
  void select(int buttonNumber);
  void unselect(int buttonNumber);
  Boolean selected(int buttonNumber);


  protected:

  struct Button
  {
    Widget widget;
    Boolean selected;
  };
  
  DynArray<Button *> _buttons;
  Boolean _radioBehavior;
  
  private:
  static void buttonPushCallback(Widget w, 
				 XtPointer clientData,
				 XtPointer callData);
};

