#include <Xm/Form.h>
#include "TableForm.h"

TableRowForm::TableRowForm(const char *name, Widget parent, 
			   int nColumns)
  : VkComponent(name)
{
  const int fractionBase = 1000;
  
  _baseWidget = XtVaCreateWidget(name, xmFormWidgetClass, parent, 
				 XmNfractionBase, fractionBase, NULL);

  if (!nColumns)
  { 
    setError("TableRowForm::TableRowForm() - nColumns = 0");
    return;
  }

  _nColumns = nColumns;
  
  _spacing = fractionBase / nColumns;

  _nAppended = 0;
}


TableRowForm::~TableRowForm()
{
}


int TableRowForm::append(Widget w)
{
  XtVaSetValues(w, 
		XmNtopAttachment, XmATTACH_FORM,
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, (_nAppended * _spacing),
		NULL);
  
  if (_nAppended++ > _nColumns)
    return -1;
  else
    return 0;
}


int TableRowForm::append(VkComponent *component)
{
  int ret = append(component->baseWidget());
  component->show();
  return ret;
}



int TableRowForm::attach(int column, Widget w)
{
  XtVaSetValues(w, 
		XmNtopAttachment, XmATTACH_FORM,
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, (column * _spacing),
		NULL);
  
  if (column < 0 || column >= _nColumns)
    return -1;
  else
    return 0;
}


int TableRowForm::attach(int column, VkComponent *component)
{
  int ret = attach(column, component->baseWidget());
  component->show();
  return ret;
}



