mcc
 Help information about: Classes
 ^WhyFilenameExtension
 
              E╔════════════════════════════════════════════════╗
              E║                    CClassesE                     ║
              E╚════════════════════════════════════════════════╝


 CWhat Are Classes?

   In MS-DOS, files are given names like "autoexec.bat".  The characters
   after the period (in this case, "bat") identify the kind of file it is.
   InContext uses this filename extension to indicate the CclassB of an
 ZmccwB  object (CJ Why? CB).  Thus, an ordinary text file might be of class "txt",
   while a Lotus 1-2-3 spreadsheet might be of class "wk1".

   Incidentally, InContext also has to have some way of showing you files
   which have no filename extension.  These files are displayed using the
   Greek letter Phi ("CφB", often used to mean "empty" or "nothing").  Thus a
   file named simply "temp" would be displayed by InContext as "temp.φ".

 CClasses and Actions

   InContext allows the user to define the CactionsB of a class.  One reason 
   for doing this is to cause standard actions to behave differently (and
   appropriately) for different classes.  For example, Lotus 1-2-3 is an
   appropriate tool with which to "edit" a spreadsheet, but not a text
   object.  A second reason is to add operations especially applicable to
   the class (e.g., "compile" a C program, or "show" a "pcx" PC-Paintbrush
   image).

   If you have not installed or created a definition of a particular class,
   then only the default actions are available for that class.  These actions,
   too, are under your control, and you can redefine them (for more
 ZmcaeB  information about this, see CJ Action Definition Editing CB).  A typical
   set of default actions might include "view", "copy", "rename", and
   "delete".  These actions apply to undefined classes, and do not vary from
   class to class.

   While the default actions might be good enough for some purposes, the
   way to get real power with InContext is to define specialized behavior
   for different object classes.  The figure below shows, by way of example,
   sample action lists for two classes.

                 E▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
                 E█A                                          A  E█
                 E█A    Class:      document      makefile    A  E█
                 E█A                ("doc")       ("mk")      A  E█
                 E█A                                          A  E█
                 E█A    Actions:    edit          edit        A  E█
                 E█A                view          view        A  E█
                 E█A                copy          copy        A  E█
                 E█A                rename        rename      A  E█
                 E█A                delete        delete      A  E█
                 E█A                spellchk      make_pkg    A  E█
                 E█A                preview       inst_pkg    A  E█
                 E█A                print         test_pkg    A  E█
                 E█A                archive       arch_pkg    A  E█
                 E█A                              printpkg    A  E█
                 E█A                              cleanpkg    A  E█
                 E█A                                          A  E█
                 E▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

   The "doc" (document) class has some of the ordinary operations you might
   think of in connection with a text document.  For example, you can edit
   it, check its spelling, preview how it will look when printed, and save
   it in an archive.  The "mk" (makefile) class is a kind of object that
   describes a software package being developed.  This class has several
   actions in common with the document class, such as view, edit, and delete.
   However, it also has specialized operations, such as "make the package",
   "install the package", etc.  While these actions are listed above by their
   short names, intended to fit in limited space, they also have longer
   descriptive names by which you can recognize them in actual use.

 CFocussing By Use of the Class Command

   Although the user can reconfigure InContext to behave differently, 
   the Main Display normally shows several lists, one of which is a list 
   of objects in the current directory. For example, the display below 
   shows such objects as "afhsmin.doc" and "lwv.arc". 

             E▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
             E█A                                               A  E█
             E█A  E│B                                            A  E█
             E█A  E│B  EViewsB   EClassB    EObjectsB                  A  E█
             E█A  E│B CALL     B  CALLB  document.arc    pubmin.doc  A  E█
             E█A  E│B archive   arc       lwv.arc    recrep.doc  A  E█
             E█A  E│B chess     doc   admnnot.doc  recycedp.doc  A  E█
             E█A  E│B document  fmt  C afhsmin.docB  recycg&o.doc  A  E█
             E█A  E│B execable  lis   afhsnot.doc  recyclan.doc  A  E█
             E█A  E│B finance   lYBtr    bksale.doc  recycli1.doc  A  E█
             E█A  E│B fonts     lyr    edcord.doc  recyclis.doc  A  E█
             E█A  E│B graphic   rec   lwvbylw.doc  recycmin.doc  A  E█
             E█A  E│B incontxt  zip  ordattle.doc  recycmtg.doc  A  E█
             E█A  E│B letters         ordedc1.doc  recycoor.doc  A  E█
             E█A  E│B messages       ordlegno.doc    recyst.doc  A  E█
             E█A  E│B program          ordmin.doc    resume.doc  A  E█
             E█A  E│B tapcis           ordnot.doc   votergd.doc  A  E█
             E█A  E│B ventura         ordpub1.doc   afhsnot.fmt  A  E█
             E█A  E│B xref            ordpub2.doc      help.lis  A  E█
             E█A  E│B                ordrenot.doc  lwvlabel.lis  A  E█
             E█A  E│B                 ordreop.doc      temp.lis  A  E█
             E█A  E│B                 pubhear.doc  votrguid.lis  A  E█
             E█A  E└─ User: H. Rudy Ramsey ──────────────────── A  E█
             E█A                                               A  E█
             E▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

   They are identifiable as objects because they appear under the label, 
   "EObjectsB".  However, this display is currently showing objects 
   of all types, so they're all mixed in together.  Furthermore, not all 
   objects are shown, since there are too many to fit in the objects 
   area of the display.  One way to deal with this is to select the
 ZmcoB  CJ Object Command CB, in order to pop up a window dedicated entirely
   to objects.  A second way to deal with this is to focus on a smaller set
 ZmcvB  of objects, either by CJ view CB or by CclassB.
   
   The two columns to the left, "EViewsB" and "EClassB", are your means
   of focussing on larger or smaller sets of objects.  As you can see by the
   highlight of the word "CALLB", ALL views and ALL object classes in the
   directory are being displayed.  If you want to focus on only a small set
   of the objects, one way of doing so is to select a single class.  For
   example, placing the cursor on the "ltr" class, as shown above, and
   pressing ENTER or the left mouse button will produce a main display that
   looks like the following.

             E▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
             E█A                                               A  E█
             E█A  E│B                                            A  E█
             E█A  E│B  EViewsB   EClassB    EObjectsB                  A  E█
             E█A  E│B CALL     B  ALL       bee.ltr                A  E█
             E█A  E│B archive   arc   monxmas.ltr                A  E█
             E█A  E│B chess     doc                              A  E█
             E█A  E│B document  fmt                              A  E█
             E█A  E│B execable  lis                              A  E█
             E█A  E│B finance   ClYCtrB                              A  E█
             E█A  E│B fonts     lyr                              A  E█
             E█A  E│B graphic   rec                              A  E█
             E█A  E│B incontxt  zip                              A  E█
             E█A  E│B letters                                    A  E█
             E█A  E│B messages                                   A  E█
             E█A  E│B program                                    A  E█
             E█A  E│B tapcis                                     A  E█
             E█A  E│B ventura                                    A  E█
             E█A  E│B xref                                       A  E█
             E█A  E│B                                            A  E█
             E█A  E│B                                            A  E█
             E█A  E│B                                            A  E█
             E█A  E└─ InContext Work Environment Manager ────── A  E█
             E█A                                               A  E█
             E▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

   As you can see from the highlighting of the word "CltrB" under EClassB, only
   objects of class "ltr" are now being displayed.  This is one way of
   rapidly focussing in on a small set of objects.  There are at least two
   reasons you might want to do this:

        CB It makes it much easier and quicker to find the single object
          you're actually looking for.

        CB Many programs are equipped to operate on multiple files, and
          InContext allows you to apply such programs to a whole group of
          objects.  For example, if you use an editor (such as Brief) that
          can edit multiple files, you can pick a class and invoke the editor
          on all the objects of that class in a single action.

 CUsing the Class Command and Its Display

   If the information shown in the main display is not enough for you to
   select the appropriate class, you can use the CClassB command.  It
   produces a display which gives you more information about the object
   classes C(not yet implemented)B, and lets you select the desired one.
   An example of this display is shown below.

        E▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
        E█A                                                         A  E█
        E█A  Cmsey Personal Center -- alice                     B1/25/A  E█
        E█A  Eew:B CALL     B  EClass:B CltrB   EObject:B C            B   ETask:A  E█
        E█A  C            G  Class  C                                  A  E█
        E█A  B  G                                          FªHDelpG  B    A  E█
        E█A  Eur│B                                               E│A  B ESA  E█
        E█A  E..│B EClassB                                         E│A  BcoA  E█
        E█A  E..│B  ALL                                          E│At B  A  E█
        E█A  E..│B  arc                                          E│A  B  A  E█
        E█A  E..│B  doc                                          E│A  B  A  E█
        E█A  E..│B  fmt                                          E│A  B  A  E█
        E█A  E..│B  lis                                          E│A  B  A  E█
        E█A  E..│B  lYBtr                                          E│Ag B  A  E█
        E█A  E..│B  lyr                                          E│A  B  A  E█
        E█A  Ehh│B  rec                                          E│A  B  A  E█
        E█A  EwCwE│B  zip                                          E│A  B  A  E█
        E█A  CwwE│B                                               E│Al B  A  E█
        E█A                                                         A  E█
        E▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
mccw
 Help information about: Why Use Filename Extension to Identify Class?
 
 
              E╔════════════════════════════════════════════════╗
              E║  CWhy Use Filename Extension to Identify Class?E ║
              E╚════════════════════════════════════════════════╝


   You will notice that InContext requires that you identify object classes,
   and therefore object behavior, through the consistent use of MS-DOS
   Cfilename extensionsB.  You may be aware of other programs, such as
   Lotus' Magellan, that identify object types without relying on filename
   extensions.  Those programs read a portion of the file and do pattern-
   matching, to calculate the probabilities that the file is of one type or
   another.  That is, arguably, a convenience for the user, but it can't
   give you the power that InContext provides, for two reasons:

        CB Identifying object types by pattern-matching is imprecise, and
          results in frequent errors.  Those errors don't matter much if all
          you can do with the object is view it, since viewing cannot change
          the contents of the file.  InContext allows you to perform many
          operations that CdoB change the file content, and it cannot rely
          on such imprecise algorithms.

        CB You may wish to have multiple object classes that have the same
          basic type (e.g., ASCII text, or Lotus 1-2-3 spreadsheets), but
          have differing purposes and possible operations.  Identification of
          the file type by pattern-matching would prevent you from doing so.

   Magellan is a fine product, and no criticism is intended (we use it
   ourselves, for information searching).  To gain the kind of operational
   power provided by InContext, though, it is necessary that you be explicit
   about object class names.

   Another approach to this problem, frequently seen in graphical
   environments like Windows and GEM, is to allow Conly a single application
   to be associated with an object class.  This is rather constraining.  With
   such an assumption, the functionality readily available for any object
   class is CexactlyB that provided by its principal application.  If your
   word processor doesn't do spelling checking, for example, there is no
   ready mechanism for allowing you to invoke a CseparateB spelling checker
   on a document.

   The principal goal of InContext is to allow you to construct a smoothly
   functioning, integrated work environment.  We believe the approach we've
   taken gives more power than either of these others, and is particularly
   appropriate under MS-DOS.
