//		TEPane.h
//		http://www-acs.ucsd.edu/~jstrout/macdev/panes/
//		last modified: 12/07/98

#ifndef __TEPANE_H
#define __TEPANE_H

#include <TextEdit.h>
#include <Dialogs.h>

#include "Pane.h"

class TEPane : public Pane
{
  public:

	TEPane();
	virtual ~TEPane();

	// standard pane methods
	virtual void Draw();
	virtual Boolean Click(Point where, short modifiers);

	// additional methods for good behavior
	// (which really should be added to Pane)
	virtual void Idle() { if (mTEHandle) TEIdle( mTEHandle ); }
	virtual void Activate() { if (mTEHandle) TEActivate( mTEHandle ); }
	virtual void Deactivate() { if (mTEHandle) TEDeactivate( mTEHandle ); }
	virtual Boolean HandleKey( const char key, const short modifiers );
	virtual Boolean DoCut() { if (mTEHandle) TECut(mTEHandle); return true; }
	virtual Boolean DoCopy() { if (mTEHandle) TECopy(mTEHandle); return true; }
	virtual Boolean DoPaste() { if (mTEHandle) TEPaste(mTEHandle); return true; }

	// getting/setting the text (as text handle or string)
	virtual CharsHandle GetText() { return TEGetText(mTEHandle); }
	virtual void SetText( Ptr txt, long chars ) { if (mTEHandle) TESetText(txt,chars,mTEHandle); }

	// NOTE: the call to GetDialogItemText as a conversion function
	//	is suggested by Think Reference as an acceptable thing to do.
	virtual void GetString(Str255 out) { GetDialogItemText( (*mTEHandle)->hText,out); }
	virtual void SetString(Str255 str) { TESetText( (Ptr)&str[1], (long)str[0], mTEHandle); }	

  protected:
	TEHandle	mTEHandle;
};

#endif
