#include "TextField.h"
#include "Tools.h"

#define MUIA_Boopsi_Smart 0x8042b8d7 /* V9 i.. BOOL */

struct ObjTextField * CreateTextField( void )
{
	Class *TextFieldClass;
	struct ObjTextField * Object;

	TextFieldClass = TEXTFIELD_GetClass();

	if (!(Object = AllocMemory( sizeof( struct ObjTextField ),FALSE )))
		return( NULL );

  Object->textfield = HGroup,
    MUIA_Group_HorizSpacing, 0,
    Child, Object->text = BoopsiObject,
      InputListFrame,
      MUIA_Background, MUII_BACKGROUND,
      MUIA_Boopsi_Class, TextFieldClass,
      MUIA_Boopsi_Smart, TRUE,
      MUIA_Boopsi_MinWidth, 20,
      MUIA_Boopsi_MinHeight, 20,
      ICA_TARGET, ICTARGET_IDCMP,
      TEXTFIELD_Text,(ULONG)"",
    End,
    Child, Object->prop = ScrollbarObject, End,
  End;

  if (!(Object->textfield))
    {
      FreeMemory(Object);
      Object = NULL;
    }

  DoMethod(Object->text, MUIM_Notify, TEXTFIELD_Lines, MUIV_EveryTime,
      Object->prop, 3, MUIM_Set, MUIA_Prop_Entries, MUIV_TriggerValue);

  DoMethod(Object->text, MUIM_Notify, TEXTFIELD_Visible, MUIV_EveryTime,
      Object->prop, 3, MUIM_Set, MUIA_Prop_Visible, MUIV_TriggerValue);

  DoMethod(Object->text, MUIM_Notify, TEXTFIELD_Top, MUIV_EveryTime,
      Object->prop, 3, MUIM_NoNotifySet, MUIA_Prop_First, MUIV_TriggerValue);

  DoMethod(Object->prop, MUIM_Notify, MUIA_Prop_First, MUIV_EveryTime,
      Object->text, 3, MUIM_Set, TEXTFIELD_Top, MUIV_TriggerValue);

  return( Object );
}

void DisposeTextField( struct ObjTextField * Object )
{
	if (Object != NULL)
	{
		if (Object->textfield != NULL)
			MUI_DisposeObject(Object->textfield);
		FreeMemory(Object);
	}
}
