#include <Xm/RowColumn.h>
#include <Xm/Form.h>
#include <Xm/ScrollBar.h>
#include <Xm/Label.h>
#include "Dimmers.h"

Dimmers::Dimmers(const char *name, Widget parent)
  : DmGuiObject(name, parent)
{
  _baseWidget = XtVaCreateWidget(name, xmRowColumnWidgetClass, parent, 
				 XmNorientation, XmHORIZONTAL,
				 NULL);
  installDestroyHandler();
  
  Widget portColumn = 
    XtVaCreateWidget("portColumn", xmFormWidgetClass, _baseWidget, NULL);

  Widget stbdColumn = 
    XtVaCreateWidget("stbdColumn", xmFormWidgetClass, _baseWidget, NULL);

  const int sliderSize = 10;
  const int lightMinimum = 50;
  const int lightMaximum = 100;
  
  Widget nameLabel = 
    XtVaCreateManagedWidget("portFixedLabel", xmLabelWidgetClass,
			    portColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_FORM,
			    NULL);
  
  _portFixed =
    XtVaCreateManagedWidget("portFixed", xmScrollBarWidgetClass, 
			    portColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);

  _portFixedValue = 
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, portColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _portFixed,
			    NULL);

  nameLabel = 
    XtVaCreateManagedWidget("portDirLabel", xmLabelWidgetClass,
			    portColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, _portFixed,
			    NULL);
  
  _portDir =
    XtVaCreateManagedWidget("portDir", xmScrollBarWidgetClass, 
			    portColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);

  _portDirValue = 
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, portColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _portDir,
			    NULL);
  nameLabel = 
    XtVaCreateManagedWidget("portAuxLabel", xmLabelWidgetClass,
			    portColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, _portDir,
			    NULL);
  
  _portAux =
    XtVaCreateManagedWidget("portAux", xmScrollBarWidgetClass, 
			    portColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);

  _portAuxValue = 
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, portColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _portAux,
			    NULL);

  nameLabel = 
    XtVaCreateManagedWidget("stbdFixedLabel", xmLabelWidgetClass,
			    stbdColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_FORM,
			    NULL);
  
  _stbdFixed =
    XtVaCreateManagedWidget("stbdFixed", xmScrollBarWidgetClass, 
			    stbdColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);
    
  _stbdFixedValue = 
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, stbdColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _stbdFixed,
			    NULL);

  nameLabel = 
    XtVaCreateManagedWidget("stbdDirLabel", xmLabelWidgetClass,
			    stbdColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, _stbdFixed,
			    NULL);
  
  _stbdDir =
    XtVaCreateManagedWidget("stbdDir", xmScrollBarWidgetClass, 
			    stbdColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);

  _stbdDirValue = 
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, stbdColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _stbdDir,
			    NULL);

  nameLabel = 
    XtVaCreateManagedWidget("stbdAuxLabel", xmLabelWidgetClass,
			    stbdColumn, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, _stbdDir,
			    NULL);
  
  _stbdAux =
    XtVaCreateManagedWidget("stbdAux", xmScrollBarWidgetClass, 
			    stbdColumn,
			    XmNorientation, XmHORIZONTAL,
			    XmNsliderSize, sliderSize, 
			    XmNminimum, lightMinimum,
			    XmNmaximum, lightMaximum + sliderSize,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel,
			    XmNleftAttachment, XmATTACH_FORM,
			    NULL);

  _stbdAuxValue =
    XtVaCreateManagedWidget("value", xmLabelWidgetClass, stbdColumn,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, nameLabel, 
			    XmNleftAttachment, XmATTACH_WIDGET,
			    XmNleftWidget, _stbdAux,
			    NULL);

  XtManageChild(portColumn);
  XtManageChild(stbdColumn);
}


void Dimmers::updateFromPeer(DmGuiObject *peer, XtPointer clientData)
{
}


Dimmers::~Dimmers()
{
}
