ftp.nice.ch/pub/next/developer/resources/palettesfor2.xx/CWAVScrollView.README

This is the README for CWAVScrollView.1.0.N.bs.tar.gz [Download] [Browse] [Up]

Copyright (C)1992 by David A. Cheslow.  All Rights Reserved (except those granted in the General Public License).

CWAVScrollView is a development tool for creating and manipulating scrolling lists of complex objects.  CWAV stands for Cell With A View.  As its name implies, a CWAV is a subclass of Cell (actually SelectionCell) which can display a view hierarchy inside its boundaries.  Normally, a view contains one or more cells which performs efficient drawing operations on behalf of the view.  Thus, cells are always at the bottom of the view hierarchy.  While the cell class can draw one icon and/or one string, it is sometimes desirable to create more complex cells.  The ScrollViewScroll example (available from the network archives) provided by NeXT(tm) shows one way to create more complex types of cells.  Unfortunately, the objects drawn in these cells can not be editable or perform target-action operations; they are simply drawn.  Also, creating a complex cell using the method described in ScrollViewScroll requires programming in PostScript(tm).  For every cell which contains more than one text string, you must "re-invent the wheel" and write PostScript(tm) code to display the strings properly.

This is where CWAVScrollView comes to the rescue.  CWAVScrollView allows you to interactively create cells containing any of the objects found in the Interface Builder(tm) palettes.  CWAVScrollView is actually a collection of five things: three object classes, an Interface Builder(tm) palette, and a set of Categories which support the three classes.

Using CWAVScrollView is easy:

    Load the CWAVScrollView.palette into Interface Builder(tm),
    Create a prototypical cell in Interface Builder(tm),
    Make a bunch of connections in Interface Builder(tm), and
    Write two simple (one VERY simple) methods.

There are two examples included with the distribution package which step you through the process of creating an application with CWAVScrollView (Example1.rtf and Example2.rtf).  The first describes creating a cell which contains several text string, but no target-action controls.  The second builds upon the first, adding several target action controls to the cells.

Files in the CWAVScrollView distribution:

CWAVScrollView.h - header file containing all instance variables and methods for the three classes and the categories
CWAVScrollView.a - library file which contains the object code of the classes and categories
CWAVScrollView.palette - Interface Builder loadable palette
CWAVScrollView.wn - class documentation
CWAVMatrix.wn - class documentation
CWAV.wn - class documentation
CWAVCategories.rtf - category documentation
Installing.wn - installation instructions
Copying.wn- General Public License 
Example1.wn - tutorial
Example2.wn - tutorial
Example1/ - subdirectory containing source files for Example1 tutorial
Example2/ - subdirectory containing source files for Example2 tutorial

While using CWAVScrollView is not difficult, there are a few of special considerations.  It is recommended that you read the class documentation (the introduction of each document identifies the pertinent sections to read) and work through the tutorials.

I grant you certain rights in the General Public License.  One of these rights is to use CWAVScrollView in the development of FREE software.  Using CWAVScrollView in the development of commercial software is NOT a right granted you in the General Public License.  You should read that document carefully before copying, distributing or using CWAVScrollView.

CWAVScrollView is fairly robust in its current version, but there are some things I would like to add or change.  Here is what you might expect in version 2:

    Support for NX_TRACKMODE and NX_HIGHLIGHTMODE
    Support for Double Click actions
    Support for two dimensional matrices
    Support for NiftyMatrix
    A better inspector for Interface Builder(tm)
    More run time error checking
    Major reductions in memory usage
    Major improvements in efficiency

I already have ideas about how to accomplish these things, but I need to get my dissertation finished before I will have time to implement them.  Fortunately, none of the improvements will invalidate applications using version 1 (isn't object oriented programming wonderful?).  You might see version 2 as soon as the end of this year (1992).

The last two items in the list above require an additional comment.  Whenever I had to make a decision between efficiency and flexibility, flexibility won.  What this means is that when more cells exist in the CWAVScrollView than are visible to the user, there are objects being managed in memory unnecessarily.  For very large scrolling lists this could be important.  A related issue is the fact that updating the CWAVScrollView actually updates all of the cells, regardless of whether or not they are visible to the user.  Thus, update performance decreases as more cells are added.  I have used CWAVScrollView with  more than100 cells and have found memory usage and performance to be adaquate - but there is clearly room for improvement.

There are a couple of features, particularly in the Interface Builder(tm) inspector, which are unlikely to work correctly under version 3 of NeXTStep(tm) (I had to do some hacking to add certain features).  I will try to release an upgrade soon after I get my hands on the new OS, time permitting.

In the meanwhile, if you have comments, suggestions, complaints (the is no warranty associated with CWAVScrollView), or just want to hire me for an exorbitant amount of money , then send me a note at:
   dcheslow@cs.tamu.edu
or send US mail to:
   David A. Cheslow
   3919 A Olive St.
   Bryan, TX 77801

I hope you enjoy CWAVScrollView and find it useful.

=dave=

Interface Builder, NeXT, and NeXTStep are trademarks of NeXT Computers, Inc.

Thanks to my wife Jane and son Adam for putting up with my long hours during this project.
Thanks to Dr. Walter Daugherity for introducing me to th NeXT computer.
Thanks to Russell Selph for helping me hack into Interface Builder(tm).
Thanks to Jeff Martin of NeXT Computers, Inc. for answering so many stupid questions.
Thanks to Steve Jobs and everyone at NeXT(tm) for inventing the NeXT.

If there is anyone else that I have forgotten to thank or credit, then I am sincerely sorry and will make a reasonable effort to correct the situation - just drop me a note.

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.