#include <stdio.h>
#include <stdlib.h>
#include <Vk/VkApp.h>
#include <Vk/VkSimpleWindow.h>
#include "ComboTextField.h"
#include "ComboBox.h"

class TestWindow: public VkSimpleWindow 
{
  public:

  TestWindow ( const char *name );
  
  ~TestWindow ();
  
  virtual const char* className()
  {
    return "TestWindow";
  }

  protected:
  void acceptCallback(VkCallbackObject *obj,
		      void *clientData,
		      void *callData);

  void listSelectCallback(VkCallbackObject *obj,
			  void *clientData,
			  void *callData);
  
};


TestWindow::~TestWindow ()
{
  // Empty
}


TestWindow::TestWindow(const char *name) :
  VkSimpleWindow(name)
{
  static char *itemStrings[] = 
  {
    "Item 1",
    "Second item",
    "This is the third one!"
  };
  
  XmStringTable stringTable = 
    (XmStringTable )XtMalloc((XtNumber(itemStrings) + 1) * sizeof(XmString));

  if (!stringTable)
  {
    fprintf(stderr, "Couldn't create string table\n");
    exit(1);
  }

  for (int i = 0; i < XtNumber(itemStrings); i++)
  {
    stringTable[i] = XmStringCreateSimple(itemStrings[i]);
  }

  int nItems = XtNumber(itemStrings);
  
  ComboTextField *textField = new ComboTextField("textField",
						 mainWindowWidget(),
						 &stringTable,
						 nItems);

  textField->show();

  textField->addCallback(ComboTextField::acceptCallback, this,
			 (VkCallbackMethod )&TestWindow::acceptCallback);
  
  textField->addCallback(ComboTextField::listSelectCallback, this,
			 (VkCallbackMethod )&TestWindow::listSelectCallback);

  textField->set("hello sailor!");
  
  addView(textField);
}


void TestWindow::acceptCallback(VkCallbackObject *obj,
				void *clientData,
				void *callData)
{
  fprintf(stderr, "TestWindow::acceptCallback()\n");
}


void TestWindow::listSelectCallback(VkCallbackObject *obj,
				    void *clientData,
				    void *callData)
{
  fprintf(stderr, "TestWindow::listSelectCallback()\n");
}



void main ( int argc, char **argv )
{
  VkApp   *app = new VkApp("WidgetTest", &argc, argv);
	  
  TestWindow  *window = new TestWindow("WidgetTest");
	  
  window->show();
	  
  app->run();
	  
}

