# Catalyst Templates Directory On-Line Help

This page was created by the IDL library routine `mk_html_help`. For more information on this routine, refer to the IDL Online Help Navigator or type:

         ? mk_html_help

at the IDL command line prompt.

Last modified: Sun Oct 26 20:43:11 2008.

# List of Routines

- APP_TEMPLATE
- APP_TEMPLATE::CLEANUP
- APP_TEMPLATE::CREATESTATUSBAR
- APP_TEMPLATE::EVENT_HANDLER
- APP_TEMPLATE::GETPROPERTY
- APP_TEMPLATE::GUI
- APP_TEMPLATE::INIT
- APP_TEMPLATE::KILL_NOTIFY
- APP_TEMPLATE::SETPROPERTY
- CATTOOL_TEMPLATE
- CATTOOL_TEMPLATE OBJECT DEFINITION
- CATTOOL_TEMPLATE::APPLY
- CATTOOL_TEMPLATE::CLEANUP
- CATTOOL_TEMPLATE::GETPROPERTY
- CATTOOL_TEMPLATE::INIT
- CATTOOL_TEMPLATE::REDO
- CATTOOL_TEMPLATE::SETPROPERTY
- CATTOOL_TEMPLATE::UNDO
- CLASSNAME::ADD
- CLASSNAME::CLEANUP
- CLASSNAME::CONTROLPANEL
- CLASSNAME::DRAW
- CLASSNAME::EVENT_HANDLER
- CLASSNAME::GETPROPERTY
- CLASSNAME::INIT
- CLASSNAME::SETPROPERTY
- CLASSNAME__DEFINE
- GENERALINTERACTION::CLEANUP
- GENERALINTERACTION::DRAW
- GENERALINTERACTION::EVENT_HANDLER
- GENERALINTERACTION::GETPROPERTY
- GENERALINTERACTION::INIT
- GENERALINTERACTION::SETPROPERTY
- GENERALINTERACTION__DEFINE
- SELECTABLE_OBJECT_TEMPLATE
- SELECTABLE_OBJECT_TEMPLATE::ADDTOEVENTSTRUCTURE
- SELECTABLE_OBJECT_TEMPLATE::CALCULATEBOUNDARYBOX
- SELECTABLE_OBJECT_TEMPLATE::CLEANUP
- SELECTABLE_OBJECT_TEMPLATE::CONTROLPANEL
- SELECTABLE_OBJECT_TEMPLATE::COPYPARAMETERS
- SELECTABLE_OBJECT_TEMPLATE::CREATENEWOBJECT
- SELECTABLE_OBJECT_TEMPLATE::DRAW
- SELECTABLE_OBJECT_TEMPLATE::DRAWSELECTIONBOX
- SELECTABLE_OBJECT_TEMPLATE::EVENTHANDLER
- SELECTABLE_OBJECT_TEMPLATE::GETPROPERTY
- SELECTABLE_OBJECT_TEMPLATE::INIT
- SELECTABLE_OBJECT_TEMPLATE::INTERACTIONEVENTS
- SELECTABLE_OBJECT_TEMPLATE::MOVE
- SELECTABLE_OBJECT_TEMPLATE::SELECT
- SELECTABLE_OBJECT_TEMPLATE::SELECTPANEL
- SELECTABLE_OBJECT_TEMPLATE::SETPROPERTY

# Routine Descriptions

## APP_TEMPLATE

[Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE

     PURPOSE:

           The purpose of this routine is to provide a template for building
           a Catalyst application.

     AUTHORS:

            FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
            1645 Sheely Drive             18 The Green South
            Fort Collins                  Warborough, Oxon
            CO 80526 USA                  OX10 7DN, ENGLAND
            Phone: 970-221-0438           Phone: +44 (0)1865 858279
            E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

     CATEGORY:

           Objects.

     SYNTAX:

           App_Template

     MODIFICATION_HISTORY:

           Written by: Donatella Nobody, April 17, 2003.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::CLEANUP

     PURPOSE:

           This is the APP_TEMPLATE object class destructor method.

     SYNTAX:

           Called automatically when the object is destroyed.

     ARGUMENTS:

           None.

     KEYWORDS:

          None.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::CREATESTATUSBAR

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
            APP_TEMPLATE::CREATESTATUSBAR

     PURPOSE:

            This method creates the status bar at the bottom of the application.

     SYNTAX:

            theObject -> CreateStatusBar

     ARGUMENTS:

           baseObject:   The parent of the statusbar. If undefined, use SELF.

     KEYWORDS:

           _EXTRA:       Any keywords appropriate for the STATUSBAR object..

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
            APP_TEMPLATE::EVENT_HANDLER

     PURPOSE:

            This method is the event handler for the APP_TEMPLATE object. It will typically
            be used to respond to events from widget objects created in application.

     SYNTAX:

            This method is called automatically by the event handling mechanism.

     ARGUMENTS:

           event: The event structure as described in the IDL help files, except
                  that the ID, TOP and HANDLER tags will be object references.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::GETPROPERTY

     PURPOSE:

           This method allows the user to obtain APP_TEMPLATE properties. Be sure
           you ALWAYS call the superclass GETPROPERTY method if you have extra
           keywords!

     SYNTAX:

           theObject -> GetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::GUI

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::GUI

     PURPOSE:

           This method is where the graphical user interface elements of the program
           are created.

     SYNTAX:

           theObject -> GUI

     ARGUMENTS:

         menuBarID:      The identifier of the menuBar widget, if any.

     KEYWORDS:

         None.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::INIT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::INIT

     PURPOSE:

           This is the APP_TEMPLATE object class initialization method

     SYNTAX:

           Called automatically when the object is created.

     ARGUMENTS:

         None.

     KEYWORDS:

         __REF_EXTRA:     Any keywords appropriate for the superclass INIT method.
                          In this case you MUST use _REF_EXTRA instead of _EXTRA because
                          you need to return the MENUBAR object reference.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::KILL_NOTIFY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::KILL_NOTIFY

     PURPOSE:

           This method is called automatically when the application is destroyed.
           It's primary purpose is to clean up any objects that have been created
           to run the Catalyst system. It might also destroy any Catalyst infrastructure
           by calling CatDestroyDefaults.

     SYNTAX:

         None.

     ARGUMENTS:

         None.

     KEYWORDS:

         None.

(See C:\IDL\Catalyst\templates\application_template.pro)

## APP_TEMPLATE::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           APP_TEMPLATE::SETPROPERTY

     PURPOSE:

           This method allows the user to set APP_TEMPLATE properties. Be sure
           you ALWAYS call the superclass SETPROPERTY method if you have extra
           keywords!

     SYNTAX:

           theObject -> SetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _EXTRA:     Any keywords appropriate for the superclass SetProperty method.

(See C:\IDL\Catalyst\templates\application_template.pro)

## CATTOOL_TEMPLATE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE

     PURPOSE:

           The purpose of this routine is to implement a template for create Catalyst tools.

     AUTHORS:

            FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
            1645 Sheely Drive             18 The Green South
            Fort Collins                  Warborough, Oxon
            CO 80526 USA                  OX10 7DN, ENGLAND
            Phone: 970-221-0438           Phone: +44 (0)1865 858279
            E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

     CATEGORY:

           Objects.

     SYNTAX:

           aTool = Obj_New("CATTOOL_TEMPLATE")

     SUPERCLASSES:

           CATTOOL
           CATATOM
           CATCONTAINER
           IDL_CONTAINER

     CLASS_STRUCTURE:

       class = { CATTOOL_TEMPLATE, $    ; The CATTOOL_TEMPLATE object class.
                 INHERITS CATTOOL, $    ; Inherits the CATTOOL object class.
               }

     MODIFICATION_HISTORY:

           Written by: David Fanning, September 10, 2003.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE OBJECT DEFINITION

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE OBJECT DEFINITION

     PURPOSE:

           This is the structure definition code for the CATTOOL_TEMPLATE object.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::APPLY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::APPLY

     PURPOSE:

           This method applies or executes the "tool" on the target object
    ;
     SYNTAX:

           thisObject -> Apply

     ARGUMENTS:

           None.

     KEYWORDS:

           DRAW:     Set this keyword if you wish to call the draw method of the target object
                     after the command has been applied.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::CLEANUP

     PURPOSE:

           This is the CATTOOL_TEMPLATE object class destructor method.

     SYNTAX:

           Called automatically when the object is destroyed. Use it to clean up
           and objects or pointers you have used in your tool.

     ARGUMENTS:

           None.

     KEYWORDS:

           _EXTRA:  Any keyword appropriate for the "TOOLATOM::Cleanup" method.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::GETPROPERTY

     PURPOSE:

           This method enables the getting of the CATTOOL_TEMPLATE object class
           properties.

     SYNTAX:

           aGraphicsCmd -> GetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _EXTRA:           Any keywords appropriate for the superclass SetProperty methods.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::INIT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::INIT

     PURPOSE:

           This is the CATTOOL_TEMPLATE object class initialization method.

     SYNTAX:

           Called automatically when the object is created.

     ARGUMENTS:

           None.

     KEYWORDS:

           TARGETOBJECT: The image object that is the target of this command. Note that a target object
                         is REQUIRED for the command to work correctly, although you do not have to
                         set the target in the INIT method. You can set it via the LOADCOMMAND and SETPROPERTY
                         methods, too. There must be a valid target at the time the APPLY method is called,
                         or an error is generated. The targetObject must be a valid CATIMAGE2D object.

           _EXTRA:       Any keywords appropriate for superclass object's INIT methods.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::REDO

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::REDO

     PURPOSE:

           This method simply re-applies the APPLY method to the target object.
    ;
     SYNTAX:

           thisObject -> REDO

     ARGUMENTS:

           None.

     KEYWORDS:

           DRAW:     Set this keyword if you wish to call the DRAW method on the target object
                     after the REDO operation.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::SETPROPERTY

     PURPOSE:

           This method enables the setting of the CATTOOL_TEMPLATE object class
           properties.

     SYNTAX:

           aGraphicsCmd -> SetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

          TARGETOBJECT:  The object that is the target of this command. Note that a target object
                         is REQUIRED for the tool to work correctly, although you do not have to
                         set the target in the this method. You can set it via the INIT method, too.
                         There must be a valid target at the time the APPLY method is called,
                         or an error is generated.

         _EXTRA:         Any keywords appropriate for the superclass SetProperty methods.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CATTOOL_TEMPLATE::UNDO

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CATTOOL_TEMPLATE::UNDO

     PURPOSE:

           This method attempts to undo the previous APPLY operation. Typically, this is
           as simple as restoring the cached data to the target object, as shown here. Or,
           it can be as complicated as you need it to be.
    ;
     SYNTAX:

           thisObject -> UNDO

     ARGUMENTS:

           None.

     KEYWORDS:

           DRAW:     Set this keyword if you wish to call the DRAW method on the target object
                     after the UNDO operation.

(See C:\IDL\Catalyst\templates\tool_template.pro)

## CLASSNAME::ADD

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::ADD

     PURPOSE:

           This method is where you can screen what kinds of objects are
           added to this object's hierarchy. The method is not always needed.
           If you do create it, be CERTAIN to call the superclass ADD method
           or your program will not work correctly.

     SYNTAX:

           theObject -> Add, object

     ARGUMENTS:

         object:     The object to be added to this one.

     KEYWORDS:

         _EXTRA:     Any keywords appropriate for the superclass Add method.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::CLEANUP

     PURPOSE:

           This is the CLASSNAME object class destructor method.

     SYNTAX:

           Called automatically when the object is destroyed.

     ARGUMENTS:

           None.

     KEYWORDS:

          None.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::CONTROLPANEL

     PURPOSE:

           This method creates a control panel for the CLASSNAME object. A
           control panel is a graphical user interface for setting object
           properties. If you create a control panel, the events are typically
           sent to the EVENTHANDLER method.

     SYNTAX:

           theObject -> ControlPanel, baseObject

     ARGUMENTS:

           baseObject:    The object reference of a base widget for this control to
                          be added to. If not supplied, the control panel will be in a
                          self contained window (i.e., a TOPLEVELBASE object).

     KEYWORDS:

           _EXTRA:       Any keywords appropriate for the CatControlPanel::INIT method.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::DRAW

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::DRAW

     PURPOSE:

           This method may or may not be needed by your object, depending
           upon whether a graphical representation of the object is required.
           If you wish the DRAW method to automatically propogates down to any
           objects contained in this object's container, call the superclass DRAW
           method.

     SYNTAX:

           theObject -> Draw

     ARGUMENTS:

           None.

     KEYWORDS:

           _Extra:    Any keywords appropriate for the superclass DRAW method..

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
            CLASSNAME::EVENT_HANDLER

     PURPOSE:

            This method is the event handler for the CLASSNAME object. It will typically
            be used to respond to events from widget objects created in the CONTROLPANEL
            method.

     SYNTAX:

            This method is called automatically by the event handling mechanism.

     ARGUMENTS:

           event: The event structure as described in the IDL help files, except
                  that the ID, TOP and HANDLER tags will be object references.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::GETPROPERTY

     PURPOSE:

           This method allows the user to obtain CLASSNAME properties. Be sure
           you ALWAYS call the superclass GETPROPERTY method if you have extra
           keywords!

     SYNTAX:

           theObject -> GetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::INIT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::INIT

     PURPOSE:

           This is the CLASSNAME object class initialization method

     SYNTAX:

           Called automatically when the object is created.

     ARGUMENTS:

         parent:     The parent object referece. This object will be added to the parent's container.

     KEYWORDS:

         _EXTRA:     Any keywords appropriate for the superclass INIT method.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME::SETPROPERTY

     PURPOSE:

           This method allows the user to set the CLASSNAME object's properties. Be sure
           you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!

     SYNTAX:

           theObject -> SetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _EXTRA:     Any keywords appropriate for the superclass SetProperty method.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## CLASSNAME__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           CLASSNAME__DEFINE

     PURPOSE:

           The purpose of this routine is to provide a starting template
           for object creation.

     AUTHORS:

            FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
            1645 Sheely Drive             18 The Green South
            Fort Collins                  Warborough, Oxon
            CO 80526 USA                  OX10 7DN, ENGLAND
            Phone: 970-221-0438           Phone: +44 (0)1865 858279
            E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

     CATEGORY:

           Objects.

     SYNTAX:

           theObject = Obj_New("CLASSNAME")

     SUPERCLASSES:

           SUPERCLASS
           CATATOM
           CATCONTAINER IDLITCOMPONENT
           IDL_CONTAINER

     CLASS_STRUCTURE:

       class = { CLASSNAME, $
                 INHERITS SUPERCLASS $
               }

     MESSAGES:

       None.

     MODIFICATION_HISTORY:

           Written by: Donatella Nobody, April 17, 2003.

(See C:\IDL\Catalyst\templates\general_object_template.pro)

## GENERALINTERACTION::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION::CLEANUP

     PURPOSE:

           This is the GENERALINTERACTION object class destructor method.

     SYNTAX:

           Called automatically when the object is destroyed.

     ARGUMENTS:

           None.

     KEYWORDS:

          None.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION::DRAW

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION::DRAW

     PURPOSE:

           This method draws the interaction in the display window.

     SYNTAX:

           theObject -> Draw

     ARGUMENTS:

           None.

     KEYWORDS:

           _Extra:    Any keywords appropriate for the superclass DRAW method..

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
            GENERALINTERACTION::EVENT_HANDLER

     PURPOSE:

            This method is the event handler for the GENERALINTERACTION object.

     SYNTAX:

            This method is called automatically by the event handling mechanism.

     ARGUMENTS:

           event: The event structure as described in the IDL help files, except
                  that the ID, TOP and HANDLER tags will be object references.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION::GETPROPERTY

     PURPOSE:

           This method allows the user to obtain GENERALINTERACTION properties. Be sure
           you ALWAYS call the superclass GETPROPERTY method if you have extra
           keywords!

     SYNTAX:

           theObject -> GetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION::INIT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION::INIT

     PURPOSE:

           This is the GENERALINTERACTION object class initialization method

     SYNTAX:

           Called automatically when the object is created.

     ARGUMENTS:

         drawObject:   The draw widget object that you will be taking over events from.

     KEYWORDS:

         _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION::SETPROPERTY

     PURPOSE:

           This method allows the user to set the GENERALINTERACTION object's properties. Be sure
           you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!

     SYNTAX:

           theObject -> SetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _EXTRA:       Any keywords appropriate for the superclass SetProperty method.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## GENERALINTERACTION__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           GENERALINTERACTION__DEFINE

     PURPOSE:

           The purpose of this routine is to provide a starting template
           for object creation.

     AUTHORS:

            FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
            1645 Sheely Drive             18 The Green South
            Fort Collins                  Warborough, Oxon
            CO 80526 USA                  OX10 7DN, ENGLAND
            Phone: 970-221-0438           Phone: +44 (0)1865 858279
            E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

     CATEGORY:

           Objects.

     SYNTAX:

           theObject = Obj_New("GENERALINTERACTION")

     SUPERCLASSES:

           INTERACTION
           CATCONTAINER IDLITCOMPONENT
           IDL_CONTAINER

     CLASS_STRUCTURE:

       class = { GENERALINTERACTION, $
                 INHERITS INTERACTION $
               }

     MESSAGES:

       None.

     MODIFICATION_HISTORY:

           Written by: Donatella Nobody, February 6, 2004.

(See C:\IDL\Catalyst\templates\interaction_template.pro)

## SELECTABLE_OBJECT_TEMPLATE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE

     PURPOSE:

           The purpose of this routine is to provide a template for creating
           a selectable object.

     AUTHORS:

            FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
            1645 Sheely Drive             18 The Green South
            Fort Collins                  Warborough, Oxon
            CO 80526 USA                  OX10 7DN, ENGLAND
            Phone: 970-221-0438           Phone: +44 (0)1865 858279
            E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

     CATEGORY:

           Objects.

     SYNTAX:

           newObject = Obj_New("SELECTABLE_OBJECT_TEMPLATE", ...)
           drawObject -> Add, newObject

     SUPERCLASSES:

           SELECTABLEOBJECT
           CATDATAATOM
           CATATOM
           CATCONTAINER IDLITCOMPONENT
           IDL_CONTAINER

     CLASS_STRUCTURE:

       class = { SELECTABLE_OBJECT_TEMPLATE, $
                 insertedObject: Obj_New(), $; A reference to the new object created in the CreateNewObject method. (Ignored in CLEANUP.)
                 layerObject: Obj_New(), $   ; An optional CATLAYER object for holding the inserted selectable object.
                 linestyle: 0L, $            ; The line style of the selectable object.
                 thickness: 0.0, $           ; The thickness of the selectable object.
                 INHERITS SELECTABLEOBJECT $
               }

     MESSAGES:

       SELECTABLE_OBJECT_TEMPLATE_CHANGED:   This message is sent whenever SetProperty
                                             method is called and the NOMESSAGE keyword
                                             is NOT set.

     MODIFICATION_HISTORY:

           Written by: Donatella Nobody, April 17, 2005.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::ADDTOEVENTSTRUCTURE

     PURPOSE:

           This method receives an event structure, which it can add information to before being sent
           to some other event handler. Normally, this method is called by an INTERACTION object of
           some kind.

     SYNTAX:

           theObject -> AddToEventStructure, event

     ARGUMENTS:

           event:      The event structure that will be added to.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::CALCULATEBOUNDARYBOX

     PURPOSE:

           This method calculates the extent of a boundary box about the selectable object
           itself. The boundary box (self.box) is always stored in normalized coordinates.

     SYNTAX:

           theObject -> CalculateBoundaryBox

     ARGUMENTS:

           None.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::CLEANUP

     PURPOSE:

           This is the SELECTABLE_OBJECT_TEMPLATE object class destructor method.

     SYNTAX:

           Called automatically when the object is destroyed.

     ARGUMENTS:

           None.

     KEYWORDS:

          None.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::CONTROLPANEL

     PURPOSE:

           This method creates a control panel for the selectable object.

     SYNTAX:

           boxObject -> ControlPanel, baseObject

     ARGUMENTS:

           baseObject:    The object reference of a base widget for this control to
                          be added to. If not supplied, the control panel will be in a
                          self contained window.

     KEYWORDS:

           _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::COPYPARAMETERS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::COPYPARAMETERS

     PURPOSE:

           This method returns the lower-left corner of a rectangle large enough to
           erase the object in the DESTINATION keyword, and the number of columns and rows
           of the rectangle in the EXTENT keyword. The values are in device coordinates. The
           rectangle is often the same as the boundary box of the object. The purpose of
           the rectangle is to allow an object to erase itself by copying this rectangle
           from a pixmap window. This will be faster, in most cases, than making the object
           invisible and redrawing the graphics window.

     SYNTAX:

           theObject -> CopyParameters, drawid, DESTINATION=destination, EXTENT=extent

     ARGUMENTS:

           drawID:         The identifier of a draw widget object whose extent will
                           provide the size of the window for calculating device coordinates.
                           This parameter is required. Typically, the draw widget object that
                           contains the selectable object.

     KEYWORDS:

           DESTINATION:    A two-element array containing the lower-left corner
                           of the boundary box in device coordinates. An output keyword.

           EXTENT:         A two-element array containing the number of columns and
                           rows in the boundary box in device coordinates. An output keyword.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::CREATENEWOBJECT

     PURPOSE:

           This method creates a new object and adds it to both a draw widget and pixmap container.
           If the object contains a layer object, the new object is instead added to the layer,
           and the layer is added to the draw widget and pixmap containers. Creating a new object is
           usually done at the end of an INSERT mode event, but this method can also be used as an
           object COPY method.

     SYNTAX:

           theObject -> CreateNewObject, drawID

     ARGUMENTS:

           drawID:    The draw widget which will contain the newly created object. Required unless
                      you are calling this method simply to make a copy of the current object.

           pixmapID:  The pixmap which will contain the newly created object. Optional.

     KEYWORDS:

           NEWOBJECT: An output keyword containing the new box object that gets created. If the
                      method is called with just this keyword and no other arguments, the method
                      functions as a object COPY method.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::DRAW

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::DRAW

     PURPOSE:

           This method draws the selectable object in the current graphics display window.

     SYNTAX:

           theObject -> Draw

     ARGUMENTS:

           None.

     KEYWORDS:

           _Extra:    Any keywords appropriate for the superclass DRAW method.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::DRAWSELECTIONBOX

     PURPOSE:

           This method draws a selection box around the selectable object.

     SYNTAX:

           theObject -> DrawSelectionBox

     ARGUMENTS:

           None.

     KEYWORDS:

           COLOR:    The name of a color to draw the selectable object in. By default, the color of
                     the selectable object (self.color).

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::EVENTHANDLER

     PURPOSE:

           This method is an event handler for the Control Panel. If you have
           user-definable properties, they will have to be accounted for here.
           Otherwise, this event handler will correctly handle most GET and SET
           PROPERTY keywords.

     SYNTAX:

           Called automatically by the event handling system

     ARGUMENTS:

           event:  The event structure.

     KEYWORDS:

           None.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::GETPROPERTY

     PURPOSE:

           This method allows the user to obtain SELECTABLE_OBJECT_TEMPLATE properties. Be sure
           you ALWAYS call the superclass GETPROPERTY method if you have extra
           keywords!

     SYNTAX:

           theObject -> GetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::INIT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::INIT

     PURPOSE:

           This is the SELECTABLE_OBJECT_TEMPLATE object class initialization method

     SYNTAX:

           Called automatically when the object is created.

     ARGUMENTS:

         None.

     KEYWORDS:

         LAYER:        A CATLAYER object for holding other objects. Used here only when there is an UP
                       event in INSERT mode. At that time a copy of this object is made and inserted
                       the layer object and this is then inserted into the DrawWidget and/or Pixmap object.

         THICKNESS:    Set this to the thickness of the selectable object. By default, 1.0.

         _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::INTERACTIONEVENTS

     PURPOSE:

           This method accepts events from an interaction object of some type. The interaction
           may pre-process events, or send them directly here. You are required to have the
           following modes: SELECT, INSERT, and DRAW. Other modes are optional and are left
           to the programmer to interpret. Finishing an INSERT or DRAW mode event requires that
           the interaction mode by set to 'FINISHED_INSERT' or 'FINISHED_DRAW', respectively. This
           is to alert the interaction that a mode has been completed.

           SELECT:   All SELECT mode events are passed to the selectable object for initialization
                     of the object, as needed. If no initialization is necessary, return immediately.

           DRAW:     DRAW mode events are transitory. The object disappears as soon as the drawing of
                     the object is complete and an ACCEPT event is sent to the responsible event handler.

           INSERT:   INSERT mode events result in a new selectable object being created and inserted into
                     the object hierarchy. These objects can be selected and manipulated by other "modes"
                     of your choosing. Include the appropriate modes here.

     SYNTAX:

           theObject -> INTERACTIONEVENTS

     ARGUMENTS:

         event:          The widget event that is generated by the draw widget and handled by the Interaction
                         object.

     KEYWORDS:

         INTERACTION:    The object reference to a Interaction object that is receiving events.
                         This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::MOVE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::MOVE

     PURPOSE:

           This method moves the selectable object in a graphics window.

     SYNTAX:

           theObject -> Move, x, y

     ARGUMENTS:

           X:          The number of pixels to move in the X direction.

           Y:          The number of pixels to move in the Y direction.

     KEYWORDS:

           NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

           PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                       contents of the window.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::SELECT

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::SELECT

     PURPOSE:

           This method returns the object reference if the requested point is inside
           the bounding box of the object.

     SYNTAX:

           selectedObject = theObject -> Select, x, y

     ARGUMENTS:

           X:   The X location of a point in device or window coordinates.

           Y:   The Y location of a point in device or window coordinates.

     KEYWORDS:

           SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::SELECTPANEL

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::SELECTPANEL

     PURPOSE:

           Similar to a Control Panel, it gives context menu access to properties
           of selectable objects. Objects will have a ContextMenu *only* if they
           have subclassed the SELECTABLEOBJECT object. If you *have* subclassed
           the SELECTABLEOBJECT object, then remove this method from your code.

     SYNTAX:

           selectedObject = theObject -> SelectPanel, x, y, drawID

     ARGUMENTS:

           X:       The X location of a point in device or window coordinates.

           Y:       The Y location of a point in device or window coordinates.

           DRAWID:  The identifer of the draw widget object in which the selection is taking place.

     KEYWORDS:

           None:

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)

## SELECTABLE_OBJECT_TEMPLATE::SETPROPERTY

[Previous Routine] [List of Routines]

     NAME:
           SELECTABLE_OBJECT_TEMPLATE::SETPROPERTY

     PURPOSE:

           This method allows the user to set the SELECTABLE_OBJECT_TEMPLATE object's properties. Be sure
           you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!

     SYNTAX:

           theObject -> SetProperty ...

     ARGUMENTS:

         None.

     KEYWORDS:

         Usually the same keywords that can be set in the INIT method.

         DRAW:       Set this keyword if you wish to call the DRAW method on SetProperty completion.

         NOMESSAGE:  Set this keyword to suppress normal message sending.

(See C:\IDL\Catalyst\templates\selectable_object_template.pro)