Basic Classes
*************

This is a simple introduction to the major classes in the GNUstep GUI library API.  If you know nothing about the OpenStep AppKit, it could be a good idea to read this before you start reading the reference documentation.

I am very interested in comments regarding this text, particularly from people who are new to the OPENSTEP AppKit API.  Send comments and/or suggestions to Nicola Pero (n.pero@mi.flashnet.it).

NSView
======

NSView is the class of objects representing a rectangular area (usually in a window) with its own coordinate system.  Views have methods to draw inside the view, to change the view's coordinate system, and to place the view with arbitrary position and size inside another view.  When you place a view inside another view, you are technically making the smaller view a <em>subview</em> of the bigger view.  The whole drawable area inside the window itself is represented by a view, called the <em>content view</em>.  All the visible views in a window are then subviews of the content view of that window (or of the content view's subviews etc).  This gives rise to what is called the "view tree" of the window.

NSCell
======

NSCell is the class of objects representing a single amount of displayable data.  For example, a cell could represent a number, or a string, or an image. Cells have methods to draw the data they represent in a view, to change the way the data is to be drawn (eg the font for a string or the border for an image), and to let the user interact directly (eg editing the data) with the data in a view.

NSControl
=========

NSControl is the class of objects representing a view (i.e., a rectangular area in a window) used to manage one or more cells (i.e., some displayable data).  This class is usually designed to work with a subclass of NSCell, called <em>NSActionCell</em>, through a system of target/action.  Each actioncell has a <em>target</em> - an object - and an <em>action</em> - a selector - both of which can be arbitrarily set.  The control can then ask the cell to send its action to its target (ie, to invoke the method of the target object identified by the selector) as a consequence of user actions in the control.  The typical example is a button: a button is a control with a corresponding cell; when the user presses the button, the buttoncell sends its action to its target.  Controls are the high-level objects the you usually deal with when designing everyday-life user interfaces.  You do not usually need to bother about cells, because the controls manage the cells for you.