#ifndef _MICROENVIRONMENT_H
#define _MICROENVIRONMENT_H
static char MicroH2OTemp_h_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/MicroEnvironment.h,v 1.3 1997/05/30 16:20:38 oreilly Exp $";

/*
$Log: MicroEnvironment.h,v $
Revision 1.3  1997/05/30 16:20:38  oreilly
*** empty log message ***

 * Revision 1.2  97/03/20  12:34:17  12:34:17  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.1  96/10/31  10:41:00  10:41:00  oreilly (Thomas C. O'Reilly)
 * Initial revision
 * 
*/


#include "DmGuiObject.h"
#include "Micro.h"
#include "array.h"


class MicroEnvironmentTable : public VkComponent, public ErrorHandler
{
  public:

  typedef enum
  {
    H2OTempTable, Gf5vTable, GfTable

  } Type;
  
  MicroEnvironmentTable(const char *name, Widget parent, int nColumns, 
			int period);
  
  ~MicroEnvironmentTable();
  
  const char *className()
  {
    return "MicroEnvironmentTable";
  }
  
  protected:
  void resizeExposeHandler();
  void addRows(VehicleComponent *parent);

  void setColumnPriorities();
  void setColumnPriority(int column);
  
  void alarmUpdate(VkCallbackObject *obj, 
		   void *clientData, void *callData);

  void createTable(int width);
  
  AlarmedTableHeader *_header;
  Widget _scrolledWindow;
  Widget _workArea;
  Widget _scrollbar;
  
  Type _type;
  int _period;
  int _nColumns;
  Boolean _scrollBarsNeeded;
  
  DynArray<AlarmedTableRow *> _rows;

  private:
  static void resizeCallback(Widget w, XtPointer clientData,
			     XEvent *event);

  static void exposeCallback(Widget w, XtPointer clientData,
			      XEvent *event);
  
};


class MicroH2OTempTable : public MicroEnvironmentTable
{
  public:
  MicroH2OTempTable(const char *name, Widget parent, int period);

  ~MicroH2OTempTable()
  {
  }

  const char *className()
  {
    return "MicroH2OTempTable";
  }
};


class MicroGfTable : public MicroEnvironmentTable
{
  public:
  MicroGfTable(const char *name, Widget parent, int period);

  ~MicroGfTable()
  {
  }

  const char *className()
  {
    return "MicroGfTable";
  }
};


class MicroGf5vTable : public MicroEnvironmentTable
{
  public:
  MicroGf5vTable(const char *name, Widget parent, int period);

  ~MicroGf5vTable()
  {
  }

  const char *className()
  {
    return "MicroGf5vTable";
  }
};




#endif
