/*
 * Copyright (c)1998 by Angry Red Planet.
 *
 * This code is distributed under a modified form of the
 * Artistic License.  A copy of this license should have
 * been included with it; if this wasn't the case, the
 * entire package can be obtained at
 * <URL:http://www.angryredplanet.com/>.
 *
 * A logical GUI layout engine: the programmer describes
 * high-level relationships between the different user interface
 * object through formal container classes, which then take care
 * of their physical placement.  The system is completely
 * font-sensitive and resizeable.
 *
 * ----------------------------------------------------------------------
 *
 * ArpLView.h
 *
 * A basic BView that is also an ArpLayoutable.
 *
 * ----------------------------------------------------------------------
 *
 * Known Bugs
 * ~~~~~~~~~~
 *
 * ----------------------------------------------------------------------
 *
 * To Do
 * ~~~~~
 *
 * ----------------------------------------------------------------------
 *
 * History
 * ~~~~~~~
 *
 * Dec 6, 1998:
 *	First public release.
 *
 */

#pragma once

#ifndef ARPLAYOUT_ARPLVIEW_H
#define ARPLAYOUT_ARPLVIEW_H

#ifndef ARPLAYOUT_ARPVIEWWRAPPER_H
#include <ArpLayout/ArpViewWrapper.h>
#endif

#ifndef _VIEW_H
#include <be/interface/View.h>
#endif

class ArpLView : public BView, public ArpViewWrapper {

  public:
  	ArpLView(const char* name,
			 uint32 flags=B_WILL_DRAW|B_FULL_UPDATE_ON_RESIZE);
  	ArpLView(BMessage* data);
  	
	// Almost all users will not want this form -- the initial
	// frame and resizing behavior are entirely handled by the
	// ArpLayoutable classes.
	ArpLView(BRect frame, const char* name, uint32 resizeMask,
			 uint32 flags=B_WILL_DRAW|B_FULL_UPDATE_ON_RESIZE);
			
	static BArchivable* Instantiate(BMessage* archive);
	virtual status_t Archive(BMessage* data, bool deep=TRUE);
	
	// Inplement some standard BView<->ArpLayoutable interaction.
	virtual	void Draw(BRect updateRect);
	virtual	void MakeFocus(bool focusState = true);
	virtual void GetPreferredSize(float* width, float* height);
	virtual void ResizeToPreferred();
	
  protected:
  
  	void ComputeDimens(void);
  	
  private:
  
};

#endif
