||Version 0.50
||Copyright
||BeginDocIndexOffset
947074                  
||EndDocIndexOffset
{DocInfo "" 0 2 ""}
{PackageDocInfo "controls/logical-controls/load.scurl" 0 2 "" "CURL.UTIL.OBSERVER, CURL.UTIL.OBSERVER, CURL.GUI.CONTROL-HELPERS, CURL.GUI.CONTROL-BASE, CURL.GUI.TEXT-FORMATS, CURL.GUI.BASE, CURL.GRAPHICS.STANDARD, CURL.DATA-ACCESS.BASE, CURL.UTIL.UNICODE, CURL.UTIL.OBSERVER, CURL.UTIL.ELASTIC, CURL.LANGUAGE.SOURCE, CURL.LANGUAGE.REGEXP, CURL.LANGUAGE.FORMAT" "WINDOW CURL.GRAPHICS.WINDOW CURL.DATA-ACCESS.BASE CURL.DATA-ACCESS.BASE CURL.GUI.CONTROL-BASE CURL.GUI.CONTROL-BASE CURL.UTIL.ELASTIC CURL.UTIL.ELASTIC CURL.GUI.TEXT-FORMATS CURL.GUI.TEXT-FORMATS CURL.GUI.CONTROL-HELPERS CURL.GUI.CONTROL-HELPERS CURL.UTIL.OBSERVER CURL.UTIL.OBSERVER CURL.LANGUAGE.SOURCE CURL.LANGUAGE.SOURCE CURL.GRAPHICS.STANDARD CURL.GRAPHICS.STANDARD CLIPBOARD CURL.DESKTOP.CLIPBOARD CURL.LANGUAGE.REGEXP CURL.LANGUAGE.REGEXP CURL.UTIL.UNICODE CURL.UTIL.UNICODE CURL.GUI.BASE CURL.GUI.BASE CURL.LANGUAGE.FORMAT CURL.LANGUAGE.FORMAT "}}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 22351 141 {text {purpose
        Thrown by a {docref StringDataModelRange} when an attempt is
        made to set an index to an invalid value.
    }
} "Exception"$""}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 22568 117 {text {purpose
        The {docref StringDataModelRange} for which the boundary
        exception occurred.
    }
  } "StringDataModelRange" 0 }
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 22684 52 {text {purpose Construct this {ctext Exception}}
  } 42 range:StringDataModelRange, message:String ""}
{ClassDocInfo "controls/logical-controls/text-area-ui.scurl" 467 14 {unadvertised} "TextAreaUI"$""}
{MethodDocInfo "controls/logical-controls/text-area-ui.scurl" 535 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/slider-ui.scurl" 443 351 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref Slider} control.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"StandardSliderUI, SkinnableSliderUI"}
{FieldDocInfo "controls/logical-controls/slider-ui.scurl" 721 191 {text {purpose 
        State variable that indicates whether the object has keyboard
        focus or not.
    }
    {deprecated
        Use {docref Visual.has-key-focus?} instead.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 1760 2 "" 9 e:FocusIn "void"}
{AccessorDocInfo "controls/logical-controls/slider-ui.scurl" 1321 203 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "Slider"}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 1956 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 1403 2 "" 14 e:PointerPress "void"}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 2448 283 {text {purpose
        Notifies the UI that the contents of {docref Slider.labels} have
        changed.
    }
    {override
        The subclasses of {docref SliderUI} should override this method
        to take necessary steps to update the labels of the {docref Slider}.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 1002 199 {text {purpose
        Construct a new {ctext SliderUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/spin-control-ui.scurl" 440 348 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref SpinControl}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"StandardSpinControlUI, SkinnableSpinControlUI"}
{AccessorDocInfo "controls/logical-controls/spin-control-ui.scurl" 724 189 {text {purpose Return the control this UI delegate is attached to.}
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "SpinControl"}
{AccessorDocInfo "controls/logical-controls/spin-control-ui.scurl" 1541 387 {text {purpose
        The object that should request key focus when the {docref
        SpinControl} associated with this {docref SpinControlUI}
        becomes active.
    }
    {override
        By default it returns {ctext self}. Override this method to
        specify a different focus object of the {ctext SpinControl}
        associated with this {ctext SpinControlUI}.
    }
  } "Visual"}
{MethodDocInfo "controls/logical-controls/spin-control-ui.scurl" 1038 204 {text {purpose
        Construct a new {ctext SpinControlUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 218 126 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref TabAccordion}.
    }   
} "MultiTabControlUI"$"StandardMultiTabAccordionUI, SkinnableMultiTabAccordionUI"}
{AccessorDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 524 203 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "MultiTabAccordion"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 971 320 {text {purpose
        Construct a new {ctext MultiTabAccordionUI}. 
    }
    {parameter control, 
        The {docref MultiTabAccordion} for which this object is a UI delegate.
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{VariableDocInfo "controls/logical-controls/menu-bar.scurl" 192 22 {text {unadvertised}
} 7 Elastic 95 {make-elastic 
        stretchiness = 2, 
        stretch-order = compliant-stretch-order
    }}
{ClassDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2204 14 {unadvertised} "ComboBoxUndoItem"$""}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5764 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2404 14 {unadvertised} "#StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 3625 14 {unadvertised} 41 selection-context:ComboBox, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5547 14 {unadvertised} 26 selection-context:ComboBox "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 3061 14 {unadvertised} 41 selection-context:ComboBox, num-chars:int "void"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2440 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 3005 14 {unadvertised} "bool"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 4781 14 {unadvertised} 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 4506 14 {unadvertised} 0  "StringBuf"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2316 14 {unadvertised} "#StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5024 14 {unadvertised} 26 selection-context:ComboBox "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2484 14 {unadvertised} 79 value:String, index:int, length:int, ch:char = '\ufffe', has-value?:bool = true ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 45602 91 {text {purpose 
        Select all nodes in a {docref TreeControl}.
    }
    {since 4.0}
} "SelectAllCommand"$""}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 45939 2 "" "TreeControl"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 46226 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 46070 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 45848 155 {text {purpose Construct new {ctext TreeControlSelectAll}.}
    {parameter context, 
        {docref TreeControl} on which this command operates.
    }
  } 19 context:TreeControl ""}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 10744 143 {text {purpose A simple {docref StringDataModel} implementation.}
    {details
        Uses a {docref StringBuf} to store the contents.
    }
} "StringDataModel"$""}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 11984 2 "" "int"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 11228 278 {text {purpose Caches last {ctext to-String} value.}
    {details
        If non-null, this value will be returned by
        {docref-abbr SimpleStringDataModel.to-String}.

        Operations that modify the string must set
        this field to null.
    }
    {since 6.0}
  } "#String" 0 }
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 12239 2 "" 30 str:StringInterface, index:int "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 11548 2 "" 9 index:int "char"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 11625 2 "" 0  "String"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 10897 63 {text {purpose The representation of the contained string.}
  } "StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 12159 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 11871 2 "" 21 value:StringInterface "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 12049 2 "" 21 start:int, length:int "String"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 12551 2 "" 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 11417 127 {text {purpose Initializes a {docref SimpleStringDataModel}.}
    {parameter str,
        A string to be represented.
    }
  } 19 str:StringInterface ""}
{ProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 18277 14 {unadvertised} 91 key:String, value:any, start:int, limit:int, max-limit:int, old-styles:{Array-of TextStyle} "new-styles:{Array-of TextStyle}"}
{ClassDocInfo "controls/logical-controls/data-models.scurl" 14374 107 {text {purpose
        A {docref ListModel} for which the mutation operations cause
        errors.
    }
} "ListModel"$""}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 14850 2 "" 52 index:int, item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 15050 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 14453 2 "" 41 item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 14645 2 "" 52 item:any, index:int, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 15167 2 "" 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{ProcDocInfo "controls/logical-controls/buttons.scurl" 68472 4880 {text {purpose
        This procedure provides a shortcut interface for
        creating a {ctext RadioFrame}
        with a series of horizontal or vertical radio buttons.
    }

    {parameter value, Initial value of the radio button container,
        indicating which radio button should be active when the
        container is created. If set, {italic value} should
        be set to the {italic value} property of one of
        its radio buttons.
    }

    {parameter direction, Indicates whether the radio buttons are
        horizontal or vertical. Valid values are:
        {itemize
            {item {ctext Orientation.vertical} (the default)}
            {item {ctext Orientation.horizontal}}
        }
    }

    {parameter rest-args, Options and/or radio button values.}

    {paragraph
        Radio button values are used to create {docref RadioButton}s. How
        the radio buttons are created, and whether they are created,
        depends on the data type of the radio button value.
        Radio button values must be specified in positional argument
        format.

        Valid radio button values are data of the following types:
        {itemize
            {item {docref RadioButton}: This object is used directly as
                the radio button. No new radio button is created.}
            {item {docref String}: Creates a {docref RadioButton} whose
                {italic value} and {italic label} properties are set to
                the {ctext String}.}
            {item {docref Visual}: Creates a {docref RadioButton} whose
                {italic value} and {italic label} properties are set to
                the {ctext Visual} object.}
        }
    }

    {for-example
        The following example creates a set of radio buttons in a radio
        button container by using the shortcut procedure {docref radio-buttons}.

        {example
            {Dialog
                {VBox
                    spacing = 6pt,
                    {paragraph Choose your favorite Curlers:},
                    {radio-buttons
                        "Mike Harris",
                        "Sam Richardson",
                        "Colleen Jones",
                        value = "Sam Richardson"}
                }
            }
        }
    }

    {for-example
        The following example shows how a {docref RadioFrame} with
        three differently supplied radio button values is created using
        the shortcut procedure {docref radio-buttons}. Note that
        to create the third {docref RadioButton}, the
        code supplies a {docref Visual} whose appearance changes
        when the pointer is placed over it.

        {example
            || Creating a Visual object to supply to
            || radio-buttons for creating the third RadioButton
            {let harvey:Frame =
                {Frame
                    {text Harvey Mazinke},
                    {on PointerEnter at f:Frame do
                        || When the user clicks on the frame, change the
                        || appearance.
                        set f.background = "yellow"
                        {f.add
                            {text I like Harvey!},
                            replace? = true
                        }

                        || Set up a timer to put things back after 1 second.
                        {Timer
                            interval = 1s,
                            repeat = 1,
                            {on TimerEvent do
                                || When the timer goes off, reset to the
                                || original appearance.
                                {unset f.background}
                                {f.add
                                    {text Harvey Mazinke},
                                    replace? = true
                                }
                            }
                        }
                    }
                }
            }
            {Dialog
                {VBox
                    spacing = 6pt,
                    {paragraph Choose your favorite Curlers:},
                    {radio-buttons
                        value = harvey,
                        direction = Orientation.horizontal,
                        || Supplying a RadioButton directly
                        {RadioButton
                            label =
                                {text
                                    font-style = "italic",
                                    color = "teal",
                                    Ed Werenich},
                            radio-value = "Ed Werenich"},
                        || Supplying a String
                        "Hec Gervais",
                        || Supplying a Visual
                        harvey
                    }
                }
            }
        }
    }
} 67 value:any = null, direction:Orientation = Orientation.vertical, ... "RadioFrame"}
{ClassDocInfo "controls/logical-controls/text-fields.scurl" 53303 2743 {text {purpose
        Implements a single-line text entry box, specialized for
        passwords.
    }
    {details
        The {ctext PasswordField} typically does not "echo" its value
        for the user to see.  Instead, it displays each character as
        an {docref-abbr PasswordField.echo-char} (an asterisk by
        default).

        Also, the {ctext PasswordField} will not allow passwords to be
        cut or copied from it, since we cannot guarantee the security
        of the clipboard.

        Otherwise, {ctext PasswordField} is like {ctext TextField} in
        most ways.  It inherits all of {ctext TextField}'s properties
        and methods.  The same high-level events {em-dash} {ctext
        ValueChanged}, {ctext ValueFinished}, {ctext Action},
        etc. {em-dash} that are used in {ctext TextField} are also
        used in {ctext PasswordField}, with the same semantics.
    }
    {expected-events
        {event ValueChanged,
            Fired when any key is typed, when any editing {docref
            Command}s occur (e.g., cut, paste), or when {docref-abbr
            TextField.set-value-with-events} is called.
        }
        {event ValueFinished,
            Fired when focus is lost, when the user presses the {ctext
            Enter} key, or when {docref-abbr
            TextField.set-value-with-events} is called.  The event is
            guaranteed to fire if the {docref-abbr TextField.value}
            has changed since the last {docref ValueFinished}, but
            may fire even if the {ctext value} has not changed.
        }
        {event Action,
            Fired when the user presses the {ctext Enter} key.  Needed
            when the application must distinguish between focus loss
            and an {ctext Enter} keystroke, such as in a modal dialog
            with a single text field and a "Cancel" button.
        }

        {event Commit,
            Sent by {docref Dialog} when {docref Dialog.commit} is
            called.
        }
        Event handlers written for {docref PointerPress}, {docref
        PointerRelease}, and {docref RawKeyPress} will not be
        triggered; use {docref ValueChanged}, {docref ValueFinished},
        or {docref KeyPress} instead.
    }
    {visual-testing
        This class implements the {ctext CurlEdit} visual test type.
        See {docref BaseTextField} for details.
    }
    {notes
        This object can be styled by writing style rules for "PasswordField" and
        "PasswordField/string-box". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
                     },
        Skinning Text Controls} for more information.
    }
} "BaseTextField"$""}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 56727 2 "" "String"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 57528 2 "" 30 text-to-insert:StringInterface "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 57340 263 {text {purpose
        The character that should be shown in the field for each
        password character typed.
    }
    {notes
        The default is platform-dependent, but is generally either
        the asterisk character or the bullet character.
    }
  } "char"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 57412 2 "" "char"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 53406 2 "" "String"}
{OptionDocInfo "controls/logical-controls/text-fields.scurl" 56639 "any" 8 "origin" 292 {text {purpose
        Specifies how the text within the {ctext PasswordField} will be
        horizontally aligned, relative to the display area of the
        control.
    }
    {details
        See {docref Frame.halign} for information about
        valid values for this option.
    }
  }}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 56852 2 "" 0  "ControlUI"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 53372 14 {unadvertised} "char" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 57802 2 "" 11 name:String "#Command"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 55231 1437 {text {purpose
        Creates a {ctext TextField}.
    }
    {parameter data-model,
        The initial {docref-abbr TextField.data-model} for this {ctext
        TextField}.  When this value is {ctext null}, the {docref-abbr
        TextField.create-data-model} method will be called to create the
        initial data model.
    }
    {parameter value,
        The initial {docref-abbr TextField.value} of the 
        {ctext TextField}. If {ctext null}, and a {ctext data-model} 
        parameter was provided which was not empty, the value of the 
        control will be the {ctext data-model}'s contents.  Otherwise,
        {docref TextField.has-value?} will be false, and the 
        {docref-abbr TextField.prompt} (if any) will be displayed instead.
    }
    {parameter echo-char,
        The character that should be shown in the field for each
        password character typed.
    }
    {parameter prompt,
        The initial {docref-abbr TextField.prompt} {docref String} to
        be shown when {docref TextField.has-value?} is {ctext false}.
    }
    {parameter max-chars,
        The initial {docref-abbr TextField.max-chars} value, which
        specifies the maximum number of characters that should be
        entered into the {ctext TextField}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 372 data-model:#StringDataModel = null, value:#String = null, echo-char:char = {platform-switch 
                               case "carbon" do
                                  '\u2022'
                               else
                                  '*'
                              }, prompt:#String = null, max-chars:int = -1, ui-object:#PasswordFieldUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/scrollbox.scurl" 161 14 {unadvertised} "Fill"$""}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 302 14 {unadvertised} 53 scrollbox:ScrollBox, scrollbar:#Scrollbar = null, ... ""}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 1399 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 1683 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 211 2 "" "ScrollBox" 0 }
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 934 "FillPattern" 0  2 ""}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 1021 "bool" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 1207 2 "" "Scrollbar"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 255 2 "" "#Scrollbar" 0 }
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 1118 2 "" "Scrollbar"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 1296 2 "" "bool"}
{ClassDocInfo "controls/logical-controls/undo-helpers.scurl" 2780 14 {unadvertised} "StringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 2973 14 {unadvertised} "#StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 4124 14 {unadvertised} 44 control:StringBaseTextControl, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 5990 14 {unadvertised} 29 control:StringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 3630 14 {unadvertised} 44 control:StringBaseTextControl, num-chars:int "void"}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 3009 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/undo-helpers.scurl" 3574 14 {unadvertised} "bool"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 5251 14 {unadvertised} 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 4976 14 {unadvertised} 0  "StringBuf"}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 2885 14 {unadvertised} "#StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 5494 14 {unadvertised} 29 control:StringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 3053 14 {unadvertised} 79 value:String, index:int, length:int, ch:char = '\ufffe', has-value?:bool = true ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 213547 151 {text {purpose 
        Activate a {docref RecordGridCell} within a {docref RecordGrid},
        by giving it {docref RecordGridUI.grid-focus}.
    }
} "RecordGridMoveCommand"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 213860 88 {text {purpose 
        The index of the {docref RecordGridColumn} to move to.
    }
  } "int" 1 0}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 213724 78 {text {purpose 
        The index of the {docref Record} to move to.
    }
  } "int" 1 0}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 214194 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 214688 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 214070 159 {text {purpose
        Instantiate this object.
    }
    {parameter grid,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 15 grid:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 215260 147 {text {purpose 
        Activate the next {docref RecordGridCell} within a 
        {docref RecordGrid}, as if by pressing the right arrow.
    }
} "RecordGridMoveCommand"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 216197 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 215647 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 215521 159 {text {purpose
        Instantiate this object.
    }
    {parameter grid,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 15 grid:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 42886 183 {text {purpose
        Represents a {docref String} with optional formatting
        attributes.
    }
    {notes
        This class is expected to change in a future release.
    }
} ""$""}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 49420 14 {unadvertised} 0  "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 65172 14 {unadvertised} 167 source:CurlSource, buf:StringBuf, text-styles:{Array-of TextStyle}, style-stack:{Array-of TextStyle}, index:ParseIndex = 0, possible-interpretation-error?:bool = false "bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 53570 14 {unadvertised} 9 index:int "int"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 58394 14 {unadvertised} 136 out:TextOutputStream, distinguish-unset-attributes?:bool, text:StringInterface, style:TextStyle, start:int, end:int, start-of-line?:bool "start-of-line?:bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 49871 179 {text {purpose
        Produces a String that is == to self, minus formatting.
    }
    {return-vals
        A String containing the characters in self.
    }
    {since 6.0}
  } 0  "String"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 70143 14 {unadvertised} 46 ts:TextStyle, text-styles:{Array-of TextStyle} "void"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 42968 14 {unadvertised} "{Array-of TextStyle}" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 50719 14 {unadvertised} 59 key:String, value:any, start:int = 0, limit:int = self.size "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 56441 14 {unadvertised} 78 out:TextOutputStream, format-type:RichTextStringFormatType, start?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 54718 14 {unadvertised} 7 ch:char "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 62959 14 {unadvertised} 115 out:TextOutputStream, distinguish-unset-attributes?:bool, text:StringInterface, style:TextStyle, start:int, end:int "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 62227 14 {unadvertised} 39 str:StringInterface, start:int, end:int "StringInterface"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 57173 14 {unadvertised} 174 out:TextOutputStream, distinguish-unset-attributes?:bool, format-type:RichTextStringFormatType, text:StringInterface, style:TextStyle, start:int, end:int, start-of-line?:bool "start-of-line?:bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 54799 14 {unadvertised} 109 out:#TextOutputStream = null, distinguish-unset-attributes?:bool = true, format-type:RichTextStringFormatType "String"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 43217 110 {text {purpose
        Creates a new {ctext RichTextString} from a {docref
        StringInterface}.
    }
  } 19 str:StringInterface "RichTextString"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 70569 14 {unadvertised} 39 buf:StringBuf, contents:StringInterface "void"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 43013 14 {unadvertised} "TextStyle" 25 {TextStyle.default-style}}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 48151 14 {unadvertised} 19 str:StringInterface "(rts:RichTextString,
                          possible-interpretation-error?:bool)"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 60562 14 {unadvertised} 60 str:StringInterface, start:int, end:int, start-of-line?:bool "(str:StringInterface, start-of-line?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 51150 14 {unadvertised} 0  "RichTextString"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 74867 14 {unadvertised} 13 cs:CurlSource "never-returns"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 52953 752 {text {purpose Indicates if {ctext self} is equal to {param other}.}
    {parameter other, The {ctext RichTextString} to compare with.}
    {parameter distinguish-unset-attributes?,
        When {ctext true} (the default), an attribute that is
        explicitly set to the same value as the default value will not
        match the default value.  When {ctext false}, it will match.
        Typically this value should match
        {docref RichTextArea.distinguish-unset-attributes?}.
    }
    {details
        Two {ctext RichTextString}s are equal if their text is equal
        and if their stored attribute values are equal, taking into
        consideration the effects of {param
        distinguish-unset-attributes?}.
    }
    {since 7.0}
  } 63 other:RichTextString, distinguish-unset-attributes?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 53859 14 {unadvertised} 304 c:char, ignore-case?:bool = false, search-direction:SearchDirection = SearchDirection.forward, starting-index:int = {if search-direction == SearchDirection.forward then
                              0
                           else
                              self.size - 1
                          } "int"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 49946 14 {unadvertised} 0  "StringInterface"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 51386 14 {unadvertised} 21 start:int, length:int "#RichTextString"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 51926 14 {unadvertised} "int"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 60505 14 {unadvertised} "StringBuf" 11 {StringBuf}}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 44610 1120 {text {purpose Iterates through the attributes on the string.}
    {parameter iteration-index,
        An opaque ordered number indicating the iteration position.
        This value should be {ctext 0} on the first iteration.
        Subsequent iterations should use the previously returned
        iteration index.  If this protocol is not followed, the
        behavior is undefined.  An exception will be thrown when this
        parameter value is negative.
    }
    {return-vals
        The iteration index to use on the next iteration followed by
        the attribute information.  When the returned iteration index
        is < 0, the attribute values are invalid and iteration should
        terminate.
    }
    {details
        The announced attributes may not be the most compact
        representation.  For example, if a {ctext RichTextString} has
        an attribute {ctext A} on range {ctext [0,4]} and attribute
        {ctext B} on range {ctext [0,2]}, it is possible that attribute
        {ctext A} will be announced for both range {ctext [0,2]} and
        {ctext [2,4]}.
    }
    {since 7.0}
  } 19 iteration-index:int "(next-iteration-index:int,
                    key:String, value:any, start:int, limit:int)"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 51861 178 {text {purpose
        The number of characters in {ctext self}.
    }
    {details
        See {docref-abbr StringInterface.size} for more information.
    }
    {since 6.0}
  } "int"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 71476 14 {unadvertised} 137 source:CurlSource, buf:StringBuf, text-styles:{Array-of TextStyle}, style-stack:{Array-of TextStyle}, possible-interpretation-error?:bool "bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 54557 14 {unadvertised} 9 index:int "char"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 42929 14 {unadvertised} "StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 50028 14 {unadvertised} 18 index:int, ch:char "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 54630 14 {unadvertised} 18 ch:char, index:int "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 66167 14 {unadvertised} 120 keywords:{Array-of SingleBinding}, char-index:int, style-stack:{Array-of TextStyle}, possible-interpretation-error?:bool "(ts:TextStyle,
                          possible-interpretation-error?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 50234 14 {unadvertised} 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 52125 14 {unadvertised} "bool"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 49183 14 {unadvertised} 48 str:StringInterface, styles:{Array-of TextStyle} ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 531 438 {text {purpose
        Define a special group of "inheritable" local options for
        {docref RecordGrid}, {docref RecordGridColumn}s, and
        {docref RecordGridCell}.
    }
    {details
        IMPORTANT NOTE: Instances of {docref RecordGridColumn}
        and {docref RecordGridCell}, and {docref RecordGrid}
        "inherit" the value of local options specified here from each
        other if they are not set locally.
    }
} "OptionListInterface"$"BaseRecordGridColumn, RecordGridCell, RecordGrid"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 10457 "any" 4 null 1379 {text {purpose
        Determine how {ctext String} input will be parsed for
        entry into the field associated with this column. 
    }
    {details
        This value should be either 
        {itemize
            {item
                a proc of type {ctext {proc {value:String}:any}},
                where {param value} represents a string input by the
                user.
            }
            {item
                a proc of type
                {ctext {proc {value:String, record:Record}:any}},
                where {param value} represents a string input by the
                user and {param record} represents the source
                {ctext Record} currently displayed by the cell.
                Note that the {param record} parameter provides access
                to both the source {ctext Record} and its associated
                {ctext RecordSet} and thus can be very useful for
                context dependent parsing.
            }
            {item
                {ctext null} (default). 
            }
        }
        If {ctext null},  {docref RecordGridCell.parse} will be used
        for parsing instead.

        Note that any proc specified for this option may return a 
        {docref ValidationException} indicating a rejection of the
        input.
        
        See also {docref RecordGridCell.get-parsed-value}.
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 2048 "bool" 4 true 299 {text {purpose
        Are {docref RecordGridCell}s permitted to take grid focus?
    }
    {details
        When this option is false, since cells cannot have grid focus,
        gestures in a {docref RecordGridUI} will likely be limited
        to selection (if available) and scrolling.
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 6917 "any" 4 null 444 {text {purpose
        Specification of custom {docref RecordGridCell}
        to be used for displaying data in this column.    
    }
    {details
        Specified either as a proc of type
        {ctext {proc {RecordGridColumn}:RecordGridCell}} or
        a {ctext Type} which is a subtype of
        {docref RecordGridCell}.
        
        If {ctext null}, the cell type will be determined
        automatically by the control.
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 11506 "any" 37 RecordGridOptions.default-column-sort 523 {text {purpose
        Sort to be used for sorting based on a column.
    }
    {details 
        Specified either as a {docref RecordSort}, a proc of type
        {ctext {proc {RecordGridColumn}:RecordSort}}, or {ctext null}.
        
        If {ctext null}, the control should not provide an interface
        for sorting by this column.
        
        The default value sorts the records according to the column's 
        associated field, with comparisons specified by the field's 
        {ctext Domain}.
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 1529 "bool" 4 true 88 {text {purpose
        Can a {docref RecordGridColumn} be resized by dragging?
    }
  }}
{ClassVariableDocInfo "controls/logical-controls/record-grid.scurl" 843 14 {unadvertised} "{Set-of String}" 364 {{Set-of String} 
        "editable?", 
        "cells-take-focus?",
        "edit-on-focus?",
        "filter-menu-proc",
        "column-movable?",
        "column-resizable?",
        "header-spec",
        "cell-spec",
        "sort-spec",
        "format-spec",
        "parse-spec",
        "enclose-header-label?",
        "halign",
        "valign"
      }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 12916 14 {unadvertised} 42 parent:#OptionListInterface, removed?:bool "void"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 8696 "any" 4 null 1414 {text {purpose 
        Determine how data in this column is formatted to a {docref String}.
    }
    {details
        This value should be either 
        {itemize
            {item
                a {ctext String} appropriate for use 
                with the {docref format} macro.
            }
            {item
                a proc of type {ctext {proc {data:any}:String}},
                where {param data} represents the data associated with
                this cell, as defined by {docref RecordGridCell.get-data}.
            }
            {item
                a proc of type {ctext {proc {data:any, record:Record}:String}},
                where {param data} represents the data associated with
                this cell, as defined by {docref RecordGridCell.get-data}, and
                {param record} represents the source {ctext Record} currently
                displayed by the cell.  Note that the {param record} parameter
                provides access to both the source {ctext Record}
                and its associated {ctext RecordSet} and thus can be very
                useful for context dependent formatting.
            }
            {item
                {ctext null} (default). 
            }
        }
        If {ctext null}, {docref RecordGridCell.format} will be used for
        formatting instead.

        See also {docref RecordGridCell.get-formatted-data}.
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 12035 "bool" 4 true 179 {text {purpose
        Whether a {ctext RecordGrid} header label should have a visual border
        between itself and any shared column header or empty space above it.
    }
  }}
{ClassVariableDocInfo "controls/logical-controls/record-grid.scurl" 10789 14 {unadvertised} "any" 132 {proc {col:RecordGridColumn}:RecordSort
        {return
            {DefaultRecordSort.from-string col.field-name}
        }
      }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 1681 "bool" 4 true 86 {text {purpose
        Can a {docref RecordGridColumn} be moved by dragging?
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 12547 "any" 8 "origin" 187 {text {purpose
        Vertical alignment of content within {ctext RecordGridCell}s.
    }
    {details
        See {docref Frame.valign} for information about valid values.
    }    
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 1381 "bool" 4 true 89 {text {purpose
        Can {docref RecordGridCell}s edit the data they display?
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 12295 "any" 8 "origin" 187 {text {purpose
        Horizontal alignment of content within {ctext RecordGridCell}s.
    }
    {details
        See {docref Frame.halign} for information about valid values.
    }  
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 2773 "#{proc-type {{Array-of MenuItem}, RecordGridCell}:{Array-of MenuItem}}" 4 null 657 {text {purpose
        Controls filter menu items over a {docref RecordGridCell}.
    }
    {details
        This option allows cell-by-cell customization of the filtering
        controls presented in a {docref RecordGrid}'s context menu.
        
        In the default {docref RecordGridUI}s,
        this proc will be called each time
        a context menu is created for that cell, and will receive
        an array of all the regular filter-related {docref MenuItem}s
        and the context cell as its arguments. The array returned
        from this proc will then be placed into the filters section
        of the generated context menu.
    }
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 14032 14 {unadvertised} 17 key:OptionItemKey "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 5996 "any" 4 null 959 {text {purpose
        Specification of a header label which describes
        the contents of this column. 
    }
    {details 
        If this property is {ctext null} (the default), a header label 
        based on the {docref-abbr RecordField.caption} property of the 
        {ctext RecordField} being displayed by this column will 
        be used. If this property is a proc of type 
        {ctext {proc {RecordGridColumn}:Graphic}} or
        {ctext {proc {BaseRecordGridColumn}:Graphic}},
        the proc will be used to generate the header dynamically.
        In all other cases, the value of this option will simply be 
        cast to a {ctext Graphic} for use as the label.
        
        To hide all headers in the grid completely, set 
        {docref RecordGrid.display-column-headers?} to {ctext false}.  If 
        you wish to display an empty label for one or more columns, set 
        this property to {ctext ""}.         
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 4970 "bool" 4 true 2048 {text {purpose 
        Controls whether cells should immediately show their editing UI upon
        receiving grid focus.
    }
    {details
        {docref RecordGridUI}s often must manage a difficult
        balance between intercell navigation and internal cell editing.
        Should a {docref KeyPress} change the current cell to a different
        cell, or alter the state of current cell?
        When this option is true for a cell, editing should be favored.
        When false, intercell navigation should be favored.
    }
    {notes
        In {docref StandardRecordGridCell}, the
        {docref StandardRecordGridCell.edit-active?} property becomes true
        immediately when a cell receives {docref RecordGridUI.grid-focus}
        if this option is true.
    }
    {for-example 
        {docref StandardRecordGridCell}s will show their
        editing {docref Control} immediately upon receiving
        {docref RecordGridUI.grid-focus} when this option is true.
        Note that if you navigate to a cell in the first column, where
        the option is false, that no editing UI is immediately shown,
        but one will appear as soon as you type or double-click there.
        
        {example 
            title = {text edit-on-focus? Variations}, 
            {let people:RecordSet =
                {RecordSet
                    {RecordFields
                        {RecordField "First", domain = String},
                        {RecordField "Last", domain = String},
                        {RecordField "Age", domain = int}
                    },
                    {RecordData First = "John", Last = "Smith", Age = 25},
                    {RecordData First = "Jane", Last = "Smith", Age = 29},
                    {RecordData First = "Jane", Last = "Jones", Age = 28}
                }
            }
            
            {RecordGrid
                record-source = people,
                height = 3cm,
                {RecordGridColumn "First", edit-on-focus? = false}
            }
        }
    }

  }}
{ProcDocInfo "controls/logical-controls/http-form-btns.scurl" 822 730 {text {purpose 
        Create and return a standard "Submit" button for use 
        in an {docref HttpForm}. The {docref Action} event
        handler submits the form that contains the button
        by calling {docref HttpForm.submit}.
    }
    {parameter submit-name, submit-value,
        If submit-name and submit-value are non-null, the
        name/value pair is submitted with the form. Both name
        and value are URL encoded before being submitted.
    }
    {parameter ...,
       Passed to {docref CommandButton} constructor.
    }
    {details
        The default label is "Submit" and the default width is 60pt.
        An error is thrown if this button is used outside of an
        {ctext HttpForm}.
    }
} 130 label:Label = {hlmessage Submit}, width:any = {ensure-min-size 60pt}, submit-name:#String = null, submit-value:#String = null, ... "CommandButton"}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 195391 1179 {text {purpose 
        A "bundle" of graphic option settings to be applied to an entire
        row in a {docref RecordGrid}.
    }
    {details
        See {docref RecordGrid.header-options}, which may be set 
        to an instance of this class in order to centrally control
        the formatting of column headers. 
    
        Note that this option bundle is not directly involved in the 
        lookup path of options within {ctext RecordGrid}, which 
        follows the path :
        {ctext RecordGridCell} - > {ctext RecordGridColumn} -> 
        {ctext RecordGridUI} - > {ctext RecordGrid}.
        
        These option settings should be set by the {ctext RecordGridUI}
        so that they are effectively spliced between
        the {ctext RecordGridCell}s (or header labels) and their respective
        {ctext RecordGridColumn}s.  In other words, any settings made here
        should override or take precedent over a similar setting in the
        column.
        
        This object should notify its associated grid whenever
        option settings on it are changed via the method 
        {docref RecordGrid.note-row-options-changed}.
        
    }
} "GraphicOptionList"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 195641 2 "" 21 key:String, value:any "void"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 196295 "any" 8 "origin" 187 {text {purpose
        Vertical alignment of content within {ctext RecordGridCell}s.
    }
    {details
        See {docref Frame.valign} for information about valid values.
    }    
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 196043 "any" 8 "origin" 187 {text {purpose
        Horizontal alignment of content within {ctext RecordGridCell}s.
    }
    {details
        See {docref Frame.halign} for information about valid values.
    }  
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 196428 "Background" 23 FillPattern.transparent 68 {text {purpose 
        The background color for this row.
    }
  }}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 195471 14 {unadvertised} "#RecordGrid" 4 null}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 195567 42 {text {purpose Construct this object.}
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 196755 109 {text {purpose 
        Select all records, columns, and/or regions in a
        {docref RecordGrid}.
    }
} "SelectAllCommand"$""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 197099 2 "" "RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 197569 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 197233 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 197009 166 {text {purpose
        Construct new {ctext RecordGridSelectAll}.
    }
    {parameter context, 
        {docref RecordGrid} on which this command operates.
    }
  } 18 context:RecordGrid ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 1787 59 {text {purpose
        The text color for holidays.
    }
} 11 FillPattern 9 "crimson"}
{ClassDocInfo "controls/logical-controls/selection.scurl" 1875 113 {text {purpose 
        Interface for controls that may have multiple items selected
        at one time.
    }
} "SelectionControl"$"ListBox"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 3413 52 {text {purpose Deselects the item indexed by i.}
  } 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 3603 111 {text {purpose 
        Selects the indices returned by the iterator given, and fires
        events.
    }
  } 25 indices:{Iterator-of int} "void"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 3167 82 {text {purpose Sets the selected? field of all items in this control to true.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 3285 50 {text {purpose Selects the item indexed by i.}
  } 5 i:int "void"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 2419 438 {text {purpose The {docref SelectionPolicy} used by this control.}
    {details 
        See {docref SelectionPolicy} for more information on 
        possible settings for this property.
        
        The value of this property determines the selection gestures that
        the control is expected to support.
        
        Programmatic attempts to select items which would violate this
        policy will yield errors.
    }
  } "SelectionPolicy"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 2653 74 {text {purpose An iterator over the indices of all the selected items}
  } "{Iterator-of int}"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 2486 2 "" "SelectionPolicy"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 3013 76 {text {purpose Returns a count of how many items are currently selected}
  } "int"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 2845 109 {text {purpose 
        An iterator over each SelectableItem whose selected? field is
        true.
    }
  } "{Iterator-of SelectableItem}"}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 83861 4858 {text {purpose 
        Implements a {ctext ComboBox} control, which is a selectable
        list of values combined with an editable text field.
    }
    {details
        A {ctext ComboBox} shows a single value in an editable text field,
        and allows the user to show a selectable list of possible values.
        When the user selects a value in the list, that value appears in the
        editable text field, and the user can then edit or erase it.
    }
    {for-example
        This example shows a standard {ctext ComboBox}:

        {example
            {ComboBox
                "Antelope", "Llama", "Horse",
                value = "Antelope"
            }
        }
    }

    {usage
        The value for a list item in a {ctext ComboBox} does not have to
        be the same as the list item itself. For example, you can create a
        {ctext ComboBox} with {docref ListItem}s that hold
        explicit value / {docref Visual} pairs.
        If you choose to write your own subclass, you will need to
        implement the {docref-abbr Visual.clone-appearance} method.

        Alternatively, you can specify a single procedure
        that, when given a value, produces a {docref ListItem}.
        The text of the selected value always appears in the text field,
        however, not the display {docref Visual}.
        While this is possible, it is not recommended, as it would
        confuse a user to see one value in the list yet see another
        in the text field when that value is selected.

        While the {docref ListModel} concept used by {ctext ComboBox}
        supports various values, {ctext ComboBox} itself does not support
        {docref String} values containing newlines or values longer
        than the {docref-abbr ComboBox.max-chars} setting.
        Conflicts between such values in list items within the model and
        {ctext ComboBox} may cause unexpected behavior when the
        control's value is set.
        
        See {docref DropdownList} for examples that demonstrate how
        to create custom {docref ListItem}s.
    }
    {expected-events
        {event
            ValueChanged, Fired when the user selects a new value;
            also fired when the user changes the text in the text field,
            and when {docref ComboBox.set-value-with-events} is called.
        }
        {event
            ValueFinished, Fired when the user selects or programmatically
            sets a new value, directly after the {docref ValueChanged} event
            is fired; it is not, however, fired after the user types into
            the text field.
        }
        {event
            Action, Fired when the {ctext ComboBox} has the key focus
            and the user presses the {ctext Enter} key.
        }
        {event
            Commit, Sent by {docref Dialog} when {docref Dialog.commit} 
            is called.
        }
    }
    {visual-testing
        This class implements the {ctext CurlDropdown} visual test type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Selects the {param item} item.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell The number of items to select from.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "ComboBox",
        "ComboBox/string-box" and "ComboBox/drop-button". See {link
        href = {url
                   "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
               },
        Skinning Text Controls} for more information.
    }
} "{BaseComboBox String}, WritableTextSelectionContext"$""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 101818 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 115208 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 119137 14 {unadvertised} 0  "ConstantComboBoxUndoItem"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84445 14 {unadvertised} "int" 3 100}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84125 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 99140 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 101963 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 95118 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 85148 463 {text {purpose
        Indicates whether undo recordings should be made.
    }
    {details
        The intention of this field is to temporarily suppress undo
        recordings via the following construct:

        {ctext {with cb.record-for-undo? = false do ...}}
        
        To disable undo recording under all situations, call
        {docref-abbr ComboBox.request-undo-stack-depth-limit}
        with a parameter of {ctext 0}.
    }
    {since 7.0}
  } "bool" 4 true}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 85196 2 "" "String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 113641 14 {unadvertised} 30 text-to-insert:StringInterface "ComboBoxUndoItem"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 108691 14 {unadvertised} "#ComboBoxUndoItem"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84318 14 {unadvertised} "#StringDataModelSelection" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 112379 14 {unadvertised} 28 num-chars:int, forward?:bool "ComboBoxUndoItem"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 98705 2 "" "bool"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84552 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 101518 2 "" "Graphic"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 103210 14 {unadvertised} 20 text:StringInterface "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 91852 363 {text {purpose 
        The {docref String} to be shown when the control
        has no value.
    }
    {usage 
        It is usually intended to indicate that the user should
        select something, e.g. "Select a color".  If no prompt
        is supplied, then the control is simply blank when
        {docref ComboBox.has-value?} is {ctext false}.
    }
  } "#String"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 89879 419 {text {purpose
        The data model representing the current {docref String} contents
        of this control.
    }
    {details
        This should not be confused with {docref-abbr ComboBox.data-model}.
        That property represents the list model of this control; this
        property represents the {docref String}. The two may effectively
        represent the same value at times.
    }
    {since 7.0}
  } "StringDataModel"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 118250 14 {unadvertised} 27 message:StringSpliceMessage "ConstantComboBoxUndoItem"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 93637 858 {text {purpose
        The value of this control.
    }
    {details
        Setting the value to a {ctext String} longer than
        {docref ComboBox.max-chars} will result in an error.
        Values set will also be truncated to the first newline contained
        within the {ctext String}, if any.

        When this value is set, the {italic first} {docref SelectableItem}
        with the value is selected, unless the control is
        already selecting a lower item with the same value.
        
        If the string is not found within the selectable items within
        the control, no items will be selected, however the new string
        will be displayed and become the value.

        When setting the value, consider using {docref-abbr
        ComboBox.set-value-with-events}, which fires events when the
        value changes.
    }
  } "String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 100419 2 "" 10 val:String "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84378 14 {unadvertised} "#String" 4 null}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84625 14 {unadvertised} "#String" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 91921 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 86152 770 {text {purpose
        Construct this object.
    }
    {parameter value,
        See {docref ComboBox.value}.
    }
    {parameter data-model,
        See {docref ComboBox.data-model}.
    }
    {parameter prompt,
        See {docref ComboBox.prompt}.
    }
    {parameter max-chars,
        See {docref ComboBox.max-chars}.
    }
    {parameter dropdown-height,
        See {docref ComboBox.dropdown-height}.
    }
    {parameter list-item-creation-proc,
        See {docref ComboBox.list-item-creation-proc}.
    }
    {parameter ui-object, 
        A specific {docref ComboBoxUI} to be used by this control.
        See {docref ComboBox.ui-object} for more information.
    }
    {parameter ...,
        Additional option specifications and event handlers.
    }
  } 334 value:#String = null, data-model:ListModel = {DefaultListModel}, prompt:#String = null, max-chars:int = -1, dropdown-height:Distance = 0pt, list-item-creation-proc:{proc-type
                                                      {val:any}:ListItem} = ListModelControl.default-list-item-creation-proc, ui-object:#ComboBoxUI = null, ... ""}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 92559 514 {text {purpose 
        The maximum number of characters that should be
        entered into the text field.  Default is -1.
    }
    {usage 
        When the limit is reached, the text field refuses to accept
        additional typed or cut-and-pasted characters.  The value -1 means
        that there is no restriction on the number of characters that can
        be entered.  A side effect of setting this property is that the
        value of the control is unset via {docref ComboBox.unset-value}.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 101156 2 "" "TextSelection"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 100881 2 "" 5 i:int "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 93728 2 "" "String"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84250 14 {unadvertised} "StringDataModelWritableRange" 0 }
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84583 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 102668 2 "" 20 text:StringInterface "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 115805 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 91406 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 102447 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 111985 14 {unadvertised} 7 ch:char "ComboBoxUndoItem"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 92630 2 "" "int"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 109767 555 {text {purpose
        Records a typing gesture with the undo stack.
    }
    {parameter ch,
        The typed character.
    }
    {details
        This method attempts to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        Also see
        {docref-abbr ComboBox.record-typing-deletion-for-undo}
        and {docref-abbr ComboBox.end-undo-typing-sequence}.
    }
    {notes
        Check {docref-abbr BaseTextControl-of.record-for-undo?} before
        calling this method.
    }
    {since 7.0}
  } 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 119569 14 {unadvertised} 10 val:String "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84494 14 {unadvertised} "#{Dequeue-of ComboBoxUndoItem}" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 119930 2 "" "Visual"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 101583 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 101705 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 114063 14 {unadvertised} 0  "{Dequeue-of ComboBoxUndoItem}"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 116179 2 "" 30 sender:Observable, message:any "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 89245 2 "" 0  "ControlUI"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 83991 14 {unadvertised} "int" 2 -1}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 89978 2 "" "StringDataModel"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 106961 1052 {text {purpose
        Requests a limit to the depth of the undo stack.
    }
    {details
        When the value is negative, the undo stack will have no
        limit. When this value is zero, undo cannot occur. Otherwise,
        the undo stack will be limited to this number of items. The
        default limit is 100.

        In future versions of the Curl{registered-trademark} content
        language, the undo stack might not be under this object's
        direct control. If so, this object might not be capable of
        completely fulfilling the request. Nevertheless, objects of
        this class should handle the request as best they can. In
        particular, requests for negative values should attempt to
        remove any undo stack depth limits, requests of value zero
        should attempt to prevent undo for this object but not other
        objects, and requests for positive values should attempt to
        make sure that at least that many levels of undo are available
        for this object.
    }
    {since 7.0}
  } 7 val:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 94776 2 "" 5 a:any "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84027 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 115426 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 118592 14 {unadvertised} 27 message:StringRemoveMessage "ConstantComboBoxUndoItem"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 105384 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 108539 267 {text {purpose
        Resets the undo state of this object.
    }
    {details
        This method removes all entries from the undo stack,
        as if this object had just been created with its current value
        as the initial value.
    }
    {since 7.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 100320 14 {unadvertised} 8 s:String "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 98169 653 {text {purpose
        The {docref ListModel} backing this control.
    }
    {details 
        If this property is set, it will replace all the items in the
        control with the ones in the new data model.

        While the {docref ListModel} used by {ctext ComboBox}
        supports various values, {ctext ComboBox} itself does not support
        {docref String} values containing newlines or values longer
        than the {docref-abbr ComboBox.max-chars} setting.
        Conflicts between such values in list items within the model and
        {ctext ComboBox} may cause unexpected behavior when the
        control's value is set.
    }
  } "ListModel"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 98782 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 100210 256 {text {purpose
        The value of a control that is to be submitted when
        the {docref HttpForm} in which this control resides is
        submitted.
    }
    {details
        This implementation returns a value of {ctext ComboBox.value}.
    }
  } "any"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 84199 14 {unadvertised} "StringDataModel" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 111884 418 {text {purpose
        Ends the current undo typing sequence.
    }
    {details
        The {docref-abbr ComboBox.record-typing-for-undo} and
        {docref-abbr ComboBox.record-typing-deletion-for-undo}
        methods attempt to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        This methods ends any sequences currently in process.
    }
    {since 7.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 114673 14 {unadvertised} 21 item:ComboBoxUndoItem "void"}
{OptionDocInfo "controls/logical-controls/list-controls.scurl" 91323 "bool" 4 true 360 {text {purpose
        Specifies whether the user is allowed to enter values in the
        text control. By default it is {ctext true}.
    }
    {notes
        If the {docref ComboBox} is not editable, the user can only
        change the value by selecting from the list of values or
        pressing the up and down keyboard keys.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 90831 102 {text {purpose
        The selected range within the current content String.
    }
    {since 7.0}
  } "StringDataModelWritableRange"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 110888 815 {text {purpose 
        Records a deleting typing gesture with the undo stack.
    }
    {parameter num-chars,
        The number of {docref char}s to delete.
    }
    {parameter forward?,
        The direction in which to delete: {ctext false} (the default)
        for deleting backward (as in the {ctext backspace} key) and
        {ctext true} for deleting forward (as in the {ctext delete} key).
    }
    {details
        This method attempts to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        Also see
        {docref-abbr ComboBox.record-typing-for-undo} and
        {docref-abbr ComboBox.end-undo-typing-sequence}.
    }
    {notes
        Check {docref-abbr ComboBox.record-for-undo?} before
        calling this method.
    }
    {since 7.0}
  } 36 num-chars:int, forward?:bool = false "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 115112 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 107104 14 {unadvertised} 0  "void"}
{ClassDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 788 108 {text {purpose
        A helper class for displaying a control containing rich text.
    }
    {since 7.0}
} "{BaseStringGraphic-of RichTextString}"$""}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 10694 14 {unadvertised} 62 start:int, end:int, dc:DisplayContext, start-position:Distance "(advance:Distance,
                     ascent:Distance,
                     descent:Distance
                    )"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 17550 2 "" 21 renderer2d:Renderer2d "void"}
{AccessorDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 2453 167 {text {purpose
        The number of lines this control currently represents.
    }
    {notes
        This value is only valid after layout.
    }
    {since 7.0}
  } "int"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 21450 14 {unadvertised} 133 x:Distance, y:Distance, dc:DisplayContext, renderer2d:Renderer2d, text:RichTextString, first:int, last:int, line:int, selection?:bool "Distance"}
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 1085 14 {unadvertised} "RichTextString" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 946 14 {unadvertised} "Distance" 0 }
{AccessorDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 1814 2 "" "RichTextString"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 3584 14 {unadvertised} 152 run-start:int, run-limit:int, hard-end-of-line?:bool, max-width-of-line:Distance, ascent-for-line:Distance, descent-for-line:Distance, dc:DisplayContext "(start-of-line:int,
                     width-of-line:Distance,
                     ascent-for-line:Distance,
                     descent-for-line:Distance
                    )"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 30568 14 {unadvertised} 9 index:int "(color:FillPattern, underline?:bool, line-through?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 11509 14 {unadvertised} 203 run-start:int, run-limit:int, start-of-line:int, width-of-line:Distance, max-width-of-line:Distance, hard-end-of-line?:bool, max-ascent-for-line:Distance, max-descent-for-line:Distance, dc:DisplayContext "(run-start:int,
                     start-of-line:int,
                     width-of-line:Distance,
                     max-ascent-for-line:Distance,
                     max-descent-for-line:Distance
                    )"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 16521 14 {unadvertised} 9 index:int "Distance"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 31055 14 {unadvertised} 10 y:Distance "int"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 16028 14 {unadvertised} 9 index:int "Distance"}
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 1126 14 {unadvertised} "StringBoundaryLocator" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 15776 2 "" 16 lc:LayoutContext "Dimension"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 36922 380 {text {purpose
        Obtains the last character index on a specified line.
    }
    {parameter line-number,
        The index of the line to consider.
    }
    {return-vals
        An integer representing a caret index into the content
        and a flag useful for passing to
        {docref-abbr RichTextStringGraphic.get-position-for-caret-index}.
    }
    {since 7.0}
  } 15 line-number:int "(index:int, end-of-line?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 2532 14 {unadvertised} 63 index:int, ascent:Distance, descent:Distance, dc:DisplayContext "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 27161 2 "" 39 index:int, bias-backwards?:bool = false "(x:Distance, y:Distance)"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 35327 451 {text {purpose
        Converts a caret index into a line number.
    }
    {parameter index,
        The caret index.
    }
    {parameter line-number,
        The index of the line to consider.
    }
    {details
        This method operates like
        {docref-abbr RichTextStringGraphic.get-position-for-caret-index},
        but will only return the x coordinate of the graphical position
        on the specified line.
    }
    {since 7.0}
  } 26 index:int, line-number:int "Distance"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 15586 14 {unadvertised} "OriginElastic" 121 {unstretchable-zero-length-origin-elastic.add-both
          {make-elastic stretch-order=compliant-stretch-order}
      }}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 9755 14 {unadvertised} 63 first:int, last:int, dc:DisplayContext, start-position:Distance "(advance:Distance,
                     ascent:Distance,
                     descent:Distance
                    )"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 33793 282 {text {purpose
        Converts a caret index into a line number.
    }
    {details
        This method operates like
        {docref-abbr RichTextStringGraphic.get-position-for-caret-index},
        but returns the line number instead of the caret index.
    }
    {since 7.0}
  } 39 index:int, bias-backwards?:bool = false "int"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 15260 14 {unadvertised} "OriginElastic" 121 {unstretchable-zero-length-origin-elastic.add-last
          {make-elastic stretch-order=compliant-stretch-order}
      }}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 13770 14 {unadvertised} 45 max-width-of-line:Distance, dc:DisplayContext "int"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 890 14 {unadvertised} "char" 8 '\ufffd'}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 26760 2 "" 22 x:Distance, y:Distance "(index:int, bias-backwards?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 16201 14 {unadvertised} 9 index:int "Distance"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 15915 14 {unadvertised} 9 index:int "Distance"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 27696 14 {unadvertised} 42 index:int, font-before-index?:bool = false "Font"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 16370 14 {unadvertised} 9 index:int "Distance"}
{AccessorDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 1894 2 "" "RichTextString"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 28097 2 "" 82 index:int, bias-backwards?:bool, style-override:#{HashTable-of String, any} = null "(left:Distance, 
                         top:Distance,
                         width:Distance, 
                         height:Distance)"}
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 995 14 {unadvertised} "{Array-of LineMetrics}" 28 {new {Array-of LineMetrics}}}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 2147 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 15449 2 "" 16 lc:LayoutContext "Dimension"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 18567 14 {unadvertised} 86 first:int, last:int, dc:DisplayContext, renderer2d:Renderer2d, selection?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 22321 14 {unadvertised} 145 x:Distance, y:Distance, dc:DisplayContext, renderer2d:Renderer2d, text:RichTextString, first:int, last-for-drawing:int, line:int, selection?:bool "Distance"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 6459 14 {unadvertised} 265 start-of-line:int, run-start:int, run-limit:int, run-will-wrap?:bool, hard-end-of-line?:bool, run-advance:Distance, run-ascent:Distance, run-descent:Distance, max-width-of-line:Distance, max-ascent-for-line:Distance, max-descent-for-line:Distance, dc:DisplayContext "(start-of-next-line:int,
                     start-of-next-run:int,
                     starting-width-of-next-line:Distance,
                     starting-ascent-of-next-line:Distance,
                     starting-descent-of-next-line:Distance
                    )"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 16674 2 "" 52 lc:LayoutContext, lextent:Distance, rextent:Distance "Dimension"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 36075 313 {text {purpose
        Obtains the first character index on a specified line.
    }
    {parameter line-number,
        The index of the line to consider.
    }
    {notes
        When {param line-number} is the same as {ctext self.num-lines},
        the length of contents is returned.
    }
    {since 7.0}
  } 15 line-number:int "int"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 31889 449 {text {purpose
        Converts a horizontal position on a line into a caret index.
    }
    {parameter x,
        The horizontal position.
    }
    {parameter line-number,
        The index of the line to consider.
    }
    {details
        This method operates like
        {docref-abbr RichTextStringGraphic.get-caret-index-for-position},
        but will only return caret indices associated with the specified line.
    }
    {since 7.0}
  } 27 x:Distance, line-number:int "(index:int, bias-backwards?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 1515 316 {text {purpose
        Create a new {docref RichTextStringGraphic}.
    }
    {parameter contents,
        The {docref RichTextString} we are to lay out and display.
    }
    {notes
        See {docref StringGraphic.default} for more information
        about the set of allowed arguments.
    }
    {since 7.0}
  } 28 contents:RichTextString, ... ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 11120 14 {unadvertised} 0  "FillPattern"}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 47607 1289 {text {purpose 
        {docref Graphic} used to display a {docref TreeNode}
        in a {docref TreeControl}.
    }
    {details
        Instances of this class are used to display the
        contents of a {ctext TreeNode}. Use 
        {docref TreeControl.tree-item-creation-proc}
        to associate specific instances of this class with
        a control.
        
        Note that the graphical origin of this item plays an important 
        role in determining its placement within the control.
        {docref TreeControlUI} will place the origin
        at the intersection of the vertical and horizontal tree
        connectors leading to this item.  Subclasses that wish
        to align these connectors with their contents in a 
        particular way should therefore locate their origin
        accordingly.   
        
        {docref DefaultTreeItem} is a concrete subclass which
        includes built-in support for items that include icons.
    }
    {notes
        This object can be styled by writing style rules for
        "TreeItem". See {link href =
            {url
                "curl://install/docs/en/dguide/styled-controls.curl#skinning-tree-controls"
            },
        Skinning Tree Controls} for more information.        
    }
    {since 4.0}
} "BaseFrame"$"DefaultTreeItem"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 50280 505 {text {purpose 
        Is the {docref TreeNode} associated with this item
        the {ctext current-node}?
    }
    {usage 
        This getter is provided primarily for the 
        convenience of implementations of {docref TreeItem}
        and {docref TreeControlUI}.

        Applications wishing to examine the current node
        of a {docref TreeControl} should typically consult
        the {docref TreeControl.current-node} property instead.
    }
    {override Not typically overridden.}
  } "bool"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 51485 260 {text {purpose 
        Can the {docref TreeNode} associated with this item be
        selected?
    }
    {override 
        The default implementation of this getter
        simply returns {ctext true}. Subclasses
        should override as needed.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 52001 436 {text {purpose 
        Trigger a {docref Action} event on the
        {docref TreeControl} containing this item.
    }
    {usage
        Not typically called by applications.

        Implementations of {docref TreeItem} and
        {docref TreeControlUI} should call this method
        when gestures (like double-click) are performed
        which should trigger an {ctext Action}.
    }
    {override Not typically overridden.}
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 51004 515 {text {purpose 
        Is the {docref TreeNode} associated with this item
        expanded to show its children?
    }
    {usage 
        This getter is provided primarily for the 
        convenience of implementations of {docref TreeItem}
        and {docref TreeControlUI}.

        Applications wishing to examine the expansion state
        of a {docref TreeControl} should typically consult
        the {docref TreeControl.expanded-nodes} property instead.
    }
    {override Not typically overridden.}
  } "bool"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 54238 1373 {text {purpose
        Refresh the display state of this item from
        its underlying {docref TreeNode}.
    }
    {details
        Called on this item before being displayed,
        when a change to the underlying {docref TreeNode} 
        has occurred (see {docref TreeModelChange}),
        if the node's {docref TreeItem.selected?} or
        {docref TreeItem.current?} properties have changed,
        or if this item is {docref TreeItem.current?}
        and the tree has gained or lost key focus.
        
        Note that this method will not necessarily be called 
        if this item is not currently visible or displayed. In
        this case, it may be called only when the item comes
        into view. 
    }
    {usage
        This method is called by implementations of
        {docref TreeControlUI}.  It should not be 
        called by applications.
    }
    {override
        This method may be overridden to update any state
        maintained by subclasses.  Be sure to call the
        super implementation.
        
        Note that this method is called frequently, and may be called
        when no actual change has occurred at the underlying node.
        Implementations should therefore make this method as efficient
        as possible, making use of existing resources 
        (e.g. Graphical objects) wherever possible.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 47678 14 {unadvertised} "TreeNode" 0 }
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 49541 497 {text {purpose 
        Is the {docref TreeNode} associated with this item
        currently selected?
    }
    {usage 
        This getter is provided primarily for the 
        convenience of implementations of {docref TreeItem} and
        and {docref TreeControlUI}.

        Applications wishing to examine the selection
        of a {docref TreeControl} should typically consult
        the {docref TreeControl.selection} property instead.
    }
    {override Not typically overridden.}
  } "bool"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 48867 103 {text {purpose {docref TreeControl} containing this item.}
    {override Not typically overridden.}
  } "#TreeControl"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 55317 1025 {text {purpose
        A rectangle surrounding the origin of this item
        to which connecting lines should be connected to.
    }
    {details
        UI delegates will draw connecting lines from siblings and
        children of this object toward the origin of this object.
        This rectangle defines the extent to which those lines
        should be drawn within the bounds of this object.
    }
    {usage
        This method should be called by {docref TreeControlUI}
        when determining where to draw the connecting lines 
        between items.
    }
    {override
        The default implementation returns an empty rectangle,
        signaling that connector lines may be drawn directly to
        the origin.  {docref DefaultTreeItem} overrides this method
        so that connectors are drawn to the edges of its internal icon.  
        Subclasses that wish no drawing within their bounding box might
        override this method to return the results of
        {docref Layout.get-bounds}.
    }
  } 0  "(lextent:Distance, 
                                          rextent:Distance, 
                                          ascent:Distance,
                                          descent:Distance)"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 52611 464 {text {purpose 
        Collapse an expanded node or expand a collapsed node.
    }
    {usage
        Not typically called by applications, which
        should consider calling {docref TreeControl.expand-node}
        or {docref TreeControl.collapse-node} instead.

        This method is designed for implementations of
        {docref TreeControlUI} and {docref TreeItem} 
        to allow easy toggling of the expansion state of 
        an item.
    }   
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 47758 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 48943 2 "" "#TreeControl"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 48683 295 {text {purpose {docref TreeNode} displayed by this item.}
    {override
        If this item is designed to handle only a given
        subclass of {ctext TreeNode}, it may be helpful to 
        override this getter in order to narrow the return
        type to the specific subclass.
    }
  } "TreeNode"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 47718 14 {unadvertised} "#TreeControl" 0 }
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 48213 269 {text {purpose Construct this object.}
    {parameter 
        node, The {docref TreeNode} that this item 
        will display.
    }
    {parameter
        ..., options and event handlers for passing
        to the default constructor of {docref BaseFrame}.
    }
  } 18 node:TreeNode, ... ""}
{ClassDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 117 14 {unadvertised} ""$""}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 2168 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 389 14 {unadvertised} 41 selection-context:ComboBox, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 650 14 {unadvertised} 26 selection-context:ComboBox "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 247 14 {unadvertised} 41 selection-context:ComboBox, num-chars:int "void"}
{AccessorDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 197 14 {unadvertised} "bool"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 534 14 {unadvertised} 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 724 2 "" 92 delete-size:int, insert-str:#StringInterface, selection-context:ComboBox, redo?:bool = false "void"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 169 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 1740 14 {unadvertised} 37 index:int, selection-context:ComboBox "int"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 576 14 {unadvertised} 26 selection-context:ComboBox "void"}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 51009 14 {unadvertised} "{SelectedIterator SelectableItem}"$""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 51200 2 "" 0  "(val:SelectableItem, eof?:bool)"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 51108 14 {unadvertised} 25 items:{Array-of ListItem} ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 4423 588 {text {purpose
        The length of a major tick.
    }
    {details
        This option is typically used by {docref SliderPanel}.  It
        dictates the length of the major tick.  

        Legal types of values are:
        {itemize
            {item number: {docref int}, {docref double}, etc.}
            {item distance: {docref Distance} and {docref FloatDistance}.}
            {item
                pixel distance: {docref PixelDistance} and
                {docref FloatPixelDistance}
            }
        }

        The default value is {ctext 5pt}.
    }
    {since 6.0}
} 3 any 3 5pt}
{ClassDocInfo "controls/logical-controls/tab-container-ui.scurl" 218 126 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref TabContainer}.
    }   
} "SingleTabControlUI"$"StandardTabContainerUI, SkinnableTabContainerUI"}
{AccessorDocInfo "controls/logical-controls/tab-container-ui.scurl" 1100 203 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "TabContainer"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 811 494 {text {purpose
        Ensure that a particular tab-button is currently visible.
    }
    {parameter
        index, {ctext int}. The position of the tab which
        should have its button made visible. The first tab is 0.
    }
    {details
        For more details see {docref TabContainer.ensure-button-visible}, 
        the method which delegates to this method.  The method on
        {ctext TabContainer} is the method that should normally be 
        called by applications.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1415 204 {text {purpose
        Construct a new {ctext TabContainerUI}. 
    }
    {parameter 
        ..., The rest args are passed to the {docref Graphic}
        that this UI delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 216483 150 {text {purpose 
        Activate the previous {docref RecordGridCell} within a 
        {docref RecordGrid}, as if by pressing the left arrow.
    }
} "RecordGridMoveCommand"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 217365 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 216874 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 216748 159 {text {purpose
        Instantiate this object.
    }
    {parameter grid,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 15 grid:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 226518 764 {text {purpose
        A panel containing standard controls for navigating 
        a {docref RecordSetDisplay}.
    }
    {usage
        Most {docref RecordSetDisplay} subclasses
        display an instance of this object automatically when 
        {docref RecordSetDisplay.display-navigation-panel?} is 
        {ctext true}.
    }  
    {details
        Note that when this object is constructed it adds appropriate event 
        handlers to its associated {ctext RecordSetDisplay} itself to keep 
        this {ctext Graphic} updated. Therefore this object should typically 
        be created only once per {ctext RecordSetDisplay}; extra instances will
        not be garbage collected immediately and will unnecessarily consume 
        resources.
    }
} "Dialog"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 226651 14 {unadvertised} "TextField" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 229617 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 230334 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 229500 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 229368 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 229558 2 "" "any"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 226601 14 {unadvertised} "RecordSetDisplay" 0 }
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 231073 "any" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 231151 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 226700 14 {unadvertised} "Frame" 0 }
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 229434 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 226902 143 {text {purpose
        Construct this object.
    }
    {parameter display,
        {docref RecordSetDisplay} to link this object to.
    }
  } 24 display:RecordSetDisplay ""}
{ClassDocInfo "controls/logical-controls/spin-control.scurl" 5917 5825 {text {purpose
        A control that contains a single value that can be incremented 
        or decremented by clicking the up or down buttons of the control.
    }
    {notes
        A spin control has upper and lower limits. The value of this
        control is guaranteed to be within the limits, including the end 
        points. 

        Clicking the up button moves the value of the control towards the
        upper limit, and clicking the down button moves the value of the
        control towards the lower limit. The next value depends on the 
        step size of the control.

        The {docref Domain} associated with the {ctext SpinControl}
        defines several parameters for the control:
        {itemize
            {item
                {docref Domain.type} defines the type of data handled
                by the control.
            }
            {item
                {docref Domain.default-value} defines the initial value
                of the control.
            }
            {item
                {docref Domain.allowable-values} defines the set of
                values the control can present to the user. If the
                values specified by the {ctext Domain} are enumerable,
                {docref SpinControl.allowable-values} is a sorted array
                containing the specified values.
            }
            {item
                If {ctext Domain.allowable-values} is {ctext null} then
                {docref Domain.max-allowable} and {docref 
                Domain.min-allowable} define the upper and lower
                limits on the control value.
            }
        }


        If {ctext Domain.allowable-values} is specified for a domain
        then the {docref SpinControl.step} must be an integer and is
        used to adjust the index of the current element in {docref
        SpinControl.allowable-values}.

        By default, the domain used is the integer domain with a minimum
        value of 0 and a maximum value of 100. The default step size is 1.

        This object can be styled by writing style rules for "SpinControl",
        "SpinControl/increase-button", "SpinControl/decrease-button" and
        "SpinControl/text-field".See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
    {expected-events
        {event ValueChanged, 
            Fired when a user changes the value of the {ctext
            SpinControl} by clicking the up or down buttons of the
            control, or by using the keyboard; also fired when {docref
            SpinControl.set-value-with-events} or {docref
            SpinControl.replace-value} or
            {docref SpinControl.decrement-with-events} or
            {docref SpinControl.increment-with-events} is called, if the
            value is changed.
        }
        {event ValueFinished,
            Fired on focus out if {docref SpinControl.pending-value?} is 
            {ctext true}.
            
            It is also fired by {ctext
            SpinControl.set-value-with-events} and can be fired by
            {ctext SpinControl.increment-with-events} and
            {ctext SpinControl.decrement-with-events}.
        }
    }
    {visual-testing
        This class implements the {ctext CurlSpin} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Set
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell
                    Sets the value of the control.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Next
                }
                {cell font-style = "italic", <none>}
                {cell
                    Sets the spin control to the next value.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Prev
                }
                {cell font-style = "italic", <none>}
                {cell
                    Sets the spin control to the previous value.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:
        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param max}:{docref String}
                }
                {cell The maximum value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param min}:{docref String}
                }
                {cell The minimum value of the control.}
            }
        }
    }
} "{MultiUIValueControlFrame-of any}"$"DateFieldSpinControl"}
{OptionDocInfo "controls/logical-controls/spin-control.scurl" 15110 "any" 4 null 1425 {text {purpose
        Indicates how {ctext String} input will be parsed for
        entry into the field associated with this {docref SpinControl}. 
    }
    {details
        This value should be either
 
        {itemize
            {item
                a proc of type 
                {ctext {proc {value:String, sc:SpinControl}:any}},
                where {param value} represents a string input by the
                user and {param sc} represents the source 
                {ctext SpinControl}. Note that the {param sc} parameter
                provides access to the source {ctext SpinControl} and
                hence its associated {docref SpinControl.domain} and 
                thus can be very useful for context dependent parsing.
            }
            {item
                {ctext null} (default). 
            }
        }
        If null, {docref Domain.parse} method will be used for 
        parsing, where the {docref Domain} is the domain 
        associated with this {ctext SpinControl}.

        Note that any proc specified for this option may return a 
        {docref ValidationException} indicating a rejection of the
        input.
        
        This property, if non-{ctext null}, is used by 
        {docref SpinControl.get-parsed-value} method to convert
        a {docref String} to a value that can be then used
        to set to the value of the {docref SpinControl}.
    }
  }}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 16555 1147 {text {purpose
        Specifies the amount by which the value is changed when you
        increment or decrement the {docref SpinControl}.
    }
    {notes
        Its type is usually determined by the type of the
        {docref SpinControl.domain}. If {ctext Domain.allowable-values}
        is specified for a domain then {docref SpinControl.step} must 
        be an integer which is added or subtracted from the index 
        of the current value of the {ctext SpinControl.allowable-values}.

        If {ctext null}, then the {docref SpinControl.increment},
        {docref SpinControl.increment-with-events},
        {docref SpinControl.decrement} and
        {docref SpinControl.decrement-with-events} do not
        change {docref SpinControl.value}.
    }
    {notes
        It may throw an {docref ArithmeticException} and {docref
        IllegalArgumentException}.

        It tries to add and substract the current value with the
        {param val}. This is to make sure that incrementing or decrementing
        the value of the {ctext SpinControl} will succeed, if setting
        the {ctext SpinControl.step} succeeds.
    }
  } "any"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6431 14 {unadvertised} "bool" 4 true}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 16616 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 23309 2 "" "any"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 7062 573 {text {purpose 
        Indicates whether the user is currently changing the value.
    }
    {details
        In short, {ctext pending-value?} is {ctext true} while the user
        changes the value of the {docref  SpinControl}, and false at all
        other times.

        It is not set back to {ctext false} until the user finishes
        changing the value and a {docref ValueFinished} event is sent.

        This property should never be set by the application, since
        there are certain semantics around it that the Curl language
        expects.
    }
  } "bool" 5 false}
{OptionDocInfo "controls/logical-controls/spin-control.scurl" 13322 "any" 4 null 2541 {text {purpose
        Indicates how the value of the {docref SpinControl} is formatted 
        to a {docref String}.
    }
    {details
        This value should be either 
        {itemize
            {item
                a {ctext String} appropriate for use
                with the {docref format} macro.
            }
            {item
                a proc of type 
                {ctext {proc {data:any, sc:SpinControl}:String}},
                where {param data} is {docref SpinControl.value}, and
                {param sc} represents the source {ctext SpinControl}.
                Note that the {param sc} parameter provides access to 
                the source {ctext SpinControl} and hence its associated
                {docref SpinControl.domain} and thus can be very useful 
                for context dependent formatting.
            }
            {item
                {ctext null} (default). 
            }
        }
        
        If null, {docref Domain.format} method will be used for 
        formatting, where the {docref Domain} is the domain 
        associated with this {ctext SpinControl}.

        This property, if non-{ctext null}, is used by 
        {docref SpinControl.get-formatted-data} method to convert
        a {ctext SpinControl} value to a formatted {docref String}.
    }
    {for-example
        A {ctext SpinControl} using a {docref StandardIntDomain} to
        show hex values.
        
        {example
            {define-proc package {hex-parse
                                     str:String, 
                                     sp:SpinControl
                                 }:any
                let (new-value:int, 
                     n-chars-consumed:int, 
                     overflow?:bool) =
                    {str.to-int radix = 16, error-if-overflow? = false}

                {if not overflow? and 
                    new-value >= sp.min-value and
                    new-value <= sp.max-value
                 then
                    {return new-value}
                }
                
                {throw
                    {ValidationException "Not a valid value"}
                }
            }

            {SpinControl
                domain = 
                    {StandardIntDomain
                        default-value = 0,
                        min-allowable = 0,
                        max-allowable = 200
                    },
                format-spec = "%0x",
                parse-spec = hex-parse
            }
        }
    }
  }}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 20774 877 {text {purpose
        The list of allowable values for the {ctext SpinControl}.
    }
    {return-vals
        If the {docref Domain.allowable-values} are enumerable, then
        the returned array is a list of these elements sorted in
        ascending order. In this case, if {docref Domain.min-allowable}
        or {docref Domain.max-allowable} are also specified, then the
        returned array will include only the values between these
        bounds, inclusive.

        If the {docref Domain.allowable-values} is not enumerable, then
        the return value is {ctext null}.
    }
    {notes
        The items in the array are sorted using the {docref Domain}'s 
        comparison proc.

        If non-{ctext null} then the {docref SpinControl.step} is
        used to adjust the index of the current element and should
        therefore be an integer.
    }
  } "#{Array-of any}"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 37655 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 38587 258 {text {purpose
        The object that should request key focus when this 
        {docref SpinControl} becomes active.
    }
    {notes
        The default focus object for {docref SpinControl} is the
        {docref SpinControlUI}'s focus object.
    }
  } "Visual"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 21690 264 {text {purpose
        Lower limit of the {docref SpinControl}.
    }
    {notes
        If {docref SpinControl.allowable-values} is non-{ctext null}
        then it is the first element of this array else it is the
        {docref Domain.min-allowable}.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 18318 807 {text {purpose
        The domain associated with the {ctext SpinControl}.
    }
    {notes
        The type of value of the {ctext SpinControl} depends on the
        type of the {docref Domain}. The {ctext Domain} describes the
        minimum value and the maximum value of the {ctext
        SpinControl}'s domain.  

        When setting the domain, if {docref SpinControl.value} cannot
        be used with this domain then the {ctext SpinControl.value}
        will be set to the default value of this domain.
        
        One cannot change the minimum and the maximum value for a
        domain.  In order to change the range of values of a {docref
        SpinControl} you must set a new {ctext Domain} with the new
        minimum and the new maximum allowable values for the domain.
    }
  } "Domain"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 22168 265 {text {purpose
        Upper limit of the {docref SpinControl}.
    }
    {notes
        If {docref SpinControl.allowable-values} is non-{ctext null} then
        it is the last element of this array else it is 
        the {docref Domain.max-allowable}. 
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 7107 2 "" "String"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6068 14 {unadvertised} "#Domain" 0 }
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 28339 730 {text {purpose
        Parse a {ctext String} value input to this {docref SpinControl}. 
    }
    {details
        This method will use the parsing defined in 
        {docref SpinControl.parse-spec} if it is non-null.
        Otherwise the method {docref Domain.parse} for the 
        {ctext SpinControl}'s domain will be used.

        UI objects can call this method to convert a {docref String} 
        corresponding to the {docref SpinControl.value} to a value
        that can then be set on the {docref SpinControl}.
    }
    {override
        Not typically overridden.
    }
    {return-vals
        {ctext any}, the parsed value or a {docref ValidationException}
        indicating parsing was unsuccessful.
    }
  } 10 val:String "any"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 20872 14 {unadvertised} "#{Iterator-of any}"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6100 14 {unadvertised} "#{Array-of any}" 0 }
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 36951 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 36496 734 {text {purpose 
        Simulates a user incrementing the value interactively.
    }
    {parameter fire-value-finished?,
        If {ctext true}, calling this method will fire a 
        {docref ValueFinished} event.
    }
    {details
        Increments the value of the {docref SpinControl} by calling 
        {docref SpinControl.increment}. If the value of the 
        {ctext SpinControl} changes a {docref ValueChanged} event 
        will be fired and {docref SpinControl.pending-value?} will be
        set to {ctext true}.

        If {param fire-value-finished?} is {ctext true} then {ctext
        SpinControl.pending-value?}  will be set to {ctext true} and a
        {docref ValueFinished} event will be fired.
    }
  } 32 fire-value-finished?:bool = true "void"}
{OptionDocInfo "controls/logical-controls/spin-control.scurl" 10689 "bool" 5 false 659 {text {purpose
        Specifies whether the value of a control wraps when it reaches the
        limit on either side. By default it is {ctext false}.
    }
    {notes
        If {ctext true}, and a user gesture would set the new value
        above the upper limit, the value is set to the lower
        limit. Similarly, if a user gesture would set the new
        value below the lower limit, the value is set to the
        upper limit.
    }
    {details
        This property is used by {docref SpinControl.increment} and 
        {docref SpinControl.decrement} methods. Note that it is not 
        used by {docref SpinControl.value} setter.
    }
  }}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 25984 403 {text {purpose
        Replaces the value of the {docref SpinControl}.
    }
    {details
        If calling this method changes {docref SpinControl.value} then
        a {docref ValueChanged} event will be fired and {docref
        SpinControl.pending-value?} will be set to {ctext true}.
    }
    {notes
        This method is usually called by subclasses of {docref
        SpinControlUI}.
    }
  } 7 val:any "void"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 18397 2 "" "Domain"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 27082 772 {text {purpose
        Formats data representing a value for the {docref SpinControl}
        as a {ctext String}.
    }
    {details 
        The default implementation of this method applies formatting
        to {param data}.
        The formatting used will be the {docref SpinControl.format-spec}
        if it is {ctext non-null}, otherwise the method 
        {docref Domain.format} for the {ctext SpinControl}'s domain will
        be used.

        UI objects can call this method to get the {docref String} 
        corresponding to a value for the {ctext SpinControl} that they 
        can then display.
    }
    {return-vals 
        A formatted {docref String} representing the {param data}.
    }
    {override
        Not typically overridden.  
    }
  } 8 data:any "String"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 32388 732 {text {purpose 
        Simulates a user decrementing the value interactively.
    }
    {parameter fire-value-finished?,
        If {ctext true}, calling this method will fire a {docref
        ValueFinished} event.
    }
    {details
        Decrements the value of the {ctext SpinControl} by calling 
        {docref SpinControl.decrement}. If the value of the 
        {ctext SpinControl} changes a {docref ValueChanged} event 
        will be fired and {docref SpinControl.pending-value?} will be
        set to {ctext true}.

        If {param fire-value-finished?} is {ctext true} then {ctext
        SpinControl.pending-value?}  will be set to {ctext true} and a
        {docref ValueFinished} event will be fired.
    }
  } 32 fire-value-finished?:bool = true "void"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6351 14 {unadvertised} "any" 1 0}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 29735 969 {text {purpose
        Decrements the current value by {docref SpinControl.step}.
    }
    {notes
        If {ctext Domain.allowable-values} is specified for this
        object's domain this method sets the value of the {ctext SpinControl}
        to the value at the index which is the current value index minus the 
        {docref SpinControl.step}.

        Please note that  {docref SpinControl.wrap?}, 
        {docref SpinControl.min-value}, {docref SpinControl.max-value} could
        affect the choice of the new value.

        See also: {docref SpinControl.decrement-with-events}.
    }
    {override
        Some {docref Domain} types do not support the "-" operator.
        If an instance of that {ctext Domain} does not supply 
        {ctext Domain.allowable-values} this method will throw a runtime
        error. However, you can override this method to provide your
        own implementation of the {ctext SpinControl.decrement} method.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6038 14 {unadvertised} "any" 1 1}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 26236 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 33822 968 {text {purpose
        Increments the current value by {docref SpinControl.step}.
    }
    {notes
        If {ctext Domain.allowable-values} is specified for this
        object's domain this method sets the value of the {ctext SpinControl}
        to the value at the index which is the current value index plus the 
        {docref SpinControl.step}.

        Please note that  {docref SpinControl.wrap?}, 
        {docref SpinControl.min-value}, {docref SpinControl.max-value} could
        affect the choice of the new value.

        See also: {docref SpinControl.increment-with-events}.
    }
    {override
        Some {docref Domain} types do not support the "+" operator.
        If an instance of that {ctext Domain} does not supply 
        {ctext Domain.allowable-values} this method will throw a runtime
        error. However, you can override this method to provide your
        own implementation of the {ctext SpinControl.increment} method.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 37242 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 38710 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 24787 411 {text {purpose
        Sets the value back to initial value of the {docref SpinControl}.
    }
    {details
        The initial value of the {docref SpinControl} is
        {docref Domain.default-value}.
    }
    {notes
        Note that the {ctext SpinControl.has-value?} is always {ctext true}.
        This method simply sets back the value of the {ctext SpinControl}
        to its initial value.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 23246 850 {text {purpose
        The value of the {docref SpinControl}.
    }
    {notes
        The type of value of the {ctext SpinControl} depends on the
        type of the {docref Domain}. 

        See also: {docref SpinControl.set-value-with-events}.
    }
    {details
        If {docref SpinControl.min-value} is non-{ctext null} and
        {param val} is less than {ctext SpinControl.min-value} then
        the value of the {docref SpinControl} will be set to {ctext
        SpinControl.min-value}. Similarly, if {docref
        SpinControl.max-value} is non-{ctext null} and {param val} is
        greater than {ctext SpinControl.max-value} then the value of
        the {ctext SpinControl} will be set to {ctext
        SpinControl.max-value}.

        Note that this method does not use the {docref
        SpinControl.wrap?} property.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 25273 381 {text {purpose 
        Simulates a user setting the value interactively.
    }
    {details
        Sets the value of the {ctext SpinControl}, then fires a {docref
        ValueChanged} event, if the value actually changed, followed by 
        a {docref ValueFinished} event.

        It will also force the {docref SpinControl.pending-value?} to
        {ctext false}.
    }
  } 7 val:any "void"}
{AccessorDocInfo "controls/logical-controls/spin-control.scurl" 37161 2 "" "#String"}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6004 14 {unadvertised} "any" 4 null}
{OptionDocInfo "controls/logical-controls/spin-control.scurl" 9936 "bool" 4 true 674 {text {purpose
        Specifies whether user is allowed to enter values in the companion
        text control. By default it is {ctext true}.
    }
    {notes
        If the {ctext SpinControl} is not editable, the user can only
        change the value of text control by clicking on the arrow keys
        or by pressing the up and down keyboard keys in the companion
        text control. If spin is editable, the user can change the
        value of the text control manually.  In this case, every time
        the user changes the value, input will be validated and, if
        valid, the current value will change to the value specified by
        the user.
    }
  }}
{FieldDocInfo "controls/logical-controls/spin-control.scurl" 6391 14 {unadvertised} "int" 1 0}
{MethodDocInfo "controls/logical-controls/spin-control.scurl" 8346 1050 {text {purpose
        Creates a {ctext SpinControl}.
    }
    {parameter domain,
        {docref Domain} used by the {ctext SpinControl}.
    }
    {parameter value,
        The control value.

        If not specified, it defaults to the {ctext SpinControl}'s
        domain {docref Domain.default-value}.

        See Also {docref SpinControl.value}.
    }
    {parameter step,
        Provides the initial value for {docref SpinControl.step}.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter ..., 
        Option settings, event handlers, or a {docref Graphic} to be added
        as contents.
    }
    {for-example
        A {ctext SpinControl} using a {docref StandardFloatDomain}.  

        {example
            {SpinControl
                domain = 
                    {StandardFloatDomain
                        default-value = 1.0,
                        min-allowable = 0.0,
                        max-allowable = 10.5
                    },
                step = 0.5
            }
        }
    }
  } 315 domain:Domain = {StandardIntDomain
                                   default-value = 0,
                                   min-allowable = 0,
                                   max-allowable = 100
                              }, step:any = 1, value:any = domain.default-value, ui-object:#SpinControlUI = null, ... ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 12989 750 {text {purpose 
        Method for displaying tab selectors in a {docref TabContainer}.
    }
    {details
        The value {param compress} means that if the tabs cannot be
        displayed at full size in the available space they will be
        shortened, clipping the label.

        The value {param scroll} means that when there is insufficient
        room for all of the tabs a control (such as a {docref
        DropdownList}) is added to allow any tab to be selected.

        The value {param hide} means that the tabs are never shown.
        Use this when you are building a customized user interface for
        selecting the tabs. A typical example is a scrolling list of
        icons, each of which selects one of the tabs.
    }
} 20 compress scroll hide}
{EnumDocInfo "controls/logical-controls/globals.scurl" 10925 1459 {text {purpose
        Sets the behavior and appearance of a
        {docref ListBox} control.
    }
    {details
        You can set {ctext ListBoxStyle} to the following values:
        {itemize
            {item
                {ctext ListBoxStyle.standard}:
                Looks and behaves like a traditional list control.
            }
            {item
                {ctext ListBoxStyle.checkbutton}:
                Has either a {docref CheckButton} (for multiple
                selection) or a {docref RadioButton} (for single
                selection) at the beginning of each list item. This
                button selects the item when checked.  It makes the
                interface much clearer for users, who can tell at a
                glance whether the list is single-selection or
                multiple.  The button is physically outside the
                {docref ListItem}, so this doesn't affect the
                generation of {docref ListItem}s by
                {docref ListModelControl.list-item-creation-proc} or by
                hand.
            }
            {item
                {ctext ListBoxStyle.toggle}:
                Like {ctext ListBoxStyle.standard}, but when a
                user clicks on an item that is
                already selected, the item becomes unselected.
                ({ctext ListBoxStyle.standard} behavior leaves
                the item selected.)
            }
        }
    }
} 61 standard="standard" checkbutton="checkbutton" toggle="toggle"}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 375 282 {text {purpose
        Represents a {docref RichTextString} as a data model.
    }
    {details
        The data model is an {docref Observable}, so changes to its
        contents can be tracked by client objects.  See {docref
        StringDataModel} for more information.
    }
} "StringDataModel"$""}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 5021 2 "" 30 str:StringInterface, index:int "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 8728 2 "" 0  "String"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 496 14 {unadvertised} "{Array-of TextStyle}" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 13391 421 {text {purpose
        Set a rich text attribute on the given range.
    }
    {parameter key,
        The name of the attribute to set.
    }
    {parameter value,
        The value of the attribute.
    }
    {parameter start,
        The start index of the range on which to set the attribute.
    }
    {parameter limit,
        The index just beyond the range on which to set the attribute.
    }
    {since 7.0}
  } 59 key:String, value:any, start:int = 0, limit:int = self.size "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 3835 193 {text {purpose
        Sets the contents of this data model to the given string.
    }
    {parameter rich-text-string,
        The {docref RichTextString} to swap in.
    }
    {since 7.0}
  } 31 rich-text-string:RichTextString "void"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 588 14 {unadvertised} "#RichTextString" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 3518 2 "" 21 value:StringInterface "void"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 4717 2 "" "int"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 541 14 {unadvertised} "#String" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 1047 2 "" 9 index:int "char"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 1119 14 {unadvertised} 63 other:RichTextString, distinguish-unset-attributes?:bool = true "bool"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 665 14 {unadvertised} "#RichTextString" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 457 14 {unadvertised} "StringBuf" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 9220 235 {text {purpose
        Create a {docref RichTextString} from the contents of the data model.
    }
    {parameter distinguish-unset-attributes?,
        See {docref RichTextArea.distinguish-unset-attributes?}.
    }
    {since 7.0}
  } 41 distinguish-unset-attributes?:bool = true "RichTextString"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 11663 1067 {text {purpose
        Obtains an attribute value on the given range.
    }
    {parameter key,
        The name of the attribute to get.
    }
    {parameter start,
        The start index of the range to consider.
    }
    {parameter limit,
        The index just beyond the range to consider.
    }
    {parameter distinguish-unset-attributes?,
        See {docref RichTextArea.distinguish-unset-attributes?}.
    }
    {details
        When {param start} and {param limit} are the same, the
        attributes that apply to the character before the insertion
        point are used, except at the start or just after a newline
        not at the end, in which case the attributes that apply to the
        character just after are used.  When the contents are empty,
        the default attributes are used.
    }
    {return-vals
        The value of the attribute followed by a flag indicating that
        the value is valid across the entire range.  When {ctext
        valid?} is {ctext false}, the {ctext value} should be ignored.
    }
    {since 7.0}
  } 95 key:String, start:int = 0, limit:int = self.size - 1, distinguish-unset-attributes?:bool = true "(value:any, valid?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 4941 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 6534 14 {unadvertised} 37 start:int, rich-string:RichTextString "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 4782 2 "" 21 start:int, length:int "String"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 5802 2 "" 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 903 146 {text {purpose Initializes a {docref RichTextStringDataModel}.}
    {parameter str,
        A {docref RichTextString} to be represented.
    }
  } 18 str:RichTextString ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 188501 271 {text {purpose
        A rectangular region in a {docref RecordGrid}.
    }
    {details 
        This class is used to represent rectangular selections
        in {ctext RecordGrid}. See {docref RecordGridSelection}
        and {docref RecordGrid.select-region}.
    }
} ""$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 189395 144 {text {purpose
        The column index of maximal interest.
    }
    {details
        Must be one of the four corners of the region.
    }
  } "int" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 189200 141 {text {purpose
        The row index of maximal interest.
    }
    {details
        Must be one of the four corners of the region.
    }
  } "int" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 193147 386 {text {purpose
        Determine whether this region contains a cell location.
    }
    {parameter row-index,
        {ctext int}. Row index of cell of interest. 
    }
    {parameter column-index,
        {ctext int}. Column index of cell of interest. 
    }
    {return-vals 
        {ctext true} if this cell location is within the region.
        Otherwise {ctext false}.
    }
  } 31 row-index:int, column-index:int "bool"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 188754 74 {text {purpose
        Index of the first column in this region.
    }
  } "int" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 193847 304 {text {purpose
        Determine whether this region fully contains another region.
    }
    {parameter region,
        {docref RecordGridRegion} being tested.
    }
    {return-vals
        {ctext true} if all cell locations contained in {param r} 
        are also contained in {ctext self}.
    }
  } 18 r:RecordGridRegion "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 191289 426 {text {purpose
        Construct this object from two corner points.
    }
    {parameter row-anchor,
        Index of the start record in this region.
    }
    {parameter column-anchor,
        Index of the start column in this region.
    }
    {parameter row-point,
        Index of the end record in this region.
    }
    {parameter column-point,
        Index of the end column in this region.
    }
    {since 7.0}
  } 66 row-anchor:int, column-anchor:int, row-point:int, column-point:int ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 192496 460 {text {purpose
        Determine whether two {ctext RecordGridRegion}s are equal.
    }
    {parameter r,
        the region to be compared with {ctext self}.
    }
    {return-vals
        {ctext true} if {ctext self} and {param r} have the same
        values for {docref RecordGridRegion.first-row}, 
        {docref RecordGridRegion.first-column}, 
        {docref RecordGridRegion.row-count}, and 
        {docref RecordGridRegion.column-count}.
    }
  } 18 r:RecordGridRegion "bool"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 189006 75 {text {purpose
        Number of columns included in this region.
    }
  } "int" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 188630 71 {text {purpose
        Index of the first row in this region.
    }
  } "int" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 188879 72 {text {purpose
        Number of rows included in this region.
    }
  } "int" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 189988 538 {text {purpose
        Construct this object.
    }
    {parameter first-row,
        Index of the first record in this region.
    }
    {parameter first-column,
        Index of the first column in this region.
    }
    {parameter row-count,
        Number of rows included in this region.
    }
    {parameter column-count,
        Number of columns included in this region.
    }
    {parameter row-anchor,
        Row index of maximal interest.
    }
    {parameter column-anchor,
        Column index of maximal interest.
    }
  } 109 first-row:int, first-column:int, row-count:int, column-count:int, row-anchor:int = -1, column-anchor:int = -1 ""}
{ClassDocInfo "controls/logical-controls/base-tab-control.scurl" 725 633 {text {purpose 
        This class represents the main content area for one pane
        of a {docref BaseTabControl}.
    }
    {notes
        This object can be styled by writing style rules for
        "TabPane".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-tab-controls"
        }, Skinning TabControls} for more information.
    }
    {expected-events
        {event
            TabPaneShown,
            Fired at the {ctext TabPane} when it is shown.
        }
        {event
            TabPaneHidden,
            Fired at the {ctext TabPane} when it is hidden.
        }
    }
} "StandardActiveTraversalContainer"$""}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 838 14 {unadvertised} "#Tooltip" 0 }
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 3510 361 {text {purpose 
        An {docref ActiveTraversor} that should be
        made active when this pane is shown.
    }
    {details
        This property should be set to a graphical descendant
        of this pane.  If this property does not refer to a 
        graphical descendant of the pane, no action will be taken
        when the pane is shown.
    }
  } "#ActiveTraversor"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 2006 808 {text {purpose 
        The label that should appear on the selector that selects
        this pane.
    }
    {details
        If this property has the value of {ctext null} (the default) 
        an automatically generated label will be assigned to this property
        when this pane is added to a {docref BaseTabControl}. 
        Note that such an automatically generated label is unlikely to 
        be appropriate for production applications.  
        
        See {docref Label} for more information about valid values for this
        property. If this property is set to a label that has a valid
        {docref Label.mnemonic} property, that {ctext mnemonic} will be
        applied to this {ctext TabPane} as well.
        
        To display a blank label, set this property to "".
    } 
  } "#Label"}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 884 14 {unadvertised} "#ActiveTraversor" 0 }
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 4190 281 {text {purpose 
        If {ctext true}, the pane should be immediately 
        shown after it is added to a {docref BaseTabControl}.
    }
    {details 
        See {docref BaseTabControl.add} and 
        {docref BaseTabControl.add-pane-at-index} for more information.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 1117 138 {text {purpose
        The {docref BaseTabControl} this {ctext TabPane} 
        is attached to or {ctext null} if not attached.
    }
  } "#BaseTabControl" 4 null}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 6755 78 {text {purpose 
        Is this the currently shown {ctext TabPane}?
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 2777 93 {text {purpose 
        A {docref Tooltip} for the selector that selects this pane.
    }
  } "#Tooltip"}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 808 14 {unadvertised} "#Label" 0 }
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 4254 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 3616 2 "" "#ActiveTraversor"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 6475 81 {text {purpose 
        The graphical contents of this {ctext TabPane}.
    }
  } "#Graphic"}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 939 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 6942 2 "" 11 kp:KeyPress "void"}
{OptionDocInfo "controls/logical-controls/base-tab-control.scurl" 6159 "#DisplayContext" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 4478 2 "" "String"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 8399 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 8572 2 "" 6 c:char "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 9472 746 {text {purpose
        Returns a {docref String} representing the label or the index
        of this {docref TabPane}.
    }
    {parameter index,
        The index of the {ctext TabPane}.
    }
    {parameter prefer-index?,
        If {ctext true}, the {param index} will be returned as a
        {docref String} with '#' as a prefix.
        
        Otherwise, this method will try to get the text from the label
        of this object, if any, and return it. If no label exists or
        the label cannot be converted to a non empty string then this
        method will act as if {param prefer-index?} is {ctext true}.
    }
    {notes
        This method is called during the visual testing of this
        object.
    }
    {since 6.0}
  } 37 index:int, prefer-index?:bool = false "String"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 7768 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 2072 2 "" "#Label"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 2871 2 "" "#Tooltip"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 5297 632 {text {purpose Construct a new {ctext TabPane}.}
    {parameter
        label, initial value for {docref TabPane.label}.
    }
    {parameter 
        tab-button-tooltip, 
        initial value for {docref TabPane.tab-button-tooltip}.
    }
    {parameter 
        show?, initial value for {docref TabPane.show?}.
    }
    {parameter 
        first-active-control, 
        initial value for {docref TabPane.first-active-control}.
    }
    {parameter 
        ..., 
        rest args to be passed to the base class constructor. May contain the
        graphical contents of this pane, option settings, or event handlers.
    }
  } 126 label:#Label = null, tab-button-tooltip:#Tooltip = null, first-active-control:#ActiveTraversor = null, show?:bool = false, ... ""}
{ClassDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1041 14 {unadvertised} "MultiTabAccordionUI"$""}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1252 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1381 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1193 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1446 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1319 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-accordion-ui.scurl" 1129 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 1657 14 {unadvertised} "RichTextAreaUI"$""}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 1952 2 "" 40 test-attribute:String, test-value:String "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 1801 2 "" 23 value:String, index:int "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 1733 14 {unadvertised} 3 ... ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 12165 144 {text {purpose 
        Determines the location of the tab selectors relative
        to the content area in a {docref TabContainer}.
    }   
} 21 top bottom left right}
{EnumDocInfo "controls/logical-controls/globals.scurl" 9364 1356 {text {purpose
        Defines the order in which a day, month, and year will be
        displayed in the {docref DateField}.
    }
    {notes
        In {ctext DateFieldFormatSpec.mdy}, {ctext
        DateFieldFormatSpec.dmy} and {ctext DateFieldFormatSpec.ymd}
        formats the day and month could be one or two digits and the
        year could be two or four digits. Two digit years are only
        allowed when entering American dates and are treated as years
        in the twenty-first century when the year is less than 50,
        otherwise they are treated as years in the twentieth century.

        The {ctext DateFieldFormatSpec.iso} format is a {ctext
        DateFieldFormatSpec.ymd} format. However in this format the
        day and month components must be of two digits and the year
        must be of 4 digits. So {text 2006/1/2} is not a valid date
        string in the {ctext DateFieldFormatSpec.iso} format. The
        correct entry for this format is {text 2006/01/02}.

        The {ctext DateFieldFormatSpec.local} format is a {ctext
        DateFieldFormatSpec.mdy} format for {ctext "en"} locale. For a
        {ctext "ja"}, or a {ctext "zh"} locale, it is {ctext
        DateFieldFormatSpec.ymd} and for others it is {ctext
        DateFieldFormatSpec.dmy}.

       See also: {docref DateField.date-format-spec}. 
    }
} 21 mdy dmy ymd iso local}
{ClassDocInfo "controls/logical-controls/scrollbox.scurl" 5182 1556 {text {purpose 
        Encloses a {docref Graphic} in a box with scrollbars.
    }
    {for-example
        The simplest use of a {ctext ScrollBox} consists simply of
        providing the child {docref Graphic} as an argument when
        creating the {ctext ScrollBox}:

        {example
            {ScrollBox
                width = 2.5in, height = 1in,
                {Frame
                    width = 4in,
                    {paragraph
                        ScrollBoxes are pretty easy to use.  The text
                        in this ScrollBox is put into a Frame with a
                        specified width of 4 inches because otherwise
                        all the text would spread out on a single
                        line.  You can experiment with changing this
                        width constraint. The ScrollBox itself has a
                        specified width and height because otherwise
                        it would size itself at its preferred size,
                        which is the preferred size of its contents.
                        The way this example is set up, you will be
                        able to see scrolling actually happening, but
                        if you want to see the effect of changing or
                        removing the specified height and width
                        constraints, you can do that too.
                    }
                }
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "ScrollBox".
    }
} "ViewportBox"$"BaseTextAreaScrollBox"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 38241 2 "" 51 lc:LayoutContext, ascent:Distance, descent:Distance "Dimension"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 28290 "bool" 5 false 720 {text {purpose
        Expand the scrollable region horizontally so that the contents
        can be scrolled just out of view.
    }
    {details
        When false, the scroll bounds are such that the bounds of the
        contents define the scrolling region.  When true, the scroll
        bounds also include the region just outside of these bounds,
        up to the point where the contents have just scrolled out of
        view.}
    {for-example
        {example
            {ScrollBox 
                height = 3in, width = 3in, expanded-hscroll-bounds? = true,
                {RectangleGraphic width = 1in, height = 1in}
            }
        }
    }
    {notes 
        By default, this is false.
    }
  }}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6141 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 45427 14 {unadvertised} 29 e:PointerScroll, sb:Scrollbar "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5285 14 {unadvertised} "Scrollbar" 0 }
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 54670 2 "" "Distance"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5486 14 {unadvertised} "#GRect" 4 null}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5242 14 {unadvertised} "Scrollbar" 0 }
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 18909 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6316 14 {unadvertised} "Action" 8 {Action}}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 55235 2 "" "Distance"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 36223 "#FocusManager" 0  2 ""}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6279 14 {unadvertised} "#CornerFill" 0 }
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 9636 610 {text {purpose
        Creates the user interface for the {docref ScrollBox}.
    }
    {return-vals
        The {docref Graphic} that will be used for the user interface
        of the {ctext ScrollBox}.
    }
    {details
        This is called by the constructor of the {ctext ScrollBox}
        after setting and initializing the vertical and the horizontal
        {docref Scrollbar}'s.

        By default, this method arranges the vertical and the
        horizontal {ctext Scrollbar}'s and the {docref Viewport} to
        provide the user interface for the {ctext ScrollBox}.
    }
    {since 6.0}
  } 0  "Graphic"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 24663 "Distance" 2 0m 704 {text {purpose
        Specify the vertical distance covered by the
        {pop unit scrolling} gesture.
    }
    {details
        The value of this option specifies the amount by which the
        contents of this {docref ScrollBox} should move vertically
        when the user performs unit scrolling.

        When the value of this option is {ctext 0m}, the unit
        scrolling distance will be calculated dynamically.  In
        particular, it will be one-tenth of the block scrolling
        distance.  (Note that the block scrolling distance may also be
        calculated dynamically.)

        It is an error to set this option to a {ctext Distance} less
        than {ctext 0m}.
    }
  }}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 46492 2 "" "bool"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 19917 "bool" 5 false 732 {text {purpose
        Reserves the bottom right corner of the {docref ScrollBox}.
    }
    {notes
        If {code true}, the bottom right corner of the {ctext
        ScrollBox} will have a {docref Graphic} if one or more {docref
        Scrollbar}s of this object is showing.
    }
    {notes
        This is generally used on the Mac OS X{trademark} platform by
        {ctext ScrollBox}s that are used as containers by a {docref
        View}. Not making a {ctext ScrollBox} reserve the corner space
        will have an annoying problem of not been able to use the
        buttons of the {ctext Scrollbox} as that space is used by the
        operating system for resizing the {ctext View}'s window.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 38533 2 "" 30 lc:LayoutContext, bounds:GRect "void"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 54427 2 "" "Distance"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 19020 "#DisplayContext" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 6372 2 "" "String"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6242 14 {unadvertised} "#CornerFill" 0 }
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6187 14 {unadvertised} "Distance" 0 }
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 30624 "bool" 5 false 609 {text {purpose
        Control whether a {docref ScrollBox} initially requests the
        keyboard focus.
    }
    {details
        If the value of this option is true, then this {ctext
        ScrollBox} will request the keyboard focus whenever it
        is attached to a {docref FocusManager}. Otherwise, the
        {ctext ScrollBox} will request the keyboard focus only when
        the user clicks on one of the scrollbars or clicks inside the
        {ctext ScrollBox} on some object that does not consume the
        pointer-click event.  See also {docref
        ScrollBox.accept-focus?}.
    }
  }}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5609 14 {unadvertised} "bool" 4 true}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 59148 2 "" 0  "GuiMark"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 59233 2 "" 10 e:DragOver "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5942 14 {unadvertised} "bool" 5 false}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 26469 "bool" 4 true 567 {text {purpose
        Enables/Disables scrolling in the horizontal direction. Its
        default is {ctext true}.
    }
    {details
        Setting {ctext hscroll?} option to {ctext false} does not
        merely hide the horizontal {docref Scrollbar}. The {ctext
        Scrollbar} is actually eliminated and no scrolling occurs in
        the horizontal direction. This results in the contents of the
        {ctext ScrollBox} getting squished in the horizontal
        direction if there is not enough space for the contents in
        this direction.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 56307 2 "" 104 relative-to:Visual, x:Distance = 0pt, y:Distance = 0pt, min-window:double = 0.0, max-window:double = 1.0 "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 42274 444 {text {purpose
        A means by which the contents of a {docref ScrollBox} can
        indicate that it should request the keyboard focus.
    }
    {notes
        This is provided so that {ctext ScrollBox} can differentiate
        between this sort of request and other key focus requests.
        The default implementation calls {docref
        ScrollBox.request-key-focus} when {docref
        ScrollBox.accept-focus?} is true.
    }
  } 0  "void"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 25312 "bool" 5 false 338 {text {purpose 
        Control the {docref Scrollbar.quantized?} option of a
        {docref ScrollBox}'s vertical {docref Scrollbar}.
    }
    {details
        Setting this option forces the vertical {ctext Scrollbar}'s
        value to always be constrained to integer multiples of its
        {pop unit scrolling} distance.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 50054 671 {text {purpose
        Sets the parameters of the {docref ScrollBox} after a change in
        the size of its {docref Viewport} or the object in the {ctext
        Viewport}.
    }
    {parameter
        view-bounds,
        The new bounds of the {ctext Viewport}.
    }
    {details
        Performs the actions that a {ctext ScrollBox} needs to
        perform when there is a change in object sizes, such as
        adjusting the thumb length and range of values for any {docref
        Scrollbar}s.
    }
    {expected-events 
        {event Action,
            Fired by the {ctext Scrollbox} at itself after adjusting
            the parameters.
        }
    }
  } 17 view-bounds:GRect "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 37575 2 "" 16 lc:LayoutContext "Dimension"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 27301 "bool" 4 true 561 {text {purpose
        Enables/Disables scrolling in the vertical direction. It is by
        default {ctext true}.
    }
    {details
        Setting {ctext vscroll?} option to {ctext false} does not
        merely hide the vertical {docref Scrollbar}. The {ctext
        Scrollbar} is actually eliminated and no scrolling occurs in
        the vertical direction. This results in the contents of the
        {ctext ScrollBox} getting squished in the vertical
        direction if there is not enough space for the contents in
        this direction.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 37948 2 "" 52 lc:LayoutContext, lextent:Distance, rextent:Distance "Dimension"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 55558 2 "" "Distance"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 54985 2 "" "Distance"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5654 14 {unadvertised} "bool" 4 true}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5566 14 {unadvertised} "bool" 4 true}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 7475 916 {text {purpose 
        Initialize a new {docref ScrollBox}.
    }
    {parameter viewport-class,
        Indicates the type of the object that should be created to
        serve as the {ctext ScrollBox}'s viewport.  If this argument
        is supplied, its value must be a class type that is
        {docref Viewport} or a subclass of {ctext Viewport}.
    }
    {parameter ...,
        Additional arguments to this constructor are the same as the
        arguments that can be supplied to the default
        {docref Frame} constructor.
    }
    {notes
        The {docref ScrollBox.create-hscroll} and {docref
        ScrollBox.create-vscroll} will be called to get the {ctext
        Scrollbar}s to be used for the horizontal and the vertical
        scrolling respectively. Also {docref
        ScrollBox.create-main-panel} will be called to get the user
        interface for the {ctext ScrollBox}.
    }
  } 35 viewport-class:Type = Viewport, ... ""}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5328 14 {unadvertised} "OriginElastic" 40 unstretchable-zero-length-origin-elastic}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 46411 2 "" "bool"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6044 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 45034 2 "" 15 e:PointerScroll "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5407 14 {unadvertised} "OriginElastic" 40 unstretchable-zero-length-origin-elastic}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 55844 2 "" "Distance"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 55700 2 "" "Distance"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 34049 "bool" 5 false 1975 {text {purpose 
        Force the horizontal {docref Scrollbar} to be disabled.
    }
    {details
        When true, the horizontal {ctext Scrollbar} will act as if it
        were not needed, even if it is.  The reason this option exists
        is that the {docref ScrollBox}'s layout decisions are affected
        by the {docref ScrollBox.hscroll?} option.  Typically, this is
        the desired effect, but there are times in which one might
        want the {ctext hscroll?=true} layout rules but not have a
        {ctext Scrollbar}; this can be accomplished by setting {ctext
        always-disable-hscroll? = true, shrink-hscroll? = true}.

        {table
            {header-row                
                {header-cell shrink-hscroll?}
                {header-cell always-disable-hscroll?}        
            }
            {row        
                {cell false}
                {cell false}
                {cell Always show the horizontal Scrollbar.}
            }
            {row
                {cell true}
                {cell false}
                {cell Show the horizontal Scrollbar only when needed.}        
            }
            {row
                {cell true}
                {cell true}
                {cell Never show the horizontal Scrollbar.}        
            }
            {row
                {cell false}
                {cell true}
                {cell Show a disabled horizontal Scrollbar.}
            }
        }

        See also {docref ScrollBox.shrink-hscroll?}.
        
    }
    {for-example
        Try various combinations of always-disable-hscroll? and
        shrink-hscroll?.
        {example
            {ScrollBox
                width = 2in, height = 1in, background = "lime",
                shrink-hscroll? = true, always-disable-hscroll? = true, 
                {RectangleGraphic 
                    width = 5in, height = 5in, background = "yellow"
                }
            }
        }
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 21157 "Distance" 2 0m 1146 {text {purpose
        Specifies the horizontal distance covered by
        {pop block scrolling}.
    }
    {details
        The value of this option specifies the amount by which the
        contents of this {docref ScrollBox} should move horizontally
        when the user performs block scrolling.

        When the value of this option is {ctext 0m}, the block
        scrolling distance will be 90% of the width of the viewport
        inside of the {ctext ScrollBox}.  (In other words, by default
        there is a 10% overlap between the viewport contents before
        and after the block scrolling gesture is made.)

        This default distance will be further adjusted so that it is
        an integer multiple of the horizontal {pop unit scrolling}
        distance.  (If the block scrolling gesture is made at a time
        when the remaining available scrolling distance is less than
        the block scrolling distance, then the scrollbar moves by the
        total amount of the remaining available scrolling distance.)

        It is an error to set this option to a {ctext Distance} less
        than {ctext 0m}.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 31898 "bool" 4 true 515 {text {purpose
        Control whether a {docref ScrollBox}'s vertical
        {docref Scrollbar} vanishes when it is not needed.
    }
    {details
        If this option is set to true (the default), the vertical
        {ctext Scrollbar} vanishes when it is not needed.  If the
        option is set to false, the {ctext Scrollbar} continues to
        occupy the same amount of space but is drawn as disabled when
        it is not needed.

        See also {docref ScrollBox.always-disable-vscroll?}.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 36988 383 {text {purpose
        Create a {docref Scrollbar} to be used for the horizontal
        scrolling in the {docref ScrollBox}.
    }
    {notes
        This is called by the constructor of the {ctext ScrollBox}.

        Various properties and event handlers will be set to this
        {ctext Scrollbar} to make it suitable for horizontal
        scrolling.
    }
    {since 6.0}
  } 0  "Scrollbar"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 37760 2 "" 16 lc:LayoutContext "Dimension"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 39732 14 {unadvertised} 15 bpref:Dimension "OriginElastic"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 25778 "bool" 5 false 342 {text {purpose 
        Control the {docref Scrollbar.quantized?} option of a
        {docref ScrollBox}'s horizontal {docref Scrollbar}.
    }
    {details
        Setting this option forces the horizontal {ctext Scrollbar}'s
        value to always be constrained to integer multiples of its
        {pop unit scrolling} distance.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 49294 1309 {text {purpose
        Get the vertical {docref Scrollbar} associated with this
        {docref ScrollBox}.
    }
    {return-vals 
        The vertical {ctext Scrollbar}.
    }
    {notes
        When used as part of a {ctext ScrollBox}, certain aspects of
        the {ctext Scrollbar} are under the {ctext ScrollBox}es
        control.  For example, the following options may be set by the
        {ctext ScrollBox} at any time:
        {itemize
            {item {docref-abbr Scrollbar.enabled?}}
            {item {docref-abbr Scrollbar.min}}
            {item {docref-abbr Scrollbar.max}}
            {item {docref-abbr Scrollbar.thumb-length}}
            {item {docref-abbr Scrollbar.blocksize}}
            {item {docref-abbr Scrollbar.unitsize}}
            {item {docref-abbr Scrollbar.quantized?}}
            {item {docref-abbr Scrollbar.shrink-when-disabled?}}
        }
        In addition, the {ctext ScrollBox} assumes that the value for
        these and other options ({docref-abbr Scrollbar.direction}, in
        particular) will not otherwise be modified on the {ctext
        Scrollbar}.

        These lists of sensitive options may change in the future.  In
        general, one should not manipulate a {ctext Scrollbar}
        directly if it came from a {ctext ScrollBox}.
    }
  } 0  "Scrollbar"}
{AccessorDocInfo "controls/logical-controls/scrollbox.scurl" 55968 2 "" "Distance"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 36123 "bool" 5 false 1963 {text {purpose 
        Force the vertical {docref Scrollbar} to be disabled.
    }
    {details
        When true, the vertical {ctext Scrollbar} will act as if it
        were not needed, even if it is.  The reason this option exists
        is that the {docref ScrollBox}'s layout decisions are affected
        by the {docref ScrollBox.vscroll?} option.  Typically, this is
        the desired effect, but there are times in which one might
        want the {ctext vscroll?=true} layout rules but not have a
        {ctext Scrollbar}; this can be accomplished by setting {ctext
        always-disable-vscroll? = true, shrink-vscroll? = true}.

        {table
            {header-row                
                {header-cell shrink-vscroll?}
                {header-cell always-disable-vscroll?}        
            }
            {row        
                {cell false}
                {cell false}
                {cell Always show the vertical Scrollbar.}
            }
            {row
                {cell true}
                {cell false}
                {cell Show the vertical Scrollbar only when needed.}        
            }
            {row
                {cell true}
                {cell true}
                {cell Never show the vertical Scrollbar.}        
            }
            {row
                {cell false}
                {cell true}
                {cell Show a disabled vertical Scrollbar.}        
            }
        }

        See also {docref ScrollBox.shrink-vscroll?}.
    }
    {for-example
        Try various combinations of always-disable-vscroll? and
        shrink-vscroll?.

        {example
            {ScrollBox
                width = 2in, height = 1in, background = "lime",
                shrink-vscroll? = true, always-disable-vscroll? = true, 
                {RectangleGraphic 
                    width = 5in, height = 5in, background = "yellow"
                }
            }
        }
    }
  }}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5993 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 40789 14 {unadvertised} 15 bpref:Dimension "OriginElastic"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 47897 1313 {text {purpose
        Get the horizontal {docref Scrollbar} associated with this
        {docref ScrollBox}.
    }
    {return-vals 
        The horizontal {ctext Scrollbar}.
    }
    {notes
        When used as part of a {ctext ScrollBox}, certain aspects of
        the {ctext Scrollbar} are under the {ctext ScrollBox}es
        control.  For example, the following options may be set by the
        {ctext ScrollBox} at any time:
        {itemize
            {item {docref-abbr Scrollbar.enabled?}}
            {item {docref-abbr Scrollbar.min}}
            {item {docref-abbr Scrollbar.max}}
            {item {docref-abbr Scrollbar.thumb-length}}
            {item {docref-abbr Scrollbar.blocksize}}
            {item {docref-abbr Scrollbar.unitsize}}
            {item {docref-abbr Scrollbar.quantized?}}
            {item {docref-abbr Scrollbar.shrink-when-disabled?}}
        }
        In addition, the {ctext ScrollBox} assumes that the value for
        these and other options ({docref-abbr Scrollbar.direction}, in
        particular) will not otherwise be modified on the {ctext
        Scrollbar}.

        These lists of sensitive options may change in the future.  In
        general, one should not manipulate a {ctext Scrollbar}
        directly if it came from a {ctext ScrollBox}.
    }
  } 0  "Scrollbar"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 31207 "bool" 4 true 519 {text {purpose
        Control whether a {docref ScrollBox}'s horizontal
        {docref Scrollbar} vanishes when it is not needed.
    }
    {details
        If this option is set to true (the default), the horizontal
        {ctext Scrollbar} vanishes when it is not needed.  If the
        option is set to false, the {ctext Scrollbar} continues to
        occupy the same amount of space but is drawn as disabled when
        it is not needed.

        See also {docref ScrollBox.always-disable-hscroll?}.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 37493 377 {text {purpose
        Create a {docref Scrollbar} to be used for the vertical
        scrolling in the {docref ScrollBox}.
    }
    {notes
        This is called by the constructor if a {ctext Scrollbox}.

        Various properties and event handlers will be set to this
        {ctext Scrollbar} to make it suitable for vertical
        scrolling.
    }
    {since 6.0}
  } 0  "Scrollbar"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5523 14 {unadvertised} "bool" 4 true}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 42417 2 "" 14 e:PointerPress "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 56094 2 "" 36 x:Distance = -1pt, y:Distance = -1pt "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 58757 598 {text {purpose
        Position the viewport of a {docref ScrollBox} so that the top
        left corner of a given object coincides with the top left
        corner of the viewport.
    }
    {parameter g, 
        The object of interest.
    }
    {parameter vertical-only?, 
        Supply true for this argument to inhibit horizontal scrolling.
    }
    {parameter horizontal-only?, 
        Supply true for this argument to inhibit vertical scrolling.
    }
    {notes
        An error will be signaled if {metavar g} is not a graphical
        descendant of this {ctext ScrollBox}.
    }
  } 68 g:Visual, vertical-only?:bool = false, horizontal-only?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 11284 2 "" 65 page-height:Distance, next-page-height:Distance, query-only?:bool "(PaginationState, PaginationQuality)"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 23648 "Distance" 2 0m 708 {text {purpose
        Specify the horizontal distance covered by the
        {pop unit scrolling} gesture.
    }
    {details
        The value of this option specifies the amount by which the
        contents of this {docref ScrollBox} should move horizontally
        when the user performs unit scrolling.

        When the value of this option is {ctext 0m}, the unit
        scrolling distance will be calculated dynamically.  In
        particular, it will be one-tenth of the block scrolling
        distance.  (Note that the block scrolling distance may also be
        calculated dynamically.)

        It is an error to set this option to a {ctext Distance} less
        than {ctext 0m}.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 22625 "Distance" 2 0m 1153 {text {purpose
        Specifies the vertical distance covered by the
        {pop block scrolling} gesture.
    }
    {details
        The value of this option specifies the amount by which the
        contents of this {docref ScrollBox} should move vertically
        when the user performs block scrolling.

        When the value of this option is {ctext 0m}, the block
        scrolling distance will be 90% of the height of the viewport
        inside of the {ctext ScrollBox}.  (In other words, by default
        there is a 10% overlap between the viewport contents before
        and after the block scrolling gesture is made.)

        This default distance will be further adjusted so that it is
        an integer multiple of the vertical {pop unit scrolling}
        distance.  (If the block scrolling gesture is made at a time
        when the remaining available scrolling distance is less than
        the block scrolling distance, then the scrollbar moves by the
        total amount of the remaining available scrolling distance.)

        It is an error to set this option to a {ctext Distance} less
        than {ctext 0m}.
    }
  }}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 6088 14 {unadvertised} "Distance" 0 }
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 43351 2 "" 10 e:KeyPress "void"}
{FieldDocInfo "controls/logical-controls/scrollbox.scurl" 5699 14 {unadvertised} "bool" 5 false}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 29949 "bool" 4 true 641 {text {purpose
        Control whether a {docref ScrollBox} will accept the keyboard
        focus.
    }
    {details
        By default, if a user clicks inside a {docref ScrollBox} and
        the object inside the {docref ScrollBox} does not consume the
        {docref PointerPress} event, the {docref ScrollBox} will
        request the keyboard focus and will begin to respond to Page
        Up, Page Down, and the keyboard arrow keys, moving the {docref
        ScrollBox}'s {docref Scrollbar}s appropriately.

        This behavior can be disabled by setting the {docref
        ScrollBox.accept-focus?}  option to false.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbox.scurl" 53071 14 {unadvertised} 0  "void"}
{OptionDocInfo "controls/logical-controls/scrollbox.scurl" 29119 "bool" 5 false 717 {text {purpose
        Expand the scrollable region vertically so that the contents can be
        scrolled just out of view.}
    {details
        When false, the scroll bounds are such that the bounds of the
        contents define the scrolling region.  When true, the scroll
        bounds also include the region just outside of these bounds,
        up to the point where the contents have just scrolled out of
        view.
    }
    {for-example
        {example
            {ScrollBox
                height = 3in, width = 3in, expanded-vscroll-bounds? = true,
                {RectangleGraphic width = 1in, height = 1in}
            }
        }
    }
    {notes 
        By default, this is false.
    }
  }}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 197742 85 {text {purpose 
        Delete all selected records in a {docref RecordGrid}.
    }
} "DeleteCommand"$""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 198079 2 "" "RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 198496 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 198211 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 197989 165 {text {purpose
        Construct a new {ctext RecordGridDelete}.
    }
    {parameter context, 
        {docref RecordGrid} on which this command operates.
    }
  } 18 context:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 233718 287 {text {purpose
        {docref KeyPress}s for transmission between objects in a
        {docref RecordGrid} hierarchy.
    }
    {details
        These events are only created based on other {docref KeyPress}
        events, and can be considered like a wrapper for those events.
    }
} "KeyPress"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 233937 141 {text {purpose
        Whether this event is propagating upwards towards the UI
        or downward towards a cell.
    }
    {since 6.0}
  } "bool" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 234090 112 {text {purpose
        The original {docref KeyPress} event that generated this event.
    }
    {since 6.0}
  } "KeyPress" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 234931 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 234419 272 {text {purpose
        Construct this object.
    }
    {parameter key-press,
        the original {docref KeyPress} event. 
    }
    {parameter upwards?,
        whether the event is intended to travel upwards through
        the {docref RecordGrid} hierarchy.
    }
  } 33 key-press:KeyPress, upwards?:bool ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 59027 3413 {text {purpose 
        Class commonly used to display a {docref TreeNode}
        in a {docref TreeControl}.
    }
    {details
        This item displays the associated {ctext TreeNode} as a 
        label with an optional icon to its left. 
        
        The icon, specified by the {docref DefaultTreeItem.icon} property,
        may be customized to reflect various aspects of the current state of 
        the node.  See {docref DefaultTreeIcon} for more information.

        The default value of the label is simply the {docref TreeNode.node-label} 
        property.  This label will be updated every time the item is refreshed in
        order to reflect changes to the caption.  To customize either the graphic
        display of the label, or its underlying data, override the
        {docref DefaultTreeItem.get-label} method.
        
        This item also provides default affordances for the
        {docref TreeItem.current?} and  {docref TreeItem.selected?} 
        properties.  When {ctext current?} is {ctext true},
        it draws itself by drawing a thin border around its label.
        When {ctext selected?} is {ctext true}, it sets the
        {ctext background} and {ctext color} of the frame containing
        the label to the appropriate colors for selection.  See 
        {docref DefaultTreeItem.modify-for-selected} and
        {docref DefaultTreeItem.modify-for-current} for more
        information.

        The origin of this item, like all {ctext TreeItem}s, will determine how
        the item is aligned with the tree connectors and other items in the tree. 
        In particular, the horizontal connecting line from the toggle button for 
        this item is drawn to its vertical origin, and the vertical connecting 
        line to the toggle buttons of the children of this item are drawn to its
        horizontal origin. See {ctext TreeItem} for more information.

        The natural vertical origin and alignment of this object is determined -- 
        as with  {docref HBox} --  by a combination of the settings for  
        {docref DefaultTreeItem.valign} and the origins of the item's contents.  
        By default, {ctext valign} is set to "center", yielding center alignment of 
        the icon, label, and toggle button.  The default gives good results for
        single line labels, but for large, or multi-line labels, a setting of 
        "origin" or "top" may be more appropriate.

        The natural horizontal origin of this object is the horizontal origin of the
        icon, if {ctext non-null}.  Therefore, icons for this object should 
        typically be centered around their origin in the horizontal dimension, so
        that they will align well with the tree connectors and the toggle buttons
        of their children.  If no icon is specified, the horizontal origin is at
        the position where an icon would have been located, 
        {ctext DefaultTreeItem.spacing} to the left edge of the label.
  
        By default, this object will set its {docref text-breakable?} option to
        {ctext false}.
    }
    {notes
        This object can be styled by writing style rules for "DefaultTreeItem".
        See {link href =
            {url
                "curl://install/docs/en/dguide/styled-controls.curl#skinning-tree-controls"
            }, Skinning Tree Controls} for more information.
    }
    {since 4.0}
} "TreeItem"$""}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 63482 "any" 3 5px 241 {text {purpose 
        Specify the amount of space to insert between
        the icon and label of this {ctext DefaultTreeItem}.
    }
    {details
        This property has similar semantics to the 
        {docref HBox.spacing}.
    }
  }}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 60905 "FillPattern" 0  2 ""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 63152 1195 {text {purpose
        Label to be displayed for this item.
    }
    {details
        The value returned by this method will be displayed
        to the right of the icon in the item. If not a 
        {docref Graphic}, this value will be cast into a
        {ctext Graphic}.  

        By default, this method simply returns the
        {docref TreeNode.node-label} for the associated node.

        This method will be called whenever the 
        {docref TreeItem.refresh} method is called on the node.  
        Therefore different labels may be returned to represent 
        particular {ctext current?}, {ctext selected?} and 
        {ctext expanded?} states of the item.
    }
    {override
        For efficiency reasons, subclasses should
        returned cached or existing values from this
        method, whenever possible.  If the return value is 
        unchanged since the previous call, this object
        can then avoid doing extra processing.
    }
    {notes
        In the case where the return value is not
        a {docref Graphic},  The implicitly constructed
        label that is actually displayed will have a
        one pixel wide margin applied to it.
    }
  } 0  "any"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59380 14 {unadvertised} "HBox" 0 }
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 69536 2 "" 14 r2d:Renderer2d "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 66003 597 {text {purpose
        Modify this object visually to indicate the state of its 
        {docref TreeItem.current?} property.
    }
    {details 
        The default implementation of this method causes a
        border to be to drawn around the label when the item
        is current and {ctext TreeControlUI.has-key-focus?} is 
        {ctext true}.
   
        Not typically called directly; This method is called by
        {docref DefaultTreeItem.refresh} when needed.
    }
    {override
        Override this method to display {ctext current?} state
        in a different manner.
    }
  } 13 current?:bool "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 61727 650 {text {purpose 
        The icon to be displayed for this item.
    }
    {details       
        Note that if specified, the horizontal origin of a {ctext non-null}
        {ctext icon} is the default horizontal origin of the entire
        item.  Therefore an icon used for this property should typically
        be centered around its origin. See the main documentation for
        {docref DefaultTreeItem} for more information.

        The default implementation of {docref DefaultTreeItem.refresh}
        calls {docref DefaultTreeIcon.refresh} on this icon, ensuring that
        the icon can update itself whenever the item changes.
    }
  } "#DefaultTreeIcon"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 68184 14 {unadvertised} 22 value:#DefaultTreeIcon "void"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 60743 "Background" 0  2 ""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 65035 593 {text {purpose
        Modify this object visually to indicate the state of its 
        {docref TreeItem.selected?} property.
    }
    {details 
        The default implementation of this method causes the 
        selected background to be drawn under the label and
        changes the color property the label inherits to the
        selected foreground color.
       
        Not typically called directly; This method is called by
        {docref DefaultTreeItem.refresh} when needed.
    }
    {override
        Override this method to display selection in a different manner.
    }
  } 14 selected?:bool "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 61801 2 "" "#DefaultTreeIcon"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59649 14 {unadvertised} "bool" 5 false}
{ClassVariableDocInfo "controls/logical-controls/tree-control.scurl" 59318 14 {unadvertised} "PixelDistance" 3 1px}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 71371 2 "" 28 layout-context:LayoutContext "void"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59540 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 66906 756 {text {purpose
        Refresh the display state of this item from
        its underlying {docref TreeNode}.
    }
    {details
        See {docref TreeItem} for general details about the usage
        and implementation requirements for this method.

        This implementation of this method refreshes the displayed 
        label and icon.  See {docref DefaultTreeItem.get-label},
        and {docref DefaultTreeItem.icon} for more information.


        This implementation of this method also generates any
        required calls to {docref DefaultTreeItem.modify-for-selected},
        {docref DefaultTreeItem.modify-for-current}.
    }
    {override
        If this method is overridden, the super implementation
        should be called.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59415 14 {unadvertised} "any" 4 null}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59577 14 {unadvertised} "FillPattern" 23 FillPattern.transparent}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59501 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 71555 2 "" 28 layout-context:LayoutContext "void"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 63952 "any" 3 0.5 375 {text {purpose 
        Specify the vertical alignment of the {ctext icon} and
        the {ctext label}.
    }
    {details
        This property has similar semantics to the 
        {docref HBox.valign}, and in particular will
        determine the overall vertical origin of this
        object.  Note that the default value is 
        {ctext 0.5} or "center".
    }
  }}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 68848 2 "" 0  "(lextent:Distance, 
                                          rextent:Distance, 
                                          ascent:Distance,
                                          descent:Distance)"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 59695 2 "" "String"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 64334 "bool" 5 false 289 {text {purpose 
        Specify whether the {ctext icon} or the
        {ctext label} should be stretched in the
        vertical direction to accommodate each other.
    }
    {details
        This property has similar semantics to the 
        {docref HBox.vstretch?} property.
    }
  }}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 59455 14 {unadvertised} "#DefaultTreeIcon" 4 null}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 60200 312 {text {purpose Construct this object.}
    {parameter 
        node, The {docref TreeNode} that this item 
        will display.
    }
    {parameter
        icon, {docref Graphic}.  Initial value for
        {docref DefaultTreeItem.icon}. 
    }
    {parameter
        ..., options and event handlers.
    }
  } 48 node:TreeNode, icon:#DefaultTreeIcon = null, ... ""}
{ClassDocInfo "controls/logical-controls/menu-pane.scurl" 2609 2517 {text {purpose
        A pulldown submenu or popup menu.
    }
    {details
        Generally used as the pane of a {docref SubMenu}. Can also be
        used as a popup menu using {docref context-popup}.

        For more information and examples, see the
        {link href = {dguide-url "menus.curl"},
        Menus} section of the Curl Developer's Guide.
    }
    {visual-testing
        This class implements the {ctext CurlMenu} visual test type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell
                    Selects and activates a menu action using the path from
                    this menu.  For example, "colors;green" could be used to
                    select the "green" item in the "colors" submenu of this
                    menu.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell
                    The number of items in this menu to select from.  To
                    obtain the number of items in a submenu, open the submenu,
                    then get the value of its {ctext items count} property.
                }
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "MenuPane",
        "MenuPane/up-button", "MenuPane/down-button". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
} "MultiUIControlFrame, BaseMenuPane"$"DropdownMenuPane"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 4045 696 {text {purpose
        Constructs a {docref MenuPane} object.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter use-look-and-feel?,
        Provides the initial value for {docref
        MenuPane.use-look-and-feel?}.
    }
    {parameter vscroll?,
        Enables/Disables scrolling in the vertical direction. It is by
        default {ctext true}.

        If {ctext false}, the contents of the {ctext MenuPane} may get
        squished in the vertical direction, if there is not enough
        space for the contents in this direction.
    }
    {parameter ..., 
        Each non-keyword argument must be a {docref MenuAction} or
        {docref SubMenu}.
    }
  } 87 ui-object:#MenuPaneUI = null, use-look-and-feel?:bool = true, vscroll?:bool = true, ... ""}
{FieldDocInfo "controls/logical-controls/menu-pane.scurl" 2734 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 9085 479 {text {purpose
        Returns {code true} if the pointer was previously inside the
        {docref MenuPane} and then it moved out.
    }
    {parameter (x, y),
        The coordinate of the pointer with respect to the 
        {ctext MenuPane}.
    }
    {notes
        It returns {code true} if the {ctext MenuPane} does not have a
        UI object associated with it. Otherwise it returns the value
        returned by {docref MenuPaneUI.pointer-exited-contents?}.
    }
  } 22 x:Distance, y:Distance "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 6348 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 6483 2 "" 10 g:any, ... "#Visual"}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 6152 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 7258 352 {text {purpose
        Method called by {docref MenuPane} when a new {docref Graphic} is
        added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {notes
        This will call {docref MenuPaneUI.note-item-added} if there is
        a {docref MenuPaneUI} associated with this object.
    }
  } 9 index:int "void"}
{OptionDocInfo "controls/logical-controls/menu-pane.scurl" 5267 "bool" 5 false 489 {text {purpose
        A boolean representing whether this {docref MenuPane} takes
        part in traversal-related activities.
    }
    {details
        If {ctext false}, the object should refuse to {ctext
        become-active} when requested. The object will thus be skipped
        during tab traversing, and manipulation of the object should
        not cause the key-focus or "activeness" to be taken from
        another traversor.

        The default is {ctext false}.
    }
  }}
{FieldDocInfo "controls/logical-controls/menu-pane.scurl" 3122 342 {text {purpose
        Determines if the scrolling is allowed in the vertical
        direction. It is by default {ctext true}.

        If {ctext false}, the contents of the {ctext MenuPane} may get
        squished in the vertical direction, if there is not enough
        space for the contents in this direction.
    }
    {since 6.0}
  } "bool" 0 }
{FieldDocInfo "controls/logical-controls/menu-pane.scurl" 2693 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 3162 2 "" "String"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 7789 356 {text {purpose
        Method called by {docref MenuPane} when a {docref Graphic} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {notes
        This will call {docref MenuPaneUI.note-item-removed} if there is
        a {docref MenuPaneUI} associated with this object.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 6824 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 9720 284 {text {purpose
        The {docref Graphic} that will get the {docref PointerEvent}
        and the {docref KeyPress}s from the {docref MenuManager}.
    }
    {return-vals
        Returns the UI object associated with this control, if
        any. Else returns {code self}.
    }
  } "Graphic"}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 6062 732 {text {purpose
        Determines if default values for the nonlocal options
        that affect the appearance are inherited from the look-and-feel
        or from the graphical parent.
    }
    {details
        If this property is {ctext true}, nonlocal options are
        inherited from {docref the-default-look-and-feel} and then
        from the graphical parent. Otherwise, they are inherited
        from the graphical parent directly.

        The options affected by this property are {docref
        control-color}, {docref control-content-background}, {docref
        Graphic.background}, {docref color}, {docref font-size},
        {docref font-weight}, {docref font-family}, and {docref
        font-style}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 8387 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 6580 2 "" 40 g:Graphic, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 8233 265 {text {purpose
        Method called by {docref MenuPane} when {docref
        MenuPane.clear} is called.
    }
    {notes
        This will call {docref MenuPaneUI.note-items-cleared} if there is
        a {docref MenuPaneUI} associated with this object.
    }
  } 0  "void"}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 42638 14 {unadvertised} "CommandButtonUI"$""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42834 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43205 2 "" 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43090 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43267 2 "" 13 default?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43032 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42786 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43148 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42983 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42934 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42884 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42716 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 122346 2286 {text {purpose
        A {ctext ListItem} implements one list element in a list control such
        as a {docref ListBox}, {docref ComboBox}, or {docref DropdownList}.
    }   
    {details
        List members implemented by {ctext ListItem} include
        list separators and other non-selectable items.

        A {ctext ListItem} object contains information about the state of an
        list item such as:
        {itemize
            {item
                The item's value
            }
            {item
                Whether the item is selected
            }
            {item
                Whether the item is disabled
            }
            {item
                The item's numerical index in the control
            }
        }
        While a {ctext ListItem} can exist without a control,
        or be moved from one control to another, they are primarily
        created, directly or indirectly, for one control.

        You can identify a {ctext ListItem} in a control by its index number.
        With the index of a {ctext ListItem}, you can set its
        {docref ListItem.selected?} property, or its {docref enabled?}
        property. See an example of this below.
        Disabled {ctext ListItem}s cannot be selected.

        {ctext ListItem}s are {docref Graphic}s, so while you can change
        graphic options such as size and color, it is not recommended
        that you reparent a {ctext ListItem} or otherwise remove it from its
        control. This will prevent the control from working properly.
    }
    {for-example
        {example
            {let list:ListBox =
                {ListBox
                    "Red Pine", "White Pine", "Spruce", "Hemlock", "Balsam Fir"
                }
            }
            {set list[2].enabled? = false}
            {value list}
        }
    }
    {override
        {ctext ListItem} and its subclass {docref ListValueItem} are meant to
        be subclassed in applets that require a high degree of control over the
        visual rendering of controls.  For instance, you may wish to change
        the appearance of selected or disabled items.  To do this you could
        create a subclass that overrides the {ctext selected?}
        setter and the {ctext enabled?} option handler.
    }
} "SelectableItem"$"ListValueItem, ListSeparator"}
{ClassVariableDocInfo "controls/logical-controls/list-controls.scurl" 122923 14 {unadvertised} "#OptionKey" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 123113 133 {text {purpose
        Construct this object.
    }
    {parameter value, 
        The value associated with this ListItem.
    }
  } 16 value:any = null ""}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 122877 88 {text {purpose
         The index in the control at which this item resides.
     }
   } "int" 0 }
{OptionDocInfo "controls/logical-controls/list-controls.scurl" 123728 "bool" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 124752 668 {text {purpose
        Is this item currently selected?
    }
    {details 
        A SelectableItem may feel free to ignore attempts to
        set this flag to {ctext true}.  See the 
        {docref SelectableItem.selected?}  and
        {docref SelectableItem.set-selected?-quietly}
        for more details.
    }
    {override 
        Generally the setter should not be overridden, as it simply
        calls {docref SelectableItem.set-selected?-quietly}
        to do the dirty work and then notifies the control if the
        selected? state changed. In most cases you want to override
        {docref SelectableItem.set-selected?-quietly} instead.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 125036 2 "" "any"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 122591 162 {text {purpose 
        The value that this item got initialized with.
    }
    {details 
        Used only to populate the data-model.
    }
    {since 6.0}
  } "any" 0 }
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 122723 80 {text {purpose
        The control that this ListItem is contained in.
    }
  } "#ListModelControl" 0 }
{ClassDocInfo "controls/logical-controls/menu-bar.scurl" 5065 4714 {text {purpose
        Creates a horizontal arrangement of pulldown menus.
    }
    {details
        A {ctext MenuBar} can be placed anywhere in the graphics
        hierarchy. It is typically used to create pulldown menus at
        the top of a
        {docref View}.

        For more information and examples, see the
        {link href={dguide-url "menus.curl"},
        Menus} section of the Curl Developer's Guide.
    }
    {for-example
        The following is a simple menu example that uses {ctext MenuBar},
        {docref SubMenu}, and {docref MenuAction}.

        {example
            {let menu-bar:MenuBar=
                {MenuBar
                    {SubMenu
                        label = "File",
                        {MenuAction label = "Open",
                            {on Action do
                                {popup-message "Opens a file"}}},
                        {SubMenu
                            label = "New",
                            {MenuAction
                                label = "Curl",
                                {on Action do
                                    {popup-message "Creates a new Curl file"}
                                }
                            },
                            {MenuAction
                                label = "Text",
                                {on Action do
                                    {popup-message "Creates a new Text file"}
                                }
                            },
                            {MenuAction label = "Close",
                                {on Action do
                                    {popup-message "Closes a file"}
                                }
                            }
                        }
                    },
                    {SubMenu label = "Edit",
                        {MenuAction label = "Cut",
                            {on Action do
                                {popup-message "Cuts text"}
                            }
                        },
                        {MenuAction label = "Paste",
                            {on Action do
                                {popup-message "Pastes text"}
                            }
                        }
                    }
                }
            }
            {CommandButton
                label="Show MenuBar",
                {on Action do
                    {let view:View = {View menu-bar}}
                    {view.show}
                }
            }
        }

    }
    {visual-testing
        This class implements the {ctext CurlMenu} visual test type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell
                    Selects and activates a menu action using the path from
                    this menu.  For example, "colors;green" could be used to
                    select the "green" item in the "colors" submenu of this
                    menu.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell
                    The number of items in this menu to select from.  To
                    obtain the number of items in a submenu, open the submenu,
                    then get the value of its {ctext items count} property.
                }
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "MenuBar",
        "MenuBar/item-box", "MenuBar/divider-box" and "MenuBar/divider". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
} "MultiUIControlFrame, BaseMenuBar"$""}
{AccessorDocInfo "controls/logical-controls/menu-bar.scurl" 7769 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 8871 349 {text {purpose
        Method called by {docref MenuBar} when a new {docref Graphic}
        is added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {notes
        This will call {docref MenuBarUI.note-item-added} if there is
        a {docref MenuBarUI} associated with this object.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 9837 261 {text {purpose
        Method called by {docref MenuBar} when {docref MenuBar.clear}
        is called.
    }
    {notes
        This will call {docref MenuBarUI.note-items-cleared} if there
        is a {docref MenuBarUI} associated with this object.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/menu-bar.scurl" 5190 14 {unadvertised} "bool" 0 }
{OptionDocInfo "controls/logical-controls/menu-bar.scurl" 6884 "bool" 5 false 488 {text {purpose
        A boolean representing whether this {docref MenuBar} takes
        part in traversal-related activities.
    }
    {details
        If {ctext false}, the object should refuse to {ctext
        become-active} when requested. The object will thus be skipped
        during tab traversing, and manipulation of the object should
        not cause the key-focus or "activeness" to be taken from
        another traversor.

        The default is {ctext false}.
    }
  }}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 7965 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 9398 353 {text {purpose
        Method called by {docref MenuBar} when a {docref Graphic} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {notes
        This will call {docref MenuBarUI.note-item-removed} if there is
        a {docref MenuBarUI} associated with this object.
    }
  } 9 index:int "void"}
{FieldDocInfo "controls/logical-controls/menu-bar.scurl" 5149 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/menu-bar.scurl" 5226 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/menu-bar.scurl" 10487 282 {text {purpose
        The {docref Graphic} that will get the {docref PointerEvent}
        and the {docref KeyPress}s from the {docref MenuManager}.
    }
    {return-vals
        Returns the UI object associated with this control, if
        any, otherwise {ctext self}.
    }
  } "Graphic"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 8441 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 8100 2 "" 10 g:any, ... "#Visual"}
{AccessorDocInfo "controls/logical-controls/menu-bar.scurl" 7679 732 {text {purpose
        Determines if default values for the nonlocal options
        that affect the appearance are inherited from the look-and-feel
        or from the graphical parent.
    }
    {details
        If this property is {ctext true}, nonlocal options are
        inherited from {docref the-default-look-and-feel} and then
        from the graphical parent. Otherwise, they are inherited
        from the graphical parent directly.

        The options affected by this property are {docref
        control-color}, {docref control-content-background}, {docref
        Graphic.background}, {docref color}, {docref font-size},
        {docref font-weight}, {docref font-family}, and {docref
        font-style}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 9990 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 8196 2 "" 40 g:Graphic, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/menu-bar.scurl" 5777 366 {text {purpose
        Constructs a {docref MenuBar} object.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter use-look-and-feel?,
        Provides the initial value for {docref MenuBar.use-look-and-feel?}.
    }
    {parameter ..., 
        Each non-keyword argument must be a {docref MenuAction} or
        {docref SubMenu}.
    } 
  } 64 ui-object:#MenuBarUI = null, use-look-and-feel?:bool = true, ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 204051 674 {text {purpose 
        Paste {docref RecordGrid} selection from the clipboard.
    }
    {details 
        The default instance of this method takes the contents of
        the clipboard as tab delimited data and attempts to insert
        it using {docref RecordGridCell.update-data}.

        The base implementation of this command is enabled when
        the selection is empty and a cell has grid focus, or a
        selection exists and contains records only, 
        columns only, or a single region. If there is a selection,
        then the selection will act as a mask for the paste
        operation; unselected cells will not receive clipboard content.
    }
} "PasteCommand"$""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 204475 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 204383 2 "" "RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 205167 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 211190 14 {unadvertised} 96 target-records:{Array-of int}, target-columns:{Array-of int}, target-fragments:{Array-of String} "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 204293 162 {text {purpose
        Instantiate this object.
    }
    {parameter context,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 18 context:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/color-dropdown.scurl" 655 161 {text {purpose
        A {docref DropdownList} that holds a list of colors.
    }
    {for-example
        {example
            {ColorDropdown}
        }
    }
} "DropdownList"$""}
{MethodDocInfo "controls/logical-controls/color-dropdown.scurl" 4863 14 {unadvertised} 25 s:#String, width:Distance "Graphic"}
{MethodDocInfo "controls/logical-controls/color-dropdown.scurl" 4454 14 {unadvertised} 33 color-name:String, width:Distance "Graphic"}
{MethodDocInfo "controls/logical-controls/color-dropdown.scurl" 3519 2 "" 5 a:any "void"}
{MethodDocInfo "controls/logical-controls/color-dropdown.scurl" 4067 369 {text {purpose
        Attempt to set the value of this control to the {docref FillPattern}
        argument.
    }
    {parameter color,
        The {docref FillPattern} value to set.
    }
    {details
        If the {param color} is one supported by this control, then
        it will be set. If not, the value of the control will be unset.
    }
    {since 7.0}
  } 17 color:FillPattern "void"}
{MethodDocInfo "controls/logical-controls/color-dropdown.scurl" 1836 1103 {text {parameter no-color-value, String to use for value that indicates
        no color (i.e., use the default color). You can choose this string.
        If {ctext null} (the default), then it is not possible to choose
        no color from the {docref ColorDropdown}.
    }
    {parameter initial-color, Initial color value to use. If unspecified
        and {ctext no-color-value} is specified, then the initial value 
        will be {ctext no-color-value}. Otherwise, the initial value will
        be one of the colors in {ctext color-array}.
    }
    {parameter color-array, {docref StringArray} that specifies the color
        names to use in the {docref ColorDropdown}. If unspecified, then
        a default set of colors are used.
    }
    {parameter width, Width of the color dropdown.}
    {for-example
        The following example shows the use of {ctext color-array} and
        {ctext initial-color}:
        {example
            {ColorDropdown 
                initial-color="red", 
                color-array={StringArray "red", "white", "blue"}
            }
        }
    }
  } 132 no-color-value:#String = null, initial-color:#String = null, color-array:StringArray = color-combo-array, width:Distance = 50pt, ... ""}
{ClassDocInfo "controls/logical-controls/record-grid-ui.scurl" 926 834 {text {purpose 
        A superclass for {docref RecordGrid} user interface delegates.
    }
    {details
        Instances of this class are informed of specific changes at 
        the grid by the following methods.  
        {itemize
            {item
                {docref RecordGridUI.note-columns-collection-changed}
            }
            {item
                {docref RecordGridUI.note-column-changed}
            }
            {item
                {docref RecordGridUI.note-row-options-changed}
            }
            {item
                {docref RecordGridUI.note-record-set-event}
            }
            {item
                {docref RecordGridUI.note-current-record-changed}
            }
        }
        All other changes will be signaled by 
        {docref RecordGridUI.react-to-state-change}.
    }   
} "Frame, ControlUI, ActiveTraversalContainer"$"StandardRecordGridUI, SkinnableRecordGridUI"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 7377 190 {text {purpose
        Inform this object that one of its grid's 
        {ctext columns} has changed.
    }
    {details
        Called by {docref RecordGrid.note-column-changed}.
    }
  } 49 column:BaseRecordGridColumn, property-name:String "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 2844 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 15426 551 {text {purpose
        Returns whether the given {docref KeyPress} is typically used
        by the UI.
    }
    {details
        Custom {docref RecordGridCell}s and their editor UIs can attempt
        to use the information provided by this method to coordinate
        gesture interpretation with their {ctext RecordGridUI}.

        That a {docref KeyPress} is reserved by the UI doesn't mean that
        a cell or child UI cannot consume the event,
        but the resulting behavior may prove unintuitive to the user.
    }
    {since 7.0}
  } 11 ev:KeyPress "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 14673 2 "" 10 e:GuiEvent "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 11530 710 {text {purpose
        Set the currently focused {docref RecordGridCell}.
    }   
    {details
        Calling this method will cause the methods
        {docref RecordGridCell.note-grid-focus-in} and 
        {docref RecordGridCell.note-grid-focus-out}
        to be called on old and new values of this property.
    }
    {override
        Implementations of this method should call the super 
        implementations to ensure that the appropriate notifications
        occur.
        
        Implementations of this method will typically wish to adjust
        the current-record and selection of the grid when a cell
        becomes focused as well as ensure that the focused cell is visible.
    }
  } 19 rgc:#RecordGridCell "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 13588 2 "" "Control"}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 14549 "int" 0  2 ""}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 1487 "any" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 7776 208 {text {purpose
        Inform this object that one of its grid's 
        {ctext RecordGridRowOption}s has changed.
    }
    {details
        Called by {docref RecordGrid.note-row-options-changed}.
    }
  } 46 row:RecordGridRowOptions, property-name:String "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 7110 116 {text {purpose
        Inform this object that its grid's 
        {ctext columns} collection has changed.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 2770 694 {text {purpose
        Whether this UI should attempt to move the {ctext grid-focus}
        within the same column when the current record changes.
    }
    {details
        If false, then this UI should set grid focus to {ctext null}
        when the current record changes.

        In some cases, navigation may be performed as a number of
        steps in quick succession; in particular, a record change followed
        by a column change or vice versa. In some of those cases, it
        may be advantageous to avoid giving transient {ctext grid-focus} to
        intermediate cells. This can be accomplished by setting this
        property to {ctext false}.
    }
    {since 7.0}
  } "bool"}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 1545 "any" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 3011 74 {text {purpose Implementation of {docref RecordGrid.grid-objects-at}.}
  } 22 x:Distance, y:Distance "(cell:#RecordGridCell,
                                  record-index:int,
                                  column-index:int
                                 )"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 6921 122 {text {purpose 
        Inform this object that its grid's 
        {ctext current-record} property has changed.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 6664 190 {text {purpose  
        Inform this object of a change to the
        data contained by its control.
    }
    {details
        Called by {docref RecordGrid.note-record-set-event}
    }
  } 17 ev:RecordSetEvent "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 13268 2 "" 30 p:{proc-type {OptionKey}:void} "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 1808 125 {text {purpose 
        The control this object is displaying with appropriate
        type of {docref RecordGrid}.
    }
  } "RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 8681 351 {text {purpose
        Informs this object that the {docref RecordGrid.filter}
        property is about to change.
    }
    {details
        It is called by {ctext RecordGrid.filter}. 

        By default this method does nothing. Subclasses of {docref
        RecordGridUI} could override it to take an appropriate action.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 14119 2 "" 30 v:Visual, forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 14499 2 "" 0  "void"}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 14300 "char" 0  2 ""}
{FieldDocInfo "controls/logical-controls/record-grid-ui.scurl" 10737 472 {text {purpose The currently focused {docref RecordGridCell}.}   
    {details
        Note that this property is different than the
        {docref FocusManager}s notion of {ctext key-focus}.
        It represents the cell currently "active". 
        
        Depending on if and how the cell is edited, the
        cell with grid focus may also request the key focus 
        for itself or one of its contained graphics, but this
        is not a requirement.
    }
  } "#RecordGridCell" 4 null}
{FieldDocInfo "controls/logical-controls/record-grid-ui.scurl" 12828 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 10037 801 {text {purpose
        Cause the {docref-abbr RecordGridUI.grid-focus} cell
        to become visible if it has been scrolled out of view.
    }
    {usage
        In general, this method should only be called with the
        cell with {docref RecordGridUI.grid-focus} immediately
        before a {docref KeyEvent} is handled in a {docref Control}
        or {docref ControlUI} within that cell. This will ensure
        that the cell and {docref Control} are visible
        before any editing takes place.
    }
    {notes
        This method should not be called for general navigation
        purposes; instead see {docref RecordGridCell.become-active},
        {docref RecordGridUI.set-grid-focus},
        {docref RecordSetDisplay.request-current-record-change}, etc.
    }
    {since 7.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 16818 185 {text {purpose Return table row information for visual testing purposes.}
    {return-vals
        The total number of rows and the range of visible rows in the
        table.
    }
  } 0  "(full-size:int, min-visible-row:int, max-visible-row:int)"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 8260 290 {text {purpose
||--        Inform this object that either {docref RecordGrid.frozen-rows}
||--        or {docref RecordGrid.frozen-columns} has changed.
        Inform this object that either {ctext RecordGrid.frozen-rows}
        or {ctext RecordGrid.frozen-columns} has changed.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 12873 2 "" 30 item:OptionItem, removed?:bool "void"}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 1432 "FillPattern" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 16373 853 {text {purpose
        Attempt to resize a column or range of columns by a given amount.
    }
    {parameter start-index,
        The index of the first {docref RecordGridColumn} in the resizing set.
    }
    {parameter end-index,
        The index of the final {docref RecordGridColumn} in the resizing set.
        This may be the same as the {param start-index}
    }
    {parameter delta,
        The desired change in size of the column range.
    }
    {details
        Calling this method may set the {ctext width} option on the
        {docref RecordGridColumn}s in the resizing set to an absolute value.

        To resize a single column, it is generally simpler to just set
        that column's {ctext width} option. This method allows a broader
        width change to be distributed as the UI deems appropriate.
    }
    {since 7.0}
  } 46 start-index:int, end-index:int, delta:Distance "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 9013 269 {text {purpose
        Attempt to make a given row or column, or both, visible
        in the display.
    }
    {parameter row-index,
        the index of the row to be revealed.
    }
    {parameter col-index,
        the index of the column to be revealed.
    }
  } 41 row-index:int = -1, column-index:int = -1 "void"}
{OptionDocInfo "controls/logical-controls/record-grid-ui.scurl" 1601 "Background" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 4254 889 {text {purpose
        Returns the {docref RecordGridCell} for the given {docref Record}
        and {docref RecordGridColumn}.
    }
    {details
        While this method may be used to access an individual
        {docref RecordGridCell}, it is generally better to avoid doing
        so whenever possible. Cells are typically volitile and may
        undergo frequent repositioning or disconnection and reconnection
        to data sources. Because of this, it is potentially unsafe to
        hold onto {docref RecordGridCell} references past the immediate
        operation, or to cause data sources or layout to change while
        cells are being accessed directly through this method.
        
        For the same reasons, is also generally better to avoid setting
        options directly on {docref RecordGridCell}s that you might obtain
        through this method.
    }
  } 38 record:Record, column:RecordGridColumn "#RecordGridCell"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 14418 2 "" 6 c:char "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 5347 873 {text {purpose
        Returns the {docref RecordGridCell} for the given record index
        and column index.
    }
    {details
        While this method may be used to access an individual
        {docref RecordGridCell}, it is generally better to avoid doing
        so whenever possible. Cells are typically volitile and may
        undergo frequent repositioning or disconnection and reconnection
        to data sources. Because of this, it is potentially unsafe to
        hold onto {docref RecordGridCell} references past the immediate
        operation, or to cause data sources or layout to change while
        cells are being accessed directly through this method.
        
        For the same reasons, is also generally better to avoid setting
        options directly on {docref RecordGridCell}s that you might obtain
        through this method.
    }
  } 34 record-index:int, column-index:int "#RecordGridCell"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 6287 714 {text {purpose Create the default context menu.}
    {details 
        This method is called by the {docref RecordGrid}s
        default {docref ContextMenuEvent} handler to provide 
        an appropriate context menu for the location 
        {param x}, {param y}. 
        
        Applications may override this menu by specifying a dynamic handler
        to the {docref ContextMenuEvent} on the control, via the
        {docref context-popup} procedure, or otherwise.
    }
    {override 
        The default implementation returns {ctext null}, specifying 
        that no context menu will be created. Override this method to 
        create a default context menu for this {ctext RecordGridUI}. 
    }
  } 22 x:Distance, y:Distance "#MenuPane"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 2014 105 {text {purpose
        Whether this UI is in the middle of a selection gesture.
    }
    {since 7.0}
  } "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 1171 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/tab-container.scurl" 1034 942 {text {purpose 
        A control consisting of a number of "panes" with affordances to 
        select and show one at a time, usually using tab-like selectors
        along one edge. 
    }
    {notes
        The user interface delegate for this class is {docref
        TabContainerUI}. {ctext TabContainerUI} is an abstract
        class. Subclasses implement a particular UI.

        This object can be styled by writing style rules for "TabContainer",
        "TabContainer/panes", "TabContainer/selector-box",
        "TabContainer/selector" and "TabContainer/close-button". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-tab-controls"
                     },
        Skinning TabControls} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlTab} visual test
        type.  See {docref SingleTabControl} for details.
    }
} "SingleTabControl"$""}
{AccessorDocInfo "controls/logical-controls/tab-container.scurl" 4995 14 {unadvertised} "TabContainerUI"}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 6649 586 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter pane, {ctext TabPane} to be shown.}
    {details 
        This method will also call {docref TabContainer.ensure-button-visible}
        to make sure the button for the associated pane is in view.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was shown successfully, otherwise
        {ctext false}.
    }
    {override 
        This method is not typically overridden.
        Consider overriding the setter 
        {docref SingleTabControl.current-pane-index} instead.
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 7671 2 "" 29 action:String, args:FastArray "any"}
{OptionDocInfo "controls/logical-controls/tab-container.scurl" 3114 "#SkinSpec" 4 null 381 {text {purpose
        A specification used by this control to determine the
        visual appearance of the box containing its {docref TabPane}s.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/tab-container.scurl" 2440 "TabPlacement" 16 TabPlacement.top 205 {text {purpose 
        Determines the location of the tab selectors relative
        to the content area in a {docref TabContainer}.
    }   
    {since 4.0 This was a nonlocal option in the 3.0 API.}
  }}
{AccessorDocInfo "controls/logical-controls/tab-container.scurl" 3167 2 "" "String"}
{OptionDocInfo "controls/logical-controls/tab-container.scurl" 2015 "#{proc-type 
                                              {TabContainer}:void
                                          }" 4 null 899 {text {purpose 
        Add a standard close button to the control and specify the action
        to be taken when it is pressed.
    }
    {details
        The "tab close" button is a small button that
        typically appears in the corner of the area where the
        tab-buttons are displayed.  
        
        If {ctext null} (default), no close button will appear.
        
        Running this proc is the only action taken when this button
        is pressed. 
    }
    {for-example
        An typical value for this proc might be:
        {code
            {proc {tc:TabContainer}:void

                || Perform application logic associated  
                || with "closing" tab here.

                || Remove tab from control.
                {if-non-null pane = tc.current-pane  then
                    {tc.remove-pane pane}
                }
            }
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 7423 519 {text {purpose
        Ensure that the tab-button associated with {param pane}
        is currently visible.
    }
    {parameter
        pane, {ctext TabPane}. The pane for which the associated
        tab-button should be made visible.  An error will be thrown 
        if {param pane} is not present in the container.
    }
    {details
        This method is useful for {ctext TabStyle.scroll} or
        any other {ctext TabStyle} that allows the tab-buttons
        to be scrolled or otherwise obscured.
    }
  } 12 pane:TabPane "void"}
{OptionDocInfo "controls/logical-controls/tab-container.scurl" 2624 "TabStyle" 15 TabStyle.scroll 66 {text {purpose 
        Format for displaying selectors.
    }
  }}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 4762 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 5792 682 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter 
        index, The position of the pane to be made {ctext current-pane}.
        The index of the first pane is 0.
    }
    {details 
        This method will also call {docref TabContainer.ensure-button-visible}
        to make sure the button for the associated pane is in view.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and
        shown successfully, otherwise {ctext false}.
    }
    {override 
        This method is not typically overridden.
        Consider overriding the setter 
        {docref SingleTabControl.current-pane-index} instead.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/tab-container.scurl" 4516 1159 {text {purpose
        Create a {ctext TabContainer}.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter ..., 
        Option settings, event handlers, or {docref TabPane}s to be added.
    }
    {for-example
        A {ctext TabContainer} may be created declaratively
        along with the {ctext TabPane}s it contains.
        {example
            {let list:ListBox = {ListBox "A", "B", "C"}}
            {let f:Frame = {Frame "empty"}}
            {TabContainer 
                {TabPane 
                    label = "Row", 
                    {HBox spacing = 4pt, "A", "B", "C"}
                },
                {TabPane 
                    label = "Column",
                    {VBox spacing = 4pt, "A", "B", "C"}
                },
                {TabPane 
                    label = "List", 
                    first-active-control = list, 
                    {VBox "Choose One", list}
                },
                {on CurrentPaneChanged at tc:TabContainer do
                    {f.add replace? = true, {format "%v", tc.current-pane}}
                }
            }
            {value f}
        }
    }
  } 37 ui-object:#TabContainerUI = null, ... ""}
{ProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 21946 14 {unadvertised} 57 style-num:int, styles:{Array-of TextStyle}, max-limit:int "int"}
{ClassDocInfo "controls/logical-controls/group-box-ui.scurl" 1129 14 {unadvertised} "GroupBoxUI"$""}
{MethodDocInfo "controls/logical-controls/group-box-ui.scurl" 1197 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 43960 14 {unadvertised} "RadioButtonUI"$""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44152 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44523 2 "" 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44408 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44350 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44104 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44466 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44301 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44252 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44202 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 44034 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 83 14 {unadvertised} ""$""}
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 214 14 {unadvertised} "Distance" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 124 14 {unadvertised} "int" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 166 14 {unadvertised} "Distance" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 263 14 {unadvertised} "Distance" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringGraphic.scurl" 315 14 {unadvertised} 63 index:int, ascent:Distance, descent:Distance, baseline:Distance ""}
{ClassDocInfo "controls/logical-controls/slider.scurl" 6509 6417 {text {purpose
        A control that lets a user graphically select from a range of values
        by moving a slider.
    }
    {details
        A {ctext Slider control}, also known as a trackbar, is a control 
        containing a slider and optional tick marks. When the user moves 
        the slider, using either the mouse or the direction keys, the control
        sends notification messages to indicate the change.

        {ctext Slider} controls are useful when you want the user to select
        a discrete value or a set of consecutive values in a range. For 
        example, you might use a slider control to allow the user to set
        the repeat rate of the keyboard by moving the slider to a given
        tick mark.

        The {docref Slider.orientation} determines the {ctext Slider}
        orientation. The {docref Slider.min-value} and 
        {docref Slider.max-value} determines the minimum and the maximum
        position of the {ctext Slider}. The {docref Slider.value} represents 
        the current position of the {ctext Slider}.

        The number of values between the tick marks is controlled with the 
        {docref Slider.major-tick-spacing} and 
        {docref Slider.minor-tick-spacing}.

        The {docref Domain} associated with the {ctext Slider}
        defines several parameters for the control:
        {itemize
            {item
                {docref Domain.type} defines the type of data handled
                by the control.
            }
            {item
                {docref Domain.default-value} defines the initial value
                of the control.
            }
            {item
                {docref Domain.allowable-values} defines the set of
                values the control can present to the user. If the
                values specified by the {ctext Domain} are enumerable,
                {docref Slider.allowable-values} is a sorted array
                containing the specified values.
            }
            {item
                {docref Domain.max-allowable} and {docref 
                Domain.min-allowable} define the upper and lower
                limits on the control value. A {ctext Domain} used 
                in a {ctext Slider} must specify maximum and minimum
                values.
            }
        }

        By default, the domain used is the integer domain with a minimum
        value of 0 and a maximum value of 100.
    }
    {expected-events
        {event ValueChanged, 
            Fired when a user changes the value of the {ctext Slider} or
            {docref Slider.set-value-with-events} is called to change the
            value of the {ctext Slider}.
        }
        {event ValueFinished, 
            Fired after the {docref ValueChanged} event is fired and 
            {docref Slider.value-is-adjusting?} is {ctext false}.
            It is also fired when {docref Slider.set-value-with-events} 
            is called, whether or not the value of the control was changed.
        }
    }
    {visual-testing
        This class implements the {ctext CurlSlider} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Drag
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell
                    Sets the value of the control.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DragLine
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param lines}:{docref String}
                }
                {cell
                    Drags the value of the slider by {param lines} lines.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DragPage
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param pages}:{docref String}
                }
                {cell
                    Drags the value of the slider by {param pages} pages.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:
        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param max}:{docref String}
                }
                {cell The maximum value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param min}:{docref String}
                }
                {cell The minimum value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param orientation}:{docref String}
                    (must be "VSCROLL" or "HSCROLL")
                }
                {cell The orientation of the control.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "Slider",
        "Slider/panel" and "Slider/knob". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
} "{MultiUIValueControlFrame-of any}"$""}
{OptionDocInfo "controls/logical-controls/slider.scurl" 9509 "Orientation" 22 Orientation.horizontal 369 {text {purpose
        Control the orientation of a {docref Slider}.
    }
    {notes
        The default {docref Orientation} is {code Orientation.horizontal}.

        The subclasses of {docref SliderUI} should override 
        {docref ControlUI.react-to-state-change} to reflect the change in 
        this value by drawing the {ctext Slider} accordingly.
    }
  }}
{OptionDocInfo "controls/logical-controls/slider.scurl" 11015 "#{HashTable-of any, Graphic}" 4 null 618 {text {purpose
        Indicates the labels to be drawn at a given value
        in the {docref Slider}.
    }
    {details
        If non-{ctext null}, then for each value in this table the
        corresponding {docref Graphic} will be used as the label
        for that value.

        If {ctext null}, then for each major tick position a
        label will be automatically generated.

        By default this value is null.
    }
    {notes
        If you change the entries of this hash table call 
        {docref Slider.note-labels-changed} to ensure that
        the changes in this table are shown.
    }
  }}
{FieldDocInfo "controls/logical-controls/slider.scurl" 7045 14 {unadvertised} "bool" 0 }
{OptionDocInfo "controls/logical-controls/slider.scurl" 13647 "bool" 5 false 271 {text {purpose 
        If {ctext true}, the end user can manually set a range in the 
        {docref Slider}.
    }
    {notes
        To manually select a range of values the end user must press the 
        "Shift" key and use the mouse to select the range.
    }
  }}
{OptionDocInfo "controls/logical-controls/slider.scurl" 11416 "bool" 4 true 94 {text {purpose
        Indicates whether the ticks are drawn in the {docref Slider}.
    }
  }}
{OptionDocInfo "controls/logical-controls/slider.scurl" 12815 "any" 4 null 1300 {text {purpose
        Indicates how the value of the {docref Slider} is formatted
        to a {docref String}.
    }
    {details
        This value should be either 
        {itemize
            {item
                a {ctext String} appropriate for use
                with the {docref format} macro.
            }
            {item
                a proc of type 
                {ctext {proc {data:any, s:Slider}:String}},
                where {param data} is {docref Slider.value}, and
                {param s} represents the source {ctext Slider} control.
                Note that the {param s} parameter provides access to 
                the source {ctext Slider} control and hence its associated
                {docref Slider.domain} and thus can be very useful 
                for context dependent formatting.
            }
            {item
                {ctext null} (default). 
            }
        }
        
        If null, the {docref Domain.format} method will be used for 
        formatting, where the {docref Domain} is the domain 
        associated with this {ctext Slider}.

        This property, if non-{ctext null}, is used by 
        {docref Slider.get-formatted-data} method to convert
        a {ctext Slider} value to a formatted {docref String}.
    }
  }}
{MethodDocInfo "controls/logical-controls/slider.scurl" 49812 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 29878 14 {unadvertised} "bool"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6655 14 {unadvertised} "any" 1 0}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 23421 893 {text {purpose
        The domain associated with the {docref Slider}.
    }
    {notes
        The type of {docref Slider.value} depends on the
        type of the {docref Domain}. The {ctext Domain} describes the 
        initial value, the minimum value and the maximum value of the 
        {ctext Slider}.

        One cannot change the minimum and the maximum value for a domain. 
        In order to change the range of values of a {docref Slider} 
        you must set a new {ctext Domain} with the new minimum and the 
        new maximum allowable values for the domain.

        Changing the domain will set {docref Slider.has-range?} to
        false and will change the {docref Slider.minor-tick-spacing},
        {docref Slider.major-tick-spacing}, {docref Slider.unitsize}
        and {docref Slider.blocksize} to their nearest value in
        the new {ctext Domain}.
    }
  } "Domain"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 38341 349 {text {purpose
        Sets the starting and ending positions for the current 
        range of values in the {docref Slider} control.
    }
    {details
        Calling this method sets the {docref Slider.has-range?}
        to {ctext true} if the {param start} and {param end} are not
        equal, else it will set it to {ctext false}.
    }
  } 18 start:any, end:any "void"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 7089 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 19525 1081 {text {purpose
        Specifies the block scrolling distance for a {docref Slider}.
    }
    {details
        If not explicitly set, it defaults to
        {docref Slider.major-tick-spacing} if
        {ctext Slider.major-tick-spacing} is greater than zero. If
        {ctext Slider.major-tick-spacing} is less than equal to zero, it
        will default to {docref Slider.unitsize}.

        If the value you set is not a number of some kind, an 
        {docref IllegalArgumentException} will be thrown.

        If the value you set is less than or equal to zero, It will be treated
        as unsetting the block size value. By default this value is unset.

        If {docref Slider.allowable-values} is null the value you set is 
        converted to a value that is of the type of {docref Slider.domain} 
        else it is converted to an integer.
    }
    {usage
        The default implementation of {docref SliderUI} increments or 
        decrements {docref Slider.value} by blocksize when the
        {docref Slider} control gets a pgup or pgdn key press.
    }
  } "any"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 7009 14 {unadvertised} "any" 0 }
{MethodDocInfo "controls/logical-controls/slider.scurl" 39196 2 "" 13 e:DragStarted "void"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 37863 211 {text {purpose
        Retrieves the starting and ending positions of the current 
        range of values in the {docref Slider} control.
    }
    {notes
        See also: {docref Slider.has-range?}.
    }
  } 0  "(start:any, end:any)"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6896 14 {unadvertised} "bool" 0 }
{FieldDocInfo "controls/logical-controls/slider.scurl" 6590 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/slider.scurl" 16430 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 35645 201 {text {purpose
        Indicates whether the {docref Slider} has a value.
    }
    {notes
        Since a {docref Slider} always has a value, the return value
        is always {ctext true}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 45024 14 {unadvertised} 48 times:int, near?:bool, fire-events?:bool = false "void"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 37470 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 37396 498 {text {purpose
        Indicates whether the {docref Slider} control has a valid
        range of values.
    }
    {notes
        If {ctext true}, a subclass of {docref SliderUI} should
        call {docref Slider.get-range} to get the range and reflect
        it via the user interface.

        The subclasses of {ctext SliderUI} should override 
        {docref ControlUI.react-to-visual-change} to reflect the change in 
        this value by drawing the {ctext Slider} accordingly.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 49246 2 "" 11 name:String "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 16341 767 {text {purpose
        Controls the spacing of the major ticks of a {docref Slider}.
    }
    {details
        If you set it to a value that is not a number of some kind, 
        an {docref IllegalArgumentException} will be thrown.

        If {docref Slider.allowable-values} is null then the value you
        set is converted to a value that is of the type of {docref
        Slider.domain} else it is converted to an integer.
    }
    {notes
        Subclasses of {docref SliderUI} should use this value to
        draw the major ticks of the control.

        The subclasses of {docref SliderUI} should override 
        {docref ControlUI.react-to-state-change} to reflect the change in 
        this value by drawing the {ctext Slider} accordingly.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 29130 980 {text {purpose
        The value of the {docref Slider}.
    }
    {notes
        The type of value of the {ctext Slider} depends on the
        type of the {docref Domain}. 
    }
    {details
        The value that is set is adjusted before setting it to the 
        {ctext Slider}.
        
        If {docref Slider.snap-to-ticks?} is true then the value that
        is set will be adjusted to a value that corresponds to the
        nearest tick, if any, in the {ctext Slider} control before it
        is set to the {ctext Slider}.

        It the value that is set is less than the {docref Slider.min-value}
        then the value of the {docref Slider} will be set to
        {ctext Slider.min-value}. Similarly, if the value that is set is
        greater than the {docref Slider.max-value} then the
        value of the {ctext Slider} will be set to 
        {ctext Slider.max-value}.
    }
    {notes
        See also: {docref Slider.set-value-with-events}.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 34902 577 {text {purpose 
        Simulates a user setting the value interactively.
    }
    {details
        Sets the value of the {ctext Slider}, then fires a {docref
        ValueChanged} event, if the value actually changed. 

        A {docref ValueFinished} event will then be fired if the
        {docref Slider.value-is-adjusting?} is {ctext false}.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref ValueFinished}
        events to be fired then use the {docref Slider.value} setter
        directly to set the value of the {ctext Slider}.
    }
  } 7 val:any "void"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 43325 14 {unadvertised} 48 times:int, near?:bool, fire-events?:bool = false "void"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 49154 2 "" "#String"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6624 14 {unadvertised} "any" 1 0}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6971 14 {unadvertised} "any" 0 }
{FieldDocInfo "controls/logical-controls/slider.scurl" 6699 14 {unadvertised} "any" 1 0}
{MethodDocInfo "controls/logical-controls/slider.scurl" 8177 904 {text {purpose
        Creates a {ctext Slider} control.
    }
    {parameter domain,
        {docref Domain} used by the {ctext Slider} control.

        Note that one must provide a min-allowable and max-allowable
        for the {ctext Domain} unless allowable-values are provided
        for it.
    }
     {parameter value,
        The control value.

        If not specified, it defaults to the {ctext Slider}'s
        domain {docref Domain.default-value}.

        See Also {docref Slider.value}.
    }
    {parameter major-tick-spacing,
        Provides the initial value for {docref Slider.major-tick-spacing}.
    }
    {parameter minor-tick-spacing,
        Provides the initial value for {docref Slider.minor-tick-spacing}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 350 domain:Domain = {StandardIntDomain
                                  default-value = 0,
                                  min-allowable = 0,
                                  max-allowable = 100
                              }, value:any = domain.default-value, major-tick-spacing:any = 10, minor-tick-spacing:any = 5, ui-object:#SliderUI = null, ... ""}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6779 14 {unadvertised} "any" 2 -1}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 29193 2 "" "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 43774 14 {unadvertised} 48 times:int, near?:bool, fire-events?:bool = false "void"}
{OptionDocInfo "controls/logical-controls/slider.scurl" 14096 "#SkinSpec" 4 null 350 {text {purpose
        A specification used by this control to determine the
        visual appearance of its track.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 26548 843 {text {purpose
        The list of allowable values for the {ctext Slider}.
    }
    {return-vals
        If the {docref Domain.allowable-values} are enumerable, then
        the returned array is a list of these elements sorted in
        ascending order. In this case, if {docref Domain.min-allowable}
        or {docref Domain.max-allowable} are also specified, then the
        returned array will include only the values between these
        bounds, inclusive.

        If the {docref Domain.allowable-values} is not enumerable, then
        the return value is {ctext null}.
    }
    {notes
        The items in the array are sorted using the {docref Domain}'s 
        comparison proc.

        If non-{ctext null} then the {docref Slider.minor-tick-spacing}
        and {docref Slider.major-tick-spacing} must be integers.
    }
  } "#{Array-of any}"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 43181 1064 {text {purpose
        Simulates a user adjusting the value of the {docref Slider}.
    }
    {parameter block-units,
        the multiple of the block adjusting size to use.
    }
    {details
        The {ctext Slider}'s value is changed by adding
        {param block-units} times {docref Slider.blocksize} to it.
        If the result is outside the range of allowed values for
        the {docref Slider}, as dictated by the
        {docref Slider.min-value} and {docref Slider.max-value}
        the result is adjusted to be the nearest allowed value.

        It adjusts the value of the {ctext Slider}, then fires a 
        {docref ValueChanged} event, if the value actually changed. 
        A {docref ValueFinished} event will then be fired if the
        {docref Slider.value-is-adjusting?} is {ctext false}.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref ValueFinished}
        events to be fired then use the {docref Slider.adjust-by-blocks} 
        method directly to adjust the value of the {ctext Slider}.
    }
  } 14 num-blocks:int "void"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 21541 1106 {text {purpose
        Specifies the unit scrolling distance for a {docref Slider}.
    }
    {details
        If not explicitly set, it defaults to
        {docref Slider.minor-tick-spacing} if
        {ctext Slider.minor-tick-spacing} is greater than zero, else if
        {docref Slider.major-tick-spacing} is greater than zero it is
        {ctext Slider.major-tick-spacing} else it is 1.

        If the value you set is not a number of some kind, an 
        {docref IllegalArgumentException} will be thrown.

        If the value you set is less than or equal to zero, It will be treated
        as unsetting the unit size value. By default this value is unset.

        If {docref Slider.allowable-values} is null the value you set is 
        converted to a value that is of the type of {docref Slider.domain} 
        else it is converted to an integer.
    }
    {usage
        The default implementation of {docref SliderUI} increments or 
        decrements {docref Slider.value} by unitsize when the
        {docref Slider} control gets a left/right/up/down arrow key
        press.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 39990 673 {text {purpose
        Change the value of a {docref Slider} by a multiple of the
        {docref Slider.unitsize}.
    }
    {parameter num-units,
        the multiple of the unit adjusting size to use.
    }
    {details
        The {ctext Slider}'s value is changed by adding
        {param num-units} times {docref Slider.unitsize} to it.
        If the result is outside the range of allowed values for
        the {docref Slider}, as dictated by the
        {docref Slider.min-value} and {docref Slider.max-value}
        the result is adjusted to be the nearest allowed value.
    }
    {notes
        See also: {docref Slider.adjust-by-units-with-events}.
    }
  } 13 num-units:int "void"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6929 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/slider.scurl" 19884 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 17771 762 {text {purpose
        Controls the spacing of the minor ticks of a {docref Slider}.
    }
    {details
        If you set it to a value that is not a number of some kind, 
        an {docref IllegalArgumentException} will be thrown.

        If {docref Slider.allowable-values} is null the value you
        set is converted to a value that is of the type of {docref
        Slider.domain} else it is converted to an integer.
    }
    {notes
        Subclasses of {docref SliderUI} should use this value to
        draw the minor ticks of the control.

        The subclasses of {docref SliderUI} should override 
        {docref ControlUI.react-to-state-change} to reflect the change in 
        this value by drawing the {ctext Slider} accordingly.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 27454 254 {text {purpose
        Lower limit of the {docref Slider}.
    }
    {notes
        If {docref Slider.allowable-values} is non-{ctext null}
        then it is the first element of this array else it is the
        {docref Domain.min-allowable}.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 27922 255 {text {purpose
        Upper limit of the {docref Slider}.
    }
    {notes
        If {docref Slider.allowable-values} is non-{ctext null} then
        it is the last element of this array else it is 
        the {docref Domain.max-allowable}. 
    }
  } "any"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6814 14 {unadvertised} "#Domain" 0 }
{AccessorDocInfo "controls/logical-controls/slider.scurl" 26646 14 {unadvertised} "#{Iterator-of any}"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6846 14 {unadvertised} "#{Array-of any}" 0 }
{OptionDocInfo "controls/logical-controls/slider.scurl" 11225 "bool" 4 true 95 {text {purpose
        Indicates whether the labels are drawn in the {docref Slider}.
    }
  }}
{MethodDocInfo "controls/logical-controls/slider.scurl" 30128 14 {unadvertised} 9 value:any "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 38996 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 15115 543 {text {purpose
        Indicates whether the knob is being dragged to change the value.
    }
    {details
        By default this is {ctext false}.
        
        If {ctext true} then the {docref ValueFinished} event is not
        fired until this becomes {docref false} again.
        
        See {docref Slider.set-value-with-events}.
    }
    {notes
        The default implementation of {docref SliderUI} sets this
        property to {ctext true} when the knob drag begins, and to
        {ctext false} when the drag ends.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 23500 2 "" "Domain"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 36376 657 {text {purpose
        Formats data representing a value for the {docref Slider}
        as a {docref String}.
    }
    {details 
        The formatting used will be the {docref Slider.format-spec}
        if it is {ctext non-null}, otherwise the method 
        {docref Domain.format} for the {ctext Slider}'s domain will
        be used.

        UI objects can call this method to get the {docref String} 
        corresponding to a value for the {ctext Slider} that they can 
        then display.
    }
    {return-vals
        A formatted {ctext String} representing the {param data}.
    }
    {override
        Not typically overridden.  
    }
  } 8 data:any "String"}
{OptionDocInfo "controls/logical-controls/slider.scurl" 10296 "bool" 5 false 666 {text {purpose
        Indicates whether the knob, and the data value it represents,
        should resolve to the tick mark closest to where the user
        positioned the knob.
    }
    {details
        Setting {docref Slider.snap-to-ticks?} to {ctext true} will
        have no effect if {docref Slider.major-tick-spacing} and
        {docref Slider.minor-tick-spacing} are both non positive.

        By default this is {ctext false}.
    }
    {notes
        The subclasses of {docref SliderUI} should override 
        {docref ControlUI.react-to-visual-change} to reflect the change in 
        this value by drawing the {ctext Slider} accordingly.
    }
  }}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 21978 2 "" "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 41165 1057 {text {purpose
        Simulates a user adjusting the value of the {docref Slider}.
    }
    {parameter num-units,
        the multiple of the unit adjusting size to use.
    }
    {details
        The {ctext Slider}'s value is changed by adding
        {param num-units} times {docref Slider.unitsize} to it.
        If the result is outside the range of allowed values for
        the {docref Slider}, as dictated by the
        {docref Slider.min-value} and {docref Slider.max-value}
        the result is adjusted to be the nearest allowed value.

        It adjusts the value of the {ctext Slider}, then fires a 
        {docref ValueChanged} event, if the value actually changed. 
        A {docref ValueFinished} event will then be fired if the
        {docref Slider.value-is-adjusting?} is {ctext false}.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref ValueFinished}
        events to be fired then use the {docref Slider.adjust-by-units} 
        method directly to adjust the value of the {ctext Slider}.
    }
  } 13 num-units:int "void"}
{OptionDocInfo "controls/logical-controls/slider.scurl" 14509 "#SkinSpec" 4 null 349 {text {purpose
        A specification used by this control to determine the
        visual appearance of its knob.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 17860 2 "" "any"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 33483 391 {text {purpose
        Sets the value back to initial value of the {docref Slider}.
    }
    {details
        The initial value of the {docref Slider} is
        {docref Domain.default-value}.
    }
    {notes
        Note that the {ctext Slider.has-value?} is always {ctext true}.
        This method simply sets back the value of the {ctext Slider}
        to its initial value.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/slider.scurl" 6743 14 {unadvertised} "any" 2 -1}
{OptionDocInfo "controls/logical-controls/slider.scurl" 13279 "bool" 4 true 106 {text {purpose
        Should the {docref Slider} show a visual indication
        of key focus?
    }
  }}
{AccessorDocInfo "controls/logical-controls/slider.scurl" 15207 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 41995 679 {text {purpose
        Change the value of a {docref Slider} by a multiple of the
        {docref Slider.blocksize}.
    }
    {parameter num-blocks,
        the multiple of the block adjusting size to use.
    }
    {details
        The {ctext Slider}'s value is changed by adding
        {param num-blocks} times {docref Slider.blocksize} to it.
        If the result is outside the range of allowed values for
        the {docref Slider}, as dictated by the
        {docref Slider.min-value} and {docref Slider.max-value}
        the result is adjusted to be the nearest allowed value.
    }
    {notes
        See also: {docref Slider.adjust-by-blocks-with-events}.
    }
  } 14 num-blocks:int "void"}
{MethodDocInfo "controls/logical-controls/slider.scurl" 34162 573 {text {purpose
        Notifies the UI that the contents of {docref Slider.labels} have
        changed.
    }
    {details
        You must call this method whenever you directly modify the 
        {docref Slider.labels} table. It will ensure that the changes to
        the labels are properly reflected.
    }
    {notes
        This method calls {docref SliderUI.note-labels-changed} to inform
        the UI that it should regenerate its labels.
        
        You do not have to call this method when you change the 
        {ctext Slider.labels} itself.
    }
  } 0  "void"}
{ClassDocInfo "controls/logical-controls/multi-accordion.scurl" 1037 945 {text {purpose
        A control consisting of a number of "panes" with
        affordances to select and show one or more of the
        panes at a time. The selectors, to select a 
        {docref TabPane}, are arranged horizontally or 
        vertically.
    }
    {notes
        The user interface delegate for this class is {docref
        MultiTabAccordionUI}. {ctext MultiTabAccordionUI} is an abstract
        class. Subclasses implement a particular UI.

        This object can be styled by writing style rules for
        "MultiTabAccordion" ,"MultiTabAccordion/accordion" and
        "MultiTabAccordion/selector". See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-tab-controls"
        }, Skinning Tab Controls} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlMultiTab} visual test
        type.  See {docref MultiTabControl} for details.
    }
} "MultiTabControl"$""}
{OptionDocInfo "controls/logical-controls/multi-accordion.scurl" 1206 "Orientation" 20 Orientation.vertical 85 {text {purpose 
        Determines the orientation of the tab selectors.
    }   
  }}
{MethodDocInfo "controls/logical-controls/multi-accordion.scurl" 2773 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/multi-accordion.scurl" 1320 2 "" "String"}
{MethodDocInfo "controls/logical-controls/multi-accordion.scurl" 2523 1008 {text {purpose
        Create an {ctext MultiTabAccordion}.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter ..., 
        Option settings, event handlers, or {docref TabPane}s to be added.
    }
    {for-example
        A {ctext MultiTabAccordion} may be created declaratively
        along with the {ctext TabPane}s it contains.
        {example
            {let list:ListBox = {ListBox "A", "B", "C"}}
            {let f:Frame = {Frame "empty"}}
            {MultiTabAccordion
                {TabPane 
                    label="Row", 
                    {HBox spacing=4pt, "A", "B", "C"}
                },
                {TabPane 
                    label="Column",
                    {VBox spacing=4pt, "A", "B", "C"}
                },
                {TabPane 
                    label="List", 
                    first-active-control = list, 
                    {VBox "Choose One", list}
                }
            }
            {value f}
        }
    }
  } 42 ui-object:#MultiTabAccordionUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/calendar-control.scurl" 3320 3228 {text {purpose
        A control that lets a user graphically select a day.
    }
    {details
        A {docref DateDataModel} is associated with a {ctext
        CalendarControl}.

        A {ctext CalendarControl} has lower and upper limits
        determined by {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value} respectively.

        A {docref CalendarControl.has-value?} determines if {ctext
        CalendarControl} has a value or not.

        By default, the {docref CalendarControl.locale} affects
        the month names and the weekday names.
    }
    {expected-events
        {event ValueChanged, 
            Fired when a user changes the value of the {ctext
            CalendarControl} by using the user interface. It is also
            fired when {docref CalendarControl.set-value-with-events}
            is called, if the value is changed or the {ctext
            CalendarControl} toggles between the set and unset state.
        }
        {event ValueFinished, 
            Fired after the {docref ValueChanged} event is fired and
            any time {docref CalendarControl.set-value-with-events} is
            called, whether or not the value of the control was
            changed.
        }
    }
    {visual-testing
        This class implements the {ctext CurlCalendar} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false, Set}
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell
                    Sets the value of the calendar.  The value is parsed using
                    {docref DateTime} after converting to the UTC time zone.
                    For this reason, it is best to specify only the date.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell
                    The current value of the control, formatted as an
                    ISO date.
                }
            }
        }
    }
    {notes
        This object can be styled by writing style rules for
        "CalendarControl",
        "CalendarControlDayFrame", and
        "CalendarControlDayTable". See {link href
        = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-calendar-controls"
        }, Skinning Calendar Controls} for more information.
    }
} "{MultiUIValueControlFrame-of #DateTime}"$""}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 21547 350 {text {purpose
        The {docref DateDataModel} associated with this
        object.
    }
    {notes
        Setting the data model will change {docref
        CalendarControl.value} to match the contents of the new data
        model.
        
        Also, this will set the {docref CalendarControl.has-value?} to
        {ctext true}.
    }
  } "DateDataModel"}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3688 14 {unadvertised} "#{ReadOnlyArray-of String}" 0 }
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10293 "Background" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 24739 2 "" "#DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 27393 342 {text {purpose
        Indicates the month that will be displayed by the {docref
        CalendarControl}'s user interface.
    }
    {notes
        It could be between 1 and 12, 1 representing January and 12
        representing December.

        This can be set by calling {docref
        CalendarControl.set-display-month-year}.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 32235 530 {text {purpose
        The date closest to one month after the currently displayed
        month and year in the {docref CalendarControl}, adjusted
        between {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value}.
    }
    {details
        If the {docref CalendarControl.has-value?} is {ctext true},
        then the day part of the {docref CalendarControl.value} will
        be used to compute the return value. Otherwise the first day
        of the month will be used to compute it.
    }
  } "DateTime"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10153 "Background" 0  2 ""}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10225 "FillPattern" 0  2 ""}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10437 "FillPattern" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 19937 127 {text {purpose
        An array of the abbreviated names of the weekdays in 
        {docref CalendarControl.locale}.
    }
  } "{ReadOnlyArray-of String}"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 16711 "#{proc-type
                                     {cc:CalendarControl,
                                      weekday:int
                                     }:#Graphic
                                 }" 4 null 523 {text {purpose
        Specifies an optional procedure for customizing the look and
        feel of the weekday labels.
    }
    {notes
        If non null, then for each day of the week this proc will be
        called and the returned {ctext Graphic}, if non-{ctext null}
        will be shown in the {docref CalendarControl} instead of the
        default {docref Graphic}.
        
        A weekday is between 1 and 7, 1 representing Monday and 7
        representing Sunday.

        By default it is null.
    }
  }}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10921 "bool" 5 false 397 {text {purpose
        Indicates whether the {docref CalendarControl} displays the
        week of the year or not.
    }
    {notes
        ISO 8601 defines weeks as starting on Monday. If
        {docref CalendarControl.start-weekday} is not 1 (meaning that
        the calender does not start with Monday), then the days prior
        to Monday, in that row, are in the previous week.
    }
  }}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 18739 125 {text {purpose
        An array of the abbreviated names of the months in 
        {docref CalendarControl.locale}.
    }
  } "{ReadOnlyArray-of String}"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 23725 2 "" "DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 30486 2 "" "int"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 17550 "#{proc-type
                                            {cc:CalendarControl,
                                             week-of-year:int,
                                             year:int
                                            }:#Graphic
                                        }" 4 null 544 {text {purpose
        Specifies an optional procedure for customizing the look and
        feel of the week number labels.
    }
    {notes
        If non null, then for each week of the year this proc will be
        called and the returned {ctext Graphic}, if non-{ctext null}
        will be shown in the {docref CalendarControl} instead of the
        default {docref Graphic}.
        
        This proc will only be called if 
        {docref CalendarControl.show-week-of-year?} is {ctext true}.

        By default it is null.
    }
  }}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 38298 715 {text {purpose
        Create the {docref DateDataModel} for this {ctext
        CalendarControl}.
    }
    {parameter min-value,
        Lower limit of the {ctext DateDataModel}.
    }
    {parameter max-value,
        Upper limit of the {ctext DateDataModel}.
    }
    {parameter value,
        The initial value of the data model.
    }
    {details
        The default implementation calls {ctext DateDataModel} constructor.
    }
    {notes
        This method is not typically called directly.  It is called by
        the {ctext CalendarControl}'s constructor when the {param
        data-model} is null.  Subclasses may override this method to
        return a subclass of {ctext DateDataModel}.
    }
  } 55 min-value:DateTime, max-value:DateTime, value:#DateTime "DateDataModel"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10367 "FillPattern" 0  2 ""}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 40948 2 "" 29 action:String, args:FastArray "any"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 17940 "bool" 4 true 2 ""}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10084 "FillPattern" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 20793 365 {text {purpose
        The locale of the {docref CalendarControl}.
    }
    {notes
        The value of this option affects the following operations:
        {docref CalendarControl.month-names}, 
        {docref CalendarControl.short-month-names}, 
        {docref CalendarControl.weekday-names} and
        {docref CalendarControl.short-weekday-names}.
    }
  } "Locale"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 27725 241 {text {purpose
        Indicates the year that will be displayed by the {docref
        CalendarControl}'s user interface.
    }
    {notes
        This can be set by calling {docref
        CalendarControl.set-display-month-year}.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 22948 500 {text {purpose
        Lower limit of the {docref CalendarControl}.
    }
    {notes
        An error will be thrown if the {ctext min-value} of the
        {ctext CalendarControl} is set to be greater than the
        {docref CalendarControl.max-value}.

        If {docref CalendarControl.has-value?} is {ctext true} then
        {docref CalendarControl.value} will be adjusted to be
        between the {ctext CalendarControl.min-value} and the
        {ctext CalendarControl.max-value}.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 23639 497 {text {purpose
        Upper limit of the {docref CalendarControl}.
    }
    {notes
        An error will be thrown if the {ctext max-value} of the
        {ctext CalendarControl} is set to be less than the
        {docref CalendarControl.min-value}.

        If {docref CalendarControl.has-value?} is {ctext true} then the
        {docref CalendarControl.value} will be adjusted to be
        between the {ctext CalendarControl.min-value} and {ctext
        CalendarControl.max-value}.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 19343 121 {text {purpose
        An array of the full names of the week days in 
        {docref CalendarControl.locale}.
    }
  } "{ReadOnlyArray-of String}"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 11199 "bool" 5 false 174 {text {purpose
        Indicates whether the {docref CalendarControl} displays the
        dates from adjacent months that fit in the current calendar
        area.
    }
  }}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 3874 2 "" "String"}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 38806 2 "" 30 sender:Observable, message:any "void"}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3593 14 {unadvertised} "int" 1 7}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 38588 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 28859 1045 {text {purpose
        Indicates the month and year that will be displayed by the
        {docref CalendarControl} user interface.
    }
    {parameter month,
        The new value of {docref CalendarControl.display-month}.
        
        If {param month} == -1, then it is ignored else the {param
        month} must be between 1 and 12, 1 representing January and 12
        representing December.
    }
    {parameter year,
        The new value of {docref CalendarControl.display-year}.

        If {param year} == -1, then it is ignored.
    }
    {notes
        If the display month for the display-year is not between
        {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value} then they will be automatically
        adjusted to be in the range.

        {docref CalendarControl.value} automatically calls this method
        to set the {ctext CalendarControl.display-month} and {ctext
        CalendarControl.display-year}.

        See Also: {docref CalendarControl.navigation-changes-value?}.
    }
  } 29 month:int = -1, year:int = -1 "void"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 30407 243 {text {purpose
        Start day of week in the {docref CalendarControl}.
    }
    {notes
        It could be between 1 and 7, 1 representing Monday and 7
        representing Sunday.

        By default it is 7 which means Sunday. 
    }
  } "int"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 10011 "Background" 0  2 ""}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3808 14 {unadvertised} "#{ReadOnlyArray-of String}" 0 }
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 14229 "#{Array-of DateTime}" 4 null 763 {text {purpose
        A list of holidays.
    }
    {details
        If non-{ctext null}, then these days will be displayed in the
        {docref CalendarControl} using {docref
        calendar-control-holiday-color} and {docref
        calendar-control-holiday-background}.

        By default this value is null.
    }
    {notes
        If you change the contents of this array call
        {docref CalendarControl.note-holidays-changed} to ensure that
        the changes are shown.

        The {docref SkinnableCalendarControlUI} uses the {docref
        DateDataModel.compare} method to determine if a date in the
        {ctext CalendarControl} should be displayed as a holiday or
        not.

        See also {docref DateTime.date#factory}.
    }
  }}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3417 14 {unadvertised} "bool" 0 }
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 12899 "bool" 5 false 1340 {text {purpose
        Indicates whether the subclasses of {docref CalendarControlUI}
        should change the {docref CalendarControl.value} when one
        navigates the {docref CalendarControl} by changing the month
        or the year.
    }
    {usage
        The subclasses of {ctext CalendarControlUI} should look at
        this flag to determine if they should change {ctext
        CalendarControlUI.value} when one navigates the {ctext
        CalendarControl} by changing the month and the year.

        By default it is {ctext false}.

        If {ctext CalendarControl.navigation-changes-value?} is {code
        true} then the user interface should change the value of the
        {ctext CalendarControl}, when changing month or year, via 
        {docref CalendarControl.value} or
        {docref CalendarControl.set-value-with-events}. Otherwise it
        should call the {docref CalendarControl.set-display-month-year}
        method to navigate.
    }
    {notes
        If {ctext CalendarControl.navigation-changes-value?} is
        toggled from {ctext false} to {ctext true} and if {docref
        CalendarControl.has-value?} is {ctext true}, the {docref
        SkinnableCalendarControlUI} will display the month and year
        with respect to the current value of the {ctext
        CalendarControl}.
    }
  }}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 37289 14 {unadvertised} 13 date:DateTime "DateTime"}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3517 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 24829 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 26955 164 {text {purpose
        Indicates whether the {docref CalendarControl} has a value.
    }
    {notes
        See also {docref CalendarControl.unset-value}.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 33637 531 {text {purpose
        The date closest to one month before the currently displayed
        month and year in the {docref CalendarControl}, adjusted
        between {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value}.
    }
    {details
        If the {docref CalendarControl.has-value?} is {ctext true},
        then the day part of the {docref CalendarControl.value} will
        be used to compute the return value. Otherwise the first day
        of the month will be used to compute it.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 18155 118 {text {purpose
        An array of the full names of the months in 
        {docref CalendarControl.locale}.
    }
  } "{ReadOnlyArray-of String}"}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 41447 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 31528 628 {text {purpose
        Notifies the UI that the contents of {docref
        CalendarControl.holidays} have changed.
    }
    {details
        You must call this method whenever you directly modify the
        {ctext CalendarControl.holidays} list. It will ensure that the changes 
        to this list are properly reflected.
    }
    {notes
        This method calls {docref
        CalendarControlUI.note-holidays-changed} to inform the UI that
        it should reflect the changes.
        
        You do not have to call this method when you change the
        {ctext CalendarControl.holidays} property itself.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 21630 2 "" "DateDataModel"}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3451 14 {unadvertised} "Locale" 0 }
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 25150 176 {text {purpose
        This will set the {docref CalendarControl.value} to {ctext null}.
    }
    {notes
        Forces {docref CalendarControl.has-value?} to false.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 36478 530 {text {purpose
        The date closest to one year before the currently displayed
        month and year in the {docref CalendarControl}, adjusted
        between {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value}.
    }
    {details
        If the {docref CalendarControl.has-value?} is {ctext true},
        then the day part of the {docref CalendarControl.value} will
        be used to compute the return value. Otherwise the first day
        of the month will be used to compute it.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 24660 827 {text {purpose
        The value of the {docref CalendarControl}.
    }
    {notes
        Setting {ctext CalendarControl.value} to a non-{ctext null}
        value will set {docref CalendarControl.has-value?} to {code
        true}, else it will be {ctext false}.
        
        See also: {docref CalendarControl.set-value-with-events},
        {docref CalendarControl.unset-value}.

        If {param val} is non-{ctext null}, the {docref
        CalendarControl.display-month} and {docref
        CalendarControl.display-year} will be adjusted to the new
        value of the {ctext CalendarControl}.
    }                                   
    {usage
        The {ctext CalendarControl.value} is non-{ctext null}, and
        hence usable, only when {docref CalendarControl.has-value?} is
        {ctext true}.
    }
  } "#DateTime"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 20861 2 "" "Locale"}
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 25941 705 {text {purpose 
        Simulates a user setting the value interactively.
    }
    {details
        Sets the value of the {docref CalendarControl}, then fires a
        {docref ValueChanged} event, if the value actually changed or the
        {ctext CalendarControl} is changed from unset to a set state. A
        {docref ValueFinished} event will then be fired.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref
        ValueFinished} events to be fired then use the {docref
        CalendarControl.value} setter directly to set the value of the
        {ctext CalendarControl}.

        {docref ValueFinished} may fire even when the value has not
        changed.
    }
  } 13 val:#DateTime "void"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 40863 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 23034 2 "" "DateTime"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 15866 "#{proc-type
                                     {cc:CalendarControl,
                                      date:DateTime
                                     }:(graphic:#Graphic, selectable?:bool) 
                                 }" 4 null 1528 {text {purpose
        Specifies an optional procedure for customizing the look and
        feel of each day in the month.
    }
    {notes
        If non null, then for each visible day this proc will be
        called and the returned {ctext Graphic}, if non-{ctext null},
        will be shown in the {docref CalendarControl} instead of the
        default {docref Graphic}. Also if the returned value selectable?
        is {ctext false}, the user interface will not allow that day to be
        selected.

        By default it is null.
    }
    {for-example
        A {ctext CalendarControl} that does not allow weekend days to be
        selected.

        {example
            {CalendarControl
                day-proc =
                    {proc {cc:CalendarControl, date:DateTime}:(#Graphic, bool)
                        let constant info:DateTimeInfo = date.info
                        let weekend?:bool = info.day-of-week >= 6
                        
                        {return
                            {if weekend? then
                                {text
                                    text-line-through? = true,
                                    disabled-color = FillPattern.pink,
                                    {value info.day}
                                }
                             else
                                null
                            },
                            not weekend?
                        }
                    }
            }
        }
    }
  }}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3551 14 {unadvertised} "DateDataModel" 0 }
{AccessorDocInfo "controls/logical-controls/calendar-control.scurl" 35066 529 {text {purpose
        The date closest to one year after the currently displayed
        month and year in the {docref CalendarControl}, adjusted
        between {docref CalendarControl.min-value} and {docref
        CalendarControl.max-value}.
    }
    {details
        If the {docref CalendarControl.has-value?} is {ctext true},
        then the day part of the {docref CalendarControl.value} will
        be used to compute the return value. Otherwise the first day
        of the month will be used to compute it.
    }
  } "DateTime"}
{OptionDocInfo "controls/logical-controls/calendar-control.scurl" 11455 "bool" 4 true 150 {text {purpose
        Indicates whether the {docref CalendarControl} displays only
        the days and hides the month and year selectors.
    }
  }}
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3750 14 {unadvertised} "#{ReadOnlyArray-of String}" 0 }
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3632 14 {unadvertised} "#{ReadOnlyArray-of String}" 0 }
{FieldDocInfo "controls/logical-controls/calendar-control.scurl" 3482 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/calendar-control.scurl" 7412 3345 {text {purpose
        Creates a {ctext CalendarControl} control.
    }
    {parameter locale,
        The locale of the {docref CalendarControl}.

        The default locale is the working locale determined by 
        {docref get-working-locale}.
    }
    {parameter data-model,
        The {docref DateDataModel} associated with this control.

        If {ctext null} then {docref CalendarControl.create-data-model}
        will be called to create the data model for this control.
    }
    {parameter min-value,
        Lower limit of the {ctext CalendarControl}.

        If {ctext null} and the {param data-model} is not provided then
        the lower limit of the control will be set to the first day of
        year 1.
    }
    {parameter max-value,
        Upper limit of the {ctext CalendarControl}.

        If {ctext null} and the {param data-model} is not provided then
        the upper limit of the control will be set to the last day of
        year 9999.
    }
    {parameter value,
        The default {docref DateTime}. 

        The {docref CalendarControl.has-value?} will be {ctext false}
        if {param value} is {ctext null} and the {param data-model} is
        {ctext null}, or when the {param value} is {ctext null} and the {param
        data-model} is non-{ctext null} but {docref DateDataModel.has-value?}
        is false.

        If {param data-mode} is {ctext null} then {docref
        CalendarControl.create-data-model} will be called to create
        the {docref DateDataModel} for this control.

        If {param value} is non-{ctext null}, then the value of this
        control will be {param value}.

        If {ctext CalendarControl.has-value?} is {ctext true} then the
        value of the control will always be forced between {docref
        CalendarControl.min-value} and {docref
        CalendarControl.max-value}.
    }
    {parameter start-weekday,
        Start day of week in the {docref CalendarControl}.

        It could be between 1 and 7, 1 representing Monday and 7
        representing Sunday.

        By default it is 7 which means Sunday.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
    {notes
        If the {ctext CalendarControl.has-value?} is {ctext true}, the
        {docref CalendarControl.display-month} and {docref
        CalendarControl.display-year} will be set to the month and
        year respectively using the {ctext
        CalendarControl.value}. Otherwise they will be set to a value
        which is the current month and year, if the current month and
        year is in the {ctext CalendarControl} range, otherwise it
        will be month and year of the {ctext CalendarControl}'s
        minimum value or maximum value depending upon whether the current
        month and year is before or after the {ctext
        CalendarControl}'s range.

        Since a {docref CalendarControl} is associated with a {ctext
        DateDataModel}, the {docref CalendarControl.value}, {docref
        CalendarControl.min-value}, and {docref
        CalendarControl.max-value} will only have date information;
        all the time information will be set to {ctext 0} and the time
        zone will be set to {docref DateTimeZone.utc}.
    }
  } 215 locale:Locale = {get-working-locale}, data-model:#DateDataModel = null, min-value:#DateTime = null, max-value:#DateTime = null, value:#DateTime = null, start-weekday:int = 7, ui-object:#CalendarControlUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22314 14 {unadvertised} ""$""}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22521 14 {unadvertised} "int" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22402 14 {unadvertised} "any" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22357 14 {unadvertised} "String" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22565 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 22611 14 {unadvertised} 43 key:String, value:any, start:int, limit:int ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 2206 1390 {text {purpose
        A common superclass for the user interfaces for different kinds of
        editable text controls, e.g. {docref TextFieldUI} and {docref
        PasswordFieldUI}.
    }
    {override 
        This class encapsulates a lot of code that would otherwise be
        duplicated in {ctext TextFieldUI} and {ctext PasswordFieldUI}.
        It is not typically subclassed directly.  See the
        Curl-provided subclasses {docref TextFieldUI} and {docref
        PasswordFieldUI} for typical subclassing information.

        Here are some tips for writing a subclass, if needed:

        Subclasses must write their own default constructors, with the
        appropriate class of control (e.g., {docref TextField}) as a
        keyword argument.

        Subclasses that are concrete should react in appropriate ways
        when certain events occur {em-dash} when keys are typed, when
        the control is disabled, when {docref-abbr
        BaseTextFieldUI.react-to-state-change} is called,
        etc. {em-dash} but the concrete subclasses must provide the
        actual drawing and text manipulation code.  Note that such
        reactions are typically look-and-feel-specific, and should
        therefore not be implemented in look-and-feel-independent
        classes intended to be further subclassed by
        look-and-feel-specific implementations.
    }
} "BaseTextControlUI"$"TextFieldUI, PasswordFieldUI, TextAreaUI"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 2434 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/scrollbar.scurl" 83 14 {unadvertised} "Observer"$""}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 155 14 {unadvertised} "Scrollbar" 0 }
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 289 2 "" 30 sender:Observable, message:any "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 186 14 {unadvertised} 12 sb:Scrollbar ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 6628 1089 {text {purpose 
        Enumerates the built-in visual styles for {docref CheckButton}.
    }
    {details
        Legal values are:
        {itemize
            {item {ctext standard}:  Looks like a traditional check button,
                with the visuals specified by the look-and-feel always
                visible around the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than a 
                focus rectangle to indicate when the button has focus.
            }
            {item {ctext command-button-standard}:  Looks like a "latching"
                push button that stays on or off when you press it.  Typically
                seen in toolbars of traditional desktop applications.
            }
            {item {ctext command-button-rollover}:  Like the
                {ctext command-button-standard} style, but the usual button
                visuals are only shown when the mouse pointer is over the
                button.
            }
        }
    }
} 75 standard=0 label-only=1 command-button-standard=2 command-button-rollover=3}
{VariableDocInfo "controls/logical-controls/globals.scurl" 3764 586 {text {purpose
        The length of a minor tick.
    }
    {details
        This option is typically used by {docref SliderPanel}.  It
        dictates the length of the minor tick.

        Legal types of values are:
        {itemize
            {item number: {docref int}, {docref double}, etc.}
            {item distance: {docref Distance} and {docref FloatDistance}.}
            {item
                pixel distance: {docref PixelDistance} and
                {docref FloatPixelDistance}
            }
        }

        The default value is {ctext 3pt}.
    }
    {since 6.0}
} 3 any 3 3pt}
{ClassDocInfo "controls/logical-controls/scrollbar-ui.scurl" 454 362 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref Scrollbar}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
    {since 6.0}
} "Frame, ControlUI"$"GenericScrollbarUI"}
{AccessorDocInfo "controls/logical-controls/scrollbar-ui.scurl" 1099 219 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
    {since 6.0}
  } "Scrollbar"}
{MethodDocInfo "controls/logical-controls/scrollbar-ui.scurl" 764 218 {text {purpose
        Construct a new {ctext ScrollbarUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
    {since 6.0}
  } 3 ... ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 7856 1076 {text {purpose Enumerates the built-in visual styles for {docref RadioButton}.}
    {details
        Legal values are:
        {itemize
            {item {ctext standard}:  Looks like a traditional radio button,
                with the visuals specified by the look-and-feel always
                visible next to the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than a 
                focus rectangle to indicate when the button has focus.
            }
            {item {ctext command-button-standard}:  Looks like a "latching"
                push button that stays on or off when you press it.  Typically
                seen in toolbars of traditional desktop applications.
            }
            {item {ctext command-button-rollover}:  Like the
                {ctext command-button-standard} style, but the usual button
                visuals are only shown when the mouse pointer is over the
                button.
            }
        }
    }
} 75 standard=0 label-only=1 command-button-standard=2 command-button-rollover=3}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 218196 14 {unadvertised} "RecordGridSelection"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 220283 2 "" 34 record-index:int, column-index:int "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222223 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 219142 2 "" "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 223284 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222571 14 {unadvertised} 23 region:RecordGridRegion "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222136 14 {unadvertised} 9 index:int "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 218605 14 {unadvertised} "{HashTable-of int, any}" 25 {{HashTable-of int, any}}}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 220092 2 "" "{Iterator-of RecordGridRegion}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222293 14 {unadvertised} 23 column:RecordGridColumn "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 225228 14 {unadvertised} 24 index:int, increment:int "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 221803 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222501 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 218683 14 {unadvertised} "{Set-of RecordGridColumn}" 27 {{Set-of RecordGridColumn}}}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222397 14 {unadvertised} 23 column:RecordGridColumn "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 220890 14 {unadvertised} "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 223767 14 {unadvertised} 0  "bool"}
{ClassVariableDocInfo "controls/logical-controls/record-grid.scurl" 218354 14 {unadvertised} "Set" 5 {Set}}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 219332 2 "" "{Iterator-of RecordGridColumn}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222673 14 {unadvertised} 23 region:RecordGridRegion "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 219222 2 "" 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 219523 2 "" 25 brgc:BaseRecordGridColumn "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 220203 2 "" "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 223169 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 218405 14 {unadvertised} "RecordGrid" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 221873 14 {unadvertised} 9 index:int "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 219039 2 "" "{Iterator-of int}"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 218528 14 {unadvertised} "{HashTable-of int, any}" 25 {{HashTable-of int, any}}}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 218782 14 {unadvertised} "{Array-of RecordGridRegion}" 29 {{Array-of RecordGridRegion}}}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 219443 2 "" "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 222990 14 {unadvertised} 23 region:RecordGridRegion "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 218885 14 {unadvertised} 15 grid:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/slider-ui.scurl" 2509 14 {unadvertised} "SliderUI"$""}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 2642 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/slider-ui.scurl" 2573 14 {unadvertised} 3 ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 1450 65 {text {purpose
        The background color for holidays.
    }
} 10 Background 167 {LinearGradientFillPattern
            {Fraction2d 0, 0},
            {Fraction2d 1, 1},
            {Spectrum.from-endpoints FillPattern.white, "moccasin"} 
        }}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 126304 1072 {text {purpose
        This class implements the {docref ListItem}s that are
        selectable values in list controls such as
        {docref ListBox}es, {docref ComboBox}es, and {docref DropdownList}s.
        Separators and other non-selectable items are not
        {ctext ListValueItem}s.
    }
    {details
        {ctext ListValueItem}s allow you to specify both a value and the label
        used for that value (which is a {docref Visual}).
        See {docref ListItem} for more information.
    }
    {override
        {ctext ListValueItem} and its superclass {docref ListItem}
        are meant to be subclassed in applets that require
        a high degree of control over the visual rendering of controls.
        For instance, you may wish to change the appearance of
        selected or disabled items. To do this you could create a subclass
        that overrides the {ctext selected?} setter
        and implements an {ctext enabled?} option handler.
    }
    {notes
        This object can be styled by writing style rules for "ListValueItem".
    }
} "ListItem"$""}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 126576 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 129264 189 {text {purpose 
        Should the user be able to select this item?
    }
    {details 
        The default implementation for {ctext ListValueItem}
        returns {ctext true}.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 128257 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 129470 131 {text {purpose 
        Sets the colors of the item in response to state changes,
        such as selection or disabling.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 128084 154 {text {purpose
        The {docref Visual} that represents the value.
    }
    {details
        This is what the user of the control will see. 
    }
  } "Visual"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 126367 2 "" "String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 128625 284 {text {purpose
        Set whether this item is currently selected.
    }
    {details 
        Attempts to set {ctext selected?} to true when
        {ctext enabled?} is false are ignored.  See
        {docref SelectableItem.set-selected?-quietly} for
        more details.
    }
  } 8 sel:bool "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 126546 14 {unadvertised} "Visual" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 128150 2 "" "Visual"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 127181 560 {text {purpose
        Construct this object.
    }
    {parameter item-value,
        the value of the item. See {docref ListItem.value}.
    }
    {parameter label, 
        See {docref ListValueItem.label}.  This will default to the visual 
        representation of {param item-value.}
    }
    {parameter value, 
        An alternate way of specifying the value. This parameter should not 
        typically be used.
    }
    {parameter enabled?, 
        Whether the item should initially show up as disabled (and thus 
        unselectable).
    }
  } 76 item-value:any, label:#Visual = null, value:any = null, enabled?:bool = true ""}
{ClassDocInfo "controls/logical-controls/progress-bar-ui.scurl" 440 348 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref ProgressBar}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"StandardProgressBarUI, SkinnableProgressBarUI"}
{AccessorDocInfo "controls/logical-controls/progress-bar-ui.scurl" 724 189 {text {purpose Return the control this UI delegate is attached to.}
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "ProgressBar"}
{MethodDocInfo "controls/logical-controls/progress-bar-ui.scurl" 1038 204 {text {purpose
        Construct a new {ctext ProgressBarUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 49680 14 {unadvertised} "{Iterator-of t}"$""}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 49845 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 50340 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 49878 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 50021 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 49775 2 "" "{Array-of ListItem}" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 50161 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 50656 2 "" 0  "int"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 49819 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 49913 14 {unadvertised} 25 items:{Array-of ListItem} ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 1082 66 {text {purpose
        The background of the current date.
    }
} 10 Background 22 {Background "#e0e8ff"}}
{VariableDocInfo "controls/logical-controls/shared.scurl" 11010 14 {unadvertised} 3 int 1 6}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 14659 725 {text {purpose 
        A superclass for {docref ComboBox} user interface delegates.
    }
    {override
        Subclasses that are concrete should react in appropriate ways
        when certain events occur {em-dash} when keys are typed, when
        the control is disabled, when {docref-abbr
        ComboBoxUI.react-to-state-change} is called,
        etc. {em-dash} but the concrete subclasses must provide the
        actual drawing and text manipulation code.  Note that such
        reactions are typically look-and-feel-specific, and should
        therefore not be implemented in look-and-feel-independent
        classes intended to be further subclassed by
        look-and-feel-specific implementations.
    }
} "Frame, ControlUI, BaseComboBoxUI"$"StandardComboBoxUI, SkinnableComboBoxUI"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 16663 143 {text {purpose
        Indicates that the {docref ComboBoxUI} should be drawn
        using the current {docref-abbr ComboBox.value}.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 15166 120 {text {purpose
        Indicates whether the {docref-abbr ComboBoxUI.set-size} method
        has been called.
    }
  } "bool" 5 false}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 18084 350 {text {purpose
        The object that should request key focus when the
        {docref ComboBox} associated with this UI becomes active.
    }
    {override
        By default it returns {ctext self}. Override this method to
        specify a different focus object of the {ctext ComboBox}
        associated with this UI.
    }
    {since 7.0}
  } "Visual"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 16069 2 "" 30 lc:LayoutContext, bounds:GRect "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 17277 389 {text {purpose
        Sets the {docref ComboBox}'s value, along with other state
        variables.
    }
    {parameter val,
        The new value.
    }
    {details
        This method is intended to be called by subclasses whenever
        the value of the {docref ComboBox} should change in reaction
        to a user gesture.  (E.g., a {docref KeyPress}.)

    }
    {since 6.0}
  } 10 val:String "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 15612 383 {text {purpose
        Called when a change occurs to any state of the {docref
        ComboBox} that the {docref ComboBoxUI} might react to.
    }
    {details
        The default implementation typically calls {docref-abbr
        ComboBoxUI.draw-as-prompt} or {docref-abbr
        ComboBoxUI.draw-as-current-value} to change how the
        {ctext ComboBoxUI} will draw.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 17350 2 "" 18 e:ContextMenuEvent "void"}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 17611 2 "" "Distance"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 16818 78 {text {purpose
        Gets the currently displayed {docref String}.
    }
  } 0  "String"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 16450 136 {text {purpose
        Indicates that the {docref ComboBoxUI} should be drawn
        using the {docref-abbr ComboBox.prompt}.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 14891 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 11428 741 {text {purpose 
        A superclass for {docref DropdownList} user interface
        delegates.
    }
    {override
        Subclasses that are concrete should react in appropriate ways
        when certain events occur {em-dash} when keys are typed, when
        the control is disabled, when {docref-abbr
        DropdownListUI.react-to-state-change} is called,
        etc. {em-dash} but the concrete subclasses must provide the
        actual drawing and text manipulation code.  Note that such
        reactions are typically look-and-feel-specific, and should
        therefore not be implemented in look-and-feel-independent
        classes intended to be further subclassed by
        look-and-feel-specific implementations.
    }
} "Frame, ControlUI, BaseComboBoxUI"$"StandardDropdownListUI, SkinnableDropdownListUI"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 12832 2 "" 30 lc:LayoutContext, bounds:GRect "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 11789 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 13808 2 "" "Distance"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 13742 301 {text {purpose
        Indicates that the {docref DropdownListUI} should be drawn
        using the current {docref-abbr DropdownList.value}.
    }
    {notes
        This method sets up the state that will be used when drawing
        eventually occurs, but does not actually draw anything.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 12069 124 {text {purpose
        Indicates whether the {docref-abbr DropdownListUI.set-size} method
        has been called.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 13371 294 {text {purpose
        Indicates that the {docref DropdownListUI} should be drawn
        using the {docref-abbr DropdownList.prompt}.
    }
    {notes
        This method sets up the state that will be used when drawing
        eventually occurs, but does not actually draw anything.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 12535 403 {text {purpose
        Called when a change occurs to any state of the {docref
        DropdownList} that the {docref DropdownListUI} might react to.
    }
    {details
        The default implementation typically calls {docref-abbr
        DropdownListUI.draw-as-prompt} or {docref-abbr
        DropdownListUI.draw-as-current-value} to change how the
        {ctext DropdownListUI} will draw.
    }
  } 0  "void"}
{VariableDocInfo "controls/logical-controls/globals.scurl" 1272 66 {text {purpose
        The text color of the current date.
    }
} 11 FillPattern 16 FillPattern.navy}
{ClassDocInfo "controls/logical-controls/menu-pane.scurl" 16071 313 {text {purpose 
        A menu pane used in dropdown-type controls.
    }
    {details
        If the pointer leaves the menu pane the selection hint on 
        a selected item, if any, will not be dropped.
    }
    {notes
        This object can be styled by writing style rules for "DropdownMenuPane".
    }
} "MenuPane"$""}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 16138 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 17463 181 {text {purpose
        Returns {code true} if pressing the up and down key could result
        in wrapping the selected menu item.

        By default it is {code false}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 17879 2 "" 39 mm:#MenuManager, menu-action:MenuAction "void"}
{AccessorDocInfo "controls/logical-controls/menu-pane.scurl" 17804 259 {text {purpose
        Returns {code true} if a pointer leave on the {docref
        MenuPane} should result no {docref MenuItem}s selected for the
        last shown {ctext MenuPane}.

        For {docref DropdownMenuPane}, it returns {ctext true}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane.scurl" 16770 438 {text {purpose 
        Create a new {ctext DropdownMenuPane} with contents and
        properties passed in the rest args.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter use-look-and-feel?, 
        Provides the initial value for
        {docref MenuPane.use-look-and-feel?}.
    }
    {parameter ..., 
        Each non-keyword argument must be a {docref MenuAction} or
        {docref SubMenu}.
    }
  } 87 ui-object:#MenuPaneUI = null, use-look-and-feel?:bool = true, vscroll?:bool = true, ... ""}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 69688 333 {text {purpose 
        Encapsulates a set of user-defined labels used on controls
        to allow their labels to change from one operational state to another.
    }
    {notes
        At present these are only usable with button-like controls.

        This object can be styled by writing style rules for "ReactiveLabel".
    }
} "Label"$""}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 75018 "#Visual" 4 null 133 {text {purpose The label shown when the control is pressed.}
    {for-example See {docref ReactiveLabel.default} for an example.}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 73275 2164 {text {purpose 
        Stores the labels optionally displayed by button-like controls
        in various states.
    }
    {details
        For any button-like control, if you specify its label and
        reactive label (using its {ctext label} and {ctext
        reactive-label} properties), the reactive label's own {ctext
        label=} property value is used. The label you provide will be
        ignored.
    }
    {parameter mnemonic, A character to be used as a mnemonic if
        none can be extracted from {param label}.
    }
    {parameter ...,
        various option settings including the following
        label-related ones, for which you can specify any {ctext Visual}
        object:
        {itemize
            {item {ctext label}}
            {item {ctext label-rollover}}
            {item {ctext label-pressed}}
            {item {ctext label-disabled}}
            {item {ctext label-checked}}
            {item {ctext label-rollover-checked}}
            {item {ctext label-pressed-checked}}
            {item {ctext label-disabled-checked}}
        }
    }
    {for-example
        {example
            {CheckButton
                enabled? = true,
                || The following is ignored since reactive-label is also
                || specified and its own label= argument is set
                label = "The button &ignores this label",
                reactive-label =
                    {ReactiveLabel
                        label = {Label "&Send to All "},
                        label-rollover = {Label color = "orange", "&Send to All!"},
                        label-pressed = {Label font-weight = "bold", color = "red", "&Send to All!"},
                        label-disabled = {Label color="black", "&Send to All"},
                        label-checked = {Label color="purple", "&Send to All"},
                        label-rollover-checked = {Label color="orange", "&Send to All!"},
                        label-pressed-checked = {Label color = "red", "&Send to All"},
                        label-disabled-checked = {Label color="black", "&Send to All"}
                    }
            }
        }
    }
  } 38 mnemonic:char = Label.no-mnemonic, ... ""}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 77839 113 {text {purpose Show the rollover label.}
    {details If there is no rollover label, show the default label.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 81159 14 {unadvertised} 39 label:#Visual, state:ReactiveLabelState "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 77179 "#Visual" 4 null 207 {text {purpose 
        The label shown when the control is disabled,
        and the control's value is {ctext true}.
    }
    {usage Relevant only for {docref CheckButton}s and {docref RadioButton}s.}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 84567 14 {unadvertised} 12 label:Visual "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 69936 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 83771 14 {unadvertised} 13 label:#Visual "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 76821 "#Visual" 4 null 206 {text {purpose 
        The label shown when the control is pressed,
        and the control's value is {ctext true}.
    }
    {usage Relevant only for {docref CheckButton}s and {docref RadioButton}s.}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 79654 200 {text {purpose Show the rollover-checked label.}
    {details 
        If there is no rollover-checked label, show the checked label;
        then the rollover label; then the default label.
    }
  } 0  "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 74068 "#Visual" 6 {text} 47 {text {purpose The label shown by default.}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 84765 2 "" 0  "String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 84143 14 {unadvertised} 12 label:Visual "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 78654 113 {text {purpose Show the disabled label.}
    {details If there is no disabled label, show the default label.}
  } 0  "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 76461 "#Visual" 4 null 287 {text {purpose 
        The label shown when the pointer rolls over the control,
        and the control's value is {ctext true}.
    }
    {usage Relevant only for {docref CheckButton}s and {docref RadioButton}s.}
    {for-example See {docref ReactiveLabel.default} for an example.}
  }}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 70858 613 {text {purpose The label that is currently being shown in this {ctext
        ReactiveLabel}.
    }
    {details
        If the label passed to the constructor is a {docref Label},
        it's mnemonic will be the mnemonic for this {ctext ReactiveLabel}.
        Note that this is a constant and cannot subsequently be changed.
    }
    {usage 
        Required by the {ctext ControlUI} classes that need to know
        something about the content of the label.  For instance, a
        {ctext CheckButton} that has a null as the current label
        shouldn't attempt to draw a focus box around it.
    }
  } "#Visual" 4 null}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 78250 180 {text {purpose Show the pressed label.}
    {details 
        If there is no pressed label, show the rollover label;
        if no rollover label, show the default label.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 83598 14 {unadvertised} 13 label:#Visual "bool"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 70169 14 {unadvertised} "#{HashTable-of Visual, Frame}" 4 null}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 76047 "#Visual" 4 null 292 {text {purpose 
        The label shown when the control is checked, e.g. when a
        {docref CheckButton}'s value is {ctext true}.
    }
    {usage Relevant only for {docref CheckButton}s and {docref RadioButton}s.}
    {for-example See {docref ReactiveLabel.default} for an example.}
  }}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 69747 14 {unadvertised} "ReactiveLabelState" 0 }
{MethodDocInfo "controls/logical-controls/buttons.scurl" 79226 111 {text {purpose Show the checked label.}
    {details If there is no checked label, show the default label.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 80794 199 {text {purpose Show the disabled-checked label.}
    {details
        If there is no disabled-checked label, show the disabled label;
        then the checked label; then the default label.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 70121 14 {unadvertised} "#OverlayBox" 4 null}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 69798 14 {unadvertised} "{FastArray-of #Visual}" 71 {{FastArray-of #Visual}.from-size {enum-size ReactiveLabelState}, null}}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 77574 43 {text {purpose Show the default label.}
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 70920 2 "" "String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 80225 197 {text {purpose Show the pressed-checked label.}
    {details 
        If there is no pressed-checked label, show the checked label;
        then the pressed label; then the default label.
    }
  } 0  "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 74755 "#Visual" 4 null 145 {text {purpose The label shown when the pointer rolls over the control.}
    {for-example See {docref ReactiveLabel.default} for an example.}
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 75625 "#Visual" 4 null 480 {text {purpose The label shown when the control is disabled.}
    {for-example
        {example
            {RadioButton
                || set this to true/false to see the different labels.
                enabled? = false,
                reactive-label =
                    {ReactiveLabel
                        label = {text radio button},
                        label-disabled = {text this radio button is disabled}
                    }
            }
        }
    }
  }}
{ClassDocInfo "controls/logical-controls/DateDataModel.scurl" 10210 368 {text {purpose
        Used to notify the observers of a {docref DateDataModel}
        when one or more properties of the {ctext DateDataModel}
        changes.
    }
    {notes
        The {ctext DateDataModel} has three properties:
        {docref DateDataModel.min-value}, 
        {docref DateDataModel.max-value} and 
        {docref DateDataModel.value}
    }
} ""$""}
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 10343 73 {text {purpose 
        Creates a {ctext DateDataModelMessage}.
    }
  } 0  ""}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 17696 1105 {text {purpose
        This abstract class defines the API for the UI delegate for a
        {docref CommandButton} control.
    }
    {details 
        Objects in this class know that they are supposed to
        redraw themselves in various ways when certain events occur
        -- when disabled, rolled over, pressed, etc. -- but the 
        concrete subclasses must provide the actual drawing code.

        A CommandButtonUI object inherits indirectly from Frame, so
        subclasses can use any drawing mechanisms that can be used in
        a Frame.
    }
    {override 
        Concrete subclasses must override these methods:
        {itemize
            {item {docref CommandButtonUI.draw-as-normal}}
            {item {docref CommandButtonUI.draw-as-disabled}}
            {item {docref CommandButtonUI.draw-as-rollover}}
            {item {docref CommandButtonUI.draw-as-pressed}}
            {item {docref CommandButtonUI.modify-for-focus}}
            {item {docref CommandButtonUI.modify-for-default}}
            {item {docref CommandButtonUI.react-to-visual-change}}
        }
    }
} "BaseButtonUI"$"StandardCommandButtonUI, SkinnableCommandButtonUI"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 25947 300 {text {purpose
        Handles a {docref GrabRelease} event.
    }
    {notes
        If {docref CommandButton.repeating?} is {ctext true}, it stops
        the repeated calling of the {docref
        BaseButtonUI.do-press-action} method and then pass this event
        to its super class.
    }
  } 13 e:GrabRelease "void"}
{OptionDocInfo "controls/logical-controls/button-uis.scurl" 18441 "bool" 0  2 ""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 19683 72 {text {purpose
        Fires an {docref Action} at the button.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 30127 73 {text {purpose Add visuals to indicate that this is the default button.}} 13 default?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 23922 786 {text {purpose
        Handles a {docref PointerRelease} event.
    }
    {details
        If the event {param e} is not consumed and left mouse button
        was pressed, it handles it by firing {param e} to the
        {docref CommandButton} associated with this object.
        
        If both {docref CommandButton.fire-on-press?} and {docref
        CommandButton.repeating?} are {ctext false}, it does not
        consume this event and lets {docref
        BaseButtonUI.on-pointer-release} handle it. Otherwise, it
        consumes this event and sets the various state of this object
        like its super class. If {docref CommandButton.repeating?} is
        {ctext true}, it stops the repeated calling of the {docref
        BaseButtonUI.do-press-action} method.
    }
  } 16 e:PointerRelease "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 20785 900 {text {purpose
        Handles a {docref PointerPress} event.
    }
    {details
        If the event {param e} is not consumed and left mouse button
        was pressed, it handles it by firing {param e} to the
        {docref CommandButton} associated with this object.
        
        If both {docref CommandButton.fire-on-press?} and {docref
        CommandButton.repeating?} are {ctext false}, it does not
        consume this event and lets {docref
        BaseButtonUI.on-pointer-press} handle it. Otherwise, it
        consumes this event and sets the various state of this object
        like its super class. However, it also calls {docref
        BaseButtonUI.do-press-action} and if {ctext
        CommandButton.repeating?} is {ctext true} it creates a timer,
        if there is not already one, and enables it to call {docref
        BaseButtonUI.do-press-action} repeatedly.
    }
  } 14 e:PointerPress "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 19007 327 {text {purpose
        Calls one or more of the draw methods; which ones depends on
        the state of the button.
    }
    {usage
        Should be called whenever the button's operational state
        changes, e.g. pressed or rollover.  This will usually get
        called from event handlers of various sorts.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 17810 14 {unadvertised} "#Timer" 0 }
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 28094 499 {text {purpose
        Handles a {docref RawKeyRelease} event.
    }
    {notes
        Like its super class, it handles {param e}. However, if
        {docref CommandButton.fire-on-press?} of {docref
        CommandButton.repeating?} is {ctext true}, it does not call
        the {docref BaseButtonUI.do-press-action} method. If {ctext
        CommandButton.repeating?} is {ctext true}, it will stop the
        repeated calling of the method {ctext
        BaseButtonUI.do-press-action}.
    }
  } 15 e:RawKeyRelease "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 29741 54 {text {purpose Draw the button in its pressed state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 22334 14 {unadvertised} 0  "Timer"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 29383 55 {text {purpose Draw the button in its disabled state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 29918 56 {text {purpose Add visuals to indicate keyboard focus.}} 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 29208 53 {text {purpose Draw the button in its normal state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 26606 479 {text {purpose
        Handles a {docref KeyPress} event.
    }
    {notes
        Like its super class, it handles {param e}. However, if
        {docref CommandButton.fire-on-press?} of {docref
        CommandButton.repeating?} is {ctext true}, it calls {docref
        BaseButtonUI.do-press-action}. If {ctext
        CommandButton.repeating?} is {ctext true}, it will start a
        timer to call the {ctext BaseButtonUI.do-press-action} method
        repeatedly.
    }
  } 10 e:KeyPress "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 29566 62 {text {purpose Draw the button as the pointer rolls over it.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 18245 57 {text {purpose
        Instantiate this object.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 9880 14 {unadvertised} "RichTextStringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 9967 14 {unadvertised} "#RichTextString" 0 }
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10017 14 {unadvertised} "int" 0 }
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10058 14 {unadvertised} "String" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10294 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10099 14 {unadvertised} "any" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10143 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 10714 14 {unadvertised} 85 index:int, undo-str:#RichTextString, redo-length:int, redo-key:String, redo-value:any ""}
{ProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 15599 14 {unadvertised} 69 index:int, length:int, max-index:int, old-styles:{Array-of TextStyle} "new-styles:{Array-of TextStyle}"}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 45263 3235 {text {purpose
        Implements a radio button.
    }
    {details
        When used inside a {docref RadioFrame}, a set of RadioButtons
        present a one-of-many choice to the user.  Each RadioButton is
        a two-state toggle button that can be selected with a mouse
        click, but cannot be unselected unless another RadioButton
        within its RadioFrame is selected (or unless its state is set
        programmatically).

        A RadioButton has a {docref RadioButton.value} property that
        is either {ctext true} or {ctext false}, as it is for {docref
        CheckButton}.  However, a RadioButton also has a {docref
        RadioButton.radio-value} property, which the {docref
        RadioFrame} uses as its value whenever that button is
        selected.

        See {docref RadioFrame} for more usage information.
    }
    {expected-events
        {event
            ValueChanged, Fired when the user presses and releases the
            button; also fired when {docref
            RadioButton.set-value-with-events} is called.
        }
        {event
            ValueFinished, Fired when the user presses and releases
            the button, after the {docref ValueChanged} event is
            fired; also fired when
            {docref RadioButton.set-value-with-events} is called.
        }

        Event handlers written for {docref PointerPress} and {docref
        PointerRelease} will not be triggered; use {docref
        ValueChanged} or {docref ValueFinished} instead.
    }
    {notes
        This object can be styled by writing style rules for
        "RadioButton" and "RadioButton/toggle".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#button-skins"
        }, Button Skins} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlRadioButton} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell 
                    font-family = "monospace", text-breakable? = false, Set
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} (must be "ON" or "OFF")
                }
                {cell Sets the state of the button.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell 
                    The current value of the control (either "ON" or "OFF").
                }
            }
        }
    }  
} "{MultiUIValueControlFrame-of bool}"$""}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 55153 "bool" 0  2 ""}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 45351 14 {unadvertised} "RadioButtonStyle" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 50402 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 55691 449 {text {purpose The label to be shown on the button.}
    {details
        If set to a {docref ReactiveLabel}, this is the same as setting
        the {docref RadioButton.reactive-label} property.

        For any other type of object, an automatic conversion to a
        {docref Label} is performed. If the value is a String, the
        ampersand character ('&') is recognized as a prefix to
        indicate the mnemonic for the button.
    }
  } "#Label"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 59011 188 {text {purpose Indicates whether the user is currently changing the value.}
    {details 
        Always false for a RadioButton, which changes its value
        instantaneously.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 53428 728 {text {purpose
        Override {docref
        StandardActiveTraversor.become-active-from-traversal} to
        provide the desired tabbing behavior.
    }
    {details
        A {ctext RadioButton} should refuse to become active from
        traversal under the following conditions:
        {itemize
            {item When it is disabled}
            {item 
                When there is another {ctext RadioButton} in its
                {docref RadioFrame} that is selected
            }
            {item 
                When there is no selected {ctext RadioButton} and
                traversal is coming from another {ctext RadioButton}
                in the same {docref RadioFrame}
            }
        }
    }
  } 20 forward?:bool = true "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 57961 1104 {text {purpose 
        The button's visual style.  Default is
        {ctext RadioButtonStyle.standard}.
    }
    {usage Value must be one of:
        {itemize
            {item {ctext standard}:  Looks like a traditional radio button,
                with the visuals specified by the look-and-feel always
                visible next to the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than a 
                focus rectangle to indicate when the button has focus.
            }
            {item {ctext command-button-standard}:  Looks like a "latching"
                push button that stays on or off when you press it.  Typically
                seen in toolbars of traditional desktop applications.
            }
            {item {ctext command-button-rollover}:  Like the
                {ctext command-button-standard} style, but the usual button
                visuals are only shown when the mouse pointer is over the
                button.
            }
        }
    }
  } "RadioButtonStyle"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 61715 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 61318 2 "" "#String"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 51739 14 {unadvertised} "#RadioFrame" 4 null}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 58037 2 "" "RadioButtonStyle"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 45895 2 "" "String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 60758 232 {text {purpose 
        Determines what happens when the button's mnemonic key
        is pressed.
    }
    {details 
        Overridden from {docref StandardControl}.
        Toggles the RadioButton on, and fires events.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 49126 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 56456 449 {text {purpose Provides a way to show different labels for button controls
        when they are pressed, disabled, etc.
    }
    {usage
        The simpler {ctext label} property will suffice for most uses of
        {docref RadioButton}.  Use this if you want to explicitly
        change the label when the button is pressed, rolled over,
        or disabled. See the {docref ReactiveLabel} documentation for more 
        information.
    }
  } "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 55765 2 "" "#Label"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 45806 375 {text {purpose
        When a {docref RadioButton} is selected, {ctext
        RadioButton.radio-value} is the value given to the {docref
        RadioFrame} that contains it.
    }
    {details
        Do not confuse this field with {docref RadioButton.value},
        which is a Boolean value that describes the selection state of
        the {ctext RadioButton}.
    }
  } "any" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 50203 175 {text {purpose 
        True if this {docref Control} currently has a valid value.
    }
    {details 
        Always true for a RadioButton; it is either on or off.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 45847 14 {unadvertised} "ReactiveLabel" 0 }
{OptionDocInfo "controls/logical-controls/buttons.scurl" 58757 "#SkinSpec" 4 null 364 {text {purpose
        A specification used by this control to determine the
        visual appearance of its toggle when checked.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 52342 "#RadioFrame" 0  542 {text {purpose
        Keeps track of the {docref RadioFrame} of which this button is
        a member.
    }
    {details
        {ctext RadioButton.radio-frame} implements the mechanism that detects
        the addition or removal of radio buttons in a {ctext RadioFrame}.
        Upon detection, it deals with the change appropriately.
        The value of this nonlocal option is passed down through the
        graphic hierarchy unless a child (e.g. another {docref RadioFrame})
        explicitly sets it to a different value.
    }
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 61485 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 60243 14 {unadvertised} 8 val:bool "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 50265 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 56548 2 "" "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 49900 553 {text {purpose
        The value of a {ctext RadioButton} that is to be submitted when
        the {docref HttpForm} in which this control resides is
        submitted.
    }
    {details
        This value is always {ctext null}. This means that the radio
        button value will never be submitted if it is not inside a
        {docref RadioFrame}.  If it is inside a {docref RadioFrame}
        then the {docref RadioFrame} will decide which {ctext
        RadioButton} to submit. 

        See {docref RadioFrame.form-value} for details.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 50338 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 59595 505 {text {purpose 
        Sets the value of the RadioButton, and fires {docref ValueChanged}
        and {docref ValueFinished} events afterwards; effectively simulates a
        user setting the value interactively, without the visuals.
    }
    {parameter val, The value to which to set the RadioButton.}
    {details This method first sets the control's value with {ctext set}, and
        then fires the events. This will do nothing if the new value is 
        the same as the current value.
    }
  } 8 val:bool "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 61231 2 "" "String"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 58294 "bool" 4 true 89 {text {purpose
        Should the button show a visual indication of key focus?
    }
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 51578 "any" 3 4px 911 {text {purpose
        The amount of space to be placed between the label and the
        edge of the button.
    }
    {details
        This property is used when drawing buttons of style
        {ctext RadioButtonStyle.command-button-standard} and 
        {ctext RadioButtonStyle.command-button-rollover}
        
        The value of this property should be a distance greater
        than or equal to zero and will be rounded to a pixel
        size before application.  It is treated similarly
        to the {docref Graphic.margin} property,  which should 
        be consulted for more information. 
   
        Note that the standard ui delegate uses the area
        provided by this inset for drawing the rectangle which
        indicates the button is focused.  If this inset is completely 
        removed, the standard delegate will draw this focus rectangle
        on top of the label.
    }
  }}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 45391 14 {unadvertised} "bool" 0 }
{OptionDocInfo "controls/logical-controls/buttons.scurl" 55117 "any" 0  715 {text {purpose
        Determines the vertical alignment of the small circle displayed on
        the left side of the {docref RadioButton} with the button's label.
    }
    {usage
        This option is only of interest when the {docref RadioButton}'s
        label is an image, rather than plain text.
    }
    {notes
        {paragraph
            The most useful alignment values are {ctext "center"},
            which aligns the bottom of the small circle with the center
            of the label, and {ctext "origin"}, the default, which aligns
            the circle with the bottom of the label.
        }
        {paragraph
            See {docref Frame.valign} for more information.
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 47433 1175 {text {parameter value, The value of the RadioButton; if true, then the
        RadioButton is shown as selected.
    }
    {parameter radio-value, The value of the {docref RadioFrame} when
        this RadioButton is selected. If neither a {param label} nor a
        {param reactive-label} is given, the label for the radio
        button will be the {param radio-value} converted to a {docref
        Visual}.
    }
    {parameter label, 
        The initial value of the {docref RadioButton.label} property.
    }
    {parameter reactive-label, 
        The initial value of the {docref RadioButton.reactive-label} property.
    }
    {parameter style, 
        The initial value of the {docref RadioButton.style} property.
        Default is {ctext RadioButtonStyle.standard}.
    }
    {parameter text-breakable?, 
        By default the label will not break across lines.
    }
    {parameter valign, 
        The alignment of the Graphic with the label;
        useful values are currently {ctext origin} and {ctext center}.
    }
    {parameter ui-object, The UI delegate that handles drawing and events.}
    {parameter ..., event handlers and option settings.}
  } 244 value:bool = false, radio-value:any = null, label:#Label = null, reactive-label:#ReactiveLabel = null, style:RadioButtonStyle = RadioButtonStyle.standard, text-breakable?:bool = false, valign:any = "origin", ui-object:#RadioButtonUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/tree-control-ui.scurl" 5139 14 {unadvertised} "TreeControlUI"$""}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 5213 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/undo-helpers.scurl" 6306 14 {unadvertised} "StringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 6427 14 {unadvertised} "#String" 0 }
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 6385 14 {unadvertised} "#String" 0 }
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 7219 14 {unadvertised} 69 index:int, undo-str:#String, redo-str:#String, has-value?:bool = true ""}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 7009 14 {unadvertised} 29 control:StringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 6513 14 {unadvertised} 29 control:StringBaseTextControl "void"}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 6469 14 {unadvertised} "bool" 0 }
{ClassDocInfo "controls/logical-controls/record-grid-ui.scurl" 16978 14 {unadvertised} "RecordGridUI"$""}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18139 2 "" 20 forward?:bool = true "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 18983 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18517 2 "" 10 e:GuiEvent "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 18295 2 "" "#ActiveTraversor"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18055 2 "" 18 at:ActiveTraversor "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18637 2 "" 46 start-index:int, end-index:int, delta:Distance "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 18896 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17798 2 "" 41 row-index:int = -1, column-index:int = -1 "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17117 2 "" 22 x:Distance, y:Distance "(cell:#RecordGridCell,
                         record-index:int,
                         column-index:int
                        )"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18221 2 "" 18 at:ActiveTraversor "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 18366 2 "" "#ActiveTraversor"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18430 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17420 2 "" 38 record:Record, column:RecordGridColumn "#RecordGridCell"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17608 2 "" 34 record-index:int, column-index:int "#RecordGridCell"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 18588 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17973 2 "" 18 at:ActiveTraversor "void"}
{AccessorDocInfo "controls/logical-controls/record-grid-ui.scurl" 18839 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid-ui.scurl" 17050 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 74808 615 {text {purpose
        Pixmap-based icon to be used by {docref DefaultTreeItem}.
    }
    {details 
        This class displays its default pixmap when its associated node is
        a leaf node.  This class also provides two optional pixmaps to specify
        alternate displays for when the associated node has children and for
        when it has children and is expanded.
 
        The default {ctext horigin} and {ctext vorigin} values for
        this object are "center".  See {ctext DefaultTreeItem}
        for information on the importance of the alignment and origin
        of this object. 
    }   
} "Fill, DefaultTreeIcon"$""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 79302 2 "" 51 lc:LayoutContext, ascent:Distance, descent:Distance "Dimension"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 77297 2 "" "#Pixmap"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 78133 2 "" 21 renderer2d:Renderer2d "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 77500 14 {unadvertised} "int"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 74891 14 {unadvertised} "Pixmap" 0 }
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 76140 2 "" "Pixmap"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 77811 14 {unadvertised} "int"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 74922 14 {unadvertised} "#Pixmap" 4 null}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 78918 2 "" 16 lc:LayoutContext "Dimension"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 77195 383 {text {purpose
        {docref Pixmap} to be displayed for this icon
        if its associated node has children and is
        expanded.
    }
    {details
        If {ctext null}, {docref DefaultPixmapTreeIcon.parent-pixmap} 
        will be displayed instead. If {ctext parent-pixmap} is also
        {ctext null} {docref DefaultPixmapTreeIcon.pixmap} will be displayed.
    }
  } "#Pixmap"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 76543 240 {text {purpose
       {docref Pixmap} to be displayed for this icon
        if its associated node has children.
    }
    {details
        If {ctext null}, {docref DefaultPixmapTreeIcon.pixmap} will be 
        displayed instead.
    }
  } "#Pixmap"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 78770 2 "" 16 lc:LayoutContext "Dimension"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 76072 87 {text {purpose
        Default {docref Pixmap} to be displayed for this item.
    }
  } "Pixmap"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 79068 2 "" 52 lc:LayoutContext, lextent:Distance, rextent:Distance "Dimension"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 74968 14 {unadvertised} "#Pixmap" 4 null}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 76626 2 "" "#Pixmap"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 75496 460 {text {purpose Construct this object.}
    {parameter pixmap, 
        initial value for {docref DefaultPixmapTreeIcon.pixmap}.
    }
    {parameter parent-pixmap, 
        initial value for {docref DefaultPixmapTreeIcon.parent-pixmap}.
    }
    {parameter expanded-parent-pixmap, 
        initial value for {docref DefaultPixmapTreeIcon.expanded-parent-pixmap}.
    }
    {parameter 
        ..., option settings and event handlers for this object.
    }
  } 87 pixmap:Pixmap, parent-pixmap:#Pixmap = null, expanded-parent-pixmap:#Pixmap = null, ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 231297 14 {unadvertised} "ReactiveLabel"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 232181 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 231473 14 {unadvertised} "Url" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 231513 14 {unadvertised} "Url" 0 }
{ClassVariableDocInfo "controls/logical-controls/record-grid.scurl" 231365 14 {unadvertised} "String" 51 "curl://install/curl-resources/default/images/rsd-"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 232013 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 231559 14 {unadvertised} 19 command-name:String ""}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 9405 127 {text {purpose
        The base UI object for both {docref DropdownList}
        and {docref ComboBox}.
    }
    {since 7.0}
} ""$"ComboBoxUI, DropdownListUI"}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 10441 523 {text {purpose
        The desired height of the dropdown.
    }
    {details
        This property is a convenience getter and returns the
        value of {docref BaseComboBox.dropdown-height} for the
        associated control.
    }
    {revisions
        The setter for this property has been removed in Curl
        4.0.  Subclasses or applications that were using this property
        should set the {ctext BaseComboBox.dropdown-height} property 
        on the associated control instead.
    }
    {since 7.0}
  } "Distance"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 9754 162 {text {purpose
        Indicates that the {docref BaseComboBox}'s items have changed.
    }
    {parameter items,
        The new items.
    }
    {since 7.0}
  } 28 items:{Iterator-of ListItem} "void"}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 10607 95 {text {purpose
        The {docref MenuPane} associated with this UI.
    }
    {since 7.0}
  } "#MenuPane"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 9544 73 {text {purpose
        Instantiate this object.
    }
    {since 7.0}
  } 0  ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 5433 862 {text {purpose 
        Enumerates the built-in visual styles for {docref CommandButton}.
    }
    {details
        Legal values are:
        {itemize
            {item {ctext standard}:  Looks like a traditional push button,
                with the visuals specified by the look-and-feel always
                visible around the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than a 
                focus rectangle to indicate when the button has focus.
            }
            {item {ctext rollover}:  The usual button visuals are only
                shown when the mouse pointer is over the button; otherwise,
                only the label appropriate to the button's current state
                is shown.
            }
        }
    }
} 34 standard=0 label-only=1 rollover=2}
{ProcDocInfo "controls/logical-controls/shared.scurl" 83 14 {unadvertised} 10 halign:any "any"}
{EnumDocInfo "controls/logical-controls/buttons.scurl" 69196 14 {unadvertised} 90 normal rollover pressed disabled checked rollover-checked pressed-checked disabled-checked}
{ClassDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 278 14 {unadvertised} "{UndoItem-of
        RichTextString,
        RichTextStringDataModel,
        RichTextStringDataModelWritableRange
    }"$""}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 476 2 "" 103 delete-size:int, insert-str:#StringInterface, control:RichTextStringBaseTextControl, redo?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 2430 2 "" 27 message:SetAttributeMessage "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 2509 14 {unadvertised} 48 index:int, control:RichTextStringBaseTextControl "int"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 1424 2 "" 102 delete-size:int, insert-str:#RichTextString, control:RichTextStringBaseTextControl, redo?:bool = false "void"}
{ClassDocInfo "controls/logical-controls/calendar-control-ui.scurl" 452 360 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref CalendarControl} control.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"GenericCalendarControlUI"}
{AccessorDocInfo "controls/logical-controls/calendar-control-ui.scurl" 1433 204 {text {purpose 
        Returns the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "CalendarControl"}
{MethodDocInfo "controls/logical-controls/calendar-control-ui.scurl" 1156 284 {text {purpose
        Notifies the UI that {docref CalendarControl.holidays} or its
        contents have changed.
    }
    {override
        The subclasses of {docref CalendarControlUI} should override
        this method to take necessary steps to show the new holidays.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/calendar-control-ui.scurl" 756 206 {text {purpose
        Construct a new {ctext CalendarControlUI}.
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI
        delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/date-field-ui.scurl" 446 354 {text {purpose
        This abstract class defines the API for the UI delegate for a
        {docref DateField} control.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"StandardDateFieldUI, SkinnableDateFieldUI"}
{MethodDocInfo "controls/logical-controls/date-field-ui.scurl" 738 200 {text {purpose
        Construct a new {ctext DateFieldUI}.
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI
        delegate is derived from.
    }
  } 3 ... ""}
{MethodDocInfo "controls/logical-controls/date-field-ui.scurl" 1848 232 {text {purpose
        Opens the attached {docref CalendarControl}, if possible.
    }
    {override
        By default, does nothing. Override to support a calendar
        that can toggle open and closed.
    }
    {since 7.0}
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/date-field-ui.scurl" 1538 379 {text {purpose
        The object that should request key focus when the {docref
        DateField} associated with this {docref DateFieldUI}
        becomes active.
    }
    {override
        By default it returns {ctext self}. Override this method to
        specify a different focus object of the {ctext DateField}
        associated with this {ctext DateFieldUI}.
    }
  } "Visual"}
{MethodDocInfo "controls/logical-controls/date-field-ui.scurl" 2138 232 {text {purpose
        Hides the attached {docref CalendarControl}, if possible.
    }
    {override
        By default, does nothing. Override to support a calendar
        that can toggle open and closed.
    }
    {since 7.0}
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/date-field-ui.scurl" 1058 204 {text {purpose 
        Returns the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "DateField"}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 2789 93 {text {purpose 
        A superclass for {docref TextField} user interface delegates.
    }
} "BaseTextFieldUI"$"StandardTextFieldUI, SkinnableTextFieldUI"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 3006 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/DateDataModel.scurl" 591 464 {text {purpose
        Represents a {docref DateTime} as a data model to represent a
        date.
    }
    {notes
        The {docref DateDataModel.value}, {docref
        DateDataModel.min-value} and {docref DateDataModel.max-value}
        will only have date information and all the time information
        will be set to {ctext 0} and the time zone will be set to
        {docref DateTimeZone.utc}. 

        See also {docref DateTime.date#factory}.
    }
} "Observable"$""}
{FieldDocInfo "controls/logical-controls/DateDataModel.scurl" 659 14 {unadvertised} "DateTime" 0 }
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 8006 278 {text {purpose
        Forces {docref DateDataModel.value} to {ctext null}.
    }
    {notes
        The observers of {ctext DateDataModel} are sent a {docref
        DateDataModelMessage} when the state of the {docref
        DateDataModel} changes from set to unset.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 8395 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 6728 394 {text {purpose
        The value of the {docref DateDataModel}.
    }
    {notes
        If non-{ctext null} the value will be forced between the
        {docref DateDataModel.min-value} and the {docref
        DateDataModel.max-value}.

        The observers of {ctext DateDataModel} are sent a {docref
        DateDataModelMessage} when {docref DateDataModel.value}
        changes.
    }
  } "#DateTime"}
{FieldDocInfo "controls/logical-controls/DateDataModel.scurl" 764 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 6797 2 "" "#DateTime"}
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 4670 2 "" "DateTime"}
{FieldDocInfo "controls/logical-controls/DateDataModel.scurl" 731 14 {unadvertised} "#DateTime" 0 }
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 9175 462 {text {purpose
        Compares two dates.
    }
    {parameter date1, date2,
        The two {docref DateTime} to compare.
    }
    {return-vals
        Returns 0 if {param date1} and {param date2} and equal. If
        {param date1} is less than {param date2} it returns -1 else it
        returns 1.
    }
    {notes
        The comparison algorithm compares the day, month and year and
        ignores the time information of the {ctext DateTime}.
    }
  } 30 date1:DateTime, date2:DateTime "int"}
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 4594 609 {text {purpose
        Lower limit of the {docref DateDataModel}.
    }
    {notes
        Any {docref Time} related information in {param min-value}
        will be ignored and the time zone will be set to {docref
        DateTimeZone.utc}.

        An error will be thrown if the {ctext min-value} is set to be
        greater than the {docref DateDataModel.max-value}.

        If {docref DateDataModel.has-value?} is {ctext true} then
        {docref DateDataModel.value} will be adjusted to be between
        the {ctext DateDataModel.min-value} and the {ctext
        DateDataModel.max-value}.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 5762 596 {text {purpose
        Upper limit of the {docref DateDataModel}.
    }
    {notes
        Any {docref Time} related information in {param max-value}
        will be ignored and the time zone will be set to {docref
        DateTimeZone.utc}.

        An error will be thrown if the {param max-value} is less than
        the {docref DateDataModel.min-value}.

        If {docref DateDataModel.has-value?} is {ctext true} then
        {docref DateDataModel.value} will be adjusted to be between
        the {ctext DateDataModel.min-value} and the {ctext
        DateDataModel.max-value}.
    }
  } "DateTime"}
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 3085 603 {text {purpose
        Sets the range of the {docref DateDataModel}.
    }
    {notes
        Any {docref Time} related information in {param min-value} and
        {param max-value} will be ignored and the time zone will be
        set to {docref DateTimeZone.utc}.

        An error will be thrown if the {param min-value} is set to be
        greater than the {param max-value}.

        If {docref DateDataModel.has-value?} then {docref
        DateDataModel.value} will be adjusted to be between the {ctext
        DateDataModel.min-value} and the {ctext
        DateDataModel.max-value}.
    }
  } 38 min-value:DateTime, max-value:DateTime "void"}
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 8318 229 {text {purpose
        Determines if the {docref DateDataModel.value} is valid.
    }
    {notes
        Returns {ctext true} if the {docref DateDataModel.value} is
        non-{ctext null}, else it will be {code fale}.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/DateDataModel.scurl" 695 14 {unadvertised} "DateTime" 0 }
{AccessorDocInfo "controls/logical-controls/DateDataModel.scurl" 5838 2 "" "DateTime"}
{MethodDocInfo "controls/logical-controls/DateDataModel.scurl" 1696 885 {text {purpose
        Creates a new {ctext DateDataModel}.
    }
    {parameter min-value,
        Lower limit of the {ctext DateDataModel}.
    }
    {parameter max-value,
        Upper limit of the {ctext DateDataModel}.
    }
    {parameter value,
        The initial value of the data model.
    }
    {details
        An error will be thrown if the {param min-value} is greater
        than the {param max-value}.

        If {docref DateDataModel.has-value?} is {ctext true} the
        {docref DateDataModel.value} will be adjusted to be between
        the {ctext DateDataModel.min-value} and the {ctext
        DateDataModel.max-value}.

        To compare two {docref DateTime} values use {docref
        DateDataModel.compare} method.
    }
    {notes
        Any time information in {param min-value}, {param max-value}
        and {param value} will be ignored.
    }
  } 55 min-value:DateTime, max-value:DateTime, value:#DateTime ""}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 23521 615 {text {purpose A {docref StringDataModelRange} with movable indices.}
    {details
        Clients of {ctext StringDataModelMovableRange} can observe the
        range to monitor it for changes.  When a range index is
        modified programmatically, a message is sent.  No message is
        sent when the contents of the data model is modified, even if
        the modification changes the contents of the range or causes
        the ranges indices to be updated.  Clients desiring to note
        both types of modification are encourage to observe both the
        range and its underlying data model.
    }
} "StringDataModelRange"$"StringDataModelWritableRange"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 25228 590 {text {purpose
        The range index that does not represents a caret position.
    }
    {details
        This value is distinguished from the {docref-abbr
        StringDataModelRange.point}.  See {docref
        StringDataModelRange} itself for more information.

        If the new value is different from the old value, a message
        will be sent to any {docref Observer}s of this object.

        When setting the {ctext anchor}, values less than zero or
        greater than {docref-abbr
        StringDataModelMovableRange.max-index} will cause an
        exception.
    }
  } "int"}
{ClassProcDocInfo "controls/logical-controls/StringDataModel.scurl" 24350 106 {text {purpose
        Creates a {ctext StringDataModelMovableRange} from another
        range.
    }
  } 26 range:StringDataModelRange "StringDataModelMovableRange"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 27240 164 {text {purpose
        Switches the identity of the {docref-abbr
        StringDataModelRange.anchor} and the {docref
        StringDataModelRange.point}.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 31635 414 {text {purpose
        Moves the {docref-abbr StringDataModelRange.point} to the
        previous index at which a word begins.
    }
    {details
        If the {ctext point} is already at the minimal value (0),
        a {docref StringDataModelRangeBoundaryException} will be
        thrown.

        The definition of a word boundary is left unspecified and is
        subject to change in the future.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 26264 581 {text {purpose
        The range index that represents a caret position.
    }
    {details
        This value is distinguished from the {docref-abbr
        StringDataModelRange.anchor}.  See {docref
        StringDataModelRange} itself for more information.

        If the new value is different from the old value, a message
        will be sent to any {docref Observer}s of this object.

        When setting the {ctext point}, values less than zero or
        greater than {docref-abbr
        StringDataModelMovableRange.max-index} will cause an
        exception.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 32509 142 {text {purpose
        Indicates whether the {docref-abbr StringDataModelRange.point}
        is currently at a word start position.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 27776 111 {text {purpose
        Change the selection to include the entire contents
        of the data model.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 28551 288 {text {purpose
        Moves the point one character forwards.
    }
    {details
        If the {ctext point} is already at the maximal value
        ({docref-abbr StringDataModelMovableRange.max-index}), a {docref
        StringDataModelRangeBoundaryException} will be thrown.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 26988 266 {text {purpose
        The largest legal value that can be used as a range index.
    }
    {details
        This value is the same as
        {ctext {{metavar data-model}.to-String}.size}, and
        represents the position just after the last character.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 36592 470 {text {purpose
        Moves the {docref-abbr StringDataModelRange.point} to the
        next index at which a paragraph begins.
    }
    {details
        If the {ctext point} is already at the maximal value
        ({docref-abbr StringDataModelMovableRange.max-index}), a {docref
        StringDataModelRangeBoundaryException} will be thrown.

        The definition of a paragraph boundary is left unspecified and
        is subject to change in the future.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 29401 282 {text {purpose
        Moves the {docref-abbr StringDataModelRange.point} one
        character backwards.
    }
    {details
        If the {ctext point} is already at the minimal value (0),
        a {docref StringDataModelRangeBoundaryException} will be
        thrown.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 35310 424 {text {purpose
        Moves the {docref-abbr StringDataModelRange.point} to the
        previous index at which a paragraph begins.
    }
    {details
        If the {ctext point} is already at the minimal value (0),
        a {docref StringDataModelRangeBoundaryException} will be
        thrown.

        The definition of a paragraph boundary is left unspecified and
        is subject to change in the future.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 30441 460 {text {purpose
        Moves the {docref-abbr StringDataModelRange.point} to the next
        index at which a word begins.
    }
    {details
        If the {ctext point} is already at the maximal value
        ({docref-abbr StringDataModelMovableRange.max-index}), a {docref
        StringDataModelRangeBoundaryException} will be thrown.

        The definition of a word boundary is left unspecified and is
        subject to change in the future.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 38362 694 {text {purpose
        Expand the bounds of the range such that the indices are at
        paragraph start positions.
    }
    {details
        An index that is not already at a paragraph start position
        will be moved to the previous (for {docref-abbr
        StringDataModelRange.start}) or next (for {docref-abbr
        StringDataModelRange.end}) paragraph start position.

        This method will not move the {docref
        StringDataModelRange.anchor} or {docref-abbr
        StringDataModelRange.point} before the first possible index
        (that is, {code 0}) or after the last possible index (that is,
        {docref-abbr StringDataModelMovableRange.max-index}).
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 37337 147 {text {purpose
        Indicates whether the {docref-abbr StringDataModelRange.point}
        is currently at a paragraph start position.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 33569 662 {text {purpose
        Expand the bounds of the range such that the indices are at
        word boundaries.
    }
    {details
        An index that is not already at a word boundary will be
        moved to the previous (for {docref-abbr
        StringDataModelRange.start}) or next (for {docref-abbr
        StringDataModelRange.end}) word boundary.

        This method will not move the {docref
        StringDataModelRange.anchor} or {docref-abbr
        StringDataModelRange.point} before the first possible index
        (that is, {code 0}) or after the last possible index (that is,
        {docref-abbr StringDataModelMovableRange.max-index}).
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 27541 146 {text {purpose
        Sets the {docref-abbr StringDataModelRange.anchor} to match
        the {docref-abbr StringDataModelRange.point}.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 23997 374 {text {purpose Create this object.}
    {parameter data-model,
       The {docref StringDataModel} whose substring this range
       represents.
    }
    {parameter anchor,
       The {docref-abbr StringDataModelRange.anchor} index for this
       range.
    }
    {parameter point,
       The {docref-abbr StringDataModelRange.point} index for this
       range.
    }
  } 49 data-model:StringDataModel, anchor:int, point:int ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 629 175 {text {purpose
        The color used as the background for the week of year headers
        and for the day of week headings for the {docref
        CalendarControl}.
    }
} 10 Background 22 {Background "#e0e8ff"}}
{ClassDocInfo "controls/logical-controls/progress-bar-ui.scurl" 1145 14 {unadvertised} "ProgressBarUI"$""}
{MethodDocInfo "controls/logical-controls/progress-bar-ui.scurl" 1219 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/selection.scurl" 1196 82 {text {purpose Interface for controls that can only have a single selected item}
} "SelectionControl"$"BaseComboBox"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 1509 76 {text {purpose Returns the currently selected item as a SelectableItem.}
  } "#SelectableItem"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 1369 69 {text {purpose Returns the index of the currently selected item.}
  } "int"}
{VariableDocInfo "controls/logical-controls/undo-helpers.scurl" 1169 14 {unadvertised} 4 Type 103 {BaseTextControl-of
        String,
        StringDataModel,
        StringDataModelWritableRange
    }}
{ClassDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 188 96 {text {purpose 
        A superclass for {docref RichTextArea} user interface delegates.
    }
} "BaseTextControlUI"$"GenericRichTextAreaUI"}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 1451 482 {text {purpose
        Mimic the use of a formatting panel control for visual testing
        purposes.
    }
    {parameter test-attribute,
        The visual testing name of the attribute to set.
    }
    {parameter test-value,
        The value of the attribute to set.
    }
    {details
        The {param test-attribute} and {param text-value} parameters
        are interpreted as described in the {docref RichTextArea}
        class documentation.
    }
    {since 7.0}
  } 40 test-attribute:String, test-value:String "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 768 282 {text {purpose
        Mimic typing text for visual testing purposes.
    }
    {parameter value,
        The {docref String} to insert.
    }
    {parameter index,
        The index in the {docref StringDataModel} at which to insert
        {param value}.
    }
    {since 7.0}
  } 23 value:String, index:int "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area-ui.scurl" 408 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 1063 153 {text {purpose 
        Signal that the {docref TreeControl.current-node}
        property in a {docref TreeControl} has changed.
    }
    {since 4.0}
} "GuiEvent"$""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 1188 42 {text {purpose Construct this object.}
  } 0  ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 3425 14 {unadvertised} 60 dc:DisplayContext, font:Font, ch:char, width-so-far:Distance "FloatDistance"}
{ClassDocInfo "controls/logical-controls/tree-control-ui.scurl" 1425 1333 {text {purpose 
        A superclass for {docref TreeControl} user interface delegates.
    }
    {details
        Instances of this class are informed of specific changes to
        the control's state by the following methods.
        
        {itemize
            {item
                {docref TreeControlUI.note-tree-model-change}. 
                Inform this object of changes to the 
                control's {docref TreeControl.data-model}.
            }
            {item
                {docref TreeControlUI.note-expansion-toggled}.
                Inform this object of changes to the expansion
                state of one or more of its nodes.
            }
            {item
                {docref TreeControlUI.note-selection-changed}. 
                Inform this object of changes to the 
                {docref TreeControl.selection} property.
            }
            {item
                {docref TreeControlUI.note-current-node-changed}. 
                Inform this object of changes to the 
                {docref TreeControl.current-node} property.
            }
            {item
                {docref TreeControlUI.react-to-state-change}.
                Inform this object of all other changes to the
                control properties, such as graphical options.
            }
        }
    }   
} "Frame, ControlUI"$"StandardTreeControlUI, SkinnableTreeControlUI"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 2560 305 {text {purpose 
        Notify this object of a change to its 
        control's {docref TreeModel}.
    }
    {parameter
        change, {docref TreeModelChange}.
    }
    {details 
        Designed for use by subclasses of {docref TreeControl}.
        Not typically called by applications.  
    }
  } 22 change:TreeModelChange "void"}
{FieldDocInfo "controls/logical-controls/tree-control-ui.scurl" 1967 447 {text {purpose
        Indicates whether the {docref TreeControlUI} currently has the
        keyboard focus.
    }
    {details
        This value is set automatically by {docref
        TreeControlUI.on-focus-in} and {docref TreeControlUI.on-focus-out}.
        
        Subclasses and applications typically should {bold not}
        set this value explicitly.
    }
    {deprecated
        Use {docref Visual.has-key-focus?} instead.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 4171 529 {text {purpose 
        Notify this object that its control has expanded or
        contracted {param node}.
    }
    {details
        This may include changes to the expansion state of 
        the descendants of {param node}.
        
        If {param node} is {ctext null}, all {ctext TreeNode}s in the
        model should be considered to have potentially been
        expanded or contracted.
        
        Designed for use by subclasses of {docref TreeControl}.
        Not typically called by applications. 
    }
  } 21 node:#TreeNode = null "void"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 3144 495 {text {purpose 
        Notify this object of a change to its 
        control's {docref TreeControl.current-node} property.
    }
    {parameter
        previous, {docref TreeNode} if any, which is no longer the
        {ctext current-node}.
    }
    {parameter
        updated, {docref TreeNode} if any, which is now the
        {ctext current-node}.
    }
    {details 
        Designed for use by subclasses of {docref TreeControl}.
        Not typically called by applications.  
    }
  } 37 previous:#TreeNode, updated:#TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 4431 2 "" 9 e:FocusIn "void"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 4882 217 {text {purpose
        Returns the {docref String} representation of the label for
        a displayed {docref TreeNode}.
    }
    {parameter node,
        The {docref TreeNode} of interest.
    }
    {since 7.0}
  } 13 node:TreeNode "String"}
{AccessorDocInfo "controls/logical-controls/tree-control-ui.scurl" 4248 2 "" "Control"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 3572 240 {text {purpose 
        Notify this object of a change to its control's
        {ctext selection}.
    }
    {details 
        Designed for use by subclasses of {docref TreeControl}.
        Not typically called by applications.  
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 4540 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/tree-control-ui.scurl" 2126 110 {text {purpose Construct this object.}
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 5998 14 {unadvertised} 124 dc:DisplayContext, font:Font, index:int, string:StringInterface, start-index:int = 0, length:int = string.size - start-index "FloatDistance"}
{ProcDocInfo "controls/logical-controls/menu-pane.scurl" 15230 4094 {text {purpose 
        Specify a context popup menu.
    }
    {parameter menu-pane, 
        the {docref MenuPane} to pop up.
    }
    {parameter menu-pane-proc, 
        a procedure to call to obtain the {docref MenuPane} to pop up.
        The argument to this procedure is the {docref Graphic} to
        which this context menu is attached.
    }
    {return-vals 
        an {docref EventHandler} suitable for use in the argument list
        when a {docref Graphic} is constructed or for use as an
        argument to {docref Graphic.add-event-handler}.
    }
    {notes
        If a {docref context-popup} event handler has been added to a
        {docref Graphic}, the specified {docref MenuPane} pops up when
        the user right-clicks on the {docref Graphic}.

        If {metavar menu-pane} is specified, it pops up every time.  

        If {metavar menu-pane-proc} is supplied, then every time the
        user right-clicks on the {docref Graphic}, {metavar
        menu-pane-proc} is called with the {docref Graphic} as its
        argument, and the resulting {docref MenuPane} is popped up.
    }
    {for-example
        In the following example, the left-hand {docref
        RectangleGraphic} has a context popup menu using the {ctext
        menu-pane} keyword argument.  The right-hand {docref
        RectangleGraphic} uses a {ctext menu-pane-proc} so that the
        text of its context popup menu varies according to whether the
        two {docref RectangleGraphic}s have the same fill color.

        {example
            {value
                let rect1:RectangleGraphic =
                    {RectangleGraphic
                        width = 1in, height = 0.5in,
                        {context-popup
                            menu-pane =
                                {MenuPane
                                    {MenuAction
                                        label = "Blue Fill",
                                        {on Action do
                                            set rect1.fill-color = "blue"
                                        }
                                    },
                                    {MenuAction
                                        label = "Red Fill",
                                        {on Action do
                                            set rect1.fill-color = "red"
                                        }
                                    }
                                }
                        }
                    }
                let rect2:RectangleGraphic =
                    {RectangleGraphic
                        width = 1in, height = 0.5in,
                        {context-popup
                            menu-pane-proc=
                            {proc {r:Visual}:MenuPane
                                let mpane:MenuPane =
                                    {MenuPane
                                        {MenuAction
                                            label="Blue Fill",
                                            {on Action do
                                                set rect2.fill-color =
                                                    "blue"
                                            }
                                        }
                                    }
                                {if rect1.fill-color != rect2.fill-color then 
                                    {mpane.add
                                        {MenuAction
                                            label = "Same as rect1",
                                            {on Action do
                                                set rect2.fill-color = rect1.fill-color
                                            }
                                        }
                                    }
                                }
                                {return mpane}
                            }
                        }
                    }
                {HBox spacing = 6pt, rect1, rect2}
            }
        }
    }
} 80 menu-pane:#MenuPane = null, menu-pane-proc:#{proc-type {Visual}:MenuPane} = null "EventHandler"}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 9471 8238 {text {purpose 
        Present a navigable view of hierarchical data.
    }
    {details
        {ctext TreeControl} displays the hierarchical data in its
        {docref TreeControl.data-model}.
        
        Nodes may be expanded and collapsed by using the keyboard and pointer, 
        as well as programmatically. The expansion state of the control is 
        maintained in the {docref TreeControl.expanded-nodes} collection, and 
        may be manipulated using the methods {docref TreeControl.expand-node}
        and {docref TreeControl.collapse-node}.
        
        {ctext TreeControl} also allows the selection of its displayed nodes. 
        The currently selected nodes are maintained in the 
        {docref TreeControl.selection} collection, and may be manipulated 
        using the methods {docref TreeControl.select-nodes} and
        {docref TreeControl.deselect-nodes}.
        
        Nodes are formatted using {docref TreeItem}s. 
        {docref TreeControl.tree-item-creation-proc} should be used to 
        determine the type of {ctext TreeItem} which will be created for each
        node.  The default value of this proc produces a 
        {docref DefaultTreeItem} which will display any node by simply casting 
        its {docref TreeNode.node-label} to a {ctext Graphic} if necessary.
        Note that {ctext DefaultTreeItem} also provides built-in support for 
        the display of icons for each node.
        
        The overall formatting of the control can be manipulated through the 
        use of properties such as {docref TreeControl.display-root?}, 
        {docref TreeControl.indentation}, 
        {docref TreeControl.display-toggle-buttons?}, 
        {docref TreeControl.tree-connector-width} and
        {docref tree-connector-color} as well as standard 
        graphical options.  More extensive formatting changes will require 
        providing a custom {docref TreeControlUI}.
        
        The behavior of the control can be manipulated using the 
        {docref TreeControl.takes-focus?} and
        {docref TreeControl.selection-policy} properties.  More extensive 
        behavioral changes will require providing a custom
        {docref TreeControlUI}.
        
        {docref TreeControl.walk-nodes}, {docref TreeControl.next-node}, and 
        {docref TreeControl.previous-node} provide a useful API for traversing
        the contents of this control.
    }
    {expected-events
        {itemize
            {item
                {docref CurrentNodeChanged}: Indicates a change to the 
                {docref TreeControl.current-node} property.  
                {ctext current-node} indicates the location of keyboard focus 
                within the tree.
            }
            {item
                {docref SelectionChanged}: Indicates a change to the 
                {docref TreeControl.selection} collection.
            }
            {item
                {docref Action}: Fired when the user double-clicks on a node 
                or when the control has the key focus and the user presses 
                the Enter key.
            }
        }
    }
    {revisions
        This class replaces an older class of the same name. For
        backwards compatibility, the classes associated with the old
        tree control {ctext BaseTreeNode}, {ctext TreeNode}, {ctext
        TreeControl}, and the enum {ctext TreeNodeState} are available
        from the package CURL.GUI.OLD.  To use the older classes in a
        version 4.0 applet, import with override = true, as in the
        following example:

        {ctext {import * from CURL.GUI.OLD, override? = true}}
    }
    {visual-testing
        This class implements the {ctext CurlTree} visual test
        type.

        For this object's visual test actions, the {ctext path}
        argument specifies a sub-object by referencing a set of items
        separated by ';'.  Each item can be referenced by name or
        index.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Activate
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Activates a node in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    AddRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}
                    {param to}:{docref String}
                }
                {cell
                    Adds the nodes from {param from} to {param to} to the set
                    of selected nodes.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Collapse
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Collapses a node in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Deselect
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Deselects a node in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DeselectRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}
                    {param to}:{docref String}
                }
                {cell Deselects a range of notes in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Expand
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Expands a node in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    ExtendRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Adds the {param path} node to the set of selected nodes.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell Selects a node in the tree.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SelectRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}
                    {param to}:{docref String}
                }
                {cell Selects a range of nodes in the tree.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "TreeControl",
        "TreeControl/toggle", and "SkinnableTreeCell". See {link href =
            {url
                "curl://install/docs/en/dguide/styled-controls.curl#skinning-tree-controls"
            }, Skinning Tree Controls} for more information.
    }
} "SelectionContext, MultiUIControlFrame, Observer"$""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 24558 1087 {text {purpose 
        Executes a depth-first traversal of a portion of the 
        {docref TreeModel} associated with this control.
    }
    {parameter
        action, proc to be applied to each node.  If this 
        proc returns {ctext true} for any node, the traversal
        will be halted.
    }
    {parameter 
        root, {docref TreeNode} which is the root of the 
        sub-tree to be traversed. The default value is
        the root of the {docref TreeControl.data-model}.
        If {ctext null} this method will do nothing.
    }
    {parameter
        enter-collapsed-nodes?, {ctext bool}. If {ctext false} (default) 
        then the traversal will not recurse into descendants of collapsed nodes.
        Note that {param root} will always be traversed, and the expansion state
        of the ancestors of the {param root} will have no effect on the traversal.
    }   
    {return-vals
        {ctext TreeNode} on which the traversal was halted, or {ctext null}
        if all nodes were visited.
    }
    {override 
        Not typically overridden.
    }
  } 110 action:{proc-type {TreeNode}:bool}, root:#TreeNode = self.data-model.root, enter-collapsed-nodes?:bool = false "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 35035 2 "" "TreeSelection"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 29107 316 {text {purpose 
        Access the last node in the data model given
        the current expansion state of this control.
    }
    {parameter 
        skip-hidden-nodes?, {ctext bool}.  If {ctext true}
        (default) then nodes which are "hidden" within 
        collapsed nodes will not be considered.
    }
  } 30 skip-hidden-nodes?:bool = true "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 35800 14 {unadvertised} 13 node:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 30516 978 {text {purpose Select one or more {docref TreeNode}s.}
    {parameter
        additive?,  {ctext bool}.  If {ctext true} the
        specified nodes should be added to the previously 
        selected nodes.  If {ctext false} the previously
        selected nodes should be replaced.
    }
    {parameter
        ..., one or more {ctext TreeNode}s to be selected.  If
        any of the nodes are not contained in this control's 
        {docref TreeControl.data-model} an error will be thrown.
    }
    {details
        An error will be thrown if the arguments to this method
        conflict with the {docref TreeControl.selection-policy}
        of the control.  However, if nodes specified in the argument
        list are already selected, no action will be taken on them.

        See {docref TreeControl.selection}.  Also see
        {docref TreeControl.deselect-nodes},
        {docref TreeControl.select-all} and 
        {docref TreeControl.select-nothing}.
    }
  } 36 additive?:bool = false, ...:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 44589 14 {unadvertised} 13 node:TreeNode "String"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 9817 14 {unadvertised} "#TreeNode" 4 null}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 21958 940 {text {purpose 
        Collapse a {docref TreeNode} so that its children are
        no longer displayed within the control.
    }
     {parameter
        node, {ctext TreeNode} to be collapsed.  If not contained in
        this control's {docref TreeControl.data-model} an error is 
        thrown.
    }
    {parameter
        collapse-ancestors?, {ctext bool}.  Should all 
        ancestors of {param node} be collapsed as well?
    }
    {parameter
        collapse-descendants?, {ctext bool}. Should all 
        descendants of {param node} be collapsed as well?
    }
    {details
        Any node to be collapsed by this call which
        is already collapsed will be ignored.
    }
    {notes 
        If {docref TreeControl.display-root?} is {ctext false}
        the root of the data model is always explicitly expanded.
        In this case, attempts to collapse the root via this method
        will have no effect.
    }
  } 83 node:TreeNode, collapse-ancestors?:bool = false, collapse-descendants?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 36262 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 35467 14 {unadvertised} 13 node:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 27697 570 {text {purpose 
        Access the previous node in the data model given
        the current expansion state of this control.
    }
    {parameter 
        node, {docref TreeNode}.  Starting node.
        If not contained in this control's 
        {docref TreeControl.data-model} an error will be thrown.
    }
    {parameter 
        skip-hidden-nodes?, {ctext bool}.  If {ctext true} (default)
        then nodes which are "hidden" within collapsed nodes
        will not be traversed.
    }
    {details
        This method uses preorder traversal order.
    }  
  } 45 node:TreeNode, skip-hidden-nodes?:bool = true "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 16950 2 "" "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 37718 14 {unadvertised} 21 node:#TreeNode = null "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 37952 14 {unadvertised} 13 node:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 39475 2 "" 29 action:String, args:FastArray "any"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 35119 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 33028 435 {text {purpose 
        Remove nodes from the current selection.
    }  
    {parameter
        ..., the {ctext TreeNode}s to be removed from the selection. 
        If any of the nodes are not contained in this control's 
        {docref TreeControl.data-model} an error will be thrown.
    }
    {details
        If nodes specified in the argument list were not
        previously selected, no action will be taken on them.
    }
  } 12 ...:TreeNode "void"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 13829 2 "" "String"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 35317 14 {unadvertised} 13 node:TreeNode "bool"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 12430 2 "" "SelectionPolicy"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 31902 182 {text {purpose Select all displayed nodes.}
    {details
        An error will be thrown if {docref TreeControl.selection-policy}
        does not allow multiple selection.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 33396 2 "" 30 sender:Observable, message:any "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 37516 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 34710 2 "" 0  "ControlUI"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 11419 "bool" 4 true 318 {text {purpose Display toggle buttons for expanding or contracting nodes?}
    {details 
        If {ctext true}, buttons should be placed next to
        nodes to allow expansion or contraction of the node.
        
        The form of these buttons may vary depending on the
        {docref TreeControlUI}.
    }
  }}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 34431 2 "" 11 name:String "#Command"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 42527 14 {unadvertised} 11 path:String "#TreeNode"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 10679 "bool" 4 true 690 {text {purpose 
        Should the root node of the data model 
        be displayed?
    }
    {details
        If {ctext false} the children of the root will
        be the first level of the tree to be displayed.
        If this value is {ctext false}, it is an error 
        to select or contract the root node, or set
        the root node to be the {docref TreeControl.current-node}.

        Note that if this property is set to {ctext false}
        the root will be expanded if it is not already expanded,
        and the object will maintain the root as expanded.
        See {docref TreeControl.expanded-nodes} and 
        {docref TreeControl.collapse-node}.
        
    }
  }}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 13374 559 {text {purpose 
        Procedure for creating a graphical {docref TreeItem} for displaying
        a {docref TreeNode}.
    }
    {details
        This procedure is used by the {docref TreeControlUI} to create a
        {docref TreeItem} appropriate for use in displaying a particular
        {docref TreeNode}.  

        This property may be optionally specified in the constructor of the 
        control.  The default value is
        {docref TreeControl.default-tree-item-creation-proc} which simply
        creates a {docref DefaultTreeItem}.
    }
  } "{proc-type {TreeNode}:TreeItem}" 0 }
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 39053 14 {unadvertised} 32 s:{Set-of TreeNode}, tn:TreeNode "bool"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 38741 14 {unadvertised} 13 node:TreeNode "#TreeNode"}
{ClassVariableDocInfo "controls/logical-controls/tree-control.scurl" 9614 14 {unadvertised} "{Set-of TreeNode}" 19 {{Set-of TreeNode}}}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 39223 14 {unadvertised} 32 s:{Set-of TreeNode}, tn:TreeNode "bool"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 9902 14 {unadvertised} "{Set-of TreeNode}" 19 {{Set-of TreeNode}}}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 18578 2 "" "{Set-of TreeNode}"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 45027 14 {unadvertised} 26 from:TreeNode, to:TreeNode "{Array-of TreeNode}"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 34968 2 "" "Graphic"}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 11708 "any" 3 1px 174 {text {purpose 
        Width of the lines connecting the nodes in a {ctext TreeControl}.
    }
    {details
        Set to {ctext 0cm} to hide the connector lines.
    }
  }}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 19618 808 {text {purpose 
        Expand a {docref TreeNode} so that its children are
        displayed within the control.
    }
    {parameter
        node, {ctext TreeNode} to be expanded.  If not contained in
        this control's {docref TreeControl.data-model} an error is 
        thrown.
    }
    {parameter
        expand-ancestors?, {ctext bool}.  Should all 
        ancestors of {param node} be expanded as well?
        Set to {ctext true} to ensure that {param node} is
        actually displayed and not hidden by collapsed 
        ancestors.
    }
    {parameter
        expand-descendants?, {ctext bool}. Should all 
        descendants of {param node} be expanded as well?
    }
    {details
        Any node to be expanded by this call which is already
        expanded will be ignored.
    }
  } 79 node:TreeNode, expand-ancestors?:bool = false, expand-descendants?:bool = false "void"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 9698 14 {unadvertised} "TreeSelection" 15 {TreeSelection}}
{OptionDocInfo "controls/logical-controls/tree-control.scurl" 10925 "any" 6 1.25em 108 {text {purpose 
        The amount of indentation to be applied to
        each level of the tree.
    }
  }}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 9766 14 {unadvertised} "SelectionPolicy" 0 }
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 15559 2 "" "TreeModel"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 39394 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 18483 958 {text {purpose The set of nodes which are currently expanded.}
    {details 
        Do not change the contents of this collection directly.
        To expand or contract individual nodes, consider using
        {docref TreeControl.expand-node} or 
        {docref TreeControl.collapse-node} instead.  To make
        bulk changes to the expansion state, set the value of 
        the property to a new (possibly cloned) collection with
        the new nodes to be expanded.      
        
        Throws an error if set to a collection with a node not
        contained in this control's {docref TreeControl.data-model}.
    }
    {notes
        If {docref TreeControl.display-root?} is {ctext false} the
        root of the data model will always be a member of this set. 
        In this case, if this property is set to a collection not 
        containing the root, the root will be silently added to
        the new collection by this setter.
    }
  } "{Set-of TreeNode}"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 12333 395 {text {purpose The {docref SelectionPolicy} used by this {ctext TreeControl}.}
    {details
        The value of this property determines the selection gestures that
        the {docref TreeControlUI} is expected to support.
        
        Programmatic attempts to select nodes via 
        {docref TreeControl.select-nodes}
        which would violate this policy will yield errors.
    }
  } "SelectionPolicy"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 9864 14 {unadvertised} "TreeModel" 0 }
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 16867 859 {text {purpose The currently focused {docref TreeNode}.}
    {details 
        This is the node where keyboard navigation starts 
        from.  It is typically highlighted in some way
        by the {docref TreeControlUI}.
        
        When this property is changed, a {docref CurrentNodeChanged}
        event will be fired asynchronously on this object,
        
        Setting this property to a non-visible node will expand 
        all of the node's collapsed ancestors in order to make the
        node visible.
       
        This setter throws an error if set to a node not contained
        in this control's {docref TreeControl.data-model}.  This
        setter also throws an error if set to the {ctext root}
        of the control's {docref TreeControl.data-model} when
        {docref TreeControl.display-root?} is {ctext false}.
    }
  } "#TreeNode"}
{ClassVariableDocInfo "controls/logical-controls/tree-control.scurl" 13649 175 {text {purpose 
        Default value for {docref TreeControl.tree-item-creation-proc}.
    }
    {details 
        Produces a cell of type {docref DefaultTreeItem}.
    }
  } "{proc-type {TreeNode}:TreeItem}" 78 {proc {node:TreeNode}:TreeItem
        {return {DefaultTreeItem node}}
      }}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 38249 14 {unadvertised} 29 node:TreeNode, expanded?:bool "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 44730 14 {unadvertised} 17 to-node:#TreeNode "int"}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 15480 118 {text {purpose 
        The {docref TreeModel} containing the data to
        be displayed by this control.
    } 
  } "TreeModel"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 26009 566 {text {purpose 
        Access the next node in the data model given
        the current expansion state of this control.
    }
    {parameter 
        node, {docref TreeNode}.  Starting node.
        If not contained in this control's 
        {docref TreeControl.data-model} an error will be thrown.
    }
    {parameter 
        skip-hidden-nodes?, {ctext bool}.  If {ctext true} (default)
        then nodes which are "hidden" within collapsed nodes will
        not be traversed.
    }
    {details
        This method uses preorder traversal order.
    }  
  } 45 node:TreeNode, skip-hidden-nodes?:bool = true "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 14497 479 {text {purpose Construct this object.}
    {parameter data-model, See {docref TreeControl.data-model}.}
    {parameter 
        tree-item-creation-proc, 
        See {docref TreeControl.tree-item-creation-proc}.
    }
    {parameter selection-policy, See {docref TreeControl.selection-policy}.}
    {parameter
        ui-object,
        The {docref TreeControlUI} that handles drawing and events.
    }
    {parameter ..., may be used for option settings and event handlers.}
  } 234 data-model:TreeModel = {TreeModel}, tree-item-creation-proc:{proc-type {TreeNode}:TreeItem} = TreeControl.default-tree-item-creation-proc, selection-policy:SelectionPolicy = SelectionPolicy.single, ui-object:#TreeControlUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/menu-pane-ui.scurl" 453 361 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref MenuPane}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
    {since 6.0}
} "Frame, ControlUI"$"StandardMenuPaneUI, SkinnableMenuPaneUI"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 3113 606 {text {purpose
        Method called by {docref MenuPane} when a {docref Graphic} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {notes
        This is called by {docref MenuPane.note-item-removed}. It
        should not be called from any other place.
    }
    {override
        The subclasses of {docref MenuPaneUI} should react to it by
        making sure that they remove the {ctext Graphic} that
        corresponds to the {param index}, before it was removed from
        the {ctext MenuPane}.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 3633 441 {text {purpose
        Method called by {docref MenuPane} when {docref
        MenuPane.clear} is called.
    }
    {notes
        This is called by {docref MenuPane.note-items-cleared}. It
        should not be called from any other place.
    }
    {override
        The subclasses of {docref MenuPaneUI} should react to it by
        making sure that they remove all menu items from their user
        interface.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 2430 629 {text {purpose
        Method called by the {docref MenuPane} when a new {docref
        Graphic} is added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {notes
        This is called by {docref MenuPane.note-item-added}. It
        should not be called from any other place.
    }
    {override
        The subclasses of {docref MenuPaneUI} should react to it by
        making sure that they add the newely added {ctext Graphic} in
        their user interface objects. To get the {ctext Graphic} to
        add use {docref MenuPane.get} method.
    }
    {since 6.0}
  } 9 index:int "void"}
{AccessorDocInfo "controls/logical-controls/menu-pane-ui.scurl" 1093 219 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
    {since 6.0}
  } "MenuPane"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 1180 2 "" 10 e:KeyPress "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 1622 276 {text {purpose
        Returns {code true} if the pointer was previously inside the
        {docref MenuPaneUI} and then it moved out.
    }
    {parameter (x, y),
        The coordinate of the pointer with respect to the 
        {ctext MenuPaneUI}.
    }
    {since 6.0}
  } 22 x:Distance, y:Distance "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 758 217 {text {purpose
        Construct a new {ctext MenuPaneUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
    {since 6.0}
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/data-models.scurl" 3410 3155 {text {purpose
        This class, which has no user interface (UI), contains an ordered
        set of values that can be used in controls such as {docref ListBox}.
    }
    {details
        Instances of this class can be used interchangeably as data
        models in any of the {docref ListModelControl} classes.
        Examples of these controls are {docref ListBox},
        {docref ComboBox}, and {docref DropdownList}.

        {ctext ListModel}s contain a set of values and the order in
        which they are to be shown.  When additions or deletions are
        made to the {ctext ListModel}, they automatically appear in the control.
        The selection of one of the values in a control has no effect on the
        {ctext ListModel} that contains it. Each control has one and only one
        {ctext ListModel}, but one {ctext ListModel} can serve many
        controls (or none).

        Many of the methods and properties in {ctext ListModel} are meant
        to resemble those in {docref Sequence-of}.  For instance,
        you can get or set an item at a certain index using subscript
        syntax, e.g. {ctext set model[6] = "blue"}.

        Taken together with the control(s) to which they are connected,
        data models such as {ctext ListModel} constitute a partial
        implementation of the Model-View-Controller (MVC) design pattern.

        Known subclasses:
        {itemize
            {item {docref DefaultListModel}}
            {item {docref ReadOnlyListModel} (which is also abstract)}
        }
    }
    {override
        While this class implements much of what is necessary
        to maintain consistency between the model and the control,
        the means of value storage and access are left up to the
        subclasses.  Concrete subclasses are required to implement
        these methods:
        {itemize
            {item {docref ListModel.get}}
            {item {docref ListModel.size}}
            {item {docref ListModel.to-Iterator}}
            {item {docref ListModel.find}}
            {item {docref ListModel.append-quietly}}
            {item {docref ListModel.insert-quietly}}
            {item {docref ListModel.set-quietly}}
            {item {docref ListModel.clear}}
            {item {docref ListModel.remove}}
        }

        One example of this is the {docref DefaultListModel}
        implementation which calls equivalent methods on
        a privately-held {docref Array}. The operations that edit the model (such as
        {docref ListModel.clear}) also call notification methods
        like {docref ListModel.fire-interval-removed}, which notify
        the control that the model has changed.

        The methods {docref ListModel.append} and
        {docref ListModel.insert} call the subclass-provided
        implementations of {docref ListModel.append-quietly} and
        {docref ListModel.insert-quietly}.
        They do this because the control to which an item has been
        added does not need to be notified of that new item.
        Therefore, the control calls {ctext ListModel.append-quietly}
        to notify all controls except itself.
    }
} ""$"ReadOnlyListModel, DefaultListModel"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 11611 2304 {text {purpose
        Searches the sequence for an element.
    }
    {parameter e,
        is the element for which you want to search.  This
        parameter must have the same data type as the elements
        of {ctext self}.
    }
    {parameter equality-proc,
        is a procedure that compares the elements.  By default,
        this method uses a procedure that uses the equality
        comparison operator ({code ==}).  If you want to
        override the default behavior, assign a procedure to
        this parameter.
        This procedure must take two arguments that have the
        same data type as the elements of {ctext self}.  The
        procedure must return one value; a {ctext bool}
        indicating if the elements are equal.  If
        {param equality-proc} returns {ctext true}, the two
        elements are equal.  If {param equality-proc} returns
        {ctext false}, the two elements are not equal.
    }
    {parameter search-direction,
        is the search direction.  Specify a value of the
        {docref SearchDirection} enumerated type.  Specify
        {ctext SearchDirection.forward} to search from
        left to right.  Specify {ctext SearchDirection.backward}
        to search from right to left.  By default, this method
        searches from left to right.  Specify this parameter if
        you want to change the default behavior.
    }
    {parameter starting-index,
        is an {ctext int} that indicates the index of the element
        from which you want to start searching.  By default,
        this method searches from the first element in the
        sequence (that is, the element at index {code 0}).

        Specify this parameter if you want to change the
        default behavior.  This method throws an error if
        {param starting-index} is outside the range of valid
        indexes for the sequence.
    }
    {return-vals
        An {ctext int} containing the index of the first matching
        element.  If there is no matching element, this method
        returns {code -1}.
    }
    {details
        Searches {ctext self} for the first element that equals
        {param e}.  Returns the index of the first matching
        element.  If there is no matching element, this method
        returns {code -1}.
    }
  } 462 e:any, equality-proc:#{proc-type {any, any}:bool} = null, search-direction:SearchDirection = SearchDirection.forward, starting-index:int = {if search-direction ==
                                           SearchDirection.forward
                                        then
                                           0
                                        else
                                           self.size - 1
                                       } "int"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 4259 203 {text {purpose Inform this model that a control is no longer using it
        as its data model.}
    {usage Called by a {docref ListModelControl} when its data
        models is set to a new model.}
  } 24 control:ListModelControl "void"}
{FieldDocInfo "controls/logical-controls/data-models.scurl" 3558 90 {text {purpose
        The controls that use this ListModel as their data model.
    }
  } "{Array-of ListModelControl}" 33 {new {Array-of ListModelControl}}}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 7485 801 {text {purpose Inform the controls that items have been removed from this model.}
    {usage Called by this model when methods such as {docref ListModel.set}
        are called.  The control should respond by changing each
        {docref ListItem} between the upper and lower bounds to reflect
        the new values given here.}
    {parameter lower, The lowest index of the changed items, inclusive.}
    {parameter upper, The highest index of the changed items, inclusive.}
    {parameter except-for, The control that originally instigated the
        change to the model.  This control will not be notified of the
        change.  If the model's methods were called directly by
        application code, rather than from the control itself, this
        argument can be null or not provided.}
  } 57 lower:int, upper:int, except-for:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 8169 133 {text {purpose Appends the item to the end of the model.}
    {details Implemented by calling {docref ListModel.append-quietly}.}
  } 8 item:any "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 6359 779 {text {purpose Inform the controls that items have been removed from this model.}
    {usage Called by this model when methods such as {docref ListModel.remove}
        and {docref ListModel.clear} are called.  The control should respond
        by removing all the items between the upper and lower bounds.}
    {parameter lower, The lowest index of the removed items, inclusive.}
    {parameter upper, The highest index of the removed items, inclusive.}
    {parameter except-for, The control that originally instigated the
        change to the model.  This control will not be notified of the
        change.  If the model's methods were called directly by
        application code, rather than from the control itself, this
        argument can be null or not provided.}
  } 57 lower:int, upper:int, except-for:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 13241 188 {text {purpose Insert the item into the model, while telling all controls
        except the one given by {ctext source} that they need to update
        themselves with the new item.}
  } 52 item:any, index:int, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 9231 78 {text {purpose Returns an Iterator containing all the items in the model.}
  } 0  "{Iterator-of any}"}
{AccessorDocInfo "controls/logical-controls/data-models.scurl" 9098 61 {text {purpose Returns the number of items in the model.}
  } "int"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 8973 113 {text {purpose Returns the item at the given index.}
    {parameter index, The location of the desired item.}
  } 9 index:int "any"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 8680 138 {text {purpose Sets the item at the given index to the new item.}
    {details Implemented by calling {docref ListModel.set-quietly}.}
  } 19 index:int, item:any "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 3860 178 {text {purpose Inform this model that a control is using it as its
        data model.}
    {usage Called by a {docref ListModelControl} when its data
        models is set.}
  } 24 control:ListModelControl "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 8418 143 {text {purpose Inserts the item into the model at the given index.}
    {details Implemented by calling {docref ListModel.insert-quietly}.}
  } 19 item:any, index:int "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 13609 217 {text {purpose
        Sets the item at the given index to a new item, while telling
        all controls except the one given by {ctext source} that they
        need to update themselves with the new item.
    }
  } 52 index:int, item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 13826 68 {text {purpose
        Removes all the items in the model.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 12912 353 {text {purpose Append the item to the model, while telling all controls
        except the one given by {ctext source} that they need to update
        themselves with the new item.}
    {details Most implementations should call {docref ListModel.fire-interval-added}
        with the {ctext except-for} argument set to the source ListModelControl.}
  } 41 item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 5258 794 {text {purpose Inform the controls that items have been added to this model.}
    {usage Called by this model when methods such as
        {docref ListModel.append-quietly} and {docref ListModel.insert-quietly}
        are called.  The control should respond by adding new
        {docref ListItem}s for each of the new items.}
    {parameter lower, The lowest index of the added items, inclusive.}
    {parameter upper, The highest index of the added items, inclusive.}
    {parameter except-for, The control that originally instigated the
        change to the model.  This control will not be notified of the
        change.  If the model's methods were called directly by
        application code, rather than from the control itself, this
        argument can be null or not provided.}
  } 57 lower:int, upper:int, except-for:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 13952 69 {text {purpose
        Removes the item at the given index.
    }
  } 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{AccessorDocInfo "controls/logical-controls/data-models.scurl" 7958 74 {text {purpose True if the model has no items in it; false otherwise.}
  } "bool"}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 32423 2788 {text {purpose
        Implements a set of mutually-exclusive {docref RadioButton}s,
        visually contained within a {docref BaseFrame}.
    }
    {details
        A RadioFrame presents a one-of-many choice to the user via a
        set of two-state buttons that are mutually exclusive -- when a
        button is clicked on, any previously selected button
        becomes deselected.

        Any {docref RadioButton}s contained in a RadioFrame, even if
        they are nested inside other {docref Visual} objects (except other
        RadioFrames), participate in the RadioFrame.  A RadioFrame
        can physically contain anything a Frame can contain, including
        other containers, spacers, explanatory text, Graphic, etc.

        A typical use of RadioFrame is to put a {docref VBox} inside it,
        and then put a handful of {docref RadioButton}s inside the VBox:

        Note that there is an automatic conversion from a String to
        a {docref Label} which recognizes the ampersand character ('&')
        as a prefix to indicate the mnemonic for the button.

        {example
            {RadioFrame
                {VBox
                    {RadioButton radio-value = "Antelope"},
                    {RadioButton radio-value = "Lizard"},
                    {RadioButton radio-value = "Vulture"}
                },
                value = "Antelope"
            }
        }

        The value of the RadioFrame is the {docref RadioButton.radio-value}
        of the currently-selected {docref RadioButton} (if any).  It is
        possible to have no radio button selected at all, in which case the
        {docref RadioFrame.has-value?} property is false, and the value returned
        by the {docref RadioFrame.value} property should be {docref null}.
    }

    {expected-events
        {event
            ValueChanged, Fired when the user presses and releases any
            {docref RadioButton} contained in the RadioFrame.
        }
        {event
            ValueFinished, Fired when the user presses and releases any
            {docref RadioButton} contained in the RadioFrame,
            after the {docref ValueChanged} event is fired.
        }
        {event
            Commit, Sent by {docref Dialog} when
            {docref Dialog.commit} is called.
        }
    }
    {notes
        A RadioFrame essentially looks and behaves like a {docref Frame}.
        The only difference is its enforcement of mutually-exclusive
        behavior on its contained {docref RadioButton}s.  Because it has
        no visuals independent of its contained {docref RadioButton}s, it
        has no UI delegate object, and no differences between
        look-and-feels.

        This object can be styled by writing style rules for "RadioFrame".
    }
} "{ValueControlFrame-of any}"$""}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 32499 14 {unadvertised} "{Array-of RadioButton}" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 35034 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 34220 187 {text {purpose Indicates whether the user is currently changing the value.}
    {details 
        Always false for a RadioFrame, which changes its value
        instantaneously.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 34768 469 {text {purpose
        This getter determines whether a button in a {ctext RadioFrame}
        is selected.
    }
    {details
        Some uses for this accessor:
        A program could get this value in order to decide
        whether it can or should obtain the control's value.
        A dialog box containing a {ctext RadioFrame} might
        use {ctext RadioFrame.has-value?} when it is committed.
        A Web form might use it when it is submitted.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 38741 14 {unadvertised} 14 rb:RadioButton "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 32562 14 {unadvertised} "#RadioButton" 4 null}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 32678 14 {unadvertised} "any" 4 null}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 40381 347 {text {unadvertised}
    {purpose Add a graphical child to this RadioFrame.}
    {details
        This is needed because RadioFrame is really a {docref BaseFrame},
        not a {docref Frame}.  But we'd like it to look and behave like
        a Frame, rather than making the class's clients call
        {docref BaseFrame.add-internal}.
    }
  } 10 g:any, ... "#Visual"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 39611 14 {unadvertised} 14 rb:RadioButton "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 37302 14 {unadvertised} 15 rb:#RadioButton "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 33927 77 {text {purpose Gets the {docref RadioButton} that is currently selected.}
  } "#RadioButton"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 34949 80 {text {purpose Reset all the RadioButtons in this frame to their off state.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 41050 14 {unadvertised} 20 forward?:bool = true "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 36126 361 {text {purpose
        The value of a {ctext RadioFrame} that is to be submitted when
        the {docref HttpForm} in which this control resides is
        submitted.

        This is {docref RadioFrame.value} converted to {ctext null} or a
        {docref String}. The {docref ValueControl.form-string} procedure is
        used for this conversion.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 35591 2 "" "any"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 36747 512 {text {purpose 
        Sets the value of the RadioFrame, and fires {docref ValueChanged}
        and {docref ValueFinished} events afterwards; effectively simulates a
        user setting the value interactively, without the visuals.
    }
    {parameter val, The value to which to set the RadioFrame.}
    {details 
        This method first sets the control's value with {ctext set}, and
        then fires the events. This will do nothing if the new value is 
        the same as the current value.
    }
  } 7 val:any "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 32782 2 "" "String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 40551 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 40786 98 {text {purpose
        Always return false so that a RadioFrame can never become active.
    }
  } 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 38115 274 {text {purpose 
        Used by a member {docref RadioButton} to inform this frame that it 
        has toggled its value, either programmatically or gesturally.
    }
    {details 
        Note that this method is called, after the buttons value has been toggled.
    }
  } 15 but:RadioButton "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 32724 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 33139 169 {text {purpose Construct this object}
    {parameter value, The value of the RadioFrame, which 
        determines which button, if any, is initially selected.
    }
  } 21 value:any = null, ... ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 192 99 {text {purpose
        A common base class for ui objects of text controls.
    }
    {since 6.0}
} "Frame, ControlUI"$"BaseTextControlUIImpl, BaseTextFieldUI, RichTextAreaUI"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 544 2 "" 18 e:ContextMenuEvent "void"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 355 59 {text {purpose Constructs this object.}
    {since 6.0}
  } 3 ... ""}
{EnumDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 75070 14 {unadvertised} 34 curl-source-fragment html-fragment}
{ClassDocInfo "controls/logical-controls/single-tab-control.scurl" 2768 2676 {text {purpose
        The common base class for tab controls that can have only
        only one {docref TabPane} visible at a given point of
        time.
    }
    {notes
        The user interface delegate for this class is {docref
        SingleTabControlUI}. {ctext SingleTabControlUI} is an abstract
        class. Subclasses implement a particular UI.
    }
    {expected-events
        {event
            CurrentPaneChanged,
            Fired at the {ctext BaseTabControl} when a new pane is shown.
        }
    }
    {visual-testing
        This class implements the {ctext CurlTab} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Close
                }
                {cell font-style = "italic", <none>}
                {cell
                    If the control has the notion of a "current" tab panel and
                    that tab panel has a "close" button, this action has the
                    effect of clicking the button.  There is no effect for
                    other controls.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell
                    Selects the specified tab panel.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell The number of items to select from.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
        }
    }
} "BaseTabControl"$"TabContainer, TabAccordion"}
{FieldDocInfo "controls/logical-controls/single-tab-control.scurl" 2847 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 10351 419 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter pane, {ctext TabPane} to be shown.}
    {return-vals 
        {ctext true} if the {ctext TabPane} was shown
        successfully, otherwise {ctext false}.
    }
    {override 
        This method is not typically overridden.
        Consider overriding the setter 
        {docref SingleTabControl.current-pane-index} instead.
    }
  } 12 pane:TabPane "bool"}
{FieldDocInfo "controls/logical-controls/single-tab-control.scurl" 2892 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 9089 2 "" 12 pane:TabPane "bool"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 12293 14 {unadvertised} "SingleTabControlUI"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 11084 497 {text {purpose
        Show the next {docref TabPane}.
    }
    {parameter 
        cycle?, If {ctext true}, the operation cycles from
        the last {ctext TabPane} back to the first. 
    }
    {return-vals 
        {ctext true} if a new {ctext TabPane} was shown
        successfully, otherwise {ctext false}.
    }
    {override 
        This method is not typically overridden.
        Consider overriding the setter 
        {docref SingleTabControl.current-pane-index} instead.
    }
  } 19 cycle?:bool = false "bool"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 5188 939 {text {purpose 
        The index of the {docref TabPane} that is currently
        showing.
    }
    {details
        The {ctext current-pane-index} is an integer
        between 0 and {ctext self.tab-panes.size - 1}.
        If there are no panes in the container, this property
        will have a value of -1 and cannot be changed.

        An error will be thrown if this property is set to 
        an out of bounds index.
    }
    {notes 
        See also {docref SingleTabControl.current-pane}.
        Setting either of these properties will change them
        both.
    }
    {override
        This setter actually does the bookkeeping of changing
        the internal state of this object, notifying the ui-object
        if needed, and triggering a {docref CurrentPaneChanged} event.
        Therefore, implementations should typically call the super
        implementation to ensure that this bookkeeping occurs.
    }

  } "int"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 9710 515 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter 
        index, The position of the pane to be made {ctext current-pane}.
        The index of the first pane is 0.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and
        shown successfully, otherwise {ctext false}.
    }
    {override 
        This method is not typically overridden.
        Consider overriding the setter 
        {docref SingleTabControl.current-pane-index} instead.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 6386 2 "" 48 pane:TabPane, index:int, show?:bool = pane.show? "bool"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 13426 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 13347 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 7943 818 {text {purpose
        Remove a {docref TabPane} from this container.
    }
    {parameter index, position of {ctext TabPane} to be removed.}
    {details
        If the specified index is within bounds for this 
        {ctext SingleTabControl}, the corresponding {docref TabPane}
        is removed.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and removed
        successfully, otherwise {ctext false}.
    }
    {override
        The default implementation of this method does the actual
        bookkeeping of removing the pane from the 
        {docref BaseTabControl.tab-panes} collection and
        notifying the ui-object if necessary. Therefore
        implementations should be sure to call the super
        implementation to ensure that this bookkeeping occurs.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 11923 497 {text {purpose 
        Show the previous {docref TabPane}.
    }
    {parameter 
        cycle?, If {ctext true}, selection cycles from
        the first {ctext TabPane} back to the last.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was shown
        successfully.
    }
    {override 
        This method is not typically overridden.
        The default implementation of this method simply calls 
        the setter {docref SingleTabControl.current-pane-index}.
    }
  } 19 cycle?:bool = false "bool"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 4009 2 "" "TabPane"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 12547 14 {unadvertised} 9 index:int "void"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 5277 2 "" "int"}
{AccessorDocInfo "controls/logical-controls/single-tab-control.scurl" 3800 849 {text {purpose 
        The {docref TabPane} that is currently showing.
    }
    {details
        This property is one of the {ctext TabPane}s
        in the {docref BaseTabControl.tab-panes} collection.
        If there are no panes in the container, this property
        will have a value of {ctext null} and cannot be
        changed.

        An error will be thrown if this property is set to 
        a pane not present in the container.
    }
    {notes 
        See also {docref SingleTabControl.current-pane-index}.
        Setting either of these properties will change them
        both.
    }
    {override
        This setter should not typically be overridden.
        Its implementation simply calls the setter for 
        {ctext SingleTabControl.current-pane-index}, which
        should typically be overridden instead.
    }
  } "#TabPane"}
{MethodDocInfo "controls/logical-controls/single-tab-control.scurl" 5955 231 {text {purpose
        Initialize a {ctext SingleTabControl}.
    }
    {parameter 
        ui-object, The UI delegate.
    }
    {parameter 
        ..., Option settings, event handlers, or {docref TabPane}s to be added.
    }
  } 41 ui-object:#SingleTabControlUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 4839 14 {unadvertised} "TextDisplayUI"$""}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 4913 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 25440 5607 {text {purpose
        A ListBox is a control that contains a list of items in a
        scrollable box. One or more items may be selected via user interaction
        and then the program can retrieve which items were selected.
    }
    {expected-events
        {event
            ValueChanged, Fired when the user presses the mouse button to start
            changing the value of the control, when the user types a key, or
            when any of the {ctext -with-events} methods are called.
        }
        {event
            ValueFinished, Fired sometime after ValueChanged indicating that the
            user gesture has finished. Fired when the user releases the mouse
            button, or when a key is typed, or when any of the
            {ctext -with-events} methods are called.
        }
        {event
            Action, Fired when the user double-clicks within the control or
            when the {ctext ListBox} has the key focus and the user
            presses the {ctext Enter} key.
        }
    }
    {notes
        A vertical scrollable list of {docref SelectableItem}s which
        may be selected via various user actions, such as
        clicking.

        This object can be styled by writing style rules for
        "ListBox".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-list-controls"
        }, Skinning List Controls} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlList} visual test type.

        Items can be referenced by name or index.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Activate
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Activates an item in the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    AddRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}, {param to}:{docref String}
                }
                {cell
                    Adds items from {param from} to {param to} to the set of
                    selected items.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Deselect
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Deselects an item in the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DeselectRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}, {param to}:{docref String}
                }
                {cell
                    Removes items from {param from} to {param to} from the set
                    of selected items.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    ExtendRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Extends the selection to include the {param item} item.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Selects an item in the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SelectRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param from}:{docref String}, {param to}:{docref String}
                }
                {cell Selects a range of items.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell The number of items to select from.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
        }
    }
} "MultipleSelectionControl, ListModelControl, {MultiUIValueControlFrame-of any}"$""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 39084 2 "" 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 41640 445 {text {purpose 
        Selects the indices returned by the iterator given, and fires
        events.
    }
    {details 
        See {docref MultipleSelectionControl.select-indices-with-events} for 
        more information.
    } 
    {revisions
        The implementation of {ctext ListBox.select-indices-with-events}
        was incorrect prior to release 3.0.6.  Applets that use it 
        should specify 3.0.6+ in their header.
    }
  } 25 indices:{Iterator-of int} "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 26679 14 {unadvertised} "ListBoxStyle" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 35666 2 "" 20 lower:int, upper:int "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 30798 2 "" "any"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 26213 620 {text {purpose 
        {ctext True} while a user is in the process of selecting an item,
        {ctext false} otherwise.
    }
    {details
        The value property is available while {ctext pending-value?}
        is true, but it may be changing rapidly. To be precise,
        {ctext pending-value?} is set to true when a different
        selection is rolled over with the mouse, just before a
        {ctext ValueChanged} event is sent; it is set to false
        when the user releases the mouse on a selection to make it, just
        before a ValueFinished event is sent. This property is read-only.
    }
  } "bool" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 38389 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 49230 14 {unadvertised} 11 desc:String "int"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 26632 354 {text {purpose
        The number of items that are currently selected.
    }
    {details
        This value is updated by 
        {docref ListBox.notify-item-selected}, 
        {docref ListBox.notify-interval-changed}, and 
        {docref ListBox.notify-interval-removed}.

        Subclasses should generally not otherwise set this value.
    }
  } "int" 1 0}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 42790 184 {text {purpose
        Enqueue a {docref ValueChanged} event for this {ctext
        ListBox}.  This event will be delivered after the current
        event has been handled.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 40179 2 "" "int"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 40059 2 "" "{Iterator-of SelectableItem}"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 40780 2 "" 5 i:int "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 34337 940 {text {purpose
        The visual style of the ListBox.
    }
    {details
        This property allows you to set how the
        ListBox behaves and how it is drawn.
        You can set this to the following values:
        {itemize
            {item standard: Looks and behaves like a traditional list control.}
            {item checkbutton: Has either a CheckButton (for multiple selection)
                or a RadioButton (for single selection) at the beginning of
                each list item. This button selects the item when checked.
                It makes the interface much clearer for users, who can tell
                at a glance whether the list is single-selection or multiple.
                The button is physically outside the ListItem, so this doesn't
                affect the generation of ListItems in list-item-creation-proc
                or the creation of them by hand.
            }
        }
    }
  } "ListBoxStyle"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 44010 2 "" 29 action:String, args:FastArray "any"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 38788 2 "" 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 40502 2 "" 5 i:int "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 34409 2 "" "ListBoxStyle"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 26769 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 39686 2 "" "SelectionPolicy"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 29530 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 37711 2 "" 13 item:ListItem "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 34842 2 "" 43 lower:int, upper:int, item:#ListItem = null "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 29732 2 "" 5 a:any "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 32001 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 43317 2 "" 11 name:String "any"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 26715 14 {unadvertised} "SelectionPolicy" 0 }
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 31464 2 "" "ListModel"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 31926 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 41065 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 32585 485 {text {purpose
        The value of a {ctext ListBox} that is to be submitted when
        the {ctext HttpForm} in which this control resides is
        submitted.
    }
    {details
        The return value is {ctext null} if the {ctext ListBox} does
        not have selected items else the return value is an array of
        {docref String} consisting of each selected item converted
        to a {docref String} using the {docref ValueControl.form-string} 
        proc.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 30628 803 {text {purpose
        The value of this control.
    }
    {details 
        Getting this property gives you a newly-created {ctext {Array-of any}}
        containing the values of all the selected items.
        Setting this property to an iterator will select all the values
        in that iterator. Setting it to {ctext {Array-of any}} will select
        each value in this array. Setting it to anything else will attempt
        to select the one item with that value. Note that if you want to
        set a value which happens to be an {ctext {Array-of any}}
        then you should wrap this value in another {ctext {Array-of any}}.

        When setting the value, consider using {docref-abbr
        ListBox.set-value-with-events}, which fires events when the
        value changes.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 33158 158 {text {purpose 
        Sets the value to {param v} and then fires {docref ValueChanged}
        (if appropriate) and {docref ValueFinished} events.
    }
  } 5 v:any "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 43236 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 40386 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 39588 2 "" "SelectionPolicy"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 39947 2 "" "{Iterator-of int}"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 43105 176 {text {purpose
        Enqueue a {docref ValueFinished} event for this object.  This
        event will be delivered after the current event has been
        handled.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 36793 2 "" 43 lower:int, upper:int, item:#ListItem = null "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 28108 1154 {text {purpose
        Construct this object.
    }
    {parameter value,
        See {docref ListBox.value}.
    }
    {parameter data-model,
        See {docref ListBox.data-model}.
    }
    {parameter list-item-creation-proc,
        See {docref ListBox.list-item-creation-proc}.
    }
    {parameter selection-policy,
        See {docref ListBox.selection-policy}.
    }
    {parameter style,
        See {docref ListBox.style}.
    }
    {parameter ui-object, 
        A specific {docref ListBoxUI} to be used by this control.
        See {docref ListBox.ui-object} for more information.
    }
    {parameter ...,
        Additional option specifications and event handlers.
    }
    {for-example
        {example
            {value
                {let listbox:ListBox =
                    {ListBox
                        height = 1.0in,
                        "Aardvark", "Cat", "Dog", "Elephant", "Gnu", "Zebra"
                    }
                }
                let selected:StringArray = {StringArray "Cat", "Zebra"}
                set listbox.value = {selected.to-Iterator}
                listbox
            }

        }
    }
  } 359 value:any = null, data-model:ListModel = {DefaultListModel}, list-item-creation-proc:{proc-type
                                                      {val:any}:ListItem} = ListModelControl.default-list-item-creation-proc, selection-policy:SelectionPolicy = SelectionPolicy.multiple, style:ListBoxStyle = ListBoxStyle.standard, ui-object:#ListBoxUI = null, ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 2948 126 {text {purpose
        Determines the time delay between two consecutive auto-repeat
        gestures.
    }
    {since 6.0}
} 4 Time 4 12ms}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 232551 14 {unadvertised} "CommandButton"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 233198 2 "" 8 e:Action "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 232616 14 {unadvertised} "RecordSetDisplayNavigationPanel" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 232688 14 {unadvertised} 58 panel:RecordSetDisplayNavigationPanel, command-name:String ""}
{ProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 14081 14 {unadvertised} 107 styles:{Array-of TextStyle}, index:int, max-index:int, trailing?:bool = true, last-style-index-hint:int = 0 "(style:TextStyle,
                        run-start:int,
                        run-end:int,
                        style-index:int
                       )"}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 73781 504 {text {purpose
        An object used to display any Curl {ctext Graphic}
        as an {ctext icon} of a {ctext DefaultTreeItem}.
    }
    {details
        This class is essentially just a {docref Frame} that 
        supports {docref DefaultTreeIcon} interface.
        
        The default {ctext halign} and {ctext valign} values for
        this object are "center".  See {ctext DefaultTreeItem}
        for information on the importance of the alignment and origin
        of this object. 
    }
} "Frame, DefaultTreeIcon"$""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 74056 177 {text {purpose Construct this object.}
    {parameter 
        ..., may contain option settings, event handlers, and a 
        graphical child for this {ctext Frame}.
    }
  } 3 ... ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 11751 14 {unadvertised} 51 string:StringInterface, start-index:int, length:int "int"}
{ClassDocInfo "controls/logical-controls/text-area.scurl" 1907 1815 {text {purpose 
        Implements a multiple-line editable text control.
    }
    {details
        A {ctext TextArea} is a control that lets the user type in
        some arbitrary string.  A newline in the data indicates a hard
        line-break.

        The {ctext TextArea} knows the user is done in one way: when
        the user moves keyboard focus out of the {ctext TextArea}.

        The value of a {ctext TextArea} is a {docref String} consisting
        of the characters in the {ctext TextArea}.
    }
    {expected-events
        {event ValueChanged,
            Fired when any key is typed, when any editing {docref
            Command}s occur (e.g., cut, paste), or when {docref-abbr
            TextArea.set-value-with-events} is called.
        }
        {event ValueFinished,
            Fired when focus is lost or when {docref-abbr
            TextArea.set-value-with-events} is called.  The event is
            guaranteed to fire if the {docref-abbr TextArea.value} has
            changed since the last {docref ValueFinished}, but may
            fire even if the {ctext value} has not changed.
        }
        {event Commit,
            Sent by {docref Dialog} when {docref Dialog.commit} is
            called.
        }
        Event handlers written for {docref PointerPress}, {docref
        PointerRelease}, and {docref RawKeyPress} will not be
        triggered; use {docref ValueChanged}, {docref ValueFinished},
        or {docref KeyPress} instead.
    }
    {notes
        This object can be styled by writing style rules for "TextArea" and
        "TextArea/string-box". See {link href =
            {url
                "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
            },
        Skinning Text Controls} for more information.
    }
} "BaseTextField"$""}
{MethodDocInfo "controls/logical-controls/text-area.scurl" 3933 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/text-area.scurl" 3758 2 "" "String"}
{MethodDocInfo "controls/logical-controls/text-area.scurl" 4138 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/text-area.scurl" 3113 1132 {text {purpose
        Creates a {ctext TextArea}.
    }
    {parameter value,
        The initial {docref-abbr TextArea.value} of the {ctext
        TextArea}.  If null, the value will not be set, {docref
        TextArea.has-value?} will be false, and the {docref-abbr
        TextArea.prompt} (if any) will be displayed instead.
    }
    {parameter prompt,
        The initial {docref-abbr TextArea.prompt} {docref String} to
        be shown when {docref TextArea.has-value?} is {ctext false}.
    }
    {parameter max-chars,
        The initial {docref-abbr TextArea.max-chars} value, which
        specifies the maximum number of characters that should be
        entered into the {ctext TextArea}.
    }
    {parameter data-model,
        The initial {docref-abbr TextArea.data-model} for this {ctext
        TextArea}.  When this value is {ctext null}, the {docref-abbr
        TextArea.create-data-model} method will be called to create the
        initial data model.
    }
    {parameter ui-object, The UI delegate that handles drawing and events.}
    {parameter ...,
        Additional option specifications.
    }
  } 134 value:#String = null, prompt:#String = null, max-chars:int = -1, data-model:#StringDataModel = null, ui-object:#TextAreaUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 1424 1168 {text {purpose 
        A superclass for the button UI classes that consolidates a lot
        of common event handling into one place.
    }
    {details 
        This class makes a lot of assumptions about how buttons work.
        It assumes that button UI classes will behave similarly with
        respect to pointer presses, key presses, pointer grabs, etc.
        If a new LookAndFeel invalidates these assumptions, this class
        will need to change. For example, it might be necessary to
        move event handlers down into the concrete ButtonUI
        subclasses.
    }
    {override
        Concrete subclasses must override these methods:
        {itemize
            {item {docref BaseButtonUI.react-to-state-change}}
            {item {docref BaseButtonUI.modify-for-focus}}
            {item {docref BaseButtonUI.do-press-action}}
        }

        Concrete subclasses should call these methods as necessary, 
        especially from their constructors or from option
        change handlers:
        {itemize
            {item {docref BaseButtonUI.add-action-char}}
            {item {docref BaseButtonUI.remove-action-char}}
        }
    }
} "Frame, ControlUI"$"CommandButtonUI, RadioButtonUI, CheckButtonUI"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 1636 60 {text {purpose 
        Create a new BaseButtonUI.
    }
  } 3 ... ""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 8255 150 {text {purpose 
        Handles a {docref GrabRelease} event.
    }
    {details
        Changes to a "normal" state and reacts accordingly.
    }
  } 13 e:GrabRelease "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 12257 269 {text {purpose
        Detects when a pressed pointer is moved outside
        the object.
    }
    {details
        Sets state variables, calculates whether the pointer
        is inside or outside the object, and consumes and propagates 
        the event.
    }
  } 15 e:PointerMotion "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 2244 141 {text {purpose 
        State variable that indicates whether the pointer with a
        button pressed is over this object or not.
    }
  } "bool" 5 false}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 2053 119 {text {purpose 
        State variable that indicates whether the pointer is over this
        object or not.
    }
  } "bool" 5 false}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 3114 191 {text {purpose 
        State variable that indicates whether the object has keyboard
        focus or not.
    }
    {deprecated
        Use {docref Visual.has-key-focus?} instead.
    }
  } "bool" 5 false}
{OptionDocInfo "controls/logical-controls/button-uis.scurl" 3477 "bool" 0  2 ""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 4566 119 {text {purpose 
        Unregisters a character as being one that, when typed,
        "presses" this button.
    }
  } 8 key:char "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 7296 622 {text {purpose
        Handles a {docref PointerRelease} event.
    }
    {details
        If the event {param e} is not consumed and left mouse button
        was pressed, it handles it by setting {docref
        BaseButtonUI.pointer-pressed?} flag to {ctext false}.

        Depending on the states of the flags {docref
        BaseButtonUI.action-char-key-pressed?} and {docref
        BaseButtonUI.enabled?} it sets the state of {docref
        BaseButtonUI.button-pressed?} and may call {docref
        BaseButtonUI.do-press-action}.

        The {ctext PointerPress} event {param e} is consumed if handled.
    }
  } 16 e:PointerRelease "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 15582 453 {text {purpose 
        Do the action for the button.
    }
    {override
        Subclasses must override this to do whatever needs to be done
        every time an action is to be taken by a button. 

        For instance, a {docref CommandButtonUI} fires an {docref
        Action} event at its control, the {docref CheckButtonUI}
        toggles the state of its control and the {docref
        RadioButtonUI} sets the state of its button.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 3425 124 {text {purpose 
        Used to eliminate unnecessary drawing before the control has
        been drawn on screen.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 5851 631 {text {purpose
        Handles a {docref PointerPress} event.
    }
    {details
        If the event {param e} is not consumed and left mouse button
        was pressed, it handles it by setting {docref
        BaseButtonUI.pointer-pressed?}, {docref
        BaseButtonUI.rollover?} and {docref BaseButtonUI.grabbed?}
        flags to {ctext true} and grabs the pointer. If its is enabled
        then it also sets {docref BaseButtonUI.button-pressed?} to
        {ctext true} and requests the control associated with it to
        become active.

        The {ctext PointerPress} event {param e} is consumed if handled.
    }
  } 14 e:PointerPress "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 13548 173 {text {purpose 
        Changes to a "focus" state and reacts accordingly.
    }
    {details 
        Sets state variables, and consumes and propagates the event.
    }
  } 9 e:FocusIn "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 10207 237 {text {purpose 
        If the key is the space bar, may put the button back into its
        normal, "unpressed" state.
    }
    {details
        Doesn't go back to the unpressed state if the pointer is still
        pressed.
    }
  } 15 e:RawKeyRelease "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 14017 173 {text {purpose 
        Changes to a "normal" state and reacts accordingly.
    }
    {details
        Sets state variables, and consumes and propagates the event.
    }
  } 10 e:FocusOut "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 2874 185 {text {purpose 
        State variable that indicates whether the pointer button was
        pressed inside this object, then dragged elsewhere without
        being released.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 14997 239 {text {purpose
        Change the button visually when it receives or loses focus.
    }
    {override
        Subclasses should override this to do whatever needs to be
        done every time the object receives or loses focus.
    }
  } 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 11180 175 {text {purpose 
        Changes to a "rollover" state and reacts accordingly.
    }
    {details
        Sets state variables, and consumes and propagates the event.
    }
  } 14 e:PointerEnter "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 15697 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 9189 481 {text {purpose
        Handles a {docref KeyPress} event.
    }
    {notes
        If the key is for an action character, it puts the button into its
        "pressed" state.

        It calls {docref BaseButtonUI.is-action-char?} to see if the
        {docref KeyPress.value} matches with a registered character for
        action. The {docref Action} event will be fired if there is a
        match and the alt key is not down, unless the ctrl key is also
        down.
    }
  } 10 e:KeyPress "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 3246 85 {text {purpose
        The characters that, when typed, "press" the button.
    }
  } "#{Set-of char}" 0 }
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 2633 109 {text {purpose
        State variable that indicates whether this button is pressed
        or not.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 4925 154 {text {purpose 
        Assigns this object its layout width and height.
    }
    {notes
        Sets {docref BaseButtonUI.has-been-rendered?}.
    }
  } 30 lc:LayoutContext, bounds:GRect "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 4193 117 {text {purpose 
        Registers a character as being one that, when typed, "presses"
        this button.
    }
  } 8 key:char "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 3840 113 {text {purpose 
        Indicates whether this character should "press" this button
        when typed.
    }
  } 8 key:char "bool"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 11674 182 {text {purpose 
        Changes to a "normal" state and reacts accordingly.
    }
    {details
        Sets state variables, and consumes and propagates 
        the event.
    }
  } 14 e:PointerLeave "void"}
{FieldDocInfo "controls/logical-controls/button-uis.scurl" 2459 158 {text {purpose 
        State variable that indicates whether a key representing an
        action character (e.g. mnemonic or spacebar) is pressed.
    }
  } "bool" 5 false}
{ClassDocInfo "controls/logical-controls/selection.scurl" 4300 370 {text {purpose 
        This class is the superclass of all items that can be contained
        by {docref SelectionControl}s
    }
    {notes 
        Not all {ctext SelectableItem}s are actually {italic selectable}.
        Inheriting from this class just means that you support the semantics
        of being in a group of items that could try to be selected.
    }
} "Frame"$"ListItem"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 5793 547 {text {purpose 
        Not typically called directly by applications.
        Called by a control to keep selection state 
        consistent.
    }
    {details
        Attempts to set the {ctext selected?} flag without notifying the control
        that it has been changed. Used when the control already knows the state
        has changed, and is telling the ListItem. Note that the ListItem may
        {italic refuse} an attempt to set the selected state to {ctext true}
        so any caller should be prepared to deal with that.
    }
  } 8 sel:bool "void"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 6168 261 {text {purpose 
        Whether this item feels that a user would ever possibly
        want to be able to select it.
    }
    {notes
        For example, a divider line returns false, but normal items 
        return true, even if they are disabled.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 4647 153 {text {purpose Returns the value of this item.}
    {notes 
        This method may query a data-model to get the value
        if appropriate.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 5144 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/selection.scurl" 5081 306 {text {purpose Whether this item is currently selected.}
    {details 
        A SelectableItem may feel free to refuse attempts to
        set this flag to {ctext true}.  If it can be set to 
        {ctext true}, however, it should always allow the
        flag to be set back to {ctext false}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 4423 40 {text {purpose Creates this object.}
  } 0  ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 1209 1117 {text {purpose
        {ctext ListModelControl} is the abstract superclass for
        all list controls such as {docref ListBox}es,
        {docref ComboBox}es, and {docref DropdownList}s.
    }
    {details
        This class defines the common functionality of all
        controls that use a {docref ListModel}. It handles much of
        the interaction with the data model.
    }
    {override
        Subclasses should override the following methods in order to keep
        track of their own values and item states.
        {itemize
            {item {docref ListModelControl.notify-interval-added}}
            {item {docref ListModelControl.notify-interval-removed}}
            {item {docref ListModelControl.notify-interval-changed}}
            {item {docref ListModelControl.notify-item-selected}}
        }
        A subclass may override
        {docref ListModelControl.rebuild-from-data-model} to turn off
        updates before calling the {ctext rebuild-from-data-model} method
        of its superclass. This can improve efficiency by updating all at once,
        after the method call.
    }
} ""$"ListBox, BaseComboBox"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 4574 265 {text {purpose
        Initializes a {docref ListModelControl}.
    }
    {parameter data-model,
        See {docref ListModelControl.data-model}.
    }
    {parameter list-item-creation-proc,
        See {docref ListModelControl.list-item-creation-proc}.
    }
  } 148 data-model:ListModel = {DefaultListModel}, list-item-creation-proc:{proc-type {val:any}:ListItem} = ListModelControl.default-list-item-creation-proc ""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 10280 204 {text {purpose
        Searches the values of the ListItems in
        this control for the specified value.
    }
    {details
        Calls {docref ListModel.find} with the provided arguments.
    }
  } 140 e:any, equality-proc:#{proc-type {any, any}:bool} = null, search-direction:SearchDirection = SearchDirection.forward, starting-index:int = 0 "int"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 18047 402 {text {purpose 
        Called by ListItems to say that their selection state have
        changed.
    }
    {details 
        When you set {docref ListItem.selected?} and the selection is
        actually changed, this method gets called so that the control
        can update its internal selection state to match.
        In general, user-written code should not need to call this method.
    }
  } 13 item:ListItem "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 12521 1363 {text {purpose
        Method called by the data model when new values have been added.
    }
    {details 
        The data model will call this method when it has new values that
        need to be turned into ListItems. This method will generate them, and
        insert them into the {docref ListModelControl.items} array.
        In general, user-written code should not need to call this method.
    }
    {parameter lower,
        The lower bound of items (inclusive) that has been added.
    }
    {parameter upper,
        The upper bound of items (inclusive) that has been added.
    }
    {parameter item,
        This specifies that a given ListItem should be used
        instead of automatically generating one with list-item-creation-proc.
        If this parameter is specified, the range must include only one item.
        You should probably never need to call the function with this parameter.
        It is used by {docref ListModelControl.append} and
        {docref ListModelControl.insert}.
    }
    {override
        Generally this method needs to be overridden to do additional
        bookkeeping when a ListItem has been removed.
        In most cases you will want to call super.notify-interval-added
        first so that the ListItems can be generated and inserted into the
        array before doing your own operations.
    }
  } 43 lower:int, upper:int, item:#ListItem = null "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 5795 87 {text {purpose 
        Returns an iterator of all the items in this control.
    }
  } "{Iterator-of ListItem}"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 14407 993 {text {purpose
        Method called by the data model when values have been removed.
    }
    {details 
        The data model will call this method when it some values have
        been removed. This method will remove them from the
        {docref ListModelControl.items} array.
        Note that the values have already been removed from the ListModel.
        In general, user-written code should not need to call this method.
    }
    {parameter lower,
        The lower bound of items (inclusive) that has been removed.
    }
    {parameter upper,
        The upper bound of items (inclusive) that has been removed.
    }
    {override 
        Generally this method needs to be overridden to do additional
        bookkeeping when a new ListItem has been inserted.
        In most cases you will want to do your own teardown operations first
        so you still have access to the ListItems, and then call
        super.notify-interval-removed at the end of your function.
    }
  } 20 lower:int, upper:int "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 1395 121 {text {purpose 
        The background that {docref ListItem}s in this control will have when
        selected.
    }
  } "#FillPattern" 0 }
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 2085 388 {text {purpose
        The array of {docref ListItem}s in the {docref ListModelControl}.
    }
    {details
        This field is initialized in {docref ListModelControl}'s
        constructor and should not normally be modified by subclasses.

        Access to the {docref ListItem}s is generally accomplished
        through the {docref ListModelControl.list-items} accessor.
    }
  } "{Array-of ListItem}" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 17455 467 {text {purpose
        Rebuilds the ListItems from the values in the data model.
    }
    {details
        The implementation in this class simply removes all the items
        currently existing, and adds all the new items in the data model.}
    {override
        Subclasses may override this to turn off updates before calling 
        super.rebuild-from-data-model, and then do the update all at once 
        afterwards, in order to be more efficient.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 7547 1055 {text {purpose
        Appends a value or a {docref ListItem} to end of this control.
    }
    {details 
        There are two cases that this method handles:
        {itemize
            {item
                If item is a ListItem, then it will notify the ListModel via
                {docref ListModel.append-quietly}, and then call
                {docref ListModelControl.notify-interval-added} with the item
                parameter specified to add the given
                ListItem to the control. If there are other controls
                listening to that data-model, a ListItem will be created
                for them via their list-item-creation-proc; the given ListItem
                is only used on {italic this} control.
            }
            {item
                If you append a value, then it will simply call
                {docref ListModel.append}, which will in turn
                cause the ListItem to be created via
                {docref ListModelControl.list-item-creation-proc}.
            }
        }
    }
  } 8 item:any "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 1588 121 {text {purpose 
        The foreground that {docref ListItem}s in this control will have when
        selected.
    }
  } "#FillPattern" 0 }
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 9991 130 {text {purpose
        Removes all the items in this control.
    }
    {details
        Calls {docref ListModel.clear}.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 6206 2 "" "ListModel"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 5259 158 {text {purpose
        Returns the number of items in this control.
    }
    {details
        This function simply calls through to data-model.size
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 11059 223 {text {purpose 
        Returns the {docref ListItem} at the specified index in
        {docref ListModelControl.items}.
    }
    {details 
        See {docref Sequence-of.get} for a description of the arguments.
    }
  } 9 index:int "ListItem"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 8911 199 {text {purpose
        Replaces the item in the specified index with a value or ListItem.
    }
    {details 
        This method behaves very similarly to {docref ListModelControl.append}.
    }
  } 19 index:int, item:any "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 8261 203 {text {purpose
        Inserts a value or ListItem in the specified position on this control.
    }
    {details 
        This method behaves very similarly to {docref ListModelControl.append}.
    }
  } 19 item:any, index:int "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 1647 14 {unadvertised} "ListModel" 0 }
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 4169 1226 {text {purpose 
        The procedure that is called when a ListItem needs to be created
        from a value.
    }
    {usage 
        Generally, it would return either a {docref ListValueItem} with
        a custom label, or a {docref ListSeparator}, but it may return any
        custom subclass of {docref ListItem}.
    }
    {for-example
        Here is a procedure that will make a ListBox
        with a list of colors, printed in their color:
        {example
            {DropdownList
                "red", "blue", "green",
                list-item-creation-proc =
                    {proc {val:any}:ListItem
                        || make the value into something that can be displayed graphically
                        let d:Graphic = val asa Graphic
                        || Set the color to the value passed in as a texture.
                        || this will fail if you try to insert something that isn't a
                        || recognized color or texture name.
                        set d.color = val asa FillPattern
                        || return it.
                        {return {ListValueItem d}}
                    },
                value="red"
            }
        }
    }
  } "{proc-type {val:any}:ListItem}" 48 ListModelControl.default-list-item-creation-proc}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 9531 175 {text {purpose
        Removes one or more elements from this control.
    }
    {details
        Simply calls {docref ListModel.remove} with the provided arguments.
    }
  } 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 16122 1387 {text {purpose
        Method called by the data model when values have been changed.
    }
    {details 
        The data model will call this method when it some values have
        been changed. This method will generate the new ListItems from the
        new values, and  modify the {docref ListModelControl.items} array
        appropriately.
        In general, user-written code should not need to call this method.
    }
    {parameter lower,
        The lower bound of items (inclusive) that has been changed.
    }
    {parameter upper,
        The upper bound of items (inclusive) that has been changed.
    }
    {parameter item,
        This specifies that a specific ListItem should be
        used instead of automatically generating one with
        list-item-creation-proc.  If this parameter is specified, the
        range must include only one item.  You should probably never
        need to call the function with this parameter.  It is used by
        {docref ListModelControl.set}.
    }
    {override 
        Generally this method needs to be overridden to do
        additional bookkeeping when ListItems have been replaced.  In
        most cases you will want to tear down your state on the old
        ListItems, call {ctext super.notify-interval-changed}, and
        then set up the state for the new ListItems that have just
        been added.
    }
  } 43 lower:int, upper:int, item:#ListItem = null "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 6127 220 {text {purpose
        The {docref ListModel} backing this control.
    }
    {details 
        If this property is set, it will replace all the items in the
        control with the ones in the new data model.
    }
  } "ListModel"}
{ClassProcDocInfo "controls/logical-controls/list-controls.scurl" 2734 592 {text {purpose
        The default proc that is used to create {docref ListItem}s
        from a value.
    }
    {details 
        This proc turns a "-" into a ListSeparator, and everything
        else into a ListItem with the given value in a displayable
        form.

        It does the following:
        {curl-code
            {proc {val:any}:ListItem
                {if val == "-" then
                    {return {ListSeparator}}
                 else
                    {return {ListValueItem (val asa Visual)}}
                }
            }
        }
    }
    {since 6.0}
  } 7 val:any "ListItem"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 5613 271 {text {purpose 
        The number of items in this control.
    }
    {details
        This returns the size of {docref ListModelControl.items}.

        Note that {docref ListModelControl.size} returns the size of
        {docref ListModelControl.data-model}.
    }
  } "int"}
{ClassDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8521 14 {unadvertised} "RichTextStringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8671 14 {unadvertised} "#StringInterface" 0 }
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8621 14 {unadvertised} "#RichTextString" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 9493 14 {unadvertised} 86 index:int, undo-str:#RichTextString, redo-str:#StringInterface, has-value?:bool = true ""}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 9275 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8766 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8722 14 {unadvertised} "bool" 0 }
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 1005 878 {text {purpose
        Represents a {docref StringInterface} as a data model.
    }
    {details
        The data model is an {docref Observable}, so changes to its
        contents can be tracked by client objects that subclass from
        {docref Observer} and override {docref-abbr
        Observer.handle-observer-message} to handle
        {docref StringRemoveMessage} and {docref
        StringSpliceMessage} messages.
    }
    {override
        Subclasses must provide the storage for the data model's
        contents, implement the abstract data access methods, and
        comply with the {docref Observable} notification requirements
        as described in the documentation for each method.

        For efficiency, it is strongly recommended that
        the {docref-abbr StringDataModel.to-String} method
        return a cached value whenever possible.
    }
} "Observable"$"SimpleStringDataModel, RichTextStringDataModel"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 2646 67 {text {purpose The number of {docref char}s in the data model.}
  } "int"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 6005 875 {text {purpose
        Inserts a {docref StringInterface} into {ctext self}.
    }
    {parameter str,
        The {docref StringInterface} that you want to insert.
    }
    {parameter index,
        The position into which you want to insert the
        {docref StringInterface}.  The leftmost character is
        at position {ctext 0}.  The rightmost character is at
        position {ctext (self.size - 1)}.  Valid values range from
        {ctext 0} to {ctext self.size} inclusive.
    }
    {details
        When a splice occurs, a {docref StringSpliceMessage} is sent
        to any observers.
    }
    {notes
        See {docref WritableString.splice} for more information.
    }
    {override
        Subclasses providing an implementation of this method must
        notify any observers by sending a {docref StringSpliceMessage}
        after splicing.
    }
  } 30 str:StringInterface, index:int "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 2311 665 {text {purpose
        Returns the specified character from {ctext self}.
    }
    {parameter index,
        The position of the character that you want to return.
        The leftmost character is at position {ctext 0}.  The
        rightmost character is at position
        {ctext (self.size - 1)}.  Valid values range from
        {ctext 0} to {ctext (self.size - 1)} inclusive.
    }
    {throws
        Should throw an {docref ArrayBoundsException} if {param index}
        is out of bounds.
    }
    {override
        The default implementation uses {docref-abbr
        StringDataModel.to-String} and should be overridden for
        efficiency.
    }
  } 9 index:int "char"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 2513 106 {text {purpose Get the contents this data model.}
    {return-vals The contents as a {docref String}.}
  } 0  "String"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 5070 625 {text {purpose Removes all of the contents of the data model.}
    {details
        When a removal occurs, a {docref StringRemoveMessage} is sent
        to any observers.
    }
    {notes See {docref WritableString.clear} for more information.}
    {override
        Subclasses providing an implementation of this method must
        notify any observers by sending a {docref StringRemoveMessage}
        after clearing the contents.  This message is sent by
        {docref-abbr StringDataModel.remove}, so implementations making
        use of this method will automatically comply with this
        requirement.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 4359 740 {text {purpose Set the contents this data model.}
    {parameter value,
        The {docref StringInterface} representing the new contents.
    }
    {details
        See {docref StringBuf.set-contents} for more information.
    }
    {override
        Subclasses providing an implementation of this method must
        notify any observers by sending {docref StringRemoveMessage}
        after removing the old contents and {docref
        StringSpliceMessage} after inserting the new contents.  These
        messages are sent by {docref-abbr StringDataModel.remove} and
        {docref-abbr StringDataModel.splice}, so implementations making
        use of these methods will automatically comply with this
        requirement.
    }
  } 21 value:StringInterface "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 3534 830 {text {purpose
        Returns a specified substring of the data model.
    }
    {parameter start,
        The position in {ctext self} at which the substring
        starts.  The leftmost character is at position
        {ctext 0}.  The rightmost character is at position
        {ctext (self.size - 1)}.  Valid values range from {ctext 0}
        to ({ctext self.size} - 1) inclusive.
    }
    {parameter length,
        The length of the substring.  In other words, the
        number of characters in the substring.
    }
    {return-vals
        A {docref String} containing the specified substring of the
        data-model's contents containing {param length} consecutive
        characters, beginning at position {param start}.
    }
    {notes
        See {docref StringInterface.substr} for more information.
    }
  } 21 start:int, length:int "String"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 8538 2339 {text {purpose
        Removes specified characters from {ctext self}.
    }
    {parameter index,
        The position at which you want to start removing
        characters.  The leftmost character is at position
        {ctext 0}.  The rightmost character is at position
        {ctext (self.size - 1)}.  Valid values range from {ctext 0}
        to {ctext self.size} inclusive.
    }
    {parameter length,
        The number of characters that you want to remove.
        By default, {param length} is set to one.  {param length}
        is a keyword argument.  To specify the length, make sure
        to assign the desired value to the keyword in the call
        (for example {ctext length = 6}).
    }
    {parameter error-if-missing?,
        A Boolean flag that indicates if this method
        generates an error when you try to remove a character
        that does not exist.  You can remove characters
        between positions 0 and {ctext self.size}.

        If {param error-if-missing?} is {ctext true}, this method
        throws an error when you try to remove a character that
        does not exist.  An error terminates execution of the
        program and displays an appropriate error message.  By
        default, {param error-if-missing?} is {ctext true}.
        If {param error-if-missing?} is {ctext false}, this method
        does not generate an error, removes the characters that
        are within the valid range of characters, does not
        remove the characters that are not in the valid range,
        and returns the resulting string.

        {param error-if-missing?} is a keyword argument.  To
        specify {param error-if-missing?}, make sure to assign
        the desired value to the keyword in the method call
        (for example {ctext error-if-missing? = false}).
    }
    {details
        Removes {param length} characters from {ctext self},
        starting at position {param index}.

        When a removal occurs, a {docref StringRemoveMessage} is sent
        to any observers.
    }
    {notes
        See {docref WritableString.remove} for more information.
    }
    {override
        Subclasses providing an implementation of this method must
        notify any observers by sending a {docref StringRemoveMessage}
        after removing the specified characters.
    }
  } 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{ClassProcDocInfo "controls/logical-controls/StringDataModel.scurl" 1370 276 {text {purpose
        Creates a new {ctext StringDataModel}.
    }
    {parameter string,
        The initial contents of the data model.
    }
    {details
        Since {ctext StringDataModel} is abstract, this actually
        creates an implementation subclass.
    }
  } 22 string:StringInterface "StringDataModel"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 1564 67 {text {purpose True if the model has content; false otherwise.}
  } "bool"}
{ClassDocInfo "controls/logical-controls/accordion-ui.scurl" 218 126 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref TabAccordion}.
    }   
} "SingleTabControlUI"$"StandardTabAccordionUI, SkinnableTabAccordionUI"}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 836 205 {text {purpose
        Construct a new {ctext TabAccordionUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{AccessorDocInfo "controls/logical-controls/accordion-ui.scurl" 520 203 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "TabAccordion"}
{ClassDocInfo "controls/logical-controls/progress-bar.scurl" 1469 1377 {text {purpose
        A control that visually indicates the progress of a lengthy operation. 
    }
    {details
        It is typically used when an application performs tasks such as 
        copying files or printing documents. Users of an application might
        consider an application unresponsive if there is no visual cue. By 
        using the {ctext ProgressBar} in your application, you alert the 
        user that the application is performing a lengthy task and that the 
        application is still responding.

        The {docref ProgressBar.min-value} and {docref ProgressBar.max-value}
        determines the range of the {ctext ProgressBar}.
        
        The {docref ProgressBar.value} represents the progress that 
        the application has made towards completing the operation.

        The property {docref ProgressBar.indeterminate?} determines if
        a {ctext ProgressBar} is in a determinate state or not.

        By default, it cannot be selected or receive focus.
    }
    {notes
        This object can be styled by writing style rules for "ProgressBar",
        "ProgressBar/caption" and "ProgressBar/progress". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
} "{MultiUIValueControlFrame-of double}"$""}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1561 14 {unadvertised} "double" 0 }
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 15197 1361 {text {purpose
        Request a repaint of the {ctext ProgressBar} and the
        {docref View} that contains it.
    }
    {parameter immediate?,
        If true the update occurs immediately.
        Otherwise, the {ctext ProgressBar} is updated at a maximum rate
        of 20 times per second, and the entire view containing the
        {ctext ProgressBar} is updated as often as twice per second.
    }
    {details
        A {ctext ProgressBar} is used to show progress for a long
        running operation. If the entire operation is done within
        a single block of code that never returns to the event
        loop, the screen will not be repainted until the entire
        operation is complete. This method is provided to make it
        easy to refresh the screen in this situation.

        It can be called from within a tight loop because it only
        performs the repainting operations if an appreciable
        amount of time has elapsed since the last repaint. Call it
        with {ctext immediate? = true} if you know you are about
        to start a long-running operation that won't otherwise
        update the progress bar.

        The entire {ctext View} containing the {ctext ProgressBar}
        is updated periodically so that the view contents will be
        redrawn if other windows are dragged over this one.
    }
  } 23 immediate?:bool = false "void"}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 11785 2 "" "double"}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 12802 326 {text {purpose
        Indicates whether the {docref ProgressBar} has a value.
    }
    {notes
        If the progress bar is determinate, i.e. 
        {docref ProgressBar.indeterminate?} is {ctext false}, then it 
        has a value and so this function returns {ctext true}. Otherwise 
        it returns false.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1755 14 {unadvertised} "ValueChanged" 14 {ValueChanged}}
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 4552 "#SkinSpec" 4 null 368 {text {purpose
        A specification used by this control to determine the
        visual appearance of its unfilled progress track.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 6475 "bool" 5 false 918 {text {purpose
        It determines whether the {docref ProgressBar} is in the
        determinate or in the indeterminate mode.
    }
    {notes
        When a {ctext ProgressBar} is in a determinate state, that is
        the {docref ProgressBar.indeterminate?} is {ctext false}, then
        {docref ProgressBar.min-value} cannot be greater than the
        {docref ProgressBar.max-value}, otherwise an error will be
        thrown. Also When a {ctext ProgressBar} is in a determinate
        state the {docref ProgressBar.value} is always adjusted to be
        between the {ctext ProgressBar.min-value} and {ctext
        ProgressBar.max-value}.
    }
    {details
        Normally, a {ctext ProgressBar} that is indeterminate
        continuously displays animation indicating that an operation 
        of unknown length is occurring.
        
        By default a {ctext ProgressBar} is determinate.
    }
  }}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 10024 2 "" "double"}
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 7934 "String" 8 "inline" 529 {text {purpose
        The vertical alignment of the caption to the progress bar.
    }
    {details
        The UI of the {ctext ProgressBar} determines whether to
        show the caption or not and it also determines where and 
        how the caption will be shown.

        The change handler for this option calls {docref
        ProgressBar.react-to-visual-change}. UI's should react to this
        call and update their caption.
        
        Valid values are "inline", "above", and "below".
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 12383 108 {text {purpose
        It sets the value of the {docref ProgressBar} to its minimum
        value.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1707 14 {unadvertised} "DateTime" 10 {DateTime}}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 10826 438 {text {purpose
        Sets the value of the {ctext ProgressBar}, then fires a {docref
        ValueChanged} event, if the value actually changed, followed by 
        a {docref ValueFinished} event.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref ValueFinished}
        events to be fired then use the {docref ProgressBar.value} setter
        directly to set the value of the {ctext ProgressBar}.
    }
  } 10 val:double "void"}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 11719 489 {text {purpose
        The value of the {docref ProgressBar}.
    }
    {notes
        See also: {docref ProgressBar.set-value-with-events}.
    }
    {details
        If the progress bar is determinate, i.e.
        {docref ProgressBar.indeterminate?} is {ctext false},
        the value of the {ctext ProgressBar} will always be forced
        to be within the {ctext ProgressBar} range as specified by
        {docref ProgressBar.min-value} and {docref ProgressBar.max-value}.
    }
  } "double"}
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 5018 "#SkinSpec" 4 null 391 {text {purpose
        A specification used by this control to determine the
        visual appearance of its filled progress track when
        determinate.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 9076 2 "" "double"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1629 14 {unadvertised} "double" 0 }
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 7312 "String" 2 "" 421 {text {purpose
        The caption of the progress bar.
    }
    {details
        The UI of the {ctext ProgressBar} determines whether to
        show the caption or not and it also determines where and 
        how the caption will be shown.

        The change handler for this option calls {docref
        ProgressBar.react-to-visual-change}. UI's should react to this
        call and update their caption.
    }
  }}
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 3921 "FillPattern" 150 {LinearGradientFillPattern
          {Fraction2d 0, 1},
          {Fraction2d 0, 0},
          {Spectrum.from-endpoints "#2ED331", "#ABEDAC"} 
      } 293 {text {purpose
        Indicates the color that should be used by the UI to
        fill in the progress bar.
    }
    {details
        This change handler calls {docref
        ProgressBar.react-to-visual-change} so that UI objects can
        react by updating the progress color.
    }
  }}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 9002 510 {text {purpose
        Indicates the minimum value of the {ctext ProgressBar}.
    }
    {details
        If the {ctext ProgressBar} is in a determinate state, that is
        the {docref ProgressBar.indeterminate?} is {ctext false}, then
        an error will be thrown if {param val} is greater than the
        {docref ProgressBar.max-value}. Also if {ctext ProgressBar}
        is determinate and the {docref ProgressBar.value} is less 
        than {param val} it will be changed to {param val}.
    }
  } "double"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1821 14 {unadvertised} "ValueFinished" 15 {ValueFinished}}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 9950 510 {text {purpose
        Indicates the maximum value of the {ctext ProgressBar}.
    }
    {details
        If the {ctext ProgressBar} is in a determinate state, that is
        the {docref ProgressBar.indeterminate?} is {ctext false}, then
        an error will be thrown if {param val} is less than the
        {docref ProgressBar.min-value}. Also if {ctext ProgressBar}
        is determinate and the {docref ProgressBar.value} is greater 
        than {param val} it will be changed to {param val}.
    }
  } "double"}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 1892 2 "" "String"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1595 14 {unadvertised} "double" 0 }
{OptionDocInfo "controls/logical-controls/progress-bar.scurl" 5483 "#SkinSpec" 4 null 393 {text {purpose
        A specification used by this control to determine the
        visual appearance of its filled progress track when
        indeterminate.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 8229 14 {unadvertised} 22 min:double, max:double "void"}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 13739 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 13529 2 "" 0  "ControlUI"}
{FieldDocInfo "controls/logical-controls/progress-bar.scurl" 1659 14 {unadvertised} "DateTime" 10 {DateTime}}
{AccessorDocInfo "controls/logical-controls/progress-bar.scurl" 13118 223 {text {purpose
        Get the percent complete for the progress bar.
    }
    {details
        If {docref ProgressBar.has-value?} is false, it will return
        0. The return value is always between 0 and 100.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/progress-bar.scurl" 2540 459 {text {purpose
        Instantiate this class.
    }
    {parameter min-value,
        The minimum value of the {ctext ProgressBar}.
    }
    {parameter max-value,
        The maximum value of the {ctext ProgressBar}.
    }
    {parameter value,
        The value of the {ctext ProgressBar}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 110 min-value:double = 0.0, max-value:double = 1.0, value:double = min-value, ui-object:#ProgressBarUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 37443 1215 {text {purpose 
        A superclass for RadioButton UI delegates.}
    {details 
        Objects in this class know that they are supposed to
        redraw themselves in various ways when certain events occur
        -- when disabled, rolled over, pressed, etc. -- but the 
        concrete subclasses must provide the actual drawing code.

        A RadioButtonUI object inherits indirectly from Frame, so subclasses
        can use any drawing mechanisms that can be used in a Frame.
    }
    {override 
        Concrete subclasses must override these methods:
        {itemize
            {item {docref RadioButtonUI.draw-as-normal}}
            {item {docref RadioButtonUI.draw-as-disabled}}
            {item {docref RadioButtonUI.draw-as-rollover}}
            {item {docref RadioButtonUI.draw-as-pressed}}
            {item {docref RadioButtonUI.draw-as-checked}}
            {item {docref RadioButtonUI.draw-as-disabled-checked}}
            {item {docref RadioButtonUI.draw-as-rollover-checked}}
            {item {docref RadioButtonUI.draw-as-pressed-checked}}
            {item {docref RadioButtonUI.modify-for-focus}}
            {item {docref RadioButtonUI.react-to-visual-change}}
        }
    }
} "BaseButtonUI"$"StandardRadioButtonUI, SkinnableRadioButtonUI"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41242 55 {text {purpose Draw the button in its disabled state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 40133 75 {text {purpose
        Sets the {docref RadioButton} state to on.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42176 67 {text {purpose Draw the button in its rollover-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42564 56 {text {purpose Add visuals to indicate keyboard focus.}} 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41971 67 {text {purpose Draw the button in its disabled-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41067 53 {text {purpose Draw the button in its normal state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 40429 2 "" 10 e:KeyPress "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 42379 66 {text {purpose Draw the button in its pressed-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 38503 301 {text {purpose Calls one or more of the draw methods; which ones depends
        on the state of the button.}
    {usage Should be called whenever the button's operational state
        changes, e.g. pressed or rollover.  This will usually get called
        from event handlers of various sorts.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41775 54 {text {purpose Draw the button in its checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41601 54 {text {purpose Draw the button in its pressed state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 41426 62 {text {purpose Draw the button as the pointer rolls over it.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 37924 57 {text {purpose
        Instantiate this object.
    }
  } 3 ... ""}
{EnumDocInfo "controls/logical-controls/globals.scurl" 11896 847 {text {purpose
        Determines the number of items that a control will allow to
        be simultaneously selected.
    }
    {details        
        Possible values are:
        {itemize
            {item
                {ctext SelectionPolicy.single} allows only one 
                item to be selected at a time. Selecting an item 
                will deselect any item that was previously selected.
            }
            {item
                {ctext SelectionPolicy.multiple} allows more than one item to be
                selected at a time.  Selecting a new item does not
                necessarily deselect any items that are already
                selected.
            }
            {item
                {ctext SelectionPolicy.disabled} does not permit
                selection.
            }
            
        }
    }
} 55 single="single" multiple="multiple" disabled="disabled"}
{VariableDocInfo "controls/logical-controls/globals.scurl" 3104 86 {text {purpose 
        The minimum length of a {ctext thumb}.
    }
    {since 6.0}
} 3 any 3 5pt}
{ProcDocInfo "controls/logical-controls/list-controls.scurl" 132756 14 {unadvertised} 19 val:StringInterface "StringInterface"}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 2123 2030 {text {purpose
        Implements a basic push-button control.
    }
    {details
        A {docref-quiet CommandButton} is a control that executes an
        action. Normally this is done with the left mouse button, but
        it may also be done with the spacebar and whatever other key
        is appropriate for the current look-and-feel.

        Note that there is an automatic conversion from a String to
        a {docref Label} which recognizes the ampersand character ('&')
        as a prefix to indicate the mnemonic for the button.
    }
    {notes
        This object can be styled by writing style rules for
        "CommandButton".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#button-skins"
        }, Button Skins} for more information.
    }   
    {for-example
        {example
            {CommandButton
                label = "&Click me!",
                style = "standard",
                {on Action at btn:CommandButton do
                    set btn.label = "Thanks for the &Click."
                }
            }
        }
    }
    {expected-events
        {event Action,
            This could be fired by a mouse or a keyboard gesture.
            
            See Also: 
            {docref CommandButton.fire-on-press?},
            {docref CommandButton.repeating?},
            {docref BaseButtonUI.action-chars}
        }
    }
    {visual-testing
        This class implements the {ctext CurlButton} visual test type.
        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false, Click}
                {cell font-style = "italic", <none>}
                {cell Clicks the button.}
            }
        }
    }
} "MultiUIControlFrame"$"TabSelectorButton"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 10868 304 {text {unadvertised}
    {purpose 
        Determines whether this CommandButton shows a
        visual indication of its default status on a {docref Dialog}.
    }
    {usage 
        Should be set by the {docref Dialog}, which keeps track of
        which CommandButton is its default button.
    }
  } "bool"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 4799 "bool" 0  2 ""}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 2195 14 {unadvertised} "CommandButtonStyle" 0 }
{FieldDocInfo "controls/logical-controls/buttons.scurl" 2237 14 {unadvertised} "bool" 5 false}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 8056 451 {text {purpose The label to be shown on the button.}
    {details
        If set to a {docref ReactiveLabel}, this is the same as setting
        the {docref CommandButton.reactive-label} property.

        For any other type of object, an automatic conversion to a
        {docref Label} is performed. If the value is a String, the
        ampersand character ('&') is recognized as a prefix to
        indicate the mnemonic for the button.
    }
  } "#Label"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 11756 2 "" 8 e:Action "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 2306 14 {unadvertised} "ReactiveLabel" 0 }
{MethodDocInfo "controls/logical-controls/buttons.scurl" 11274 208 {text {purpose 
        Fires an {docref Action} event at the button.
    }
    {details 
        Programmatically simulates a user's mouse click or key release
        (though without the visuals).
    }
  } 0  "void"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 6182 "Time" 0  266 {text {purpose
        Determines the time delay between the press gesture and the
        start of repeating {docref Action} events.
    }
    {notes
        This is used only when {docref CommandButton.repeating?} is
        {ctext true}.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 5856 "bool" 5 false 522 {text {purpose
        Determines whether one or more action events are fired on a
        press gesture.
    }
    {notes
        If {ctext true} one or more {ctext Action} events are fired
        when a mouse is pressed or a character in {docref
        BaseButtonUI.action-chars} is pressed.

        By default it is {ctext false}.

        See Also:
        {docref CommandButton.fire-on-press?}, 
        {docref CommandButton.repeat-delay},
        {docref CommandButton.repeat-interval}.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 8931 2 "" "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 10128 889 {text {purpose 
        The button's visual style. Default is {ctext
        CommandButtonStyle.standard}.
    }
    {usage Value must be one of:
        {itemize
            {item {ctext standard}: Looks like a traditional push button,
                with the visuals specified by the look-and-feel always
                visible around the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than
                a focus rectangle to indicate when the button has
                focus.
            }
            {item {ctext rollover}:  The usual button visuals are only
                shown when the mouse pointer is over the button;
                otherwise, only the label appropriate to the button's
                current state is shown.
            }
        }
    }
  } "CommandButtonStyle"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 12788 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 12538 2 "" "#String"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 6486 "Time" 0  247 {text {purpose
        Determines the time delay between firing of two consecutive
        {docref Action} events.
    }
    {notes
        This is used only when {docref CommandButton.repeating?} is
        {ctext true}.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 10464 "bool" 4 true 89 {text {purpose
        Should the button show a visual indication of key focus?
    }
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 7434 "any" 3 4px 886 {text {purpose
        The amount of space to be placed between the label and the
        edge of the button.
    }
    {details
        This property is used when drawing buttons of style
        {ctext CommandButtonStyle.standard} and 
        {ctext CommandButtonStyle.rollover}.
        
        The value of this property should be a distance greater
        than or equal to zero and will be rounded to a pixel
        size before application.  It is treated similarly
        to the {docref Graphic.margin} property,  which should 
        be consulted for more information. 
   
        Note that the standard UI delegate uses the area
        provided by this inset for drawing the rectangle which
        indicates the button is focused.  If this inset is completely 
        removed, the standard delegate will draw this focus rectangle
        on top of the label.
    }
  }}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 12621 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 12112 2 "" 16 e:CommandChanged "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 10206 2 "" "CommandButtonStyle"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 2354 2 "" "String"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 5270 "bool" 5 false 382 {text {purpose
        Determines whether action event is fired on a press gesture.
    }
    {notes
        If {ctext true} an {ctext Action} event is fired when a mouse
        is pressed or a character in {docref
        BaseButtonUI.action-chars} is pressed.

        By default it is {ctext false}.

        See Also {docref CommandButton.repeating?}.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 4585 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 8839 468 {text {purpose 
        Provides a way to show different labels for button controls
        when they are pressed, disabled, etc.
    }
    {usage
        The simpler {ctext label} property will suffice for most uses
        of {docref CommandButton}.  Use this if you want to explicitly
        change the label when the button is pressed, rolled over, or
        disabled.

        See the {docref ReactiveLabel} documentation for more
        information.
    }
  } "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 10939 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 8130 2 "" "#Label"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 11597 232 {text {purpose 
        Determines what happens when the button's mnemonic key is
        pressed.
    }
    {details 
        Overridden from {docref StandardControl}. Fires an {docref
        Action} event at the button.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 3429 660 {text {parameter label, 
        The initial value of the {docref CommandButton.label}
        property.
    }
    {parameter reactive-label, 
        The initial value of the {docref CommandButton.reactive-label}
        property.
    }
    {parameter style, 
        The initial value of the {docref CommandButton.style}
        property. The default is {ctext CommandButtonStyle.standard}.
    }
    {parameter text-breakable?, 
        By default the label will not break across lines.
    }
    {parameter ui-object, 
        The UI delegate that handles drawing and events.
    }
    {parameter ..., 
        event handlers and option settings.
    }
  } 194 label:#Label = "CommandButton", reactive-label:#ReactiveLabel = null, style:CommandButtonStyle = CommandButtonStyle.standard, text-breakable?:bool = false, ui-object:#CommandButtonUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/spin-control-ui.scurl" 1610 14 {unadvertised} "SpinControlUI"$""}
{MethodDocInfo "controls/logical-controls/spin-control-ui.scurl" 1684 14 {unadvertised} 3 ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 1969 73 {text {purpose
        The color used to identify a selected day.
    }
} 11 FillPattern 16 FillPattern.blue}
{VariableDocInfo "controls/logical-controls/globals.scurl" 2549 73 {text {purpose 
        Width of grid lines to draw between rows.
    }
} 3 any 3 1px}
{VariableDocInfo "controls/logical-controls/globals.scurl" 2754 126 {text {purpose
        Determines the time delay between a gesture and an auto-repeat
        gesture.
    }
    {since 6.0}
} 4 Time 5 400ms}
{EnumDocInfo "controls/logical-controls/globals.scurl" 13160 102 {text {purpose 
        Describe the type of change represented by a {docref TreeModelChange}.
    }
} 42 node-changed children-changed bulk-changes}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27335 14 {unadvertised} ""$""}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 29875 14 {unadvertised} "String" 12 "sans-serif"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 31770 14 {unadvertised} 49 index:int, style:TextStyle, key:String, value:any "TextStyle"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27959 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 35061 14 {unadvertised} 21 key:String, value:any "void"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 29945 14 {unadvertised} "Distance" 4 10pt}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 41549 14 {unadvertised} 21 key:String, value:any "bool"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28339 14 {unadvertised} 14 index:int = -1 "TextStyle"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28277 14 {unadvertised} "bool" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28119 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 32635 14 {unadvertised} 52 key:String, replace-unset-with-default?:bool = false "any"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28435 14 {unadvertised} 322 index:int, font-family:String, font-size:Distance, font-weight:FontWeight, font-style:FontStyle, color:FillPattern, text-underline?:bool, text-line-through?:bool, font-family-set?:bool, font-size-set?:bool, font-weight-set?:bool, font-style-set?:bool, color-set?:bool, text-underline-set?:bool, text-line-through-set?:bool ""}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 42547 14 {unadvertised} 10 key:String "never-returns"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 38199 14 {unadvertised} 0  "TextStyle"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 39390 14 {unadvertised} 58 other:TextStyle, distinguish-unset-attributes?:bool = true "bool"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 36780 14 {unadvertised} "Font"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27691 14 {unadvertised} "FontWeight" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28220 14 {unadvertised} "bool" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27746 14 {unadvertised} "FontStyle" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27799 14 {unadvertised} "FillPattern" 0 }
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 31548 14 {unadvertised} 26 index:int, style:TextStyle "TextStyle"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 37560 14 {unadvertised} "FillPattern"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30147 14 {unadvertised} "FillPattern" 17 FillPattern.black}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27849 14 {unadvertised} "bool" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27902 14 {unadvertised} "bool" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28172 14 {unadvertised} "bool" 0 }
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30341 14 {unadvertised} 387 index:int, font-family:String = TextStyle.default-font-family, font-size:Distance = TextStyle.default-font-size, font-weight:FontWeight = TextStyle.default-font-weight, font-style:FontStyle = TextStyle.default-font-style, color:FillPattern = TextStyle.default-color, text-underline?:bool = TextStyle.default-text-underline?, text-line-through?:bool = TextStyle.default-text-line-through? "TextStyle"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 41090 14 {unadvertised} 25 key:String, start:int = 0 "bool"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30002 14 {unadvertised} "FontWeight" 17 FontWeight.normal}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 38779 14 {unadvertised} 0  "TextStyle"}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 37968 14 {unadvertised} "bool"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27589 14 {unadvertised} "String" 0 }
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30276 14 {unadvertised} "bool" 5 false}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28065 14 {unadvertised} "bool" 0 }
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 40787 14 {unadvertised} "{Array-of String}" 217 {new
          {Array-of String},
          "font-family",
          "font-size",
          "font-weight",
          "font-style",
          "color",
          "text-underline?",
          "text-line-through?"
      }}
{AccessorDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 37749 14 {unadvertised} "bool"}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27374 14 {unadvertised} "int" 0 }
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27640 14 {unadvertised} "Distance" 0 }
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30076 14 {unadvertised} "FontStyle" 16 FontStyle.normal}
{FieldDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 28013 14 {unadvertised} "bool" 0 }
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 30216 14 {unadvertised} "bool" 5 false}
{VariableDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 83 14 {unadvertised} 4 Type 127 {BaseTextControl-of
        RichTextString,
        RichTextStringDataModel,
        RichTextStringDataModelWritableRange
    }}
{VariableDocInfo "controls/logical-controls/globals.scurl" 2399 76 {text {purpose 
        Width of grid lines to draw between columns.
    }
} 3 any 3 1px}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 52154 321 {text {purpose
        The common base class for both {docref ComboBox} and
        {docref DropdownList}.
    }
    {details
        This class exists merely to hold all the common code for these
        two controls, which are very much alike except for their value
        type and editability.
    }
    {since 7.0}
} "{MultiUIValueControlFrame-of tValue}, ListModelControl, SingleSelectionControl"$"ComboBox, DropdownList"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 63452 2 "" 43 lower:int, upper:int, item:#ListItem = null "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 58418 438 {text {purpose 
        Selects the {docref ListItem} at a designated index, and fires
        {docref ValueChanged} and {docref ValueFinished} events, as
        appropriate.
    }
    {parameter i,
        The designated index.
    }
    {details 
        This is effectively the same as setting the value with
        {docref BaseComboBox.set-value-with-events}, but allows you
        to specify an index instead of a value.
    }
  } 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 64165 2 "" 13 item:ListItem "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 62283 2 "" 43 lower:int, upper:int, item:#ListItem = null "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 53493 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 61679 14 {unadvertised} 20 lower:int, upper:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 62903 2 "" 20 lower:int, upper:int "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 55818 2 "" 5 a:any "void"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 53209 782 {text {purpose
        Indicates whether the user is currently changing the value.
    }
    {details
        Typically, {ctext pending-value?} is true while the user has
        the dropdown open (or is typing something into a {ctext
        ComboBox}), and false at all other times.

        The first time a user types a key at a {ctext ComboBox} whose
        {ctext pending-value?} is {ctext false}, that {ctext
        ComboBox}'s {ctext pending-value?} is set to {ctext true} (and
        a {docref ValueChanged} event is sent).  {ctext
        pending-value?} is not set back to {ctext false} until the
        user finishes typing the value and a {docref ValueFinished}
        event is sent.

        Setting this property in other situations is not recommended.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 64351 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 56505 590 {text {purpose
        The maximum desired height of the control's dropdown list.
    }
    {details
        If the value is 0pt (the default), the list is as long as it
        needs to be to show all the values.  The ui delegate may
        display the dropdown at a different height, under certain
        circumstances, such as if the dropdown is too long to be shown
        on the screen.
    }
    {notes 
        The width of the dropdown is determined by the UI delegate
        that implements the look-and-feel, and is not currently
        settable via the public API.
    }
  } "Distance"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 66359 14 {unadvertised} 11 desc:String "int"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 64499 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 66666 14 {unadvertised} 8 s:String "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 56593 2 "" "Distance"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 59139 373 {text {purpose
        Clears the selection.
    }
    {details
        If a {docref ListItem} is currently selected, this method will
        result in the value of the control being restored to its
        default via {docref BaseComboBox.unset-value}.

        Neither {docref ValueChanged} nor {docref ValueFinished}
        events are fired from this method.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 57167 464 {text {purpose 
        Sets the value of the control, and fires {docref ValueChanged}
        (if appropriate) and {docref ValueFinished} events afterwards;
        effectively simulates a user setting the value interactively, 
        without the visuals.
    }
    {parameter val,
        The value to which to set the control.
    }
    {details 
        This method first sets the control's value with {ctext set}, and
        then fires the events.
    }
  } 10 val:tValue "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 59752 435 {text {purpose
        The index of the currently selected {docref ListItem}.
    }
    {details 
        If {docref BaseComboBox.has-value?} is false or {docref
        BaseComboBox.value} does not refer to an item in the list, the
        index is -1.  This is a read-only property; to select the item
        at this index, call {docref BaseComboBox.select-index} or
        {docref BaseComboBox.select-index-with-events}.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 64703 2 "" 29 action:String, args:FastArray "any"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 57648 217 {text {purpose
        Selects the {docref ListItem} at a designated index.
    }
    {parameter i,
        The designated index.
    }
    {details
        If {param i} is out of bounds, an error is thrown.
    }
  } 5 i:int "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 66730 2 "" "#String"}
{OptionDocInfo "controls/logical-controls/list-controls.scurl" 55698 "any" 0  535 {text {purpose
        Determine the width of the control's dropdown list.
    }
    {details
        The value {ctext null}, or an unset value, means that the
        width of the dropdown will match the width of the control.

        The value {ctext 0m} will mean that the width of the dropdown
        will be wide enough for the widest item and at least as wide
        as the control.

        Any other value is used as the {docref-abbr Graphic.width}
        option for the dropdown {docref MenuPane}.
    }
    {since 6.0}
  }}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 52326 14 {unadvertised} "int" 2 -1}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 52367 14 {unadvertised} "Distance" 3 0pt}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 60133 288 {text {purpose
        The currently selected item, if any.
    }
    {details 
        This is a read-only property; to select this item, simply set
        the value of the property to the {docref ListItem}'s value, or
        call {docref BaseComboBox.set-value-with-events}.
    }
  } "#SelectableItem"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 61060 735 {text {purpose
        Internal utility for updating the selection state of the 
        {docref BaseComboBox}.
    }
    {return-vals
        Indicates if the selection updated successfully.
    }
    {details
        This method performs the internal modifications necessary to
        update the current selection state.  It is not typically
        called from client code directly.

        This method silently updates the selected state of the items
        (to avoid unwanted callbacks) and will not call the value
        setter of the control.

        The update may fail if the index input not selectable.  An out
        of bounds index (e.g., -1) will always leave no items selected
        and will never fail.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 54101 546 {text {purpose
        Instantiate this object.
    }
    {parameter data-model,
        See {docref ListModelControl.data-model}.
    }
    {parameter dropdown-height,
        See {docref BaseComboBox.dropdown-height}.
    }
    {parameter list-item-creation-proc,
        See {docref ListModelControl.list-item-creation-proc}.
    }
    {parameter ui-object,
        A specific {docref BaseComboBoxUI} to be used by this control.
    }
    {parameter ...,
        additional option specifications, event handlers, etc.
    }
    {since 7.0}
  } 273 data-model:ListModel = {DefaultListModel}, dropdown-height:Distance = 0pt, list-item-creation-proc:{proc-type
                                                      {val:any}:ListItem} = ListModelControl.default-list-item-creation-proc, ui-object:#BaseComboBoxUI = null, ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 908 156 {text {purpose
        The color used for text in the week of year headers and in the
        day of week headings for the {docref CalendarControl}.
    }
} 11 FillPattern 16 FillPattern.navy}
{ClassDocInfo "controls/logical-controls/date-field.scurl" 2374 2282 {text {purpose
        A control that lets a user enter a date.
    }
    {details
        A {docref CalendarControl} is associated with a {ctext
        DateField}.

        The locale, minimum and maximum values of the
        {ctext DateField} depends on this {ctext CalendarControl}.

        The {ctext DateField} uses a {docref DateField.date-format-spec} to
        determine the order in which to input the day, month and year
        fields. It may use one or more of the {docref
        DateField.separators} between the various date elements. One
        can customize the {ctext DateField} by providing a {docref
        DateField.format-spec}. If you provide a {ctext
        DateField.format-spec} then you may need to provide a
        {docref DateField.parse-spec}.

        A {ctext DateField} has a value only if {docref
        DateField.has-value?} is {ctext true}. When the {docref
        DateField} does not have a value then it displays a {docref
        DateField.prompt}.

        A user can drop down the {ctext CalendarControl} associated
        with the {ctext DateField} to navigate to a valid date without
        having to enter it in the right format.
    }
    {expected-events
        {event ValueChanged, 
            Fired when a user changes the value of the {ctext
            DateField} by using the user interface. It is also fired
            when {docref DateField.set-value-with-events} is called,
            if the value is changed.
        }
        {event ValueFinished,
            Fired when focus is lost, when the user presses the {ctext
            Enter} key, or when {docref-abbr
            DateField.set-value-with-events} is called. The event is
            guaranteed to fire if the {docref-abbr DateField.value}
            has changed since the last {docref ValueFinished}, but may
            fire even if the {ctext value} has not changed.
        }
    }
    {notes
        This object can be styled by writing style rules for "DateField",
        "DateField/calendar-button" and "DateField/date-editor". See {link
        href = {url
                   "curl://install/docs/en/dguide/styled-controls.curl#skinning-calendar-controls"
               },
        Skinning Calendar Controls} for more information.
    }
} "{MultiUIValueControlFrame-of #DateTime}"$""}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 35304 14 {unadvertised} 10 str:String "int"}
{OptionDocInfo "controls/logical-controls/date-field.scurl" 14783 "any" 4 null 2840 {text {purpose
        Determine how {ctext String} input will be parsed for
        use in the {docref DateField}.
    }
    {details
        This {ctext DateField.parse-spec} should be either
 
        {itemize
            {item
                a proc of type 
                {ctext
                    {proc {value:String,
                           require-four-digit-year?:bool,
                           df:DateField
                          }:(date:DateTime,
                             day-start-pos:int, 
                             day-end-pos:int,
                             month-start-pos:int, 
                             month-end-pos:int,
                             year-start-pos:int, 
                             year-end-pos:int)
                    }
                },
                where {param value} represents a string input to
                parse, {param require-four-digit-year?} means that the
                year part of the {param value} must be a four
                character {ctext String} else a {docref
                ValidationException} should be thrown, and {param df}
                represents the source {ctext DateField}.
                
                The return values are the parsed {docref DateTime}
                followed by three pair of integers representing the
                start and end index for the day, month and year string
                respectively. These pair of integers help the UI to
                determine what portion of the {param value} is a day,
                month and year. The user interface for this control
                can use this information to give visual clues. For
                example, the {docref SkinnableDateFieldUI} generally
                highlights the day, month or the year portion of
                {ctext value} to let the user know if the day, month or the
                year of the {docref DateField.value} will be
                changed when the user clicks on the up and down
                arrows.
            }
            {item
                {ctext null} (default). 
            }
        }

        Note that any proc specified for this option may return a 
        {docref ValidationException} indicating a rejection of the
        input.
        
        This property, if non-{ctext null}, is used by 
        {docref DateField.get-parsed-value} method to convert
        a {docref String} to a value that can be then used
        to set to the value of the {docref DateField}.
    }
    {notes
        You may need to provide a {ctext DateField.parse-spec}, if you
        proivide a {docref DateField.format-spec} that cannot be
        parsed by the default algorithm. See {docref
        DateField.format-spec} to see when you must provide a {ctext
        DateField.parse-spec}.
    }
  }}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 22521 717 {text {purpose 
        Notifies the {docref DateField} that some property of the
        {docref CalendarControl} has changed.
    }
    {notes
        You must call this method whenever you change the properties of
        the {docref CalendarControl} associated with this 
        object, e.g. {docref CalendarControl.data-model}.
    }
    {details
        The {ctext DateField} observes the {docref DateDataModel} of the
        {ctext CalendarControl}. If you change the data model for the
        {ctext CalendarControl}, you must call this method so that the
        {ctext DateField} stops observing the old data model of the
        {ctext CalendarControl} and starts observing the new data model.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 34326 14 {unadvertised} 80 day-str:String, month-str:String, year-str:String, require-four-digit-year?:bool "DateTime"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 21558 2 "" "#DateTime"}
{FieldDocInfo "controls/logical-controls/date-field.scurl" 3348 570 {text {purpose 
        Indicates whether the user is currently changing the value.
    }
    {details
        In short, {ctext pending-value?} is {ctext true} while the user
        changes the value of the {docref DateField}, and false at all
        other times.

        It is not set back to {ctext false} until the user finishes
        changing the value and a {docref ValueFinished} event is sent.

        This property should never be set by the application, since
        there are certain semantics around it that the Curl language
        expects.
    }
  } "bool" 5 false}
{OptionDocInfo "controls/logical-controls/date-field.scurl" 18498 "bool" 5 false 528 {text {purpose
        Indicates whether the subclass of {docref DateFieldUI} should
        provide a user interface to change the various components of a
        date.
    }
    {notes
        By default it is {ctext false}
    }
    {for-example
        A {ctext DateField} that shows two buttons to increment and decrement
        the various components of the date.

        {example
            {DateField
                value = {DateTime.date},
                show-spin-buttons? = true
            }
        }
    }
  }}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 21042 2 "" "DateTime"}
{OptionDocInfo "controls/logical-controls/date-field.scurl" 11610 "any" 4 null 3424 {text {purpose
        Determine how the value of the {docref DateField} is formatted
        to a {docref String}.
    }
    {details
        The {ctext DateField.format-spec} should be either

        {itemize
            {item
                a proc of type 
                {ctext {proc {date:DateTime, df:DateField}:String}},
                where {param date} is {docref DateField.value}, and
                {param df} represents the source {ctext DateField}.
                Note that the {param df} parameter provides access to 
                the source {ctext DateField} and thus can be very useful 
                for context dependent formatting.
            }
            {item
                {ctext null} (default). 
            }
        }
        
        This property, if non-{ctext null}, is used by
        {docref DateField.get-formatted-data} method to convert
        a {ctext DateField} value to a formatted {docref String}.
    }
    {notes
        You will need to provide a {ctext DateField.parse-spec} if you
        provide a {docref DateField.format-spec} that does not follow
        the following rules:
        
        {itemize
            {item
                The formatted value must have the day, month and year
                in the same order as {docref DateField.date-format-spec}.
            }
            {item
                It does not use a member of {docref
                DateField.separators} to separate the day, month and
                year components of the date.
            }
            {item
                It does not use an integer for the day or year.
            }
            {item
                It does not use an integer between 1 and 12, or a
                member of {docref CalendarControl.month-names} or
                {docref CalendarControl.short-month-names}, for the
                associated {docref CalendarControl}, to represent the month.
            }
        }
    }
    {for-example
        A {ctext DateField} using custom date formatting. Since it
        follows the rules for formatting as mentioned above, it does
        not need a {ctext DateField.parse-spec}.
        
        {example
            {define-proc package {format-spec
                                     date:DateTime,
                                     df:DateField
                                 }:String
                let constant cc:CalendarControl = df.calendar-control
                let constant info:DateTimeInfo = date.info
                let constant day:int = info.day
                let constant month:String= cc.month-names[info.month - 1]
                let constant year:String = 
                    {format "%04d", info.long-year asa int}
                
                {return
                    {switch df.date-format-spec
                     case DateFieldFormatSpec.mdy do
                        month & " " & day & ", " & year
                     else
                        {error
                            "This format-proc only supports 
                            DateFieldFormatSpec.mdy."
                        }
                    }
                }
            }

            {DateField
                value = {DateTime.date},
                locale = {Locale "en"},
                date-format-spec = DateFieldFormatSpec.mdy,
                format-spec = format-spec
            }
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 37109 2 "" 29 action:String, args:FastArray "any"}
{FieldDocInfo "controls/logical-controls/date-field.scurl" 2702 117 {text {purpose
        The {docref CalendarControl} control associated with the
        {docref DateField}.
    }
  } "CalendarControl" 0 }
{OptionDocInfo "controls/logical-controls/date-field.scurl" 18591 "bool" 4 true 2 ""}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 19661 202 {text {purpose
        The locale of the {docref DateField}.
    }
    {notes
        It is the {docref Locale} of the {docref CalendarControl}
        associated with this {ctext DateField}. 
    }
  } "Locale"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 36237 252 {text {purpose
        The object that should request key focus when this 
        {docref DateField} becomes active.
    }
    {notes
        The default focus object for {docref DateField} is the
        {docref DateFieldUI}'s focus object.
    }
  } "Visual"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 20349 402 {text {purpose
        Lower limit of the {docref DateField}.
    }
    {notes
        An error will be thrown if the {ctext min-value} of the
        {ctext DateField} is set to be greater than the
        {docref DateField.max-value}.

        The {docref DateField.value} is always adjusted to
        be between the {ctext DateField.min-value} and the
        {ctext DateField.max-value}.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 20950 395 {text {purpose
        Upper limit of the {docref DateField}.
    }
    {notes
        An error will be thrown if the {ctext max-value} of the
        {ctext DateField} is set to be less than the
        {docref DateField.min-value}.

        The {docref DateField.value} is always adjusted to
        be between the {ctext DateField.min-value} and
        {ctext DateField.max-value}.
    }
  } "DateTime"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 3393 2 "" "String"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 30751 14 {unadvertised} 41 str:String, require-four-digit-year?:bool "(date:DateTime,
                     day-start-pos:int, 
                     day-end-pos:int,
                     month-start-pos:int, 
                     month-end-pos:int,
                     year-start-pos:int, 
                     year-end-pos:int)"}
{OptionDocInfo "controls/logical-controls/date-field.scurl" 8048 "DateFieldFormatSpec" 25 DateFieldFormatSpec.local 306 {text {purpose
        Defines the order and formatting in which a day, month, and
        year will be displayed by default in the {docref DateField}.
    }
    {notes
        See also: {docref DateField.parse-spec}, {docref
        DateField.format-spec}, {docref DateField.get-formatted-data}.
    }
  }}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 29857 930 {text {purpose
        Parse a {docref String} value input for this {docref
        DateField}.
    }
    {parameter val,
        The {ctext String} to parse.
    }
    {parameter require-four-digit-year?,
        Determines if it is necessary for year part of the {ctext
        String} to be 4 characters long.
    }
    {details
        This method will use the parsing defined in 
        {docref DateField.parse-spec} if it is non-null.
        Otherwise it will use the default parsing of the
        {ctext DateField}.

        UI objects can call this method to convert a {docref String} 
        corresponding to the {docref DateField.value} to a value
        that can then be set on the {docref DateField}.
    }
    {override
        Not typically overridden.
    }
    {return-vals
        {ctext any}, the parsed value or a {docref ValidationException}
        indicating that the parsing was unsuccessful.
    }
  } 49 val:String, require-four-digit-year?:bool = false "(date:DateTime,
                         day-start-pos:int, 
                         day-end-pos:int,
                         month-start-pos:int, 
                         month-end-pos:int,
                         year-start-pos:int, 
                         year-end-pos:int)"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 36358 2 "" 30 sender:Observable, message:any "void"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 36818 2 "" 0  "ControlUI"}
{OptionDocInfo "controls/logical-controls/date-field.scurl" 17771 "CharClass" 93 {CharClass 
          "/-,\u5E74\u6708\u65E5",  
          CharClass.whitespace-chars
      } 2105 {text {purpose
        The characters that may be used for separating the day, month
        and year in the {docref DateField}.
    }
    {notes
        The string that is displayed in the {docref DateField} must
        use one or more characters from {ctext DateField.separators}
        as the {docref DateField.parse-spec} uses {ctext
        DateField.separators} to parse that string. So if you change
        the {ctext DateField.separators}, then you must provide a
        {docref DateField.format-spec}, unless you provide a {docref
        DateField.parse-spec} too.
    }
    {for-example
        A {ctext DateField} using a custom date formatting. It does
        not need to provide a {ctext DateField.parse-spec} as it adds
        the separator it uses to the separator list.
        
        {example
            {define-proc package {format-spec
                                     date:DateTime,
                                     df:DateField
                                 }:String
                let constant cc:CalendarControl = df.calendar-control
                let constant info:DateTimeInfo = date.info
                let constant day:int = info.day
                let constant month:int = info.month
                let constant year:String = 
                    {format "%04d", info.long-year asa int}
                
                {return
                    {switch df.date-format-spec
                     case DateFieldFormatSpec.mdy do
                        month & ":" & day & ":" & year
                     else
                        {error
                            "This format-proc only supports 
                            DateFieldFormatSpec.mdy."
                        }
                    }
                }
            }

            {DateField
                value = {DateTime.date},
                locale = {Locale "en"},
                date-format-spec = DateFieldFormatSpec.mdy,
                format-spec = format-spec,
                separators = {CharClass ":", CharClass.whitespace-chars}
            }
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 24722 395 {text {purpose
        Replaces the value of the {docref DateField}.
    }
    {details
        If calling this method changes {docref DateField.value} then
        a {docref ValueChanged} event will be fired and {docref
        DateField.pending-value?} will be set to {ctext true}.
    }
    {notes
        This method is usually called by subclasses of {docref
        DateFieldUI}.
    }
  } 13 val:#DateTime "void"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 27376 2132 {text {purpose
        Formats a date representing a value for the {docref DateField}
        as a {ctext String}.
    }
    {notes
        The default implementation of this method applies formatting
        to {param data}.

        The formatting used will be the {docref DateField.format-spec}
        if it is {ctext non-null}, otherwise it will use the default 
        formatting for the {ctext DateField}.

        UI objects can call this method to get the {docref String} 
        corresponding to a value for the {ctext DateField} that they 
        can then display.
    }
    {details
        The default formatting of the {ctext DateField} depends on the
        {docref DateField.date-format-spec}. See the table below to see how the
        default formatting is done.
        
        {html-generate-image
        {Table columns = 5,
            vertical-line-width = 1px, vertical-line-color = "black",
            horizontal-line-width = 1px, horizontal-line-color = "black",
            border-width = 1px, border-color = "black",

            {header-cell date-format-spec},
            {header-cell US},
            {header-cell Ja},
            {header-cell Zh},
            {header-cell Other},

            "mdy",
            {text 5/23/2006},
            {text 5/23/2006},
            {text 5/23/2006},
            {text 5/23/2006},

            "dmy",
            {text 23/5/2006},
            {text 23/5/2006},
            {text 23/5/2006},
            {text 23/5/2006},

            "ymd",
            {text 2006/5/23},
            {text 2006/5/23},
            {text 2006/5/23},
            {text 2006/5/23},

            "iso",
            {text 2006-05-23},
            {text 2006-05-23},
            {text 2006-05-23},
            {text 2006-05-23},

            "local",
            {text 5/23/2006},
            {text 2006\u5E745\u670823\u65E5},
            {text 2006\u5E745\u670823\u65E5},
            {text 23/5/2006}
        }
        }
    }
    {return-vals 
        A formatted {docref String} representing the {param data}.
    }
    {override
        Not typically overridden.  
    }
  } 13 data:DateTime "String"}
{FieldDocInfo "controls/logical-controls/date-field.scurl" 2465 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/date-field.scurl" 21658 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 35883 152 {text {purpose
        Indicates whether the {docref DateField} has a value.
    }
    {notes
        See also {docref DateField.unset-value}.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 19266 578 {text {purpose
        The {docref String} to be shown when this object has no value.
    }
    {details
        The prompt is useful for providing instruction to the user how
        to enter the date. If no prompt is supplied, then the control
        is simply blank when {docref DateField.has-value?} is {ctext
        false}.
    }
    {for-example
        A {ctext DateField} using a prompt.
        
        {example
            {DateField
                prompt = "mm/dd/yyyy",
                date-format-spec = DateFieldFormatSpec.mdy
            }
        }
    }
  } "#String"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 33531 14 {unadvertised} 10 str:String "(String, String, String)"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 37600 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 37950 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 25161 164 {text {purpose
        This will set the {docref DateField.value} to {ctext null}.
    }
    {notes
        Forces {docref DateField.has-value?} to false.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 21473 317 {text {purpose
        The value of the {docref DateField}.
    }
    {notes
        Setting {ctext DateField.value} to a non-{ctext null}
        value will set {docref DateField.has-value?} to {code
        true}, else it will be {ctext false}.

        See also: {docref DateField.set-value-with-events}.
    }
  } "#DateTime"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 19745 2 "" "Locale"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 23475 618 {text {purpose 
        Simulates a user setting the value interactively.
    }
    {details
        Sets the value of the {docref DateField}, then fires a
        {docref ValueChanged} event, if the value actually changed.  A
        {docref ValueFinished} event will then be fired.

        It will also force the {docref DateField.pending-value?} to
        {ctext false}.
    }
    {notes
        If you do not want {docref ValueChanged} and {docref
        ValueFinished} events to be fired then use the {docref
        DateField.value} setter directly to set the value of the
        {ctext DateField}.
    }
  } 13 val:#DateTime "void"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 37024 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 20441 2 "" "DateTime"}
{FieldDocInfo "controls/logical-controls/date-field.scurl" 2531 14 {unadvertised} "DateDataModel" 0 }
{FieldDocInfo "controls/logical-controls/date-field.scurl" 2499 14 {unadvertised} "#String" 0 }
{AccessorDocInfo "controls/logical-controls/date-field.scurl" 19335 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/date-field.scurl" 6264 2684 {text {purpose
        Creates a {ctext DateField} control.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter min-value,
        Lower limit of the {ctext DateField}.

        If non-{ctext null} then the lower limit of the control will be
        set to this value else it will be {docref
        CalendarControl.min-value} of the {docref CalendarControl}
        associated with this {ctext DateField}.
    }
    {parameter max-value,
        Upper limit of the {ctext DateField}.

        If non-{ctext null} then the upper limit of the control will be
        set to this value else it will be {docref
        CalendarControl.max-value} of the {docref CalendarControl}
        associated with this {ctext DateField}.
    }
    {parameter value,
        The default {docref DateTime}. 
        
        If {ctext null} then {ctext DateField} will be constructed as
        unset, meaning that {docref DateField.has-value?} will be
        {ctext false}.

        The value of the control is always between the {docref
        DateField.min-value} and {docref DateField.max-value}.
    }
    {parameter prompt,
        The {docref String} to be shown when this object has no value.
    }
    {parameter calendar-control,
        The {docref CalendarControl} that is associated with this
        {ctext DateField}.

        The {docref CalendarControl.takes-focus?} for {param
        calendar-control} should be {ctext false} so that it does not
        takes away the focus from the {docref DateField} when it sees
        a {docref PointerPress}.
    }
    {parameter locale,
        The {docref Locale} of the {ctext DateField}.
        
        If non-{ctext null} then the locale of the {docref
        CalendarControl} associated with this {ctext DateField} will
        be set to {param locale}.
    }
    {parameter ...,
        Additional option specifications.
    }
    {notes
        The {param calendar-control} determines the locale which may
        affect the way the date field shows the date. It may also
        determine the minimum and maximum value of the {ctext
        DateField}, if they are not specifically set for the {ctext
        DateField}.

        The {docref CalendarControl.data-model} is shared and modified
        by the {ctext DateField}. Since this data model is a {docref
        DateDataModel}, {docref DateField.value}, {docref
        DateField.min-value} and {docref DateField.max-value} will
        only have date information and all the time information will
        be set to {ctext 0} and the time zone will be set to {docref
        DateTimeZone.utc}.
        
    }
  } 235 ui-object:#DateFieldUI = null, min-value:#DateTime = null, max-value:#DateTime = null, value:#DateTime = null, prompt:#String = null, locale:#Locale = null, calendar-control:CalendarControl = {CalendarControl takes-focus? = false}, ... ""}
{VariableDocInfo "controls/logical-controls/shared.scurl" 11067 14 {unadvertised} 12 #FillPattern 0 }
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 121391 283 {text {purpose
        Specifies a conceptual, column-like entity to be 
        displayed in a {docref RecordGrid}.
    }
    {details 
        This class is commonly expressed by the 
        {docref RecordGridColumnGroup} and
        and {docref RecordGridColumn} classes.
    }
} "GraphicOptionList, RecordGridOptions"$"RecordGridColumnGroup, RecordGridColumn"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 122185 97 {text {purpose Construct this class.}
    {parameter ... , options to be set on this object.}
  } 3 ... ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 127909 2 "" 26 key:OptionKey, local?:bool "(item:#OptionItem, local-key?:bool)"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 128832 2 "" "#OptionListInterface"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 121672 14 {unadvertised} "#RecordGridColumnGroup" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 121725 14 {unadvertised} "#OptionListInterface" 4 null}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 131538 306 {text {purpose
        Returns the first parent column group shared with the given column.
    }
    {parameter relative-column,
        A {docref BaseRecordGridColumn} to test for shared parentage.
    }
    {return-vals
        A {docref RecordGridColumnGroup}, or {docref null}
    }
    {since 7.0}
  } 36 relative-column:BaseRecordGridColumn "#RecordGridColumnGroup"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 127693 2 "" 21 key:String, value:any "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 123823 95 {text {purpose
        The {ctext RecordGridColumnGroup} that this object belongs to.
    }
  } "#RecordGridColumnGroup"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 122624 14 {unadvertised} "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 123919 2 "" "#RecordGridColumnGroup"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 122547 131 {text {purpose
        The number of layers of {docref RecordGridColumnGroup}s
        above this column.
    }
    {since 7.0}
  } "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 122923 2 "" "#RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 127341 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 130404 14 {unadvertised} 50 exec-proc:{proc-type {RecordGridColumnGroup}:void} "void"}
{ClassVariableDocInfo "controls/logical-controls/record-grid.scurl" 121573 14 {unadvertised} "int" 3 256}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 130726 14 {unadvertised} "#RecordGridColumnGroup"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 122854 90 {text {purpose 
        {docref RecordGrid} that this object is associated with.
    }
  } "#RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 125052 14 {unadvertised} 122 new-group:#RecordGridColumnGroup, notify-old-parent?:bool = true, notify-new-parent?:bool = true, notify-grid?:bool = true "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 128736 2 "" "#OptionListInterface"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 129408 2 "" 30 item:OptionItem, removed?:bool "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 121638 14 {unadvertised} "#RecordGrid" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 122035 14 {unadvertised} "int" 1 0}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 129893 14 {unadvertised} 72 exec-proc:{proc-type {BaseRecordGridColumn}:void}, upwards?:bool = false "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 121880 14 {unadvertised} "bool" 5 false}
{ClassDocInfo "controls/logical-controls/single-tab-control-ui.scurl" 445 353 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref SingleTabControl}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "BaseTabControlUI"$"TabContainerUI, TabAccordionUI"}
{MethodDocInfo "controls/logical-controls/single-tab-control-ui.scurl" 754 207 {text {purpose
        Construct a new {ctext SingleTabControlUI}. 
    }
    {parameter ...,
        The rest args are passed to the {docref Graphic}
        that this UI delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/accordion-ui.scurl" 906 14 {unadvertised} "TabAccordionUI"$""}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 1109 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 1238 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 1050 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 1176 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/accordion-ui.scurl" 982 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 159452 6863 {text {purpose
        Formatting object used by {ctext RecordGrid} to display data 
        for a given cell (i.e. intersection of record and column).
    }
    {details
        A {ctext RecordGridColumn} requires a collection of these 
        {ctext RecordGridCell}s to display its data. The type of 
        {ctext RecordGridCell} to be used is determined by the 
        {docref RecordGridUI} if not specified explicitly for the
        {ctext RecordGridColumn}.    
    }
    {override
        Building custom {ctext RecordGridCell}s is a powerful
        way to customize the display and editing functionality of
        a column. However care must be taken when doing so.  
        The typical RecordGrid will need to display hundreds
        of these cells at a time and scrolling the grid rapidly
        requires rapid update of the data displayed by each cell.
        
        Consider using or inheriting from {docref StandardRecordGridCell}
        or one of its subclasses, which are designed to work well with
        the default {docref RecordGridUI}s.

        Here are some tips for building correct and efficient
        {ctext RecordGridCell}s.
        {itemize
            {item 
                Avoid building very complex graphical hierarchies in 
                {ctext RecordGridCell}s. If a richer set of objects
                is only needed during editing mode, consider using a
                simple display and swapping in the more complex objects,
                particularly {docref Control}s, only during editing.
                You can use the {docref RecordGridCell.note-grid-focus-in}
                and {docref RecordGridCell.note-grid-focus-out} methods to
                recognize when to swap modes.
            }
            {item 
                {docref RecordGridCell.refresh-data} should do a full 
                "refresh". This method needs to examine the data for the
                current record and ensure that it is being properly displayed
                by the cell. The {docref RecordGridCell.record} property is
                used for gaining access to the entire record, while the 
                {docref RecordGridCell.get-data} and
                {docref RecordGridCell.get-formatted-data} are shortcuts that
                can be used for accessing the data associated with the
                cell's column.
                
                No assumptions should be made about changes to the state or
                the identity of the record since the last time this method was
                called.
            }
            {item
                Cells that are {ctext editable?} should call 
                {docref RecordGridCell.update-data} to update the underlying
                record after the user has finished editing the value in the
                cell. 
                
                Implementations of this class should ensure that they do not 
                allow editing of their contents when they are not
                {ctext enabled?} or {ctext editable?}.
            }
            {item
                Cells that display and edit {ctext String}s may override the
                methods {docref RecordGridCell.format} and 
                {docref RecordGridCell.parse} to determine default 
                transformations to and from the displayed {ctext String}. 
                Note that these methods may also be "overridden" by option
                settings for {docref RecordGridCell.parse-spec} and 
                {docref RecordGridCell.format-spec}.
            }
            {item 
                Plan for {ctext refresh-data} to be called frequently.  In
                particular, it may be called on cells as the grid is
                manipulated; e.g. scrolled, sorted, or laid out.
                Avoid the unnecesary construction of 
                {ctext Graphic}s and objects in this method. Instead, try to 
                create the necessary objects once, and use this method to 
                modify them minimally to display the current record.
            }
            {item
                If {docref ActiveTraversor}s such as controls, or links
                are placed within custom {docref RecordGridCell}s, they 
                must be placed within an independent 
                {docref ActiveTraversalContainer}. Therefore be sure to 
                set the nonlocal option 
                {docref active-traversal-container} on any
                such child traversors to an instance of 
                {ctext ActiveTraversalContainer} or {ctext null}.
                
                The {ctext ActiveTraversalContainer} the cells themselves 
                reside in, the {docref RecordGridUI}, is reserved for managing
                traversal between the cells.    
            }
            {item 
                If you want to use a {docref RadioButton} as an editor, you
                cannot rely on a {docref RadioFrame} that surrounds the
                entire {docref RecordGrid} to manage the {ctext
                RadioButton} values. This is because {ctext
                RecordGridCell}s are created and destroyed as you scroll up
                and down, and the {ctext RadioFrame} may not have all of
                the required cells inside of it at once. If you want a
                {ctext RadioButton} group that spans several rows, you
                should set the {docref radio-frame} property to null on
                each such {ctext RecordGridCell} and rely on your
                application logic to maintain the values such that only one
                record in each group of related records has a value {ctext
                true}. You can do the same thing across several columns of
                a single record.
            }
        }
    }
    {visual-testing
        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class may support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SetCellData
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param data}:{docref String}
                }
                {cell Sets the cell's contents.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for
        "RecordGridCell".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-recordgrid"
        }, Skinning RecordGrid} for more information.
    }
} "BaseFrame, RecordGridOptions, ActiveTraversor"$"StandardRecordGridCell"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 162906 2 "" "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 182581 102 {text {purpose
        Forces any pending value to be committed on the cell.
    }
    {since 6.0}
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 159576 14 {unadvertised} "#RecordGridColumn" 4 null}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 173742 890 {text {purpose 
        Synchronize the graphical display of this cell with the
        data from associated {docref Record} in the absence of
        a {docref Record} update.
    }
    {details
        In some cases, a cell may benefit from a visual update
        in the absence of a major change in state.
        In those cases, this method may be called instead,
        to allow for a less costly refresh than
        {docref-abbr RecordGridCell.refresh-data}.

        The value returned by {docref-abbr RecordGridCell.get-data}
        will not have changed between the last call to
        {docref-abbr RecordGridCell.refresh-data}
        and this method being called.
    }
    {override
        By default, this method simply calls
        {docref-abbr RecordGridCell.refresh-data}.
        Override to provide a lighter-weight version of that method.
    }
    {since 7.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 180013 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 181733 338 {text {purpose
        True if the cell is being edited and holds a pending value
        other than the one in the RecordSet.
    }
    {details
        A cell whose editor has no transient state -- that updates its
        record data immediately -- might never have
        {ctext pending-value?} become true.
    }
    {since 6.0}
  } "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 183311 2 "" 10 e:GuiEvent "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 181081 162 {text {purpose
        The cell's value as a {docref String} appropriate for
        {docref-abbr Visual.test-record}, or {docref null}.
    }
    {since 7.0}
  } "#String"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 182986 "int" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 160581 407 {text {purpose 
        {ctext RecordGridColumn} that this cell is
        associated with.
    }
    {usage
        Intended to be set only by {docref RecordGridUI}.
    }
    {override 
        Not typically overridden.
        If overridden, be sure to call the super implementation
        of this method in order to ensure that the option
        parent of the cell is adjusted appropriately.
    }
  } "#RecordGridColumn"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 163690 123 {text {purpose
        Record that this cell is displaying.
    }
    {override
        Not typically overridden.
    }
  } "#Record"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 178916 "any" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 162074 121 {text {purpose
        Is this cell in the current record?
    }
    {override
        Not normally overridden.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 175106 1274 {text {purpose
        Update the {docref Record} associated with this cell.
    }
    {parameter 
        val, the new value to entered in the associated record.
    }
    {usage 
        Called by implementations of {ctext RecordGridCell} to push
        data back to underlying record-source.
    }
    {details
        If {docref RecordGridCell.parse-spec} is a {ctext non-null} proc,
        and {param val} is of type {ctext String}, {ctext parse-spec}
        will be applied to {param val} before updating. Note that
        this {ctext parse-spec} can return {docref ValidationException}s
        for inputs it does not accept, and may be so used by applications
        for additional column-specific validation. 
   
        If the update is successful, this method will call 
        {docref RecordGridCell.refresh-data} before returning. "Round-tripping"
        the data in this way ensures the cell is showing the new data in the
        appropriate format.  If the update fails, the cell will be left
        unchanged, and it is up to the caller to determine how to resolve the
        error.
    }
    {return-vals
        {ctext null} if the update was successful.  Otherwise
        {docref DataException} representing the error which occurred.
    }
  } 7 val:any "#DataException"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 180700 2 "" 29 action:String, args:FastArray "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 170982 1540 {text {purpose
        Transform {ctext String} input into a value
        appropriate for entering in the record-source.
    }
    {usage 
        This method is called internally by 
        {docref RecordGridCell.get-parsed-value}.
    }
    {parameter val,
        {ctext String}. The value to parsed.
    }
    {return-vals
        {ctext any}, the parsed value or a {docref ValidationException}
        indicating parsing was unsuccessful.
    }
    {details
        See also {docref RecordGridCell.parse-spec}, which may be 
        specified for use instead of this method.
    }
    {override
        The default implementation begins by trimming whitespace
        using {ctext String.trim-clone}.
        
        After trimming this method essentially just invokes 
        {docref Domain.parse} of the domain of the field associated with
        this cell. However, special handling is performed when the trimmed 
        input is empty, and the field is {docref RecordField.nullable?}. 
        In this case:
        {itemize
            {item 
                If the current value is {ctext null}, the input will be
                parsed to {ctext null}.
            }
            {item 
                If the current value of the field is not {ctext null} 
                {ctext Domain.parse} will be attempted. If this fails,
                the input will be parsed to {ctext null} .
            }     
        }
        Subclasses that have different parsing requirements should
        override this method.
    }
  } 10 val:String "any"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 163152 141 {text {purpose
        {docref RecordGrid} that this cell is associated with.
    }
    {override
        Not typically overridden.
    }
  } "#RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 169216 895 {text {purpose
        Transform data to a {ctext String} appropriate for display 
        in this cell.
    }
    {usage 
        This method is called internally by 
        {docref RecordGridCell.get-formatted-data}.
    }
    {parameter data,
        {ctext any}. The data value to formatted.
    }
    {return-vals
        {ctext String} to be displayed by cell.
    }
    {details
        See also {docref RecordGridCell.format-spec}, which may be 
        specified for use instead of this method.
    }
    {override
        The default implementation of this method will transform {ctext null} 
        values to the empty string.  For all other values, the
        {docref Domain.format} method from the domain associated with
        this cell's field will be used.
        
        Subclasses that have different formatting requirements should
        override this method.
    }
  } 8 data:any "String"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 178478 2 "" 30 item:OptionItem, removed?:bool "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 159666 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 162829 292 {text {purpose 
        Index of record that this cell is associated with,
        or -1, if this cell is not currently associated with
        a record. 
    }
    {usage 
       Intended to be set by {ctext RecordGridUI} only.
    }
    {override
        Not typically overridden.
    }
  } "int"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 177278 "any" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 172797 1066 {text {purpose 
        Synchronize the graphical display of this cell with the
        data from associated {docref Record}.
    }
    {details
        Note that this method does not actually change the underlying
        data associated with the {docref RecordField} of the
        {docref Record} associated with this cell. This method instead
        ensures that whatever graphics and/or editors within the cell
        that are showing said data remain in sync.
        
        To ensure that the visual display always reflects the current
        underlying data to the user, this method may be called frequently,
        even when the {docref Record} has not changed.
    }
    {notes
        To change the underlying data instead of the display graphics,
        use the {docref RecordGridCell.update-data} method instead.        
    }
    {override
        Override this method to refresh the graphic objects 
        that are actually displaying the data. Implementations
        should be sure to call the super implementation of this method.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 167682 528 {text {purpose
        Parse a {ctext String} value input to this cell. 
    }
    {details 
        This method will use the parsing defined in 
        {docref RecordGridCell.parse-spec} if it is non-null.
        Otherwise it will use {docref RecordGridCell.parse}.
    }
    {override
        Not typically overridden.  Override
        {ctext RecordGridCell.parse} instead.
    }
    {return-vals
        {ctext any}, the parsed value or a {docref ValidationException}
        indicating parsing was unsuccessful.
    }
  } 10 val:String "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 176541 632 {text {purpose 
        Called to notify this object that it has received the
        grid focus.
    }
    {override
        Typical responses may include changing affordances to show 
        focus, inserting "editor" sub-graphics, or requesting system 
        focus for self or appropriate sub-graphics. Typical cells
        might have a lightweight representation that they typically
        display, and a more elaborate representation that is reserved
        for display only when the cell gains grid focus.
        
        Implementations should be sure to call the super 
        implementation of this method.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 182937 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 183529 2 "" 20 forward?:bool = true "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 183189 "char" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 177143 540 {text {purpose 
        Called to notify this object that it has lost the
        grid focus.
    }
    {override
        Typical responses may include changing affordances to 
        show loss of focus, removing "editor" sub-graphics, etc.
        Cells that have a lightweight representation
        and a heavier representation typically switch back to their
        lightweight representation when they lose grid focus.
        
        Implementations should be sure to call the super 
        implementation of this method.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 177907 2 "" 26 key:OptionKey, local?:bool "(item:#OptionItem, local-key?:bool)"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 182236 422 {text {purpose
        The pending but unfinished value of the cell while it is being edited.
    }
    {details
        If there is no current editor, then this should return {ctext null}.
        For example, cell that doesn't support an editor should
        always return {ctext null}.
        
        A cell whose editor has no transient state might also never have
        a pending value.
    }
    {since 6.0}
  } "any"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 160660 2 "" "#RecordGridColumn"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 166415 1244 {text {purpose
        Get the current data for this cell formatted
        as a {ctext String}.
    }
    {details 
        The default implementation of this method applies formatting
        to the results of {docref RecordGridCell.get-data}.  
        The formatting used will be the {docref RecordGridCell.format-spec}
        if it is {ctext non-null}, and otherwise the method
        {docref RecordGridCell.format}.
    }
    {return-vals
        {itemize
            {item
                data, {ctext String}. The formatted data from the 
                underlying record-source which is to be displayed in this 
                cell, if available.
            }
            {item
                valid?, {ctext bool}.  Indicates whether the first
                returned value has meaningful data and may be
                used. For example, {ctext false} will be returned 
                here for a cell which is unconnected to a 
                {ctext RecordGrid}, or for a cell in a column not currently 
                associated with an actual field in the underlying data.    
            }
        }
    }
    {override
        Not typically overridden.  Override
        {ctext RecordGridCell.format} instead.
    }
  } 0  "(data:String, valid?:bool)"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 161436 118 {text {purpose
        Is this cell currently selected?
    }
    {override
        Not normally overridden.
    }
  } "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 178708 "bool" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 163419 126 {text {purpose
        Field that this cell's data resides in.
    }
    {override
        Not typically overridden.
    }
  } "#RecordField"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 177504 2 "" "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 164907 903 {text {purpose
        Get the current data for this cell.
    }
    {return-vals
        {itemize
            {item
                data, {ctext any}. The data from the underlying
                record-source which is to be displayed in this 
                cell, if available.
            }
            {item
                valid?, {ctext bool}.  Indicates whether the first
                returned value has meaningful data and may be
                used. For example, {ctext false} will be returned 
                here for a cell which is unconnected to a 
                {ctext RecordGrid}, or for a cell in a column not currently 
                associated with an actual field in the underlying data.    
            }
        }
    }
    {override
        Implementations of this method should typically refer to
        the super implementation to access the underlying data.
    }
  } 0  "(data:any, valid?:bool)"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 179684 686 {text {purpose        
        Can the data in this cell be updated?
    }
    {details
        This getter checks several properties
        that are required to be true if the content
        of this cell is to be updateable. It should
        be consulted in order to determine whether
        to display the cell as editable to the user, 
        and whether the cell should attempt to make
        updates.

        The base implementation returns {ctext true}
        if the cell is currently associated with 
        a {docref RecordField} and a {docref RecordSet}
        that are both {ctext modifiable?},  and
        if the cell is {docref RecordGridCell.editable?}
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 182415 101 {text {purpose
        Removes the pending value without firing any events.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 180363 118 {text {purpose 
        The record and column index of this cell in its {docref RecordGrid}.
    }
    {since 7.0}
  } 0  "(int, int)"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 162388 121 {text {purpose
        Does this cell have the grid focus?
    }
    {override
        Not normally overridden.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 184014 2 "" 10 e:KeyPress "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 159625 14 {unadvertised} "int" 2 -1}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 177345 "any" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 177716 2 "" "#GraphicOptions"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 177410 2 "" "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 159932 74 {text {purpose
        Initialize a new {docref RecordGridCell}.
    }
  } 0  ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 4553 14 {unadvertised} "TextFieldUI"$""}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 4623 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/rich-text-area.scurl" 45284 132 {text {purpose
        A {docref Command} for modifying the attribute values on a
        {docref RichTextArea}'s selection.
    }
} "SelectionContextCommand"$""}
{FieldDocInfo "controls/logical-controls/rich-text-area.scurl" 45932 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 47423 778 {text {purpose
        Obtains the current value of the attribute.
    }
    {return-vals
        The value, if valid, and a flag indicating validity.

        If the value exists and is consistent across the entire
        selection of the {ctext RichTextArea}, then {ctext valid?}
        will be true; otherwise, it will be false.
    }
    {notes
        The value is affected by the {docref
        RichTextArea.distinguish-unset-attributes?} option.

        When the option is true, unset text attributes on the {ctext
        RichTextString} are treated as if they had been set with their
        default values.  When the option is false, unset text
        attributes will have a value equal to {docref-abbr
        RichTextAttributeCommand.get-unset-value}.
    }
  } 0  "(value:any, valid?:bool)"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 45658 2 "" "any"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 47841 14 {unadvertised} 22 value:any, valid?:bool "void"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 48426 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 48588 2 "" 0  "void"}
{ClassProcDocInfo "controls/logical-controls/rich-text-area.scurl" 46542 554 {text {purpose
        The distinct and unique value used to represent an unset text
        attribute value.
    }
    {details
        The use of this value is affected by the {docref
        RichTextArea.distinguish-unset-attributes?} option.

        When the option is false, this value will be returned by
        {docref-abbr RichTextAttributeCommand.get-current-value} for
        unset text attribute values.

        When the option is true, this value will be effectively
        replaced by the default value for the text attribute.
    }
  } 0  "any"}
{FieldDocInfo "controls/logical-controls/rich-text-area.scurl" 45391 14 {unadvertised} "any" 0 }
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 45541 106 {text {purpose
        The value the attribute should take when the command is
        executed.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 48690 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/rich-text-area.scurl" 45862 97 {text {purpose
        The key of the attribute to modify when the command is executed.
    }
  } "String" 0 }
{FieldDocInfo "controls/logical-controls/rich-text-area.scurl" 45897 14 {unadvertised} "any" 0 }
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 49148 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 48254 14 {unadvertised} 41 name:String, key:String, rta:RichTextArea ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 4692 14 {unadvertised} "PasswordFieldUI"$""}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 4770 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5861 14 {unadvertised} "ComboBoxUndoItem"$""}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 7184 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5988 14 {unadvertised} "#String" 0 }
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 5946 14 {unadvertised} "#String" 0 }
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 6814 14 {unadvertised} 69 index:int, undo-str:#String, redo-str:#String, has-value?:bool = true ""}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 6597 14 {unadvertised} 26 selection-context:ComboBox "void"}
{MethodDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 6074 14 {unadvertised} 26 selection-context:ComboBox "void"}
{FieldDocInfo "controls/logical-controls/undo-cb-helpers.scurl" 6030 14 {unadvertised} "bool" 0 }
{ProcDocInfo "controls/logical-controls/shared.scurl" 734 14 {unadvertised} 10 valign:any "any"}
{ProcDocInfo "controls/logical-controls/menu-pane.scurl" 10702 799 {text {purpose 
        Add a context popup menu to a {docref Visual}.
    }
    {parameter v, 
        the {docref Visual} to which to add the context popup.
    }
    {parameter menu-pane, 
        the {docref MenuPane} to pop up.
    }
    {parameter menu-pane-proc, 
        a procedure to call to obtain the {docref MenuPane} to pop up.
        The argument to this procedure is the {docref Visual} to which
        this context menu is attached.
    }
    {details
        Creates a {docref context-popup} event handler and adds it to
        {param v}.  See {docref context-popup} for information about
        the meaning of {metavar menu-pane} and {metavar
        menu-pane-proc}, as well as for information about the context
        popup user interface and an example of its use.
    }
} 90 v:Visual, menu-pane:#MenuPane = null, menu-pane-proc:#{proc-type {Visual}:MenuPane} = null "void"}
{ClassDocInfo "controls/logical-controls/text-fields.scurl" 47348 2518 {text {purpose
        Implements a single-line text entry box.
    }
    {details
        A {ctext TextField} is a control into which a user can type any
        string of characters.  The {ctext TextField} registers that a user
        is done entering characters in one of two ways:
        {itemize
            {item
                The user moves keyboard focus out of the {ctext
                TextField}.
            }
            {item
                The user presses the {ctext Enter} key in the {ctext
                TextField}.
            }
        }
        The value of a {ctext TextField} is a {docref String} consisting
        of the characters in the {ctext TextField}.
    }
    {expected-events
        {event ValueChanged,
            Fired when any key is typed, when any editing {docref
            Command}s occur (e.g., cut, paste), or when {docref-abbr
            TextField.set-value-with-events} is called.
        }
        {event ValueFinished,
            Fired when focus is lost, when the user presses the {ctext
            Enter} key, or when {docref-abbr
            TextField.set-value-with-events} is called.  The event is
            guaranteed to fire if the {docref-abbr TextField.value}
            has changed since the last {docref ValueFinished}, but
            may fire even if the {ctext value} has not changed.
        }
        {event Action,
            Fired when the user presses the {ctext Enter} key.  Needed
            when the application must distinguish between focus loss
            and an {ctext Enter} keystroke, such as in a modal dialog
            with a single text field and a "Cancel" button.
        }

        {event Commit,
            Sent by {docref Dialog} when {docref Dialog.commit} is
            called.
        }
        Event handlers written for {docref PointerPress}, {docref
        PointerRelease}, and {docref RawKeyPress} will not be
        triggered; use {docref ValueChanged}, {docref ValueFinished},
        or {docref KeyPress} instead.
    }
    {visual-testing
        This class implements the {ctext CurlEdit} visual test type.
        See {docref BaseTextField} for details.
    }
    {notes
        This object can be styled by writing style rules for "TextField" and
        "TextField/string-box". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
                     },
        Skinning Text Controls} for more information.
    }
} "BaseTextField"$"SRGTextField"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 47414 2 "" "String"}
{OptionDocInfo "controls/logical-controls/text-fields.scurl" 49857 "any" 8 "origin" 270 {text {purpose
        Specifies how the text within this object will be horizontally
        aligned, relative to the display area of the control.
    }
    {details
        See {docref Frame.halign} for information about
        valid values for this option.
    }
  }}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 49945 2 "" "String"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 50070 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 50276 2 "" 30 text-to-insert:StringInterface "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 48907 1306 {text {purpose
        Creates a {ctext TextField}.
    }
    {parameter data-model,
        The initial {docref-abbr TextField.data-model} for this {ctext
        TextField}.  When this value is {ctext null}, the {docref-abbr
        TextField.create-data-model} method will be called to create the
        initial data model.
    }
    {parameter value,
        The initial {docref-abbr TextField.value} of the 
        {ctext TextField}.  If {ctext null}, and a {ctext data-model}
        parameter was provided which was not empty, the value of the 
        control will be the {ctext data-model}'s contents. Otherwise, 
        {docref TextField.has-value?} will be false, and the 
        {docref-abbr TextField.prompt} (if any) will be displayed instead.
    }
    {parameter prompt,
        The initial {docref-abbr TextField.prompt} {docref String} to
        be shown when {docref TextField.has-value?} is {ctext false}.
    }
    {parameter max-chars,
        The initial {docref-abbr TextField.max-chars} value, which
        specifies the maximum number of characters that should be
        entered into the {ctext TextField}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 135 data-model:#StringDataModel = null, value:#String = null, prompt:#String = null, max-chars:int = -1, ui-object:#TextFieldUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 235198 164 {text {purpose
        A {docref RecordSort} that is based on a single
        {docref RecordGridColumn} and sorts by its {ctext sort-spec}.
    }
    {since 7.0}
} "RecordSort"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 235676 78 {text {purpose
        The base {docref RecordSort}.
    }
    {since 7.0}
  } "RecordSort" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 237141 2 "" 70 list:{Sequence-of Record}, record-set:RecordSet, reverse?:bool = false "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 235546 100 {text {purpose
        Whether to sort in increasing order, or decreasing.
    }
    {since 7.0}
  } "bool" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 236954 2 "" 20 r1:Record, r2:Record "int"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 235386 106 {text {purpose
        The {docref RecordGridColumn} this sort operates against.
    }
    {since 7.0}
  } "RecordGridColumn" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 236201 466 {text {purpose
        Instantiate this object.
    }
    {parameter column,
        The {docref RecordGridColumn} on which to sort.
    }
    {parameter ascending?,
        Whether to sort in increasing order, or decreasing.
    }
    {details
        The {ctext sort-spec} for the given column must be non-{ctext null},
        or an error will be thrown. That {ctext sort-spec} will be used
        as the {ctext delegate} for this sort.
    }
    {since 7.0}
  } 40 column:RecordGridColumn, ascending?:bool ""}
{ClassDocInfo "controls/logical-controls/rich-text-area.scurl" 12286 12194 {text {purpose 
        Implements a multiple-line editable rich text control.
    }
    {details
        A {ctext RichTextArea} is a control that lets the user type in
        some arbitrary string and allows visual formatting (e.g.,
        bold, italic).  A newline in the data indicates a hard
        line-break.

        The {ctext RichTextArea} knows the user is done in one way:
        when the user moves keyboard focus out of the {ctext
        RichTextArea}.

        The value of a {ctext RichTextArea} is a {docref
        RichTextString} consisting of the formatting text in the
        {ctext RichTextArea}.
    }
    {expected-events
        {event ValueChanged,
            Fired when any key is typed, when any editing {docref
            Command}s occur (e.g., cut, paste), or when {docref-abbr
            RichTextArea.set-value-with-events} is called.
        }
        {event ValueFinished,
            Fired when focus is lost or when {docref-abbr
            RichTextArea.set-value-with-events} is called.  The event
            is guaranteed to fire if the {docref-abbr
            RichTextArea.value} has changed since the last {docref
            ValueFinished}, but may fire even if the {ctext value} has
            not changed.
        }
        {event Commit,
            Sent by {docref Dialog} when {docref Dialog.commit} is
            called.
        }
        Event handlers written for {docref PointerPress}, {docref
        PointerRelease}, and {docref RawKeyPress} will not be
        triggered; use {docref ValueChanged}, {docref ValueFinished},
        or {docref KeyPress} instead.
    }
    {notes
        To manipulate the control's selection directly, instead of
        invoking {docref Command}s on the control's {docref
        SelectionContext}, use the {docref-abbr
        BaseTextControl-of.selected-range} accessor.

        The actual drawing is generally done
        by the UI delegate object for this control ({docref
        RichTextAreaUI}), unless a subclass chooses not to use it.  The
        controls provided by Curl, Inc. use UI
        delegate objects that are defined within the standard
        look-and-feel.

        This object can be styled by writing style rules for "RichTextArea",
        "RichTextArea/format-panel" and "RichTextArea/string-box". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
                     },
        Skinning Text Controls} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlRichEdit} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Activate
                }
                {cell font-style = "italic", <none>}
                {cell Activates the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Bold
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} ("ON" or "OFF")
                }
                {cell
                    Sets the {docref font-weight} property to
                    {ctext FontWeight.bold} (ON) or
                    {ctext FontWeight.normal} (OFF).
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Color
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} in the format "#{param num}"
                }
                {cell
                    Sets the {docref color} property based on the
                    index {param num} of the color in the UI object's
                    formatting panel. The default UI object supports
                    the following values: 0 (white), 1 (black), 2
                    (brown), 3 (magenta), 4 (red), 5 (orange), 6
                    (yellow), 7 (green), 8 (cyan), 9 (blue), 10
                    (purple), 11 (gray).
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    ClearSelection
                }
                {cell font-style = "italic", <none>}
                {cell Deselects all text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Delete
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell Deletes a range of text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    FontFamily
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell Sets the {docref font-family} property to {param val}.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    FontSize
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}

                }
                {cell
                    Sets the {docref font-size} property to {param
                    val} converted to a Distance.  The default UI
                    supports the following values: 8pt, 9pt, 10pt,
                    11pt, 12pt, 14pt, 16pt, 18pt, 20pt, 22pt, 24pt,
                    26pt, 28pt, 36pt, 48pt, 72pt.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Insert
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param text}:{docref String},
                    {param index}:{docref int}
                }
                {cell Inserts the {param text} string at position {param index}.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Italic
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} ("ON" or "OFF")
                }
                {cell
                    Sets the {docref font-weight} property to
                    {ctext FontWeight.bold} (ON) or
                    {ctext FontWeight.normal} (OFF).
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    LineThrough
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} ("ON" or "OFF")
                }
                {cell
                    Sets the {docref text-line-through?} property to
                    {ctext true} (ON) or {ctext false} (OFF).
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Replace
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param text}:{docref String},{br}
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell
                    Replaces the range from {param start-index} to
                    {param end-index} with the {param text} string.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Set
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell Sets the value of the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetCaretPos
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell Selects a range of text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetSecure
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell
                    After decoding {param val} via {docref
                    TestPlayer.clarify-string}, this sets the value of the
                    control.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetSelection
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param index}:{docref int}
                }
                {cell Sets the caret position in an edit box.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Underline
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} ("ON" or "OFF")
                }
                {cell
                    Sets the {docref text-underline?} property to
                    {ctext true} (ON) or {ctext false} (OFF).
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param caret-position}:{docref int}
                }
                {cell The current caret position.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param end_selection}:{docref int}
                }
                {cell
                    The last index of the current selection.  If no text is
                    selected, this will match the value of {param
                    caret-position}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start_selection}:{docref int}
                }
                {cell
                    The first index of the current selection.  If no text is
                    selected, this will match the value of {param
                    caret-position}.
                }
            }
        }
    }
} "{BaseTextControl-of
        RichTextString,
        RichTextStringDataModel,
        RichTextStringDataModelWritableRange
    }"$""}
{OptionDocInfo "controls/logical-controls/rich-text-area.scurl" 16946 "bool" 5 false 1190 {text {purpose
          Indicates whether unset text attribute values should be
          effectively replaced by the default value for the attribute.
      }
      {details
          The attributes that can apply to {docref RichTextString}s
          are unset by default.  When true, this option indicates that
          each unset attribute value should be effectively replaced by
          the default value for the attribute.  When false, this
          option indicates that unset attribute values should be
          treated as distinct entities.

          The visual appearance of the text is not affected by this
          option, since the effective values are always used to render
          the text.  However, when this option is false, the
          formatting panel for the {ctext RichTextArea} will allow
          text attribute values to be unset.

          This option affects {docref-abbr RichTextArea.value},
          {docref-abbr RichTextArea.format-as-curl-source-fragment},
          {docref-abbr RichTextArea.format-as-html-fragment}, and
          {docref RichTextAttributeCommand.get-current-value}.
          See these items for more information.
      }
  }}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 34540 14 {unadvertised} 28 num-chars:int, forward?:bool "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 19854 2 "" "RichTextString"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 29418 14 {unadvertised} 21 key:String, value:any "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 37355 14 {unadvertised} 27 message:StringRemoveMessage "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 18117 330 {text {purpose
        Indicates whether the selection context's text is currently
        editable.
    }
    {details
        The default implementation merely returns the value of
        {docref-abbr BaseTextField.editable?}.

        See {docref WritableTextSelectionContext.writable?} for more
        information.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 43911 1142 {text {purpose Return a {docref Command}, if present or {ctext null}.}
    {details
        In addition to the commands provided by any {docref
        WritableTextSelectionContext}, this object provides the
        following commands:
        {itemize
            {item modify-font-family (value type String)}
            {item modify-font-size (value type Distance)}
            {item modify-font-weight (value type FontWeight)}
            {item modify-font-style (value type FontStyle)}
            {item modify-color (value type FillPattern)}
            {item modify-text-underline? (value type bool)}
            {item modify-text-line-through? (value type bool)}
        }

        The type of {docref-abbr
        RichTextAttributeCommand.new-value-param} must match the
        expected type for the attribute being modified.  Other value
        types will cause an exception.

        The modification commands are used to manipulate individual
        rich text attribute values.  These commands are instances of
        {docref RichTextAttributeCommand}.
        
        See {docref CommandContext} for more information.
    }} 11 name:String "#Command"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 29006 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 38072 14 {unadvertised} 0  "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 39096 14 {unadvertised} 11 name:String "(key:String, valid?:bool)"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 30249 14 {unadvertised} 29 text-to-insert:RichTextString "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 33997 14 {unadvertised} 7 ch:char "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{ClassVariableDocInfo "controls/logical-controls/rich-text-area.scurl" 39040 14 {unadvertised} "String" 9 "modify-"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 26366 3182 {text {purpose
        Parse a source code fragment as a {ctext RichTextArea} value.
    }
    {parameter in,
        The {docref StringInterface} containing the source code.
    }
    {return-vals
        A {docref bool} indicating whether content or formatting may
        have been lost while parsing the source code fragment.
    }
    {details
        Source code fragments generated by the current or previous
        versions of {ctext RichTextArea} should be parsed successfully
        without loss of content or formatting information.

        Source code fragments generated from future versions of {ctext
        RichTextArea} may lose formatting information (but not
        content) when parsed.

        There is no guarantee that other source code fragments will
        accurately represent the content, or even parse at all.  This
        method is not intended to parse source code fragments other
        than those generated by {ctext RichTextArea}; even source code
        fragments that correctly display in an applet may not satisfy
        the precise rules by which the source code fragment is parsed.

        Nevertheless, here is an overview of the rules by which the
        source is parsed:

        {itemize
          {item
             Source code that could not possibly compile is treated
             as an error.
          }
          {item
             Unknown curly-expressions are treated as if they were
             {ctext \{text\}}.  For example, if a curl herald such as
             {ctext \{curl 1.0 applet\}} is present, it will be
             interpreted as the content "1.0 applet".
          }
          {item Unknown keyword arguments are ignored.}
          {item Keyword arguments with unknown values are ignored.}
        }

        When potential loss of information is detected, this method
        will return {ctext false}.
    }
    {for-example
        This example shows how to parse a source code fragment
        generated by a {ctext RichTextArea}.
        {example
            title = {text Parsing a RichTextArea's curl source fragment},
            {let rta:RichTextArea = {RichTextArea height = 1in}}
            {let ta:TextArea = {TextArea width = 10cm, height = 1in}}
            {value rta}{br}{value ta}

            {CommandButton label = "Format",
                {on e:Action do
                    set ta.value = {rta.format-as-curl-source-fragment}
                    {e.consume}
                }
            }
            {CommandButton label = "Parse",
                {on e:Action do
                    let success?:bool =
                        {rta.parse-curl-source-fragment ta.value}
                    {if not success? then
                        {popup-message
                            title = "Warning",
                            {text
                                Some content or formatting may have
                                been lost while parsing the source
                                code fragment.
                            }
                        }
                    }
                    {e.consume}
                }
            }
        }
    }
  } 18 in:StringInterface "bool"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 36779 14 {unadvertised} 27 message:StringSpliceMessage "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 42417 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 28426 1698 {text {purpose
        Format the value of the {ctext RichTextArea} as HTML.
    }
    {parameter out,
        The {docref TextOutputStream} to which the data should be
        formatted.  If this parameter is not supplied (or is specified
        as {ctext null}), the data will be formatted to a {docref
        String} and returned.
    }
    {return-vals
        If {param out} is specified, the empty {docref String};
        otherwise, a {docref String} containing the formatted data.
    }
    {details

        The obtained HTML is a fragment; it is not a valid HTML
        document.  To use the fragment as an HTML document, surround
        the fragment as follows:

        {pre
<html>
  <head>
    <title>My sample document</title>
  </head>
  <body>
    <p>{italic ...fragment...}</p>
  </body>
</html>
        }

        The HTML fragment obtained by this method should be sufficient
        to visually approximate the contents of the {ctext
        RichTextArea}.  Calling code should not assume anything about
        the internal syntax of the fragment, which is not intended to
        be concise and may change in a future release.
    }
    {notes
        This method is affected by the {docref-abbr
        RichTextArea.distinguish-unset-attributes?} option.

        For example, if the default font size were 10pt and the option
        were true, then the source would explicitly set the font size
        attribute to 12pt.

        Otherwise, it would leave the attribute value undefined.
        Leaving the attribute value undefined is useful when the
        formatted content should inherit the attribute value from the
        context in which it is used.
    }
  } 28 out:#TextOutputStream = null "String"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 18819 619 {text {purpose
        Create the {docref RichTextStringDataModel} for this {ctext
        RichTextArea}.
    }
    {parameter value,
        The value of the {ctext RichTextArea}.  {docref String}s
        should first be converted to {docref RichTextString}s.  Null
        values should be treated as the empty string.
    }
    {notes
        This method is not typically called directly.  It is called by
        the {ctext RichTextArea}'s constructor when the {param
        data-model} is null.  Subclasses may override this method to
        return a different type of {ctext RichTextStringDataModel}.
    }
  } 9 value:any "RichTextStringDataModel"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 19666 14 {unadvertised} "RichTextString"}
{OptionDocInfo "controls/logical-controls/rich-text-area.scurl" 15644 "bool" 4 true 1180 {text {purpose Display a panel for formatting the text.}
      {details
          The formatting panel typically includes controls for
          modifying various formatting attributes.  For example, it
          may include lists of fonts and colors.
      }
      {notes
          Attribute values are not always well-formed relative to the
          controls available in the formatting panel.  For example, if
          the selection contains both underlined and non-underlined
          text, the button for controlling the underlining of the text
          should assume a neutral form, indicating the ambiguity.

          Similar behavior should be used for a control representing
          an unambiguous, but unknown value.  For example, if the
          {docref RichTextString}'s font size is set to a value
          unknown to the font size control, the font size control
          should either add the value to its set of known values, or
          act as if the value were ambiguous.

          In either situation, the control should set the value to a
          known consistent value if the user gesture for setting the
          value is performed.
      }
  }}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 41134 1584 {text {purpose 
        Performs a visual testing action on an object.
    }
    {parameter action, 
        The name of the action to perform.
    }
    {parameter args,
        Arguments to the visual testing action.  The visual testing
        infrastructure checks the number and types of the arguments,
        but not their values.  Implementations should strive to handle
        all legal values and throw exceptions or errors for all
        illegal values.
    }
    {details
        Read the {docref Visual.test-run} documentation for general
        information about this method.  Read the {docref RichTextArea}
        documentation for a list of actions available on this object.
    }
    {notes
        If you attempt to use this method outside of the visual
        testing infrastructure, note that the actions that change
        attribute values ({ctext "Bold"},
        {ctext "Italic"}, {ctext "Underline"}, {ctext "LineThrough"},
        {ctext "FontFamily"}, {ctext "FontSize"}, {ctext "Color"})
        will not succeed unless the following protocol is used:

        {itemize
            {item Call {docref-abbr RichTextArea.become-active}.}
            {item
                Call {docref dispatch-events} with an parameter of
                {ctext false}.
            }
            {item Call {ctext test-run}.}
            {item
                Call {docref dispatch-events} with an parameter of
                {ctext false}.
            }
        }

        The visual test infrastructure normally performs these steps
        on your behalf.
    }
  } 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 42643 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 42729 1105 {text {purpose The value of this control, as a {docref RichTextString}.}
    {notes
        The value cannot be compared using {ctext ==}.  Use {docref
        RichTextString.equal?} instead.

        The value is affected by the {docref-abbr
        RichTextArea.distinguish-unset-attributes?} option.

        When the option is true, unset text attributes on the {ctext
        RichTextString} are treated as if they had been set with their
        default values.  This means the default values will continue
        to be used, even if the {ctext RichTextString} is then
        assigned as the value of a {ctext RichTextArea} which has the
        option set to false.

        When the option is false, unset text attributes are treated as
        distinct values.  This means that when the {ctext
        RichTextString} is assigned as the value of a different {ctext
        RichTextArea}, the attributes will continue to be unset.

        When setting the value, consider using {docref-abbr
        RichTextArea.set-value-with-events}, which fires events when
        the value changes.
    }
} "RichTextString"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 19443 14 {unadvertised} "RichTextString"}
{AccessorDocInfo "controls/logical-controls/rich-text-area.scurl" 12476 2 "" "String"}
{OptionDocInfo "controls/logical-controls/rich-text-area.scurl" 17658 "bool" 4 true 294 {text {purpose
        Specifies whether the user is allowed to enter values in the
        text control. By default it is {ctext true}.
    }
    {notes
        Setting this value to {ctext false} should also prevent
        the value's attributes from being changed.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 35973 14 {unadvertised} 30 text-to-insert:StringInterface "{UndoItem-of
                        RichTextString,
                        RichTextStringDataModel,
                        RichTextStringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 22792 2138 {text {purpose
        Format the value of the {ctext RichTextArea} as source code.
    }
    {parameter out,
        The {docref TextOutputStream} to which the data should be
        formatted.  If this parameter is not supplied (or is specified
        as {ctext null}), the data will be formatted to a {docref
        String} and returned.
    }
    {return-vals
        If {param out} is specified, the empty {docref String};
        otherwise, a {docref String} containing the formatted data.
    }
    {details
        The obtained source code is a fragment; it is not a valid
        applet, package, or script.  To use the fragment as an applet,
        append it to a string containing {curl-code {curl 7.0 applet}}.

        The source code fragment obtained by this method should be
        sufficient to visually approximate the contents of the {ctext
        RichTextArea}.  The internal syntax of the fragment is not
        intended to be concise and may change in a future release.
    }
    {notes
        This method is affected by the {docref-abbr
        RichTextArea.distinguish-unset-attributes?} option.

        For example, if the default font size were 10pt and the option
        were true, then the source would explicitly set the font size
        attribute to 12pt.

        Otherwise, it would leave the attribute value undefined.
        Leaving the attribute value undefined is useful when the
        formatted content should inherit the attribute value from the
        context in which it is used.
    }
    {for-example
        This example shows how the source code fragment might be used.
        {example
            title = {text Using a RichTextArea's curl source fragment},
            {let rta:RichTextArea = {RichTextArea}}
            {value rta}
            {CommandButton label = "Publish",
                {on e:Action do
                    {{View
                         {evaluate
                             {rta.format-as-curl-source-fragment}
                         }
                     }.show}
                    {e.consume}
                }
            }
        }
    }
  } 28 out:#TextOutputStream = null "String"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 32748 2 "" 30 sender:Observable, message:any "void"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 28793 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 38711 2 "" 11 name:String "#Command"}
{MethodDocInfo "controls/logical-controls/rich-text-area.scurl" 13862 1196 {text {purpose
        Creates a {ctext RichTextArea}.
    }
    {parameter value,
        The initial {docref-abbr RichTextArea.value} of the {ctext
        RichTextArea}.  If null, the value will not be set, {docref
        RichTextArea.has-value?} will be false, and the {docref-abbr
        RichTextArea.prompt} (if any) will be displayed instead.
    }
    {parameter prompt,
        The initial {docref-abbr RichTextArea.prompt} {docref
        RichTextString} to be shown when {docref
        RichTextArea.has-value?} is {ctext false}.
    }
    {parameter max-chars,
        The initial {docref-abbr RichTextArea.max-chars} value, which
        specifies the maximum number of characters that should be
        entered into the {ctext RichTextArea}.
    }
    {parameter data-model,
        The initial {docref-abbr RichTextArea.data-model} for this {ctext
        RichTextArea}.  When this value is {ctext null}, the {docref-abbr
        RichTextArea.create-data-model} method will be called to create the
        initial data model.
    }
    {parameter ui-object, The UI delegate that handles drawing and events.}
    {parameter ...,
        Additional option specifications.
    }
  } 162 value:#RichTextString = null, prompt:#RichTextString = null, max-chars:int = -1, data-model:#RichTextStringDataModel = null, ui-object:#RichTextAreaUI = null, ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 380 210 {text {purpose
        The option for a {docref RadioFrame} to advertise itself to
        its {docref RadioButton}s.
    }
    {details
        Set to the {docref RadioFrame} during its initialization.
    }
} 11 #RadioFrame 4 null}
{ClassDocInfo "controls/logical-controls/data-models.scurl" 15739 189 {text {purpose A simple implementation of {docref ListModel}.
    }
    {details
        This {code ListModel} uses an {docref Array} to keep track
        of the items in the list.
    }
} "ListModel"$""}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 18290 2 "" 374 e:any, equality-proc:#{proc-type {any, any}:bool} = null, search-direction:SearchDirection = SearchDirection.forward, starting-index:int = {if search-direction == SearchDirection.forward
                               then
                                  0
                               else
                                  self.size - 1
                              } "int"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 22288 136 {text {purpose Splices in a sequence of items at a given index.}
    {details See {docref Sequence-of.splice} for more information.}
  } 32 seq:{Sequence-of any}, index:int "void"}
{FieldDocInfo "controls/logical-controls/data-models.scurl" 16233 417 {text {purpose
        An {docref Array} containing the list of items.
    }
    {usage
        The reason this field is exposed is so that subclasses that
        need to add new functionality can do so by accessing the field
        directly.

        For functionality that already exists, however, subclasses
        should use the appropriate {docref ListModel} methods for
        accessing the items.
    }
  } "{Array-of any}" 0 }
{MethodDocInfo "controls/logical-controls/data-models.scurl" 20015 102 {text {purpose Filters items.}
    {details See {docref Sequence-of.filter} for more information.}
  } 24 p:{proc-type {any}:bool} "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 17096 2 "" 52 item:any, index:int, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 18193 2 "" 0  "{Iterator-of any}"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 20484 181 {text {purpose
        Filters elements, using the keys (indices) in the
        filter operation.
    }
    {details See {docref Sequence-of.filter-keys} for more information.}
  } 24 p:{proc-type {int}:bool} "void"}
{AccessorDocInfo "controls/logical-controls/data-models.scurl" 18126 2 "" "int"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 18043 2 "" 9 index:int "any"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 19291 188 {text {purpose
        Returns a {docref DefaultListModel} containing clones of a
        range of items.
    }
    {details See {docref Sequence-of.clone-range} for more information.}
  } 21 start:int, length:int "DefaultListModel"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 21353 135 {text {purpose
        Push an item to the end of the list.
    }
    {details See {docref Sequence-of.push} for more information.}
  } 8 item:any "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 19676 152 {text {purpose
        Concatenates a sequence to the end of {ctext self}.
    }
    {details See {docref Sequence-of.concat} for more information.}
  } 21 seq:{Sequence-of any} "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 21899 115 {text {purpose
        Sorts the items.
    }
    {details See {docref Sequence-of.sort} for more information.}
  } 51 comparison-proc:#{proc-type {any, any}:bool} = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 21659 134 {text {purpose
        Reverses the order of the items.
    }
    {details See {docref Sequence-of.reverse} for more information.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 17321 2 "" 52 index:int, item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 17894 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 16873 2 "" 41 item:any, source:#ListModelControl = null "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 17542 2 "" 56 index:int, length:int = 1, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 21012 193 {text {purpose
        Pop an item from the list (that is, the element
        at index {code size - 1}.)
    }
    {details
        See {docref Sequence-of.pop} for more information.
    }
  } 0  "any"}
{MethodDocInfo "controls/logical-controls/data-models.scurl" 16677 392 {text {purpose Initializes a {docref DefaultListModel}.}
    {parameter ..., A list of items to be represented. These items are
        stored internally in an array. An item will be passed to the
        {docref ListModelControl.list-item-creation-proc} to obtain
        the {docref ListItem} that is shown in a control such as a
        {docref ListBox} or {docref DropdownList}.
    }
  } 3 ... ""}
{VariableDocInfo "controls/logical-controls/color-dropdown.scurl" 141 14 {unadvertised} 11 StringArray 234 {StringArray 
        "white", 
        "black", 
        "brown", 
        "magenta", 
        "red", 
        "orange", 
        "yellow", 
        "green", 
        "cyan", 
        "blue", 
        "purple", 
        "gray" 
    }}
{ClassDocInfo "controls/logical-controls/menu-bar-ui.scurl" 452 360 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref MenuBar}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
    {since 6.0}
} "Frame, ControlUI"$"StandardMenuBarUI, SkinnableMenuBarUI"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 2644 602 {text {purpose
        Method called by {docref MenuBar} when a {docref Graphic} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {notes
        This is called by {docref MenuBar.note-item-removed}. It
        should not be called from any other place.
    }
    {override
        The subclasses of {docref MenuBarUI} should react to it by
        making sure that they remove the {ctext Graphic} that
        corresponds to the {param index}, before it was removed from
        the {ctext MenuBar}.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3160 437 {text {purpose
        Method called by {docref MenuBar} when {docref MenuBar.clear}
        is called.
    }
    {notes
        This is called by {docref MenuBar.note-items-cleared}. It
        should not be called from any other place.
    }
    {override
        The subclasses of {docref MenuBarUI} should react to it by
        making sure that they remove all menu items from their user
        interface.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 1965 625 {text {purpose
        Method called by the {docref MenuBar} when a new {docref
        Graphic} is added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {notes
        This is called by {docref MenuBar.note-item-added}. It should
        not be called from any other place.
    }
    {override
        The subclasses of {docref MenuBarUI} should react to it by
        making sure that they add the newely added {ctext Graphic} in
        their user interface objects. To get the {ctext Graphic} to
        add use {docref MenuBar.get} method.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 1174 2 "" 10 e:KeyPress "void"}
{AccessorDocInfo "controls/logical-controls/menu-bar-ui.scurl" 1090 219 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
    {since 6.0}
  } "MenuBar"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 755 216 {text {purpose
        Construct a new {ctext MenuBarUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
    {since 6.0}
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/base-tab-control.scurl" 10951 1047 {text {purpose
        The common base class for {docref SingleTabControl} and
        {docref MultiTabControl}.
    }
    {notes
        Several classes cooperate to implement the {ctext BaseTabControl}.
        The responsibilities are as follows:

        {ctext BaseTabControl}: The API for the container itself. It owns
        the set of {ctext TabPane}s that can be shown one at a time
        through the user interface.

        {docref TabPane}: One "page" of things that can be shown in
        the main content area of the {ctext BaseTabControl}.

        {docref BaseTabControlUI}: The user interface delegate. It 
        handles mouse and keyboard events, arranges to show one
        pane at a time, and provides affordances to select the 
        desired pane.  

        {ctext BaseTabControlUI} is an abstract class. Subclasses
        implement a particular UI.
    }
    {expected-events
        {event
            CurrentPaneChanged,
            Fired at the {ctext BaseTabControl} when a new pane is shown.
        }
    }
} "MultiUIControlFrame"$"SingleTabControl, MultiTabControl"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 24214 14 {unadvertised} 0  "void"}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 11033 14 {unadvertised} "int" 1 1}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 23193 247 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter pane, {ctext TabPane} to be shown.}
    {return-vals 
        {ctext true} if the {ctext TabPane} was shown
        successfully, otherwise {ctext false}.
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 17305 1319 {text {purpose 
        Add a {docref TabPane} to the {ctext BaseTabControl}.
    }
    {parameter 
        pane, The {ctext TabPane} to be added.
    }
    {parameter 
        before, If {ctext non-null}, insert the new {ctext TabPane}
        before this one. This parameter has precedence if both 
        {param before} and {param after} are given.
    }
    {parameter 
        after, If {ctext non-null}, insert the new {ctext TabPane} after
        this one. The {param before} parameter has precedence if both
        {param before} and {param after} are given.
    }
    {parameter 
        show?, If {ctext true}, the added {ctext TabPane} will be
        showing after it is added. Defaults to the value of
        the property with the same name on {ctext TabPane}.
    }
    {details
        If {param pane} has a {docref TabPane.label} property of {ctext null}
        this method will assign an automatically generated label to this 
        property. 
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was added
        successfully.
    }
    {override
        Not normally overridden. The default implementation of this
        method calls  {docref BaseTabControl.add-pane-at-index} with
        the appropriate arguments.  Subclasses should 
        override that method.
    }
  } 84 pane:TabPane, before:#TabPane = null, after:#TabPane = null, show?:bool = pane.show? "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 23975 292 {text {purpose 
        Show the last {docref TabPane}.
    }
    {return-vals 
        {ctext true} if the last pane was shown
        successfully.
    }
    {details
        This method is a convenience method that
        simply calls {docref BaseTabControl.show-pane-at-index}.
    }
  } 0  "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 15730 917 {text {purpose 
        Inform the {ctext BaseTabControl} that one of
        its panes has changed.
    }
    {parameter
        pane, the {docref TabPane} which was modified. 
    }
    {details
        Called when properties of the {ctext TabPane} are
        changed.  Note that this includes properties specific to 
        {ctext TabPane} such as {docref TabPane.label}, 
        {docref TabPane.tab-button-tooltip} and 
        {docref TabPane.first-active-control}.  It is not called
        for changes to inherited graphical options, or layout preferences,
        both of which are signaled through the normal means.
    
        The default implementation of this method calls 
        {docref BaseTabControlUI.note-pane-modified} in order to 
        inform it of the change.  
    }
    {override 
        Implementations should normally call the super implementation of
        this method.  
    }
  } 12 pane:TabPane "void"}
{AccessorDocInfo "controls/logical-controls/base-tab-control.scurl" 24103 14 {unadvertised} "BaseTabControlUI"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 22450 78 {text {purpose 
        Is this the currently shown {ctext TabPane}?
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 13987 1729 {text {purpose
        Adds a child {docref Graphic} to a {ctext BaseTabControl}.
    }
    {parameter g,
        the item to add. If {param g} is a {docref TabPane}, the
        {docref BaseTabControl.add-pane-at-index} method is called to add 
        it. Otherwise, a new {ctext TabPane} object is created with
        {param g} as its contents, and then the new pane is
        added using {ctext BaseTabControl.add-pane-at-index}.
    }
    {notes
        This method also accepts three keyword parameters:
        {itemize
            {item {param tab-label}{monospace \=}{italic label}
                specifies a {docref Visual} that will be set as the
                {docref-abbr TabPane.label} property of the
                {ctext TabPane} that is added.
            }
            {item {param index}{monospace \=}{italic where}
                specifies the {param index} argument that will be passed
                to {ctext BaseTabControl.add-pane-at-index}.
                If the {param index} argument is not specified, the
                new {ctext TabPane} is added after all the existing
                panes in this {ctext BaseTabControl}.
            }
            {item {param show?}{monospace \=}{italic true-or-false}
                specifies a value for the {param show?} property of the
                {ctext TabPane} that is added.
            }
        }
    }
    {return-vals
        The returned value equals {param g} if {param g} is a
        {ctext Graphic}.  Otherwise, the returned value is the result
        of casting {param g} to a {ctext Graphic} and equals the actual
        {ctext Graphic} that is the child of the {ctext TabPane} created
        by this method call.
    }
  } 10 g:any, ... "#Visual"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 24358 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 22866 343 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter 
        index, The position of the pane to be made {ctext current-pane}.
        The index of the first pane is 0.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and
        shown successfully, otherwise {ctext false}.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 25104 14 {unadvertised} 11 desc:String "#TabPane"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 19643 1206 {text {purpose 
        Add a {docref TabPane} to this {ctext BaseTabControl}
        at a specified position.
    }
    {parameter
        pane, The {ctext TabPane} to be added.
    }
    {parameter 
        index, The position of the newly inserted pane. The
        first pane is 0.
    }
    {parameter 
        show?, If {ctext true}, the added {ctext TabPane} will be
        showing after it is added. Defaults to the value of
        the property with the same name on {ctext TabPane}.
    }
    {details
        If {param pane} has a {docref TabPane.label} property of {ctext null}
        this method will cause an automatically generated label to this 
        property. 
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was added
        successfully. Otherwise {ctext false}.
    }
    {override
        The default implementation of this method does the actual
        bookkeeping of adding the pane to the {docref BaseTabControl.tab-panes}
        collection, generating a label if needed, and notifying the ui-object
        if necessary.  Therefore implementations should be sure to call the
        super implementation to ensure that this bookkeeping occurs.
    }
  } 48 pane:TabPane, index:int, show?:bool = pane.show? "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 21166 719 {text {purpose
        Remove a {docref TabPane} from this container.
    }
    {parameter pane, {ctext TabPane} to be removed.}
    {details 
        If the specified {ctext TabPane} is present in this
        {ctext BaseTabControl} it is removed.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and removed
        successfully, otherwise {ctext false}.
    }
    {override        
        The default implementation of this method simply calls
        {docref BaseTabControl.remove-pane-at-index} with the appropriate
        arguments.  Subclasses wishing to take custom actions when
        a tab is removed should typically override that method instead
        of this one.
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 21839 446 {text {purpose
        Remove a {docref TabPane} from this container.
    }
    {parameter index, position of {ctext TabPane} to be removed.}
    {details
        If the specified index is within bounds for this 
        {ctext BaseTabControl}, the corresponding {docref TabPane}
        is removed.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and removed
        successfully, otherwise {ctext false}.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 23586 319 {text {purpose 
        Show the first {docref TabPane}.
    }
    {return-vals 
        {ctext true} if the first pane was shown
        successfully, otherwise {ctext false}.
    }
    {details
        This method is a convenience method that
        simply calls {docref BaseTabControl.show-pane-at-index}.
    }
  } 0  "bool"}
{OptionDocInfo "controls/logical-controls/base-tab-control.scurl" 11639 "bool" 4 true 89 {text {purpose
        Should the button show a visual indication of key focus?
    }
  }}
{FieldDocInfo "controls/logical-controls/base-tab-control.scurl" 11459 371 {text {purpose 
        The {docref TabPane}s in this {ctext BaseTabControl}.
    }
    {details
        This collection should not be modified directly.
        Instead use {docref BaseTabControl.add-pane},
        {docref BaseTabControl.add-pane-at-index}, 
        {docref BaseTabControl.remove-pane}, or
        {docref BaseTabControl.remove-pane-at-index}.
    }
  } "{Array-of TabPane}" 20 {{Array-of TabPane}}}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 14734 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 18221 14 {unadvertised} 0  "String"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 22136 215 {text {purpose 
        Remove all of the {docref TabPane}s from this
        {ctext BaseTabControl}.
    }
    {notes
        {docref BaseTabControl.clear} is implemented by
        calling this method.
    }  
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control.scurl" 11965 229 {text {purpose
        Initialize a {ctext BaseTabControl}.
    }
    {parameter 
        ui-object, The UI delegate.
    }
    {parameter 
        ..., Option settings, event handlers, or {docref TabPane}s to be added.
    }
  } 39 ui-object:#BaseTabControlUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 62237 14 {unadvertised} ""$""}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 62292 14 {unadvertised} "Box" 0 }
{MethodDocInfo "controls/logical-controls/buttons.scurl" 63343 2 "" 3 ... "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 62375 14 {unadvertised} "Background" 0 }
{MethodDocInfo "controls/logical-controls/buttons.scurl" 62966 2 "" 5 a:any "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 62614 2 "" 21 key:String, value:any "void"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 62335 14 {unadvertised} "RadioFrame" 0 }
{MethodDocInfo "controls/logical-controls/buttons.scurl" 62415 14 {unadvertised} 29 container:Box, rbf:RadioFrame ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 1351 14 {unadvertised} 224 renderer2d:Renderer2d, x:Distance, y:Distance, string:StringInterface, font:Font = renderer2d.font, fill-pattern:FillPattern = renderer2d.fill-pattern, start:int = 0, length:int = string.size - start, tab-origin:Distance = x "void"}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 449 356 {text {purpose The abstract user interface for a {docref ListBox}.}
    {details
        This class defines the interface for {docref-abbr
        ListBoxUI.selection-point} and {docref-abbr
        ListBoxUI.selection-anchor}, for tearing down and building up
        the {docref ListItem}s, and defines several of useful helper
        functions.
    }
} "Frame, ControlUI"$"StandardListBoxUI, SkinnableListBoxUI"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 6296 632 {text {purpose
        Notifies this object that a {docref ListItem} has been
        selected or deselected.
    }
    {parameter item,
        The {ctext ListItem}.
    }
    {details
        When setting {docref ListItem.selected?} causes the selection
        state to change, this method gets called so that the control
        can update its internal selection state to match.

        Code using the {docref ListBox} should not typically need to
        call this method.
    }
    {notes
        This method is also called when the {docref ListItem} has
        been deselected, not just when it has been selected.
    }
  } 13 item:ListItem "void"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 1017 394 {text {purpose
        Indicates whether the {docref ListBoxUI} currently has the
        keyboard focus.
    }
    {details
        This value is set automatically by {docref
        ListBoxUI.on-focus-in} and {docref ListBoxUI.on-focus-out}.
        Subclasses typically should not set this value explicitly.
    }
    {deprecated
        Use {docref Visual.has-key-focus?} instead.
    }
  } "bool" 5 false}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 2690 409 {text {purpose Where the point of the selection is.}
    {details
        A value of -1 (the default) implies that the point is unset.
        When setting, if the specified value is outside the allowable
        range, the point is set to the closest allowable value. If
        there is no possible {ctext selection-point} (i.e., if the
        size of the control is 0), this property will be -1.
    }
  } "int"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 1415 120 {text {purpose
        Indicates whether the {docref-abbr ComboBoxUI.set-size} method
        has been called.
    }
  } "bool" 5 false}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 3824 2 "" "int"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 1868 167 {text {purpose
        The {pop static event handler} for {docref FocusIn} events.
    }
    {details Sets the {docref ListBoxUI.focus?} property to {ctext true}.}
  } 9 e:FocusIn "void"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 569 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 4435 514 {text {purpose
        Set up the visual representation for a {docref ListItem} that
        has been added to the {docref ListBox}.
    }
    {parameter i,
        The position of the item to be set up.
    }
    {details 
        This method is called once the {ctext ListBox} has already
        created a {ctext ListItem} and added it to its array at
        position {param i}. This method is responsible for doing
        whatever is necessary to make that {ctext ListItem} appear
        visually.
    }
  } 5 i:int "void"}
{FieldDocInfo "controls/logical-controls/list-control-uis.scurl" 526 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 2157 169 {text {purpose
        The {pop static event handler} for {docref FocusOut} events.
    }
    {details Sets the {docref ListBoxUI.focus?} property to {ctext false}.}
  } 10 e:FocusOut "void"}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 3509 409 {text {purpose Where the selection is anchored.}
    {details 
        A value of -1 (the default) implies that the anchor is unset.
        When setting, if the specified value is outside the allowable
        range, the anchor is set to the closest allowable value. If
        there is no possible {ctext selection-anchor} (i.e., if the
        size of the control is 0), this property will be -1.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 5599 599 {text {purpose
        Set up the visual representation for the current set of
        {docref ListItem}s in the {docref ListBox}.
    }
    {details
        This method is called when the whole box should be rebuilt
        from scratch. It is called instead of calling {docref-abbr
        ListBoxUI.teardown-item} for each item current there, and then
        {docref-abbr ListBoxUI.setup-item} for each new item, so that
        its implementation can be more efficient. When it is called
        the array of {ctext ListItem}s on the {ctext ListBox} has
        already been modified.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 3005 2 "" "int"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 1466 2 "" 30 lc:LayoutContext, bounds:GRect "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 6948 565 {text {purpose
        Selects a range of {docref ListItem}s, optionally deselecting
        all others.
    }
    {details
        This method will fire a {docref ValueChanged} event if the new 
        selection represents a change in the value of the listbox.
    }
    {parameter lower,
        The index of the first {ctext ListItem} in the selected range.
    }
    {parameter upper,
        The index of the last {ctext ListItem} in the selected range.
    }
    {parameter deselect-others?,
        When true, all other items should be deselected.
    }
  } 43 lower:int, upper:int, deselect-others?:bool "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 8570 442 {text {purpose
        Selects one or more {docref ListItem}s.
    }
    {parameter indexes,
        An array of integers representing the indexes of the {ctext
        ListItem}s to select. All othet {ctext ListItem}s are
        deselected.
    }
    {details
        This method will fire a {docref ValueChanged} event if the new
        selection represents a change in the value of the {docref
        ListBox}.
    }
    {since 6.0}
  } 22 indexes:{Array-of int} "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 4928 424 {text {purpose
        Remove the visual representation for a {docref ListItem} that
        will be removed from the {docref ListBox}.
    }
    {details
        This method is called before the {ctext ListBox} removes a
        {ctext ListItem} from position {param i} in its item
        array. This method is responsible for doing whatever is
        necessary to make that {ctext ListItem} disappear visually.
    }
  } 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 1178 110 {text {purpose Construct this object.}
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/group-box.scurl" 701 609 {text {purpose
        A container to group controls.
    }
    {notes
        Controls contained within a {ctext GroupBox} control can be 
        selected or receive focus. The {ctext GroupBox} itself, by default,
        cannot be selected or receive focus.

        This object can be styled by writing style rules for "GroupBox",
        "GroupBox/label", "GroupBox/content" and "GroupBox/header". See {link
        href = {url
                   "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
               },
        Skinning Other Controls} for more information.
    }
} "MultiUIControlFrame"$""}
{OptionDocInfo "controls/logical-controls/group-box.scurl" 3434 "#SkinSpec" 4 null 356 {text {purpose
        A specification used by this control to determine the
        visual appearance of its title block.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/group-box.scurl" 5648 359 {text {purpose
        The label to be shown in the {docref GroupBox}.
    }
    {details
        For any other type of object, an automatic conversion to a
        {docref Label} is performed. If the value is a String, the
        ampersand character ('&') is recognized as a prefix to
        indicate the mnemonic for the
        {ctext GroupBox}
    }
  } "#Label"}
{OptionDocInfo "controls/logical-controls/group-box.scurl" 4298 "#SkinSpec" 4 null 357 {text {purpose
        A specification used by this control to determine the
        visual appearance of its content well.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{FieldDocInfo "controls/logical-controls/group-box.scurl" 799 14 {unadvertised} "StandardActiveTraversalContainer" 0 }
{AccessorDocInfo "controls/logical-controls/group-box.scurl" 6146 148 {text {purpose
        Returns the {docref StandardActiveTraversalContainer} which
        contains the contents of the {docref GroupBox}.
    }
  } "StandardActiveTraversalContainer"}
{OptionDocInfo "controls/logical-controls/group-box.scurl" 2970 "int" 0  2 ""}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 4353 2 "" 10 g:any, ... "#Visual"}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 4715 188 {text {purpose
        Remove the child of the {docref GroupBox}.
    }
    {deprecated
        Use the {docref GroupBox.clear} to remove the child of
        a {ctext GroupBox}.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/group-box.scurl" 769 14 {unadvertised} "#Label" 0 }
{OptionDocInfo "controls/logical-controls/group-box.scurl" 2919 "bool" 5 false 492 {text {purpose
        A boolean representing whether this {ctext GroupBox} takes part in
        traversal-related activities.  
    }
    {details
        If {ctext false}, the object should refuse to {ctext become-active}
        when requested. The object will thus be skipped during tab traversing, and
        manipulation of the object should not cause the key-focus or
        "activeness" to be taken from another traversor.  
        
        The default is {ctext false}.
    }
  }}
{OptionDocInfo "controls/logical-controls/group-box.scurl" 3877 "#SkinSpec" 4 null 374 {text {purpose
        A specification used by this control to determine the
        visual appearance of its label, within the title block.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/group-box.scurl" 879 2 "" "String"}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 4851 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 4962 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 5072 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/group-box.scurl" 5714 2 "" "#Label"}
{MethodDocInfo "controls/logical-controls/group-box.scurl" 1808 743 {text {purpose
        Creates a {ctext GroupBox}.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter label,
        The label of the {ctext GroupBox}.
    }
    {parameter ..., 
        Option settings, event handlers, or a {docref Graphic} to be added
        as contents.
    }
    {for-example
        A {ctext GroupBox} can be created declaratively along with the 
        controls it contains.
        {example
            {GroupBox
                label = "Direction",
                {RadioFrame
                    {spaced-hbox
                        {RadioButton label = "Up"},
                        {RadioButton label = "Down"}
                    }
                }
            }
        }
    }
  } 60 label:#Label = "GroupBox", ui-object:#GroupBoxUI = null, ... ""}
{VariableDocInfo "controls/logical-controls/globals.scurl" 2215 131 {text {purpose 
        {docref Background} to use for alternate rows in order to
        produces "ledger-like" rendering.
    }
} 10 Background 22 Background.transparent}
{ClassDocInfo "controls/logical-controls/text-fields.scurl" 58825 777 {text {purpose Implements a single-line non-editable text entry box.}
    {details
        A {docref TextDisplay} looks approximately like a {docref
        TextField}, but it's not editable, and provides no visual
        hints that it is editable.  It is usually used as a status
        indicator.

    }
    {visual-testing
        This class implements the {ctext CurlEdit} visual test type.
        See {docref BaseTextField} for details.
    }
    {notes
        This object can be styled by writing style rules for "TextDisplay" and
        "TextDisplay/string-box". See {link href =
            {url
                "curl://install/docs/en/dguide/styled-controls.curl#skinning-text-controls"
            },
        Skinning Text Controls} for more information.
    }
} "{MultiUIValueControlFrame-of String}"$""}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 61295 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 60999 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 61226 2 "" "String"}
{OptionDocInfo "controls/logical-controls/text-fields.scurl" 60347 "bool" 5 false 493 {text {purpose
        A boolean representing whether this {ctext TextDisplay} takes part in
        traversal-related activities.
    }
    {details
        If {ctext false}, the object should refuse to {ctext become-active}
        when requested. The object will thus be skipped during tab traversing, and
        manipulation of the object should not cause the key-focus or
        "activeness" to be taken from another traversor.  
        
        The default is {ctext false}.
    }
  }}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 61069 2 "" "String"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 58917 14 {unadvertised} "String" 2 ""}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 61365 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 58954 2 "" "String"}
{OptionDocInfo "controls/logical-controls/text-fields.scurl" 60701 "any" 8 "origin" 292 {text {purpose
        Specifies how the text within the {ctext TextDisplay} will be
        horizontally aligned, relative to the display area of the
        control.
    }
    {details
        See {docref Frame.halign} for information about
        valid values for this option.
    }  
  }}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 60789 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 59381 236 {text {parameter value,
        The value of the {ctext TextDisplay}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 55 value:String = "", ui-object:#TextDisplayUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 42108 135 {text {purpose
        A {docref TextSelection} for use in association with a {docref
        StringDataModel}.
    }
    {since 6.0}
} "TextSelection"$""}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 42856 2 "" 0  "String"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 42447 248 {text {purpose
        The {docref StringDataModelRange} that this object represents.
    }
    {notes
        This field should be set only by the object with which {docref
        StringDataModelSelection} is associated.
    }
    {since 6.0}
  } "StringDataModelRange" 0 }
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 42762 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 42671 169 {text {purpose 
        Creates this object.
    }
    {parameter range,
        The {docref StringDataModelRange} that this object represents.
    }
    {since 6.0}
  } 26 range:StringDataModelRange ""}
{VariableDocInfo "controls/logical-controls/color-dropdown.scurl" 84 14 {unadvertised} 8 Distance 4 10pt}
{ClassDocInfo "controls/logical-controls/undo-helpers.scurl" 85 14 {unadvertised} ""$""}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 581 14 {unadvertised} 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 407 14 {unadvertised} 70 control:{BaseTextControl-of tValue, tDataModel, tRange}, num-chars:int "void"}
{FieldDocInfo "controls/logical-controls/undo-helpers.scurl" 158 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 871 14 {unadvertised} 138 control:{BaseTextControl-of
                                           tValue, tDataModel, tRange
                                       } "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 236 14 {unadvertised} 70 control:{BaseTextControl-of tValue, tDataModel, tRange}, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 623 14 {unadvertised} 138 control:{BaseTextControl-of
                                           tValue, tDataModel, tRange
                                       } "void"}
{AccessorDocInfo "controls/logical-controls/undo-helpers.scurl" 186 14 {unadvertised} "bool"}
{ClassDocInfo "controls/logical-controls/calendar-control-ui.scurl" 1542 14 {unadvertised} "CalendarControlUI"$""}
{MethodDocInfo "controls/logical-controls/calendar-control-ui.scurl" 1691 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/calendar-control-ui.scurl" 1624 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/menu-button.scurl" 83 14 {unadvertised} "InitRestArgParser"$""}
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 440 14 {unadvertised} "any" 0 }
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 943 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 1208 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 1506 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 410 2 "" "any" 0 }
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 268 2 "" "MenuButton" 41 {uninitialized-value-for-type MenuButton}}
{ClassProcDocInfo "controls/logical-controls/menu-button.scurl" 468 14 {unadvertised} 14 box:MenuButton "MenuButtonAddParser"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 1698 2 "" 10 g:any, ... "#Graphic"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 2242 2 "" 5 a:any "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 3032 2 "" 21 key:String, value:any "void"}
{ClassVariableDocInfo "controls/logical-controls/menu-button.scurl" 164 14 {unadvertised} "#MenuButtonAddParser" 0 }
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 2554 14 {unadvertised} 19 key:String, val:any "bool"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 1975 2 "" 0  "#Graphic"}
{ClassDocInfo "controls/logical-controls/group-box-ui.scurl" 437 345 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref GroupBox}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"StandardGroupBoxUI, SkinnableGroupBoxUI"}
{MethodDocInfo "controls/logical-controls/group-box-ui.scurl" 1021 201 {text {purpose
        Construct a new {ctext GroupBoxUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
  } 3 ... ""}
{AccessorDocInfo "controls/logical-controls/group-box-ui.scurl" 719 189 {text {purpose Return the control this UI delegate is attached to.}
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
  } "GroupBox"}
{ClassDocInfo "controls/logical-controls/buttons.scurl" 16962 3837 {text {purpose
        {ctext CheckButton} implements a check button control.
        This type of control is also known as a check box.
    }
    {details
        A {ctext CheckButton} is a two-state button that changes its
        state when a user presses, and then releases, the button.
        Normally this is done with the left mouse button, but it may
        also be done with whichever keys or buttons are appropriate
        for the current look-and-feel.

        The value of a {ctext CheckButton} is either {docref
        true}(when the button is checked) or {docref false} (when it
        is not).

        Note that there is an automatic conversion from a String to
        a {docref Label} which recognizes the ampersand character ('&')
        as a prefix to indicate the mnemonic for the button.
    }
    {notes
        This object can be styled by writing style rules for
        "CheckButton" and "CheckButton/toggle".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#button-skins"
        }, Button Skins} for more information.
    }
    {for-example
        {example
            {let 
                cb-state:Dynamic = false,
                cb = {CheckButton
                         label = "That's my final &answer.",
                         value = false,
                         style = "standard",
                         {on ValueFinished at btn:CheckButton do
                             set cb-state.value = btn.value
                         }
                     }
            }
            {VBox 
                spacing = 5pt,
                cb,
                {value cb-state}
            }
        }
    }
    {expected-events
        {event
            ValueChanged, Fired when a user presses and releases the
            button; also fired when {docref
            CheckButton.set-value-with-events} is called.
        }
        {event
            ValueFinished, Fired when a user presses and releases the
            button and after the {docref ValueChanged} event is fired;
            also fired when {docref CheckButton.set-value-with-events}
            is called.
        }
        {event
            Commit, Sent by {docref Dialog} when {docref
            Dialog.commit} is called.
        }

        Event handlers written for {docref PointerPress} and {docref
        PointerRelease} will not be triggered; use {docref
        ValueChanged} or {docref ValueFinished} instead.
    }
    {visual-testing
        This class implements the {ctext CurlCheckBox} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false, Set}
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String} (must be "ON" or "OFF")
                }
                {cell Sets the state of the button.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control (either "ON" or "OFF").}
            }
        }
    }
} "{MultiUIValueControlFrame-of bool}"$"SRGCheckButton"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 23707 "bool" 0  2 ""}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 17052 14 {unadvertised} "CheckButtonStyle" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 21739 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 24247 449 {text {purpose The label to be shown on the button.}
    {details
        If set to a {docref ReactiveLabel}, this is the same as setting
        the {docref CheckButton.reactive-label} property.

        For any other type of object, an automatic conversion to a
        {docref Label} is performed. If the value is a String, the
        ampersand character ('&') is recognized as a prefix to
        indicate the mnemonic for the button.
    }
  } "#Label"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 27571 188 {text {purpose Indicates whether the user is currently changing the value.}
    {details 
        Always false for a CheckButton, which changes its value
        instantaneously.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 21540 155 {text {purpose {ctext True} if this {docref Control} currently has a valid value.}
    {details Always true for a CheckButton; it is either on or off.}
  } "bool"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 17092 14 {unadvertised} "ReactiveLabel" 0 }
{OptionDocInfo "controls/logical-controls/buttons.scurl" 27317 "#SkinSpec" 4 null 364 {text {purpose
        A specification used by this control to determine the
        visual appearance of its toggle when checked.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 29004 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 21602 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 25111 2 "" "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 21198 453 {text {purpose
        The value of a {ctext CheckButton} that is to be submitted when
        the {ctext HttpForm} in which this control resides is
        submitted.

        If the {ctext CheckButton} is not selected the return value is null. 
        Otherwise the return value is {docref CheckButton.check-value} converted 
        to {ctext null} or a {docref String} using {docref ValueControl.form-string}
        for this conversion. 
    }
  } "any"}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 17472 294 {text {purpose
        The value of the check button that is submitted when the 
        {docref HttpForm} in which this {ctext CheckButton} is contained
        is submitted. 

        The {ctext CheckButton} will be submitted only if it has a 
        non-null name and is selected.
    }
  } "any" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 21675 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 26523 1103 {text {purpose 
        The button's visual style.  Default is
        {ctext CheckButtonStyle.standard}.
    }
    {usage Value must be one of:
        {itemize
            {item {ctext standard}:  Looks like a traditional check button,
                with the visuals specified by the look-and-feel always
                visible around the label.
            }
            {item {ctext label-only}:  The look-and-feel adds no visuals
                to the label(s) provided by the programmer other than a 
                focus rectangle to indicate when the button has focus.
            }
            {item {ctext command-button-standard}:  Looks like a "latching"
                push button that stays on or off when you press it.  Typically
                seen in toolbars of traditional desktop applications.
            }
            {item {ctext command-button-rollover}:  Like the
                {ctext command-button-standard} style, but the usual button
                visuals are only shown when the mouse pointer is over the
                button.
            }
        }
    }
  } "CheckButtonStyle"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 28101 451 {text {purpose 
        Sets the value of the CheckButton, and fires {docref ValueChanged}
        (if appropriate) and {docref ValueFinished} events afterwards; 
        effectively simulates a user setting the value interactively, without the visuals.
    }
    {parameter val, The value to which to set the CheckButton.}
    {details 
        This method first sets the control's value with {ctext set}, and
        then fires the events.
    }
  } 8 val:bool "void"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 28742 2 "" "String"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 26853 "bool" 4 true 89 {text {purpose
        Should the button show a visual indication of key focus?
    }
  }}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 22776 "any" 3 4px 912 {text {purpose
        The amount of space to be placed between the label and the
        edge of the button.
    }
    {details
        This property is used when drawing buttons of style
        {ctext CheckButtonStyle.command-button-standard} and 
        {ctext CheckButtonStyle.command-button-rollover}.
        
        The value of this property should be a distance greater
        than or equal to zero and will be rounded to a pixel
        size before application.  It is treated similarly
        to the {docref Graphic.margin} property,  which should 
        be consulted for more information. 
   
        Note that the standard UI delegate uses the area
        provided by this inset for drawing the rectangle which
        indicates the button is focused.  If this inset is completely 
        removed, the standard delegate will draw this focus rectangle
        on top of the label.
    }
  }}
{FieldDocInfo "controls/logical-controls/buttons.scurl" 17138 14 {unadvertised} "bool" 0 }
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 28837 2 "" "#String"}
{OptionDocInfo "controls/logical-controls/buttons.scurl" 23671 "any" 0  724 {text {purpose
        Determines the vertical alignment of the small check box displayed on
        the left side of the {docref CheckButton} with the button's label.
    }
    {usage
        This option is only of interest when the {docref CheckButton}'s
        label is an image, rather than plain text.
    }
    {notes
        {paragraph
            The most useful alignment values are {ctext "center"},
            which aligns the bottom of the small check box with the center
            of the label, and {ctext "origin"}, the default, which aligns
            the check box with the bottom of the label.
        }
        {paragraph
            See {docref Frame.valign} for more information.
        }
    }
  }}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 26599 2 "" "CheckButtonStyle"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 29234 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 17505 2 "" "String"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 28577 208 {text {purpose 
        Determines what happens when the button's mnemonic key
        is pressed.
    }
    {details 
        Inverts the current value of the {ctext CheckButton}, and fires events.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 20523 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 25019 457 {text {purpose 
        Provides a way to show different labels for button controls
        when they are pressed, disabled, etc.
    }
    {usage
        The simpler {ctext label} property will suffice for most uses of
        {docref CheckButton}.  Use this if you want to explicitly
        change the label when the button is pressed, rolled over,
        or disabled.
        See the {docref ReactiveLabel} documentation for more information.
    }
  } "ReactiveLabel"}
{AccessorDocInfo "controls/logical-controls/buttons.scurl" 24321 2 "" "#Label"}
{MethodDocInfo "controls/logical-controls/buttons.scurl" 19104 1236 {text {parameter value, 
        The value of the {ctext CheckButton}; if true, then the 
        {ctext CheckButton} is shown as checked.
    }
    {parameter check-value, 
        The value of the {ctext CheckButton} that is submitted when the 
        {docref HttpForm} in which this {ctext CheckButton} is contained 
        is submitted.
        
        The {ctext CheckButton} will be submitted only if it has a 
        non-null name and is selected.
    } 
    {parameter label,
        The initial value of the {docref CheckButton.label} property.
    }
    {parameter reactive-label, 
        The initial value of the {docref CheckButton.reactive-label} property.
    }
    {parameter style, 
        The initial value of the {docref CheckButton.style} property.
        Default is {ctext CheckButtonStyle.standard}.
    }
    {parameter text-breakable?, 
        By default the label will not break across lines.
    }
    {parameter valign, 
        The alignment of the Graphic with the label; useful values are currently 
        {ctext origin} and {ctext center}.
    }
    {parameter ui-object, 
        The UI delegate that handles drawing and events.
    }
    {parameter ..., event handlers and option settings.}
  } 253 value:bool = false, check-value:any = "on", label:#Label = "CheckButton", reactive-label:#ReactiveLabel = null, style:CheckButtonStyle = CheckButtonStyle.standard, text-breakable?:bool = false, valign:any = "origin", ui-object:#CheckButtonUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 31595 1215 {text {purpose 
        A superclass for CheckButton UI delegates.}
    {details 
        Objects in this class know that they are supposed to
        redraw themselves in various ways when certain events occur
        -- when disabled, rolled over, pressed, etc. -- but the 
        concrete subclasses must provide the actual drawing code.

        A CheckButtonUI object inherits indirectly from Frame, so subclasses
        can use any drawing mechanisms that can be used in a Frame.
    }
    {override 
        Concrete subclasses must override these methods:
        {itemize
            {item {docref CheckButtonUI.draw-as-normal}}
            {item {docref CheckButtonUI.draw-as-disabled}}
            {item {docref CheckButtonUI.draw-as-rollover}}
            {item {docref CheckButtonUI.draw-as-pressed}}
            {item {docref CheckButtonUI.draw-as-checked}}
            {item {docref CheckButtonUI.draw-as-disabled-checked}}
            {item {docref CheckButtonUI.draw-as-rollover-checked}}
            {item {docref CheckButtonUI.draw-as-pressed-checked}}
            {item {docref CheckButtonUI.modify-for-focus}}
            {item {docref CheckButtonUI.react-to-visual-change}}
        }
    }
} "BaseButtonUI"$"StandardCheckButtonUI, SkinnableCheckButtonUI"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 34655 55 {text {purpose Draw the button in its disabled state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 34069 80 {text {purpose 
        Toggles the value of the {docref CheckButton}.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35590 67 {text {purpose Draw the button in its rollover-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35978 56 {text {purpose Add visuals to indicate keyboard focus.}} 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35384 67 {text {purpose Draw the button in its disabled-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 34479 53 {text {purpose Draw the button in its normal state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35793 66 {text {purpose Draw the button in its pressed-and-checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 32656 301 {text {purpose Calls one or more of the draw methods; which ones depends
        on the state of the button.}
    {usage Should be called whenever the button's operational state
        changes, e.g. pressed or rollover.  This will usually get called
        from event handlers of various sorts.}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35188 54 {text {purpose Draw the button in its checked state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 35014 54 {text {purpose Draw the button in its pressed state.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 34839 62 {text {purpose Draw the button as the pointer rolls over it.}} 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 32076 57 {text {purpose
        Instantiate this object.
    }
  } 3 ... ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 3996 14 {unadvertised} 143 dc:DisplayContext, font:Font, string:StringInterface, start-index:int = 0, length:int = string.size - start-index, start-position:Distance = 0m "FloatDistance"}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 131746 1453 {text {purpose
        This class implements a non-selectable horizontal line that
        can be used to separate groups of list items in a list
        control.
    }
    {details
        A list separator can be created directly in a list-like
        control (e.g. a {docref ListBox} or {docref ComboBox}) by
        passing {ctext ListSeparator} as an argument, along with
        values or {docref ListItem}s. See the example below for a
        simple demonstration.

        Though they can't be selected, {ctext ListSeparator}s actually
        do have values, which can be used as placeholders for them in
        {docref ListModel}s.  By default, that value is a
        one-character {docref String} containing a hyphen ("-").  You
        can set another value by setting the {docref
        ListSeparator.value} property.  If you then want to recreate
        the contents of the list control (e.g. a {docref ListBox} or
        {docref ComboBox}) from the data model, you should give the
        control a {docref ListModelControl.list-item-creation-proc}
        that creates a {ctext ListSeparator} when given the value you
        chose for the separator.
    }
    {for-example
        {example
            {ListBox
                "red", "blue", "yellow", "green",
                {ListSeparator},
                "none"}
        }
    }
    {notes
        This object can be styled by writing style rules for "ListSeparator".
    }
} "ListItem"$""}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 131809 2 "" "String"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 132661 273 {text {purpose
        The {docref Graphic} to use as a separator.
    }
    {notes
        This is called by the constructor of this object.

        By default, it returns the {ctext Graphic} returned by the
        {docref menu-separator} proc.
    }
    {since 6.0}
  } 0  "Graphic"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 132172 172 {text {purpose 
        Construct this object.
    }
    {parameter value, 
        The placeholder value used to represent the separator in a
        list model.
    }
  } 15 value:any = "-" ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 211 119 {text {purpose
        {docref TreeNode}s currently selected
        in a {docref TreeControl}.
    }
    {since 4.0}
} "Selection"$""}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 864 42 {text {purpose Construct this object.}
  } 0  ""}
{AccessorDocInfo "controls/logical-controls/tree-control.scurl" 737 2 "" "bool"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 650 362 {text {purpose Currently selected nodes.}
    {details 
        Do not edit this set.  To alter the selection
        of a tree control, call selection related methods
        on the {docref TreeControl} directly.

        See {docref TreeControl.select-nodes}, 
        {docref TreeControl.select-nothing}, and
        {docref TreeControl.select-all}.
    }
  } "{Set-of TreeNode}" 19 {{Set-of TreeNode}}}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 9023 231 {text {purpose
        Used to notify the observers of a {docref StringDataModel}
        when a {docref StringInterface} has been inserted.
    }
    {notes
        See {docref StringDataModel.splice} for more information.
    }
} ""$""}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 9264 65 {text {purpose The position at which the insertion occurred.}
  } "int" 0 }
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 9144 62 {text {purpose The position at which the splice occurred.}
  } "int" 0 }
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 9548 227 {text {purpose Creates a {ctext StringSpliceMessage}.}
    {parameter index,
        The position at which the splice occurred.
    }
    {parameter length,
        The length of the inserted {docref StringInterface}.
    }
  } 21 index:int, length:int ""}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 9899 226 {text {purpose
        Used to notify the observers of a {docref StringDataModel}
        when a range of characters have been removed.
    }
    {notes
        See {docref StringDataModel.remove} for more information.
    }
} ""$""}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 10132 56 {text {purpose The number of {ctext char}s removed.}
  } "int" 0 }
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 10021 63 {text {purpose The position at which the removal occurred.}
  } "int" 0 }
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 10401 212 {text {purpose Creates a {ctext StringRemoveMessage}.}
    {parameter index,
        The position at which the removal occurred.
    }
    {parameter length,
        The number of {ctext char}s removed.
    }
  } 21 index:int, length:int ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 133153 207 {text {purpose
        A logical group of {ctext RecordGridColumns}.
    }
    {details 
        This class is used to represent a group of 
        {ctext RecordGridColumn}s in a {ctext RecordGrid}.
    }
} "BaseRecordGridColumn"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 133237 14 {unadvertised} "any" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 133266 14 {unadvertised} "{Array-of BaseRecordGridColumn}" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 133489 146 {text {purpose
        The index of the first {docref RecordGridColumn} under this group,
        or {ctext -1} if none.
    }
    {since 7.0}
  } "int" 2 -1}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 136058 401 {text {purpose
        The column children of this group.
    }
    {details
        Important Note: While the individual columns in this 
        collection may be edited directly, the collection itself 
        should not be modified. To change the set (or order) of 
        columns being displayed, edit a clone of this collection, 
        and reset the property to be the edited clone.
    }
  } "{Array-of BaseRecordGridColumn}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 139100 2 "" 30 item:OptionItem, removed?:bool "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 135110 14 {unadvertised} "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 140532 14 {unadvertised} 27 column:BaseRecordGridColumn "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 138708 2 "" "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 142014 14 {unadvertised} 16 global-index:int "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 143560 154 {text {purpose
        Whether one of the columns beneath in the tree beneath this
        group is a {docref RecordGridColumn}.
    }
    {since 7.0}
  } "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 135281 2 "" "#RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 141691 14 {unadvertised} 50 exec-proc:{proc-type {RecordGridColumnGroup}:void} "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 138641 274 {text {purpose
        The heading associated with this object.
    }
    {details
        If set to a {docref String}, a header label will be generated.
        In all other cases, this value will simply be
        cast to a {docref Graphic} for use as the label.
    }
  } "any"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 139380 2 "" 30 p:{proc-type {OptionKey}:void} "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 139681 2 "" 30 item:OptionItem, removed?:bool "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 136165 2 "" "{Array-of BaseRecordGridColumn}"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 133708 146 {text {purpose
        The index of the first {docref RecordGridColumn} under this group,
        or {ctext -1} if none.
    }
    {since 7.0}
  } "int" 2 -1}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 140903 14 {unadvertised} 27 column:BaseRecordGridColumn "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 142860 14 {unadvertised} "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 137476 14 {unadvertised} "{Array-of RecordGridColumn}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 141299 14 {unadvertised} 72 exec-proc:{proc-type {BaseRecordGridColumn}:void}, upwards?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 134043 260 {text {purpose
        Construct this class.
    }
    {parameter caption, 
        the label to be displayed for this column group.
    }
    {parameter ..., 
        {ctext BaseRecordGridColumn}s and 
        options to be set on this column group.
    }
  } 16 caption:any, ... ""}
{ClassDocInfo "controls/logical-controls/multi-tab-control-ui.scurl" 444 352 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref MultiTabControl}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "BaseTabControlUI"$"MultiTabAccordionUI"}
{MethodDocInfo "controls/logical-controls/multi-tab-control-ui.scurl" 1059 230 {text {purpose 
        Update the UI to reflect that a {docref TabPane} with
        the given index was hidden.
    }
     {parameter
         index, The position of the pane to be hidden. The
         first pane is 0.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/multi-tab-control-ui.scurl" 752 207 {text {purpose
        Construct a new {ctext MultiTabControlUI}. 
    }
    {parameter 
        ..., The rest args are passed to the {docref Graphic}
        that this UI delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/text-fields.scurl" 35536 6336 {text {purpose
        The common base class for {docref TextField}, {docref TextArea},
        and {docref PasswordField}.
    }
    {notes
        To manipulate the control's selection directly, instead of
        invoking {docref Command}s on the control's {docref
        SelectionContext}, use the {docref-abbr
        BaseTextControl-of.selected-range} accessor.
    }
    {visual-testing
        This class implements the {ctext CurlEdit} visual test type.

        Index values represent positions between characters, from 0
        (before the first character) to {ctext
        BaseTextField.value.size} (after the last character).

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Activate
                }
                {cell font-style = "italic", <none>}
                {cell Activates the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    ClearSelection
                }
                {cell font-style = "italic", <none>}
                {cell Deselects all text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Delete
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell Deletes a range of text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Insert
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param text}:{docref String},
                    {param index}:{docref int}
                }
                {cell Inserts the {param text} string at position {param index}.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Replace
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param text}:{docref String},{br}
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell
                    Replaces the range from {param start-index} to
                    {param end-index} with the {param text} string.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Set
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell Sets the value of the control.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetCaretPos
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-index}:{docref int},
                    {param end-index}:{docref int}
                }
                {cell Selects a range of text.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetSecure
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param val}:{docref String}
                }
                {cell
                    After decoding {param val} via {docref
                    TestPlayer.clarify-string}, this sets the value of the
                    control.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SetSelection
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param index}:{docref int}
                }
                {cell Sets the caret position in an edit box.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param caret-position}:{docref int}
                }
                {cell The current caret position.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param end_selection}:{docref int}
                }
                {cell
                    The last index of the current selection.  If no text is
                    selected, this will match the value of {param
                                                               caret-position}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start_selection}:{docref int}
                }
                {cell
                    The first index of the current selection.  If no text is
                    selected, this will match the value of {param
                                                               caret-position}.
                }
            }
        }
    }
} "{BaseTextControl-of
        String,
        StringDataModel,
        StringDataModelWritableRange
    }"$"PasswordField, TextArea, TextField"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 37983 525 {text {purpose
        Create the {docref StringDataModel} for this {ctext
        BaseTextField}.
    }
    {parameter value,
        The value of the {ctext BaseTextField}.  Null values should
        be treated as the empty string.
    }
    {notes
        This method is not typically called directly.  It is called by
        the {ctext BaseTextField}'s constructor when the {param
        data-model} is null.  Subclasses may override this method to
        return a different type of {ctext StringDataModel}.
    }
  } 9 value:any "StringDataModel"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 39428 14 {unadvertised} 28 num-chars:int, forward?:bool "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 43562 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 44578 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 38305 2 "" "String"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 41690 14 {unadvertised} 27 message:StringRemoveMessage "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 38215 14 {unadvertised} "String"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 43490 330 {text {purpose
        Indicates whether the selection context's text is currently
        editable.
    }
    {details
        The default implementation merely returns the value of
        {docref-abbr BaseTextField.editable?}.

        See {docref WritableTextSelectionContext.writable?}
        for more information.
    }
  } "bool"}
{OptionDocInfo "controls/logical-controls/text-fields.scurl" 43031 "bool" 4 true 162 {text {purpose
        Specifies whether the user is allowed to enter values in the
        text control. By default it is {ctext true}.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 40759 14 {unadvertised} 30 text-to-insert:StringInterface "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 42321 14 {unadvertised} 0  "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 38987 14 {unadvertised} 7 ch:char "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 44379 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 41262 14 {unadvertised} 27 message:StringSpliceMessage "{UndoItem-of
                        String, StringDataModel, StringDataModelWritableRange
                    }"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 36909 1186 {text {purpose
        Construct this object.
    }
    {parameter 
        value, {ctext String}.
        The initial value for {docref-abbr BaseTextField.value}.
        If {ctext null}, and a non-empty {param data-model}
        parameter was provided, the value of the control will be
        the {param data-model}'s contents. Otherwise, 
        {docref BaseTextField.has-value?} will be false, and the 
        {docref-abbr BaseTextField.prompt} (if any) will be displayed instead.
    }
    {parameter prompt, {ctext String}.
        The initial value for {docref-abbr BaseTextField.prompt}.
    }
    {parameter max-chars, {ctext int}.
        The initial value for {docref-abbr BaseTextField.max-chars}.
    }
    {parameter data-model, {docref StringDataModel}.
         The initial value for {docref-abbr BaseTextField.data-model}.
         When this value is {ctext null}, the {docref-abbr BaseTextField.create-data-model}
         method will be called to create the initial data model.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        Additional option specifications and event handlers.
    }
  } 139 value:#String = null, prompt:#String = null, max-chars:int = -1, data-model:#StringDataModel = null, ui-object:#BaseTextFieldUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 72532 5706 {text {purpose 
        Implements a selectable list that the user views
        by pulling down a menu.
    }
    {details
        A DropdownList looks like a traditional ComboBox, except
        that it does not allow the user to edit the text of the
        selected value.  It can therefore show values of any type,
        even things that have no text representation, like images.
        A DropdownList is suitable whenever the user should select
        one value from a relatively small list of values.

        The user shows the list of values by clicking anywhere on the
        control with the mouse pointer.  Then when the user clicks on
        any of the values in the list, that value is shown at the top
        of the control and the list is closed.
    }
    {for-example
        This example shows an ordinary, text-only DropdownList:
        {example
            {DropdownList
                "Antelope", "Llama", "Horse",
                value = "Antelope"
            }
        }
    }

    {usage
        The values in a DropdownList can be different from the way
        they are shown in the list.  You can create a DropdownList
        with {docref ListItem}s that hold explicit value / Visual pairs,
        for instance.  The {code Visual} component of the
        pair should be an instance of a Curl-defined {code Visual} subclass.
        If you choose to write your own subclass, you will need to
        implement the {code clone-appearance} method.
        
        Alternatively, you can specify a single procedure
        that, when given a value, produces a {docref ListItem}.
    }

    {for-example
        This example shows how to create custom list items for the
        DropdownList.  Each item has a String value (the name of the
        color), but its display is a colored rectangle:
        
        {example
            {DropdownList
                {ListValueItem value = "red",
                    {RectangleGraphic fill-color = "red",
                        width = 50pt, height = 10pt
                    }
                },
                {ListValueItem value = "blue",
                    {RectangleGraphic fill-color = "blue",
                        width = 50pt, height = 10pt
                    }
                },
                {ListValueItem value = "green",
                    {RectangleGraphic fill-color = "green",
                        width = 50pt, height = 10pt
                    }
                },
                value = "red"
            }
        }

        This one is similar, but instead of specifying a display
        for each value -- which gets repetitive -- it uses a
        procedure:

        {example
            {DropdownList
                "red", "blue", "green",
                list-item-creation-proc =
                    {proc {val:any}:ListItem
                        {return {ListValueItem
                                    value = val,
                                    {RectangleGraphic fill-color = val,
                                        width = 50pt, height = 10pt
                                    }
                                }
                        }
                    },
                value = "red"
            }
        }
    }
    {expected-events
        {event
            ValueChanged, Fired when the user selects a new value;
            also fired when {docref DropdownList.set-value-with-events}
            are called.
        }
        {event
            ValueFinished, Always fired directly after the 
            {docref ValueChanged} event is fired.
        }
        {event
            Commit, Sent by {docref Dialog} when {docref Dialog.commit} 
            is called.
        }
    }
    {visual-testing
        This class implements the {ctext CurlDropdown} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Selects the {param item} item.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell The number of items to select from.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "DropdownList"
        "DropdownList/drop-button" and "DropdownList/item-frame". See {link
        href = {url
                   "curl://install/docs/en/dguide/styled-controls.curl#skinning-list-controls"
               },
        Skinning List Controls} for more information.
    }
} "{BaseComboBox any}"$"SRGDropdownList, ColorDropdown"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 73562 726 {text {purpose
        Construct this object.
    }
    {parameter value,
        See {docref DropdownList.value}.
    }
    {parameter data-model,
        See {docref DropdownList.data-model}.
    }
    {parameter prompt,
        See {docref DropdownList.prompt}.
    }
    {parameter dropdown-height,
        See {docref DropdownList.dropdown-height}.
    }
    {parameter list-item-creation-proc, 
        See {docref DropdownList.list-item-creation-proc}.
    }
    {parameter ui-object, 
        A specific {docref DropdownListUI} to be used by this control.
        See {docref DropdownList.ui-object} for more information.
    }
    {parameter ...,
        Additional option specifications and event handlers.
    }
  } 314 value:any = null, data-model:ListModel = {DefaultListModel}, prompt:#String = null, dropdown-height:Distance = 0pt, list-item-creation-proc:{proc-type
                                                      {val:any}:ListItem} = ListModelControl.default-list-item-creation-proc, ui-object:#DropdownListUI = null, ... ""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 77500 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 78188 356 {text {purpose
        The value of a {ctext DropdownList} that is to be submitted when
        the {ctext HttpForm} in which this control resides is
        submitted.
        
        The return value is the {ctext DropdownList.value} converted to
        {ctext null} or a {docref String} using 
        {docref ValueControl.form-string} proc.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 76893 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 75920 827 {text {purpose Set the value of this control.}
    {details
        A {ctext DropdownList} can only be set to a value contained
        within one of its list items, or {ctext null}.
        
        This setter will attempt to select the {italic first} 
        {docref SelectableItem} with this value, unless
        it is already selecting a later item with the same value.
        
        Setting the value of the dropdown list to {ctext null} will
        result in the dropdown list calling {docref DropdownList.unset-value}. 
        The property {ctext has-value?} will be set to {ctext false} and the
        prompt (if provided) will be redisplayed.

        When setting the value, consider using {docref-abbr
        DropdownList.set-value-with-events}, which fires events when
        the value changes.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 77416 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 78844 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 72646 2 "" "String"}
{OptionDocInfo "controls/logical-controls/list-controls.scurl" 74994 "any" 8 "origin" 286 {text {purpose
        Specifies how the text within this object will be horizontally
        aligned, relative to the display area of the control.
    }
    {details
        See {docref Frame.halign} for information about
        valid values for this option.
    }
    {since 7.0}
  }}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 78662 367 {text {purpose 
        The {docref String} to be shown when the control
        has no value.
    }
    {usage 
        It is usually intended to indicate that the user should
        select something, e.g. "Select a color".  If no prompt
        is supplied, then the control is simply blank when
        {docref DropdownList.has-value?} is {ctext false}.
    }
  } "#String"}
{FieldDocInfo "controls/logical-controls/list-controls.scurl" 72605 14 {unadvertised} "#String" 4 null}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 77609 2 "" 0  "ControlUI"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 78731 2 "" "#String"}
{AccessorDocInfo "controls/logical-controls/list-controls.scurl" 77042 2 "" "ListModel"}
{ClassDocInfo "controls/logical-controls/menu-button-ui.scurl" 455 363 {text {purpose
        This abstract class defines the API for the UI delegate for a
        {docref MenuButton}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
    {since 6.0}
} "Frame, ControlUI"$"StandardMenuButtonUI, SkinnableMenuButtonUI"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 4874 336 {text {purpose
        Synchronizes the menu elements from the list returned by {docref
        MenuButton.menu-proc}.
    }
    {notes
        Calling this is a no-op if {docref MenuButton.from-proc} was
        not used to create this object.

        See Also: {docref MenuButton.synchronize-menu-elements}.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 768 219 {text {purpose
        Construct a new {ctext MenuButtonUI}. 
    }
    {parameter ..., 
        The rest args are passed to the {docref Graphic} that this UI 
        delegate is derived from.
    }
    {since 6.0}
  } 3 ... ""}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 3711 568 {text {purpose
        Method called by {docref MenuButton} when a {docref Graphic}
        that is not a {docref MenuItem} or a {docref MenuSeparator} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {override
        The subclasses of {docref MenuButtonUI} should react to it by
        making sure that they remove the {ctext Graphic} that
        corresponds to this {param index}, before it was removed from
        the {docref MenuButton.other-elements} list.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 2403 555 {text {purpose
        Method called by {docref MenuButton} when a {docref Graphic}
        that is not a {docref MenuItem} or a {docref MenuSeparator} is
        added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {override
        The subclasses of {docref MenuButtonUI} should react to it by
        making sure that they add the {ctext Graphic} that corresponds
        to the {param index} in the {docref MenuButton.other-elements}
        list to the user interface.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 3056 567 {text {purpose
        Method called by {docref MenuButton} when a {docref MenuItem} or a
        {docref MenuSeparator} is removed from it.
    }
    {parameter index,
        The index at which the {ctext MenuItem} or the {docref
        MenuSeparator} was removed.
    }
    {override
        The subclasses of {docref MenuButtonUI} should react to it by
        making sure that they remove the {ctext Graphic} that
        corresponds to this {param index}, before it was removed from
        the {docref MenuButton.menu-elements} list.
    }
    {since 6.0}
  } 9 index:int "void"}
{AccessorDocInfo "controls/logical-controls/menu-button-ui.scurl" 1105 219 {text {purpose 
        Return the control this UI delegate is attached to.
    }
    {details 
        This simply returns the {docref ControlUI.control} property
        with the proper type.
    }
    {since 6.0}
  } "MenuButton"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 4940 2 "" 9 e:FocusIn "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 1763 554 {text {purpose
        Method called by {docref MenuButton} when a {docref MenuItem} or a
        {docref MenuSeparator} is added to it.
    }
    {parameter index,
        The index at which the {ctext MenuItem} or the {docref
        MenuSeparator} was added.
    }
    {override
        The subclasses of {docref MenuButtonUI} should react to it by
        making sure that they add the {ctext Graphic} that corresponds
        to the {param index} in the {docref MenuButton.menu-elements}
        list to the user interface.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5046 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 4465 664 {text {purpose
        Method called by {docref MenuButton} when {docref MenuButton.clear}
        is called to remove the items from the MenuButton.
    }
    {notes
        This will call {docref MenuButtonUI.note-items-cleared} if there
        is a {docref MenuButtonUI} associated with this object.
    }
    {override
        The subclasses of {docref MenuButtonUI} should react to it by
        making sure that they remove all the {ctext Graphic} that was
        added to the user interface that corresponds to the {docref
        Graphic} in {docref MenuButton.menu-elements} and {docref
        MenuButton.other-elements} list.
    }
    {since 6.0}
  } 0  "void"}
{ClassDocInfo "controls/logical-controls/menu-button-ui.scurl" 5156 14 {unadvertised} "MenuButtonUI"$""}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5559 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5611 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5492 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5297 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5361 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5426 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button-ui.scurl" 5228 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/scrollbar.scurl" 8913 8381 {text {purpose
        A control that provides scrollbar functionality.
    }
    {details
        The default visual appearance of a {ctext Scrollbar} is
        as follows:

        {html-generate-image
            {value
                let s:Scrollbar =
                    {Scrollbar 
                        direction = Orientation.horizontal, thumb-length = 10
                    }
                {s.set-scroll-value 35}
                s
            }
        }

        Typically a {ctext Scrollbar} features two buttons,
        decorated with triangles, at either end of a {italic channel}.
        In the {italic channel} there is a {italic thumb}, drawn as a
        raised rectangle.  The {ctext Scrollbar} has a {italic
        value} that ranges between a minimum value and a maximum
        value.  The value can be changed by using the mouse to drag
        the thumb, or by clicking in the channel or on the buttons at
        the ends of the {ctext Scrollbar}.

        A {docref Scrollbar}'s current value can be fetched by
        calling {docref Scrollbar.get-scroll-value} and can be
        set under program control by calling {docref
        Scrollbar.set-scroll-value}, {docref
        Scrollbar.scroll-by-units}, or {docref
        Scrollbar.scroll-by-blocks}. Whenever the value
        changes, the thumb is moved and an {docref Adjustment} event
        is fired at the {docref Scrollbar}.  A {pop dynamic
        event handler} can be attached to the {docref Scrollbar} to
        monitor this event.

        If you set the {ctext Scrollbar} value to {docref infinity} then
        {ctext Scrollbar.get-scroll-value} will return the maximum value
        of the {ctext Scrollbar}.

        A {docref Scrollbar}'s minimum value, maximum value,
        and thumb length can be set using the {docref
        Scrollbar.min}, {docref Scrollbar.max}, and {docref
        Scrollbar.thumb-length} options, respectively.

        {ctext Scrollbar}s are highly stretchy in the length
        direction: their {pop stretch order} in this direction is
        {docref compliant-stretch-order}.  Thus, in general, if a
        {ctext Scrollbar} is placed along a side of another object,
        the {ctext Scrollbar}'s length will conform to the length
        preference of the other object.

        {itemize
            {item Dragging the thumb changes the value and fires
                an {docref Adjustment} event every time the thumb
                moves.
            }
            {item Clicking in the channel, that is, {pop block scrolling},
                changes the value by an increment controlled by the
                {docref Scrollbar.blocksize} option.  Pressing
                and holding a mouse button while the pointer is over
                the channel produces autorepeating block scrolling
                operations.
            }
            {item Clicking on one of the buttons at the end of the
                {docref Scrollbar} changes the value by an increment
                controlled by the {docref Scrollbar.unitsize}
                option.  Pressing and holding a mouse button while the
                pointer is over one of these buttons produces
                autorepeating unit scrolling operations.
            }
        }
    }
    {expected-events
        {event Adjustment, 
            When an {docref Adjustment} event is fired, the {docref
            Adjustment.value} field is set with the {docref
            Scrollbar}'s value at that time.
        }
        {event AdjustmentFinished, 
            Fired after the {ctext Scrollbar} is done with adjusting.
        }
    }
    {for-example
        The following example shows a {ctext Scrollbar} with
        several of its options set.  The {pop dynamic event handler}
        for {docref Adjustment} events updates the {docref Frame}
        {ctext val} so that the current value of the {ctext
        Scrollbar} is always displayed to the right of the
        {ctext Scrollbar} itself.

        {example
            {value
                let val:#Frame
                let sb:Scrollbar =
                    {Scrollbar
                        width = 3in, direction = Orientation.horizontal,
                        min = -100, max = 100, thumb-length = 10,
                        blocksize = 25, unitsize = 2.5,
                        {on e:Adjustment at s:Scrollbar do
                            {val.add 
                                {format "%7.1f", {s.get-scroll-value}},
                                replace?=true
                            }
                        }
                    }
                set val = {Frame {format "%7.1f", {sb.get-scroll-value}}}
                {HBox spacing=6pt,
                    sb,
                    {text Scroll value is {value val}}
                }
            }
        }
    }
    {visual-testing
        This class implements the {ctext CurlSlider} visual test
        type.
        
        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Drag
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell
                    Sets the value of the control.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DragLine
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param lines}:{docref String}
                }
                {cell
                    Drags the value of the slider by {param lines} lines.
                }
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    DragPage
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param pages}:{docref String}
                }
                {cell
                    Drags the value of the slider by {param pages} pages.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:
        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param value}:{docref String}
                }
                {cell The current value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param max}:{docref String}
                }
                {cell The maximum value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param min}:{docref String}
                }
                {cell The minimum value of the control.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param orientation}:{docref String}
                    (must be "VSCROLL" or "HSCROLL")
                }
                {cell The orientation of the control.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "Scrollbar",
        "Scrollbar/decrease-button", "Scrollbar/increase-button",
        "Scrollbar/channel", "Scrollbar/thumb" and "Scrollbar/button-frame". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-other-controls"
                     },
        Skinning Other Controls} for more information.
    }
} "MultiUIControlFrame"$""}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 22889 "bool" 5 false 851 {text {purpose
        Control whether a {docref Scrollbar} is visible when it
        is disabled.
    }
    {details
        This option controls a {ctext Scrollbar}'s appearance
        when it is disabled by setting its {docref
        Scrollbar.enabled?} option to false.

        If {ctext Scrollbar.shrink-when-disabled?} is set to
        true, the {ctext Scrollbar} will shrink to zero width
        when it is disabled.

        If {ctext Scrollbar.shrink-when-disabled?} is set to
        false or is not set, the {ctext Scrollbar} will
        continue to occupy the same amount of space as before, but
        will be drawn with a grayed-out appearance.
    }
    {notes
        The subclasses of {docref ScrollbarUI} should override {docref
        ControlUI.react-to-state-change} to reflect the change in this
        option.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 27222 856 {text {purpose 
        Set the value of a {docref Scrollbar}.
    }
    {parameter v, 
        The new value for the {docref Scrollbar}.
    }
    {details
        If {docref Scrollbar.quantized?} is {ctext true} and {docref
        Scrollbar.unitsize} is positive then {param v} is first
        quantized.  

        If it is within the range of allowed values for the
        {docref Scrollbar}, as dictated by the
        {docref Scrollbar.min}, {docref Scrollbar.max},
        and {docref Scrollbar.thumb-length} options, the
        {docref Scrollbar}'s value is set to this value.
        Otherwise, the {docref Scrollbar}'s value is set to the
        allowed value that is nearest to this value. 
        
        If the new value of the {docref Scrollbar} differs from its
        previous value, an {docref Adjustment} event is fired.
    }
  } 8 v:double "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 31844 785 {text {purpose
        Change the value of a {docref Scrollbar} by a multiple
        of the {ctext unit scrolling} size.
    }
    {parameter num-units, 
        The multiple of the unit scrolling size to use.
    }
    {details
        The {ctext Scrollbar}'s value is changed by adding
        {param num-units} times {docref Scrollbar.unitsize} to
        it. If the result is outside the range of allowed values for
        the {ctext Scrollbar}, as dictated by the {docref
        Scrollbar.min}, {docref Scrollbar.max}, and
        {docref Scrollbar.thumb-length} options, the result is
        adjusted to be the nearest allowed value. If the new value of
        the {docref Scrollbar} differs from its previous value, 
        an {docref Adjustment} event is fired.
    }
  } 13 num-units:int "void"}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9427 14 {unadvertised} "ScrollbarPreferencesObserver" 0 }
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9029 14 {unadvertised} "#Adjustment" 0 }
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 12362 "#SkinSpec" 0  346 {text {purpose
        A specification used to determine the visual appearance
        of the scrollbar channel.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 21170 2 "" "bool"}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 24424 "any" 4 12pt 1226 {text {purpose 
        Control the thickness of a {docref Scrollbar}.
    }
    {details
        This option's value specifies the thickness (the narrow dimension)
        of a {docref Scrollbar}. Set this option to override the default
        thickness which is obtained from the system preference if present,
        or else it is {ctext 12pt}.
    }
    {notes
        To set the thickness of the {ctext Scrollbar} use the
        {ctext Scrollbar.thickness}. To get the value call
        the {docref Scrollbar.effective-thickness} getter. If the
        {ctext Scrollbar.thickness} option is not set, it 
        will return it from the system preference if present,
        otherwise it is {ctext 12pt}.
    }
    {for-example
        Here are some {docref Scrollbar}s with different thicknesses:

        {example
            {VBox spacing=4pt,
                {Scrollbar 
                    direction = Orientation.horizontal, thickness = 8pt
                },
                {Scrollbar 
                    direction = Orientation.horizontal
                },
                {Scrollbar
                    direction = Orientation.horizontal, thickness = 20pt
                }
            }
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 28394 276 {text {purpose 
        If the value of the {docref Scrollbar} has changed,
        create an {docref Adjustment} event and fire it at the {ctext
        Scrollbar}.  Return the value of the {docref
        GuiEvent.consumed?} flag after this event has been handled.
    }
  } 0  "bool"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 33497 14 {unadvertised} 16 pref-name:String "void"}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9074 14 {unadvertised} "#AdjustmentFinished" 0 }
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 16824 "bool" 5 false 263 {text {purpose 
        Control whether a {docref Scrollbar}'s value is
        restricted to integer multiples of the {ctext
        Scrollbar}'s {ctext unit scrolling} distance.
    }
    {details
        See also: {docref Scrollbar.set-scroll-value}.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 13108 "Orientation" 20 Orientation.vertical 520 {text {purpose 
        Control the direction of a {docref Scrollbar}.
    }
    {details
        If this option is set to {ctext Orientation.horizontal}, the
        {ctext Scrollbar} will lie horizontally. If this option is
        set to {ctext Orientation.vertical} or is left unset, the
        {ctext Scrollbar} will be vertical.
    }
    {notes
        The subclasses of {docref ScrollbarUI} should override {docref
        ControlUI.react-to-state-change} to reflect the change in this
        option.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 13643 "double" 1 0 418 {text {purpose 
        Specify the minimum value associated with a {docref
        Scrollbar}.
    }
    {details
        This option specifies the value that will be returned by
        {docref Scrollbar.get-scroll-value} when the {ctext
        Scrollbar} thumb is all the way to the left in the case
        of a horizontal scrollbar or all the way at the top in the
        case of a vertical scrollbar.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 16450 "double" 1 1 339 {text {purpose
        Specify the {ctext unit scrolling} distance for a {docref
        Scrollbar}.
    }
    {details
        When a unit scrolling gesture is performed on a {ctext
        Scrollbar}, the {ctext Scrollbar}'s value
        changes by the value that has been set for this option.  The
        default value is 1.
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 34256 2 "" 29 action:String, args:FastArray "any"}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 11553 "bool" 5 false 490 {text {purpose
        A boolean representing whether this {docref Scrollbar} takes
        part in traversal-related activities.
    }
    {details
        If {ctext false}, the object should refuse to {ctext
        become-active} when requested. The object will thus be skipped
        during tab traversing, and manipulation of the object should
        not cause the key-focus or "activeness" to be taken from
        another traversor.

        The default is {ctext false}.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 11959 "#SkinSpec" 0  344 {text {purpose
        A specification used to determine the visual appearance
        of the scrollbar thumb.
    }
    {details
        This option is only meaningful when this {docref Control} is
        used with a {docref SkinnableControlUI} and a
        {docref ControlSkin} that supports {docref SkinSpec} use.
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 14896 "double" 3 100 652 {text {purpose 
        Specify the maximum value associated with a {docref
        Scrollbar}.
    }
    {details
        This option determines the value that will be returned by
        {docref Scrollbar.get-scroll-value} when the {docref
        Scrollbar} thumb is all the way to the right (in the
        case of a horizontal scrollbar) or all the way at the bottom
        (in the case of a vertical scrollbar). The {ctext
        Scrollbar}'s actual value in this situation is computed
        by subtracting the value of the {docref
        Scrollbar.thumb-length} option from the value of this
        {docref Scrollbar.max} option.
    }
  }}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 19358 "double" 3 0.0 2419 {text {purpose 
        Specify the thumb length for a {docref Scrollbar}.
    }
    {details
        The value of this option controls the length of a {ctext
        Scrollbar}'s thumb.  If the {ctext Scrollbar} is
        horizontal, this option controls the horizontal dimension of
        the thumb's size; if the {ctext Scrollbar} is vertical,
        this option controls the vertical dimension of the thumb's
        size.

        The thumb length is not specified as a size measured in units
        such as points or inches; instead, it is specified in the same
        units that are used to measure the value returned by {docref
        Scrollbar.get-scroll-value}.

        The actual displayed length of the thumb is determined by
        computing the ratio between the value of this option and the
        total range of the {ctext Scrollbar} (defined as the
        difference between the values of {docref
        Scrollbar.max} and {docref
        Scrollbar.min}).  The displayed length of the
        thumb is computed by multiplying this ratio times the total
        length of the {ctext Scrollbar}'s channel.  If the
        resulting length would be very small, a defined minimum length
        is used to ensure that the thumb never becomes too small to
        see or to drag conveniently using the mouse.
    }
    {for-example
        Here are several {ctext Scrollbar}s with different {ctext
        thumb-length} values, illustrating how the visual appearance
        changes:

        {example
            {VBox spacing=4pt,
                  {Scrollbar
                      direction = Orientation.horizontal,
                      min = 0, max = 10, thumb-length = 1
                  },
                  {Scrollbar
                      direction = Orientation.horizontal,
                      min = 0, max = 10, thumb-length = 5
                  },
                  {Scrollbar
                      direction = Orientation.horizontal,
                      min = 0, max = 10, thumb-length = 9
                  },
                  {Scrollbar
                      direction = Orientation.horizontal,
                      min = 0, max = 10, thumb-length = 0
                  },
                  {Scrollbar
                      direction = Orientation.horizontal,
                      min = 10, max = 20, thumb-length = 5
                  }
            }
        }
    }
  }}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 29408 14 {unadvertised} 0  "AdjustmentFinished"}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 12410 "#DisplayContext" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 9494 2 "" "String"}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 16017 "double" 2 10 524 {text {purpose
        Specify the {ctext block scrolling} distance for a {docref
        Scrollbar}.
    }
    {details
        When a {ctext block scrolling} gesture is performed on a
        {ctext Scrollbar}, the {ctext Scrollbar}'s
        value changes by the value that has been set for this option.
        The default value is 10.
    }
    {notes
        The subclasses of {docref ScrollbarUI} should override {docref
        ControlUI.react-to-state-change} to reflect the change in this
        option.
    }
  }}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9242 14 {unadvertised} "double" 1 0}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 21937 382 {text {purpose 
        Specify the thumb length for a {docref Scrollbar}.
    }
    {notes
        If the {docref Scrollbar.quantized?} is {ctext true} and
        {docref Scrollbar.unitsize} is greater than zero, it will make
        the thumb length a multiple of {ctext Scrollbar.unitsize} else
        it simply returns {ctext Scrollbar.thumb-length}.
    }
    {since 6.0}
  } "double"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 33291 2 "" 0  "ControlUI"}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9283 14 {unadvertised} "Distance" 0 }
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9136 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 19461 14 {unadvertised} 19 thumb-length:double "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 24572 14 {unadvertised} 38 display-context:#DisplayContext = null "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 30386 677 {text {purpose
        Set the scroll position of the {docref Scrollbar} such that
        a specified point in the current object is visible.
    }
    {parameter pos,
        The specified point in the {ctext Scrollbar} that should
        be made visible.
    }
    {parameter (min-window, max-window),
        The visible portion of the {ctext Scrollbar} as a fraction
        of the {ctext Scrollbar} range.

        If {param pos} is in the visible range then calling this
        method is a no-op. If it is above or below the visible range,
        the {ctext Scrollbar} will be scrolled in such a way to bring
        it to the visible range.
    }
    {since 6.0}
  } 56 pos:double, min-window:double = 0, max-window:double = 1 "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 27902 326 {text {purpose 
        Get the current value of a {docref Scrollbar}.
    }
    {return-vals 
        The {docref Scrollbar}'s current value.
    }
    {notes
        If {docref Scrollbar.set-scroll-value} was passed {docref infinity} then
        this method will return the current value of {docref Scrollbar.max}
    }
  } 0  "double"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 35001 2 "" 11 name:String "any"}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9319 14 {unadvertised} "bool" 5 false}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9363 14 {unadvertised} "bool" 5 false}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9170 14 {unadvertised} "double" 1 0}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 34173 2 "" "#String"}
{FieldDocInfo "controls/logical-controls/scrollbar.scurl" 9203 14 {unadvertised} "double" 2 -1}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 32787 788 {text {purpose
        Change the value of a {docref Scrollbar} by a multiple
        of the {ctext block scrolling} size.
    }
    {parameter num-blocks, 
        The multiple of the block scrolling size to use.
    }
    {details
        The {ctext Scrollbar}'s value is changed by adding
        {param num-blocks} times {docref Scrollbar.blocksize}
        to it. If the result is outside the range of allowed values
        for the {ctext Scrollbar}, as dictated by the {docref
        Scrollbar.min}, {docref Scrollbar.max}, and
        {docref Scrollbar.thumb-length} options, the result is
        adjusted to be the nearest allowed value. If the new value of
        the {ctext Scrollbar} differs from its previous value,
        an {docref Adjustment} event is fired.
    }
  } 14 num-blocks:int "void"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 25728 14 {unadvertised} 10 val:double "double"}
{OptionDocInfo "controls/logical-controls/scrollbar.scurl" 23130 "bool" 5 false 134 {text {purpose
        If {ctext true} then a {docref PointerScroll} event can result
        in more than a unit of scroll.
    }
  }}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 25641 457 {text {purpose 
        Gets the thickness of a {docref Scrollbar}.
    }
    {notes
        To set the thickness of the {docref Scrollbar} use the
        {docref Scrollbar.thickness}. To get the value call
        the {ctext Scrollbar.effective-thickness} getter. If the
        {ctext Scrollbar.thickness} option is not set, it 
        will return it from the system preference if present,
        otherwise it is {ctext 12pt}.
    }
    {since 6.0}
  } "Distance"}
{AccessorDocInfo "controls/logical-controls/scrollbar.scurl" 21090 797 {text {purpose
        Indicates whether the value of a {docref Scrollbar} is being
        changed by the user.
    }
    {notes
        By default this is {ctext false}.
        
        If {ctext true} then the {docref AdjustmentFinished} event is
        not fired until this becomes {docref false} again.
    }
    {details
        The subclasses of {docref ScrollbarUI} can set this value when
        they see a gesture, e.g. a drag of the {docref Scrollbar}
        thumb, that could result in a continues change in value. When
        {ctext true} a change in the value of the {ctext Scrollbar}
        will only result in a {docref Adjustment} event and no {ctext
        AdjustmentFinished} event will be fired until this is set to
        {ctext false} again.
    }
    {since 6.0}
  } "bool"}
{MethodDocInfo "controls/logical-controls/scrollbar.scurl" 10241 557 {text {purpose 
        Initialize a new {docref Scrollbar}.
    }
    {parameter ui-object,
        The UI delegate that handles drawing and events.
    }
    {parameter value,
        If supplied it will be used to determin the value of the
        {ctext Scrollbar}. Otherwise it will be the minimum value of
        the {ctext Scrollbar}.

        The value of the {ctext Scrollbar} is always restricted to between
        {docref Scrollbar.min} and {docref Scrollbar.max}.
    }
    {parameter ...,
        Event handlers and graphic options.
    }
  } 59 ui-object:#ScrollbarUI = null, value:double = self.min, ... ""}
{ClassDocInfo "controls/logical-controls/menu-button.scurl" 9190 5148 {text {purpose
        A control that has a menu associated with it.
    }
    {notes
        Usually it is used to implement a basic push-button control
        with a menu.
        
        This object can be styled by writing style rules for "MenuButton",
        "MenuButton/button-box" and "MenuButton/drop-button". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-menu-buttons"
                     },
        Skinning MenuButtons} for more information.
    }
    {for-example
        Here are some typical use of this control.

        {example
            {import * from CURL.GUI.CONTROL-HELPERS}
            {value
                {MenuButton
                    takes-focus? = false,
                    {CommandButton
                        label = 
                            {spaced-hbox
                                valign = "center",
                                {TriangleControlPart
                                    TriangleDirection.left, 12pt
                                }, 
                                "Back"
                            },
                        takes-focus? = false,
                        style = CommandButtonStyle.rollover,
                        {on Action do
                            {popup-message "Go to the last page"}
                        }
                    },
                    {MenuAction
                        label = "Page 1",
                        {on Action do {popup-message "Go to Page 1"}}
                    },
                    {MenuAction
                        label = "Page 2",
                        {on Action do {popup-message "Go to Page 2"}}
                    },
                    {MenuAction
                        label = "Page 3",
                        {on Action do {popup-message "Go to Page 3"}}
                    }
                }
            }
        }

        {example
            {value
                let tf:TextField = {TextField}
                {MenuButton
                    takes-focus? = false,
                    tf,
                    {MenuAction
                        label = "To Upper",
                        key-accel-string = "Ctrl+U",
                        {on Action do
                            {if-non-null str = tf.value then
                                set tf.value = {str.to-upper-clone}
                            }
                        }
                    },
                    {MenuAction
                        label = "To Lower",
                        key-accel-string = "Ctrl+L",
                        {on Action do
                            {if-non-null str = tf.value then
                                set tf.value = {str.to-lower-clone}
                            }
                        }
                    }
                }
            }
        }
    }
    {visual-testing
        This class implements the {ctext CurlMenuButton} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Select
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param path}:{docref String}
                }
                {cell
                    Selects and activates a menu action using the path
                    from this menu button.  For example,
                    "colors;green" could be used to select the "green"
                    item in the "colors" submenu of this menu button.
                }
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param menu items count}:{docref int}
                }
                {cell
                    The number of items in this menu buttons to select
                    from.  To obtain the number of items in a submenu,
                    open the submenu, then get the value of its {ctext
                    menu items count} property.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param other items count}:{docref int}
                }
                {cell
                    The number of other items in this menu buttons to
                    select from.  
                }
            }
        }
    }
    {since 6.0}
} "MultiUIControlFrame"$""}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 20710 14 {unadvertised} 10 g:#Graphic "int"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 10736 267 {text {purpose
        Constructs a {ctext MenuButton} object.
    }
    {parameter ui-object, 
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        {docref Graphic}s, event handlers and option settings.
    }
    {since 6.0}
  } 35 ui-object:#MenuButtonUI = null, ... ""}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 29049 323 {text {purpose
        Method called by {docref MenuButton} when {docref MenuButton.clear}
        is called to remove the items from the MenuButton.
    }
    {notes
        It calls {docref MenuButtonUI.note-items-cleared} if there is
        a {docref MenuButtonUI} associated with this object.
    }
    {since 6.0}
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 9262 14 {unadvertised} "{Array-of Graphic}" 20 {{Array-of Graphic}}}
{OptionDocInfo "controls/logical-controls/menu-button.scurl" 12527 "bool" 4 true 144 {text {purpose
        Should the {docref MenuButton} show a visual indication when
        the pointer rolls over it.
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 31193 14 {unadvertised} 15 commands:String "void"}
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 9350 14 {unadvertised} "{Array-of Graphic}" 20 {{Array-of Graphic}}}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 26394 708 {text {purpose
        Method called by {docref MenuButton} when a {docref MenuItem} or a
        {docref MenuSeparator} is added to it.
    }
    {parameter index,
        The index at which the {ctext MenuItem} or the {docref
        MenuSeparator} was added.
    }
    {notes
        It calls {docref MenuButtonUI.note-menu-item-added} if there
        is a {docref MenuButtonUI} associated with this object.

        If {docref MenuButton.from-proc} was used to create this
        object, it is illegal to call the {docref MenuButton.add} or
        {docref MenuButton.add-at-index} method to add a menu item to
        a {docref MenuButton}. Hence this method is never called.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 15463 1437 {text {purpose
        Adds the given item to the {docref MenuButton}.
    }
    {parameter g,
        The item to add. If {param g} is not already a {docref
        Graphic}, {param g} will be coerced to a {ctext Graphic} and
        the result of that coercion will be added.
    }
    {return-vals
        The actual value, whose type is a subtype of {docref Graphic},
        that was added.
    }
    {notes
        If {param g} is a {docref MenuItem} or a {docref
        MenuSeparator} then it is added to the list of {docref
        MenuButton.menu-elements} otherwise it is added to the list of
        {docref MenuButton.other-elements}.

        If {docref MenuButton.from-proc} was used to construct this
        object then if {param g} is a {ctext MenuItem} or a {ctext
        MenuSeparator} an {docref IllegalArgumentException} will be
        thrown.

        If {param g} was already added to the {docref MenuButton} then
        it will be first removed and then added again.

        This method calls {docref MenuButton.note-menu-item-added} or
        {docref MenuButton.note-other-item-added} after inserting {param g}
        to {ctext MenuButton.menu-elements} or {ctext
        MenuButton.other-elements} list respectively.

        The subclasses of {docref MenuButtonUI} should react to this
        change by making sure that they add this newely added item in
        their user interface objects.
    }
  } 10 g:any, ... "#Visual"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 30610 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 18273 2261 {text {purpose
        Inserts the given item to the {docref MenuButton} at a given
        index.
    }
    {parameter g,
        The item to add. If {param g} is not already a {docref
        Graphic}, {param g} will be coerced to a {ctext Graphic} and
        the result of that coercion will be added.

        If {param g} is a {docref MenuItem} or a {docref
        MenuSeparator} then it is added to the list of {docref
        MenuButton.menu-elements} otherwise it is added to the list of
        {docref MenuButton.other-elements}.
    }
    {parameter where,
        If {param g} is a {docref MenuItem} or a {docref
        MenuSeparator} then {param where} is the place in the {docref
        MenuButton.menu-elements} list where {param g} is
        inserted. Otherwise {param where} is the place in the {docref
        MenuButton.other-elements} list where the {param g} is
        inserted.

        The valid values of where are: "default", "last", "first", or
        an integral value less than or equal to the size of the list
        where {param g} is going to be inserted. In all other cases,
        an error is thrown.

        If where is "default" or "last" then {param g} is appended to
        the end of the list. If it is "first", then {param g} is
        inserted at the first position in the list.
    }
    {notes
        If {param g} is a {docref MenuItem} or a {docref
        MenuSeparator} then it is added to the list of {docref
        MenuButton.menu-elements} otherwise it is added to the list of
        {docref MenuButton.other-elements}.

        If {docref MenuButton.from-proc} was used to construct this
        object then if {param g} is a {ctext MenuItem} or a {ctext
        MenuSeparator} an {docref IllegalArgumentException} will be
        thrown.

        This method calls {docref MenuButton.note-menu-item-added} or
        {docref MenuButton.note-other-item-added} after inserting {param g}
        to {ctext MenuButton.menu-elements} or {ctext
        MenuButton.other-elements} list respectively.

        The subclasses of {docref MenuButtonUI} should react to this
        change by making sure that they add this newely added item in
        their user interface objects.
    }
    {since 6.0}
  } 21 g:#Graphic, where:any "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 11397 357 {text {purpose
        Constructs a {ctext MenuButton} object.
    }
    {parameter menu-proc,
        The proc to create the menu contents dynamically.
    }
    {parameter ui-object, 
        The UI delegate that handles drawing and events.
    }
    {parameter ...,
        {docref Graphic}s, event handlers and option settings.
    }
    {since 6.0}
  } 80 menu-proc:{proc-type {}:{Array-of Graphic}}, ui-object:#MenuButtonUI = null, ... ""}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 25508 509 {text {purpose
        Informs the user interface object to synchronize the menu
        elements from the list returned by {docref
        MenuButton.menu-proc}.
    }
    {notes
        Calling this is a no-op if {docref MenuButton.from-proc} was
        not used to create this object.
    }
    {details
        If the items returned by the {ctext MenuButton.menu-proc}
        change, then call this function to synchronize the menu items
        with the user interface object.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 28531 444 {text {purpose
        Method called by {docref MenuButton} when a {docref Graphic}
        that is not a {docref MenuItem} or a {docref MenuSeparator} is
        removed from it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was removed.
    }
    {notes
        It calls {docref MenuButtonUI.note-other-item-added} if there
        is a {docref MenuButtonUI} associated with this object.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 27019 438 {text {purpose
        Method called by {docref MenuButton} when a {docref Graphic}
        that is not a {docref MenuItem} or a {docref MenuSeparator} is
        added to it.
    }
    {parameter index,
        The index at which the {ctext Graphic} was added.
    }
    {notes
        It calls {docref MenuButtonUI.note-other-item-added} if there
        is a {docref MenuButtonUI} associated with this object.
    }
    {since 6.0}
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 30912 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 30523 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 27896 688 {text {purpose
        Method called by {docref MenuButton} when a {docref MenuItem} or a
        {docref MenuSeparator} is removed from it.
    }
    {parameter index,
        The index at which the {ctext MenuItem} or the {docref
        MenuSeparator} was removed.
    }
    {notes
        It calls {docref MenuButtonUI.note-menu-item-removed} if there
        is a {docref MenuButtonUI} associated with this object.

        If {docref MenuButton.from-proc} was used to create this
        object, it is illegal to call the {docref MenuButton.remove}
        method to remove a menu item from a {docref MenuButton}. Hence
        this method is never called.
    }
    {since 6.0}
  } 9 index:int "void"}
{OptionDocInfo "controls/logical-controls/menu-button.scurl" 12286 "bool" 4 true 126 {text {purpose
        Should the {docref MenuButton} show a visual indication of key
        focus?
    }
    {since 6.0}
  }}
{OptionDocInfo "controls/logical-controls/menu-button.scurl" 12063 "#Label" 4 null 259 {text {purpose
        Label to be used by the menu of the {docref MenuButton}.
    }
    {notes
        If {ctext null}, the subclasses of {docref MenuButtonUI} can
        provide a default label.

        See also: {docref Label}.
    }
    {since 6.0}
  }}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 10281 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 13886 179 {text {purpose
        Return an iterator for the children of the {docref MenuButton}
        that are not in the list {docref MenuButton.menu-elements}.
    }
    {since 6.0}
  } "{Iterator-of Graphic}"}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 13583 360 {text {purpose 
        Return an iterator for the elements for the menu of
        a {docref MenuButton}.
    }
    {notes
        If {docref MenuButton.from-proc} was used to create this
        object then you must call the {docref MenuButton.menu-proc} to get
        the menu elements. Calling this will return an empty iterator.
    }
    {since 6.0}
  } "{Iterator-of Graphic}"}
{FieldDocInfo "controls/logical-controls/menu-button.scurl" 10210 759 {text {purpose
        The proc to create the menu contents dynamically.
    }
    {notes
        This is non-{ctext null} if {docref MenuButton.from-proc} is
        used to create this object.

        If non-{ctext null}, this returns the list of menu elements.
        Otherwise use {docref MenuButton.menu-elements} to get the
        list of menu elements of the {docref MenuButton}.

        This object can be styled by writing style rules for "MenuButton",
        "MenuButton/button-box" and "MenuButton/drop-button". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-menu-buttons"
                     },
        Skinning MenuButtons} for more information.
    }
    {since 6.0}
  } "#{proc-type {}:{Array-of Graphic}}" 0 }
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 24494 589 {text {purpose
        Removes all items from the {docref MenuButton}.
    }
    {notes
        It calls {docref MenuButton.note-items-cleared} if the list of
        {docref MenuButton.menu-elements} or {docref
        MenuButton.other-elements} is not empty.

        If {docref MenuButton.from-proc} was used to construct this
        object then it will only clear the {docref
        MenuButton.other-elements} list.

        The subclasses of {docref MenuButtonUI} should react to this
        change by making sure that the user ineterface does not show
        any items.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 29645 428 {text {purpose
        Returns the {docref Graphic} at a given index from the
        {docref MenuButton.menu-elements} list.
    }
    {parameter index,
        The index of the {ctext Graphic} in the {ctext
        MenuButton.menu-elements} list.

        It is illegal to pass an {param index} that is negative or
        that is greater than equal to {docref
        MenuButton.menu-element-count}.
    }
    {since 6.0}
  } 9 index:int "Graphic"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 30200 430 {text {purpose
        Returns the {docref Graphic} at a given index from the
        {docref MenuButton.other-elements} list.
    }
    {parameter index,
        The index of the {ctext Graphic} in the {ctext
        MenuButton.other-elements} list.

        It is illegal to pass an {param index} that is negative or
        that is greater than equal to {docref
        MenuButton.menu-element-count}.
    }
    {since 6.0}
  } 9 index:int "Graphic"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 30315 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/menu-button.scurl" 22288 1312 {text {purpose
        Removes the given item from the {docref MenuButton}.
    }
    {parameter g,
        The {ctext Graphic} to remove.
    }
    {parameter error-if-missing?,
        Indicates whether this method should throw an {docref
        KeyNotFoundException} if asked to remove an element that does
        not exist. The default value is {ctext true}.
    }
    {notes
        If {param g} is a {docref MenuItem} or a {docref
        MenuSeparator} then it is removed from the list of {docref
        MenuButton.menu-elements} otherwise it is removed from the
        list of {docref MenuButton.other-elements}.

        If {docref MenuButton.from-proc} was used to construct this
        object then if {param g} is a {ctext MenuItem} or a {ctext
        MenuSeparator} an {docref IllegalArgumentException} will be
        thrown.

        This method calls {docref MenuButton.note-menu-item-removed} or
        {docref MenuButton.note-other-item-removed} after removing {param g}
        from {ctext MenuButton.menu-elements} or {ctext
        MenuButton.other-elements} list respectively.

        The subclasses of {docref MenuButtonUI} should react to this
        change by making sure that they aremove this newely added item in
        their user interface objects.
    }
    {since 6.0}
  } 40 g:Graphic, error-if-missing?:bool = true "void"}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 12886 248 {text {purpose 
        Returns the number of items in the list {docref
        MenuButton.menu-elements}.
    }
    {notes
        If {docref MenuButton.from-proc} is used to create this
        object, it will return 0. 
    }
    {since 6.0}
  } "int"}
{AccessorDocInfo "controls/logical-controls/menu-button.scurl" 13120 133 {text {purpose 
        Returns the number of items in the list {docref
        MenuButton.other-elements}.
    }
    {since 6.0}
  } "int"}
{ProcDocInfo "controls/logical-controls/shared.scurl" 7988 14 {unadvertised} 125 dc:DisplayContext, font:Font, x:Distance, string:StringInterface, start-index:int = 0, length:int = string.size - start-index "int"}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 18338 208 {text {purpose
      Supports a {docref ListItem} that can be dragged using the Curl
      drag/drop mechanism. When a {ctext ListItem} is dragged, all the
      selected ListItems will also be dragged.
  }
} "ImageDragee"$""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 19251 2 "" 13 e:DragStarted "#{Array-of Visual}"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 19135 719 {text {purpose
        Creates a new {ctext ListItemDragee} object.
    }
    {parameter drag-graphic,
        If this is {ctext null}, the appearance of the {docref Graphic}
        that is being dragged will not change.  If you pass another 
        {ctext Graphic} to this parameter, that {ctext Graphic} will 
        appear in place of the {ctext Graphic} while it is being dragged.
    }
    {details
        If the {ctext Graphic} that you assign as the {param drag-graphic}
        is not part of a graphic hierarchy (not laid out), the 
        {param drag-graphic} will inherit its nonlocal options from the 
        {docref View} in which the {ctext Graphic} that is being dragged 
        appears.
    }
  } 28 drag-graphic:#Graphic = null ""}
{ClassDocInfo "controls/logical-controls/undo-helpers.scurl" 1332 14 {unadvertised} "{UndoItem-of String, StringDataModel, StringDataModelWritableRange}"$""}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 1469 2 "" 95 delete-size:int, insert-str:#StringInterface, control:StringBaseTextControl, redo?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/undo-helpers.scurl" 2421 14 {unadvertised} 40 index:int, control:StringBaseTextControl "int"}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 23098 159 {text {purpose
        A {docref StringDataModelMovableRange} for rich text
        that supports manipulation of the range's contents.
    }
    {since 7.0}
} "StringDataModelWritableRange"$""}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 24883 511 {text {purpose
        Obtains an attribute value on the current range.
    }
    {parameter key,
        The name of the attribute to get.
    }
    {parameter distinguish-unset-attributes?,
        See {docref RichTextArea.distinguish-unset-attributes?}.
    }
    {return-vals
        The value of the attribute followed by a flag indicating that
        the value is valid across the entire range.  When {ctext
        valid?} is {ctext false}, the {ctext value} should be ignored.
    }
    {since 7.0}
  } 53 key:String, distinguish-unset-attributes?:bool = true "(value:any, valid?:bool)"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 26134 299 {text {purpose Sets a series of attributes on the current range.}
    {parameter attributes, The attributes to set.}
    {details
        For each attribute in {param attributes},
        {docref-abbr RichTextStringDataModelWritableRange.set-attribute}
        will be set.
    }
    {since 7.0}
  } 39 attributes:{Association-of String, any} "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 26331 14 {unadvertised} 49 rich-string:RichTextString, start:int, length:int "void"}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 24066 265 {text {purpose
        Create a {ctext RichTextStringDataModelWritableRange}
        from a {docref StringDataModelRange}.
    }
    {parameter range,
        The {docref StringDataModelRange} from which
        to create a rich text range
    }
    {since 7.0}
  } 26 range:StringDataModelRange "RichTextStringDataModelWritableRange"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 25607 228 {text {purpose
        Set a rich text attribute on the current range.
    }
    {parameter key,
        The name of the attribute to set.
    }
    {parameter value,
        The value of the attribute.
    }
    {since 7.0}
  } 21 key:String, value:any "void"}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 23554 336 {text {purpose
        Instantiate this object.
    }
    {parameter data-model,
        The {docref StringDataModel} whose substring this range represents.
    }
    {parameter anchor,
        The initial anchor index for this range.
    }
    {parameter point,
        The initial point index for this range.
    }
    {since 7.0}
  } 49 data-model:StringDataModel, anchor:int, point:int ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 184718 411 {text {purpose 
        Selection returned by a {docref RecordGrid}.
    }    
    {details
        NOTE: Applications should {italic not} attempt to make 
        changes or call modifying methods on this object.  In order
        to change the contents of this selection, call methods 
        directly on the related {docref RecordGrid} instead.  See 
        {docref Selection} for more information.
    }
} "Selection"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 187240 81 {text {purpose 
       Is the given index contained within a selection?
    }
  } 34 record-index:int, column-index:int "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 187891 14 {unadvertised} "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 185468 60 {text {purpose
        Columns currently selected.
    }
  } "{Iterator-of RecordGridColumn}"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 185189 60 {text {purpose
        Number of selected records.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 185329 77 {text {purpose
        Does the selection contain the given record?
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 185917 240 {text {purpose
        Does the selection contain the given column?
    }
    {details
        If a {docref RecordGridColumnGroup} is passed, this will return
        true if all {docref RecordGridColumn}s beneath it are selected.
    }
  } 27 column:BaseRecordGridColumn "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 186110 60 {text {purpose
        Number of selected regions.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 186763 441 {text {purpose
        Determine if a cell location is contained by the regions
        in this selection.
    }
    {parameter
        record-index, {ctext int}. Record index of cell of interest. 
    }
    {parameter 
        column-index, {ctext int}. Column index of cell of interest. 
    }
    {return-vals 
        {ctext true} if this cell location is within the regions in
        this selection.  Otherwise {ctext false}.
    }
  } 34 record-index:int, column-index:int "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 185057 246 {text {purpose
        Indices of the records currently selected.
    }
    {details
        These are the indices with respect to the
        {docref-abbr RecordSetDisplay.records} property
        of the associated {ctext RecordGrid}.
    }
  } "{Iterator-of int}"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 186237 60 {text {purpose
        Regions currently selected.
    }
  } "{Iterator-of RecordGridRegion}"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 185613 60 {text {purpose
        Number of selected columns.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 188054 2 "" "bool"}
{ClassDocInfo "controls/logical-controls/tab-container-ui.scurl" 1485 14 {unadvertised} "TabContainerUI"$""}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1753 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1629 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1882 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1694 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1820 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/tab-container-ui.scurl" 1561 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/date-field-ui.scurl" 2187 14 {unadvertised} "DateFieldUI"$""}
{MethodDocInfo "controls/logical-controls/date-field-ui.scurl" 2257 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7162 14 {unadvertised} "RichTextStringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7309 14 {unadvertised} "#RichTextString" 0 }
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7259 14 {unadvertised} "#RichTextString" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 8135 14 {unadvertised} 85 index:int, undo-str:#RichTextString, redo-str:#RichTextString, has-value?:bool = true ""}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7912 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7403 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 7359 14 {unadvertised} "bool" 0 }
{ClassDocInfo "controls/logical-controls/tree-model.scurl" 6379 60 {text {purpose Describe a change to a {docref TreeModel}.}
} ""$""}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 7113 266 {text {purpose Construct this object.}
    {parameter 
        change-type, {docref TreeModelChangeType}.
        See {docref TreeModelChange.change-type}.
    }
    {parameter 
        node, {docref TreeNode}.
        See {docref TreeModelChange.node}.
    }   
  } 54 change-type:TreeModelChangeType, node:#TreeNode = null ""}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 6543 108 {text {purpose 
        {docref TreeModelChangeType} describing the
        extent of this change.
    }
  } "TreeModelChangeType" 0 }
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 6793 180 {text {purpose 
        {docref TreeNode} associated with this change.
    }
    {details
        If {ctext null}, the change is associated with the
        entire model.
    }
  } "#TreeNode" 0 }
{ProcDocInfo "controls/logical-controls/http-form-btns.scurl" 2567 514 {text {purpose 
        Create and return a standard "Reset" button for use in an
        {docref HttpForm} or {docref Dialog}. 
    }
    {parameter ...,
        Passed to {docref CommandButton} constructor.
    }
    {details
        The {docref Action} event handler resets the form or dialog
        that contains the button. See {docref HttpForm.reset} and
        {docref Dialog.reset}.

        Pressing the button will have no effect if it is not
        inside of a Dialog (or subclass of Dialog).
    }
} 72 label:Label = {hlmessage Reset}, width:any = {ensure-min-size 60pt}, ... "CommandButton"}
{ClassDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3220 14 {unadvertised} "MenuBarUI"$""}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3410 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3468 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3354 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-bar-ui.scurl" 3286 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-model.scurl" 9527 2173 {text {purpose
        Abstract superclass for a node in a {docref TreeModel}.
    }  
    {usage
        Note that the default factory for this class will create
        a {docref DefaultTreeNode}.  {ctext DefaultTreeNode} contains 
        all the state and implementation necessary to create a basic
        node with children.

        Application that are looking to create a subclass of {ctext TreeNode}
        should first consider subclassing {ctext DefaultTreeNode}, or
        its subclass {docref LazyTreeNode} which provides
        support for dynamically generated children.  
    }
    {details
        The children nodes of this node are accessible via the
        {docref Sequence-of} interface.  However, instances with a
        {docref TreeNode.read-only?} property of {ctext true} 
        will not allow modification via this interface.
    }
    {override
        If the properties of any instance of this class change, including
        the contents of its collection of child nodes,  subclasses should be
        sure to call {docref TreeNode.notify-change}. See the documentation for
        each individual property for more information.
        
        Subclasses should consider providing an efficient implementation
        of {docref TreeNode.has-children?} if accessing the child nodes
        has substantial cost (i.e. they are created dynamically).
    }
    {revisions
        This class replaces an older class of the same name. To
        support developers who need the older classes to make an
        existing applet run in both the 3.0 and 4.0 versions of the
        RTE, the classes associated with the old tree control, 
        {ctext TreeControl}, {ctext BaseTreeNode}, {ctext TreeNode}, and
        {ctext TreeNodeState} 
        are available from the package CURL.GUI.OLD. To use the older
        classes in a version 4.0 applet, import with override = true,
        as in the following example:

        {ctext {import * from CURL.GUI.OLD, override? = true}}

        To view the documentation for the old classes, you must have
        the 3.0 IDE installed and open a Version 3.0 documentation
        viewer.
    }
} "{Sequence-of TreeNode}"$"DefaultTreeNode"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 17758 657 {text {purpose
        Signal that modifications of this node are driven
        internally, and therefore permissible even for
        {ctext read-only?} nodes.
    }
    {usage
        Subclasses should set this flag to {ctext true} when modifying 
        the node endogenously in a way that will trigger
        calls to {docref TreeNode.notify-change}.  This will prevent
        errors being triggered by that method when
        {docref TreeNode.read-only?} is {ctext true}.

        Typically this field should be set using the {ctext with}
        construct in order to ensure that it is eventually restored
        to its original value.
    }
  } "bool" 5 false}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 14078 373 {text {purpose The sibling preceding this {ctext TreeNode}.}
    {override 
        The default implementation of this method must 
        scan the parent node for the index of this node
        using {docref Sequence-of.find}.  Subclasses
        that can provide a more efficient (i.e.
        constant time) implementation of this method should
        do so.
    }
  } "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 16667 1034 {text {purpose
        Generate and forward a {docref TreeModelChange} indicating that
        this node has been modified.
    }
    {parameter
        change, {ctext TreeModelChange} which has occurred at this node.
    }
    {usage
        This method should be called by implementations of
        this class to indicate that the node has changed.
    }
    {override
        The default implementation of this method simply 
        generates an appropriate {docref TreeModelChange}
        and passes it to {docref TreeModel.note-tree-model-change}.
        
        If {docref TreeNode.read-only?} is {ctext true}, an error
        will be thrown.  Subclasses should set the 
        {docref TreeNode.modifying-internally?} flag to {ctext true}
        in order to override this behavior for engdogenous changes.

        This method may be overridden by subclasses in order to 
        recognize changes at this node.  However, overrides
        of this method should typically call the super
        implementation.
    }
  } 26 change:TreeModelChangeType "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 12472 448 {text {purpose The label for this node.}
    {details 
        This property is used by {docref DefaultTreeItem}
        for displaying nodes of this type. This property should
        typically return text, or a {ctext Graphic} that
        is appropriate for use as a label.
       
        The default value for this property is simply the
        {docref TreeNode.node-data}. Override this getter
        to compute a different label.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 11819 2 "" "any"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 11748 587 {text {purpose
        Basic state to be associated with this node.
    }
    {details
        The default value of this property is {ctext null}.
    
        This value serves as the default for {docref TreeNode.node-label}
        and therefore by default may be displayed as a graphic in a 
        {docref DefaultTreeItem}.  Otherwise this property may be used 
        (or not used) as subclasses and applications see fit.    
    }
    {override
        If the value of this property is changed, subclasses
        should be sure to call {docref TreeNode.notify-change}.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 15344 779 {text {purpose Does this node have children?}
    {details
        This property should be used by callers to efficiently
        determine whether or not this node is a leaf.  For example,
        this property is consulted by the standard UI object in order
        to determine whether an expansion affordance needs to be provided 
        for a collapsed node.
    }
    {override
        The default implementation of this method simply refers to the 
        {docref Sequence-of.size} property. This may be inefficient
        if calling this property actually requires generating the children
        dynamically. Subclasses, especially those that rely on "lazy" 
        generation of children, should attempt to provide a more efficient
        implementation.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 15548 2 "" "#TreeModel"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 13222 365 {text {purpose The sibling following this {ctext TreeNode}.}
    {override 
        The default implementation of this method must 
        scan the parent node for the index of this node
        using {docref Sequence-of.find}.  Subclasses
        that can provide a more efficient (i.e. constant time)
        implementation of this method should do so.
    }
  } "#TreeNode"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 9611 14 {unadvertised} "any" 0 }
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 10965 792 {text {purpose 
        Is this {docref TreeNode} locked to
        prevent modification?
    }
    {details
        The default value of this property is
        the value of {docref TreeModel.read-only?}
        for the model which contains this node. If this
        node is not associated with {docref TreeModel},
        the value is {ctext false}.

        If this value is {ctext true} modifying the 
        properties, or collection of nodes contained by
        this node will cause an error to be thrown.
    }
    {override
        Subclasses that do not support modification may override
        this method to return {ctext true}.  Subclasses should
        never return {ctext false}, however, when the node
        is associated with a read-only {docref TreeModel}. 
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 12732 167 {text {purpose The parent of this {ctext TreeNode}.}
    {details 
        If {ctext null} this node should be
        considered to be the root of the tree.
    }
  } "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 12783 2 "" "#TreeNode"}
{ClassProcDocInfo "controls/logical-controls/tree-model.scurl" 9961 306 {text {purpose
        This factory creates an instance of {docref DefaultTreeNode}.
    }
    {parameter
        node-data, {ctext any}. 
        See {docref DefaultTreeNode.node-data}
    }
    {parameter
        ..., zero or more {ctext TreeNode}s to
        be added as children to this node.
    }
  } 34 node-data:any = null, ...:TreeNode "TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 15492 60 {text {purpose {docref TreeModel} containing this node.}
  } "#TreeModel"}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 18493 14 {unadvertised} "DropdownListUI"$""}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 18712 2 "" "Distance"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18637 2 "" 28 items:{Iterator-of ListItem} "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18822 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18774 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18569 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 443 351 {text {purpose
        This abstract class defines the API for the UI delegate
        for a {docref BaseTabControl}.
    }   
    {notes
        The UI delegate is connected to a control. When the control is
        modified in a way that affects the UI delegate, the delegate
        is informed via the methods defined by this interface.
    }   
} "Frame, ControlUI"$"SingleTabControlUI, MultiTabControlUI"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 3154 2 "" 9 e:FocusIn "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 1981 286 {text {purpose 
        Update the UI to reflect a newly removed pane.
    }
    {parameter
        index, The position of the tab to be deleted. The
        first pane is 0.
    }
    {details
        This method is called before the pane is removed from
        the control.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 3003 211 {text {purpose 
        Update the UI to reflect that a new 
        {docref TabPane} is shown.
    }
     {parameter
         index, The position of the pane to be shown. The
         first pane is 0.
    }
  } 9 index:int "void"}
{FieldDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 956 414 {text {purpose
        Indicates whether the {docref BaseTabControlUI} currently has the
        keyboard focus.
    }
    {details
        This value is set automatically by 
        {docref BaseTabControlUI.on-focus-in} and 
        {docref BaseTabControlUI.on-focus-out}.
        Subclasses typically should not set this value.
    }
    {deprecated
        Use {docref Visual.has-key-focus?} instead.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 1615 282 {text {purpose
        Update the UI to reflect a newly added pane.
    }
    {parameter 
        index, The position of the newly inserted pane. The
        first pane is 0.
    }
    {details 
        This is called any time another pane is added to
        the control.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 3296 2 "" 10 e:FocusOut "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 2709 637 {text {purpose 
        Update the UI to reflect a newly changed pane.
    }
    {parameter
        index, The position of the tab which was changed. The
        first tab is 0.
    }
    {details
        Called when properties of the {ctext TabPane} are
        changed.  Note that this includes properties specific to 
        {ctext TabPane} such as {docref TabPane.label}, 
        {docref TabPane.tab-button-tooltip} and 
        {docref TabPane.first-active-control}.  It is not called
        for changes to inherited graphical options, or layout preferences,
        both of which are signaled through the normal means.
    }
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/base-tab-control-ui.scurl" 1215 206 {text {purpose
        Construct a new {ctext BaseTabControlUI}. 
    }
    {parameter 
        ..., The rest args are passed to the {docref Graphic}
        that this UI delegate is derived from.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/accordion.scurl" 987 895 {text {purpose
        A control consisting of a number of "panes" with
        affordances to select and show one at a time. The
        selectors, to select a {docref TabPane}, are arranged
        horizontally or vertically.
    }
    {notes
        The user interface delegate for this class is {docref
        TabAccordionUI}. {ctext TabAccordionUI} is an abstract
        class. Subclasses implement a particular UI.
        
        This object can be styled by writing style rules for
        "TabAccordion" "TabAccordion/accordion".  and
        "TabAccordion/selector".  See {link href = {url
        "curl://install/docs/en/dguide/styled-controls.curl#skinning-tab-controls"
        }, Skinning Tab Controls} for more information.
    }
    {visual-testing
        This class implements the {ctext CurlTab} visual test
        type.  See {docref SingleTabControl} for details.
    }
} "SingleTabControl"$""}
{OptionDocInfo "controls/logical-controls/accordion.scurl" 1428 "bool" 4 true 153 {text {purpose 
        Determines if the opening and closing of a {docref TabPane} will
        be animated. By default it is {ctext true}.
    }   
  }}
{AccessorDocInfo "controls/logical-controls/accordion.scurl" 1510 2 "" "String"}
{AccessorDocInfo "controls/logical-controls/accordion.scurl" 3328 14 {unadvertised} "TabAccordionUI"}
{OptionDocInfo "controls/logical-controls/accordion.scurl" 1152 "Orientation" 20 Orientation.vertical 85 {text {purpose 
        Determines the orientation of the tab selectors.
    }   
  }}
{MethodDocInfo "controls/logical-controls/accordion.scurl" 3095 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/accordion.scurl" 2849 1149 {text {purpose
        Create an {ctext TabAccordion}.
    }
    {parameter ui-object, 
        The UI delegate.
    }
    {parameter ..., 
        Option settings, event handlers, or {docref TabPane}s to be added.
    }
    {for-example
        A {ctext TabAccordion} may be created declaratively
        along with the {ctext TabPane}s it contains.
        {example
            {let list:ListBox = {ListBox "A", "B", "C"}}
            {let f:Frame = {Frame "empty"}}
            {TabAccordion
                {TabPane 
                    label="Row", 
                    {HBox spacing=4pt, "A", "B", "C"}
                },
                {TabPane 
                    label="Column",
                    {VBox spacing=4pt, "A", "B", "C"}
                },
                {TabPane 
                    label="List", 
                    first-active-control = list, 
                    {VBox "Choose One", list}
                },
                {on CurrentPaneChanged at tc:TabAccordion do
                    {f.add replace? = true, {format "%v", tc.current-pane}}
                }
            }
            {value f}
        }
    }
  } 37 ui-object:#TabAccordionUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 4229 103 {text {purpose 
        A superclass for {docref TextDisplay} user interface
        delegates.
    }
} "Frame, ControlUI"$"StandardTextDisplayUI, SkinnableTextDisplayUI"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 4447 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/text-field-uis.scurl" 3827 742 {text {purpose 
        A superclass for {docref PasswordField} user interface
        delegates.
    }
    {details
        Subclasses that are concrete should react in appropriate ways
        when certain events occur {em-dash} when keys are typed, when
        the control is disabled, when {docref-abbr
        BaseTextFieldUI.react-to-state-change} is called,
        etc. {em-dash} but the concrete subclasses must provide the
        actual drawing and text manipulation code.  Note that such
        reactions are typically look-and-feel-specific, and should
        therefore not be implemented in look-and-feel-independent
        classes intended to be further subclassed by
        look-and-feel-specific implementations.
    }
} "BaseTextFieldUI"$"StandardPasswordFieldUI, SkinnablePasswordFieldUI"}
{MethodDocInfo "controls/logical-controls/text-field-uis.scurl" 4047 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 212687 375 {text {purpose 
        Superclass for all {docref Command}s that specifically shift 
        the currently active {docref RecordGridCell} within a 
        {docref RecordGrid}.
    }
    {notes
        {docref RecordSetDisplayMoveCommand}s may also change the currently
        active cell (the {docref RecordGridCell} with
        {docref RecordGridUI.grid-focus}).
    }
} "CommandImpl"$"RecordGridMoveToCommand, RecordGridMoveNextCommand, RecordGridMovePreviousCommand"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 212875 92 {text {purpose 
        The {docref RecordGrid} this {docref Command} operates on.
    }
  } "RecordGrid" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 213182 251 {text {purpose
        Instantiate this object.
    }
    {parameter name,
        A {docref String} representing the name of this command.
    }
    {parameter grid,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 28 name:String, grid:RecordGrid ""}
{ClassDocInfo "controls/logical-controls/menu-pane-ui.scurl" 3693 14 {unadvertised} "MenuPaneUI"$""}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 4062 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 4120 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 4006 2 "" 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 3829 2 "" 22 x:Distance, y:Distance "bool"}
{MethodDocInfo "controls/logical-controls/menu-pane-ui.scurl" 3761 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-model.scurl" 208 116 {text {purpose
        The data model describing the tree to be displayed
        by a {docref TreeControl}.
    }
} "Observable"$""}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 3499 1735 {text {purpose 
        Set to {ctext true} to suppress notification
        of changes at this object to observers.
    }
    {details
        When restored to {ctext false} this object
        will make any necessary notifications,
        to represent changes to the state of the model
        while the flag was {ctext true}.
    }
    {usage
        This property should not typically be set explicitly.
        It is best to use it by setting it to {ctext true} 
        in a {ctext with} macro. This will allow nested
        changes to the flag, as well as ensure that it is
        eventually restored to {ctext false} in all cases.
        
        Note the following example, where the use of 
        {ctext batch-notify?} allows the observing controls to
        be updated only once, after the model has been constructed.
        
        For example:
        
        {code
            let tm:TreeModel ={TreeModel null}
            {TreeControl data-model = tm}
            {with tm.batch-notify? = true do
                || Add and manipulate node-structure in tm.
                || This may involve many small changes to the model.
            }
        }
    }
    {override
        The setter is responsible for notifying all observers when this flag
        is restored to {ctext false}.  The default implementation of this
        setter simply calls {docref TreeModel.note-tree-model-change} with a 
        {docref TreeModelChange} of type "bulk-changes" to indicate that 
        anything in the model may have changed.  

        Subclasses that wish to more efficient should override this setter
        as well as {ctext note-tree-model-change} where the specific
        changes can be tracked.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 575 184 {text {purpose Construct this object.}
    {parameter 
        root, See {docref TreeModel.root}.
    }
    {parameter 
        read-only?, See {docref TreeModel.read-only?}.
    }
  } 46 root:#TreeNode = null, read-only?:bool = false ""}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 269 14 {unadvertised} "bool" 5 false}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 313 14 {unadvertised} "#TreeNode" 0 }
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 4709 819 {text {purpose Notify the model of a change at one of its nodes.}
    {parameter 
        change, {docref TreeModelChange} which has occurred at one of
        the nodes within this model.
    }
    {details
        This method is called by implementations of this class, 
        or implementations of {docref TreeNode} to signal a change
        in the model. 
    }
    {override
        The default implementation  relays {param change} as a message
        to all {docref Observer}s if {docref TreeModel.batch-notify?}
        is {ctext false}.  If {ctext batch-notify?} is {ctext true} this 
        implementation does nothing.
        
        Override this method, along with the setter for 
        {ctext batch-notify?}, in order to implement
        more sophisticated and efficient batch updates.
    }
  } 22 change:TreeModelChange "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 5812 919 {text {purpose 
        Executes a depth-first traversal of a portion of this
        {ctext TreeModel}.
    }
    {parameter
        action, proc to be applied to each node.  If this 
        proc returns {ctext true} for any node, the traversal
        will be halted.
    }
    {parameter 
        root, {docref TreeNode} which is the root of the 
        sub-tree to be traversed. The default value is
        the {ctext root} of this object.  If
        {ctext null} this method will do nothing.
    }
    {details
        See also {docref TreeControl.walk-nodes} which is similar to
        this method, but allows limiting the traversal to the nodes
        that are expanded in a particular {ctext TreeControl}.
    }
    {return-vals
        {ctext TreeNode} on which the traversal was halted, or 
        {ctext null} if all nodes were visited.
    }
    {override 
        Not typically overridden.
    }
  } 62 action:{proc-type {TreeNode}:bool}, root:#TreeNode = self.root "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 3580 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 912 102 {text {purpose 
        {docref TreeNode} representing the root node of this 
        model.
    }
  } "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 1594 232 {text {purpose 
        Is this {docref TreeModel} locked to
        prevent modification?
    }
    {details
        If {ctext false}, modifying the structure
        or contents of this model will throw an
        error.
    }
  } "bool"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 1668 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 979 2 "" "#TreeNode"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 345 14 {unadvertised} "bool" 0 }
{ClassDocInfo "controls/logical-controls/text-fields.scurl" 83 14 {unadvertised} "{MultiUIValueControlFrame-of tValue}, WritableTextSelectionContext"$""}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 8853 2 "" "TextSelection"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 2357 14 {unadvertised} 128 data-model:#tDataModel = null, value:#tValue = null, prompt:#tValue = null, max-chars:int = -1, ui-object:#ControlUI = null, ... ""}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 20210 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6092 2 "" "tValue"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 18761 2 "" "bool"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1744 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 19358 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 22867 2 "" 30 text-to-insert:StringInterface "void"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1231 784 {text {purpose
        Indicates whether the user is currently changing the value.
    }
    {details
        In short, {ctext pending-value?} is true while the user
        is typing something into a text control, and false at all
        other times.

        The first time a user types a key at a control whose
        pending-value? is {ctext false}, that control's
        pending-value? is set to {ctext true} (and a
        {docref ValueChanged} event is sent).  pending-value?
        is not set back to {ctext false} until the user finishes
        typing the value and a {docref ValueFinished} event is sent.

        This property should never be set by the application, since
        there are certain semantics around it that the Curl language
        expects.
    }
  } "bool" 5 false}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 25710 2 "" 20 forward?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 17415 14 {unadvertised} 0  "{UndoItem-of tValue, tDataModel, tRange}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 16456 14 {unadvertised} 7 ch:char "{UndoItem-of tValue, tDataModel, tRange}"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1523 14 {unadvertised} "int" 3 100}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 25159 14 {unadvertised} 29 text-to-insert:RichTextString "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 5819 2 "" "int"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 14188 562 {text {purpose Records a typing gesture with the undo stack.}
    {parameter ch,
        The typed character.
    }
    {details
        This method attempts to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        Also see
        {docref-abbr BaseTextControl-of.record-typing-deletion-for-undo}
        and {docref-abbr BaseTextControl-of.end-undo-typing-sequence}.
    }
    {notes
        Check {docref-abbr BaseTextControl-of.record-for-undo?} before
        calling this method.
    }
    {since 6.0}
  } 7 ch:char "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 22501 14 {unadvertised} 10 val:String "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 4538 2 "" 9 value:any "tDataModel"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1572 14 {unadvertised} "#{Dequeue-of
                              {UndoItem-of tValue, tDataModel, tRange}
                            }" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 25934 2 "" 29 action:String, args:FastArray "any"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 20355 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 9803 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 2311 465 {text {purpose
        Indicates whether undo recordings should be made.
    }
    {details
        The intention of this field is to temporarily suppress undo
        recordings via the following construct:

        {ctext {with tf.record-for-undo? = false do ...}}

        To disable undo recording under all situations, call
        {docref-abbr BaseTextControl-of.request-undo-stack-depth-limit}
        with a parameter of {ctext 0}.
    }
    {since 6.0}
  } "bool" 4 true}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 16849 14 {unadvertised} 30 text-to-insert:StringInterface "{UndoItem-of tValue, tDataModel, tRange}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 9946 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 17543 14 {unadvertised} 0  "{Dequeue-of {UndoItem-of tValue, tDataModel, tRange}}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 20808 2 "" 30 sender:Observable, message:any "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 13062 14 {unadvertised} "#{UndoItem-of tValue, tDataModel, tRange}"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1486 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 16622 14 {unadvertised} 28 num-chars:int, forward?:bool "{UndoItem-of tValue, tDataModel, tRange}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 11131 1040 {text {purpose Requests a limit to the depth of the undo stack.}
    {details
        When the value is negative, the undo stack will have no
        limit. When this value is zero, undo cannot occur.  Otherwise,
        the undo stack will be limited to this number of items. The
        default limit is 100.

        In future versions of the Curl{registered-trademark} content
        language, the undo stack might not be under this object's
        direct control. If so, this object might not be capable of
        completely fulfilling the request. Nevertheless, objects of
        this class should handle the request as best they can. In
        particular, requests for negative values should attempt to
        remove any undo stack depth limits, requests of value zero
        should attempt to prevent undo for this object but not other
        objects, and requests for positive values should attempt to
        make sure that at least that many levels of undo are available
        for this object.
    }
    {since 6.0}
  } 7 val:int "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 9718 481 {text {purpose
        The {docref StringDataModelRange} representing the range of
        the {docref-abbr BaseTextControl-of.data-model} that is
        currently selected.
    }
    {notes
        Note that the standard interface for modifying {docref
        Selection}s is through methods and {docref Command}s on the
        {docref SelectionContext}.  This accessor provides direct
        access to the selected range for direct programmatic
        manipulation.
    }
  } "tRange"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1406 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 17229 14 {unadvertised} 27 message:StringRemoveMessage "{UndoItem-of tValue, tDataModel, tRange}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 18979 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6341 2 "" "bool"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1713 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 8788 2 "" "Graphic"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 5001 370 {text {purpose
        The {docref String} to be shown when this object has no
        value.
    }
    {details
        The prompt is useful for providing instruction to the user;
        e.g., "Type your name here".  If no prompt is supplied, then
        the control is simply blank when {docref-abbr
        BaseTextControl-of.has-value?} is {ctext false}.
    }
  } "#tValue"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 25324 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 28812 2 "" 11 name:String "any"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 12821 254 {text {purpose Resets the undo state of this object.}
    {details
        This method removes all entries from the undo stack, as if
        this object had just been created with its current value as
        the initial value.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 17043 14 {unadvertised} 27 message:StringSpliceMessage "{UndoItem-of tValue, tDataModel, tRange}"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 20572 2 "" 10 e:FocusOut "void"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1353 14 {unadvertised} "#StringDataModelSelection" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 6152 2 "" 0  "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6953 2 "" "tDataModel"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 7988 273 {text {purpose
        The value of this object that is to be submitted when the
        {ctext HttpForm} in which this control resides is submitted.

        The default value is {docref-abbr BaseTextControl-of.value},
        converted to a String if necessary.
    }
  } "any"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6015 2 "" "tValue"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1313 14 {unadvertised} "tRange" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 8442 363 {text {purpose 
        Simulates a user setting the value interactively.
    }
    {details
        Sets the value of the text control, then fires {docref
        ValueChanged} and {docref ValueFinished} events, if the value
        actually changed.
    }
    {notes
        {docref ValueFinished} may fire even when the value has not
        changed.
    }
  } 10 val:tValue "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 5957 14 {unadvertised} "tValue"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6415 14 {unadvertised} "bool"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1274 14 {unadvertised} "tDataModel" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 16355 446 {text {purpose
        Ends the current undo typing sequence.
    }
    {details
        The
        {docref-abbr BaseTextControl-of.record-typing-for-undo} and
        {docref-abbr BaseTextControl-of.record-typing-deletion-for-undo}
        methods attempt to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        This methods ends any sequences currently in process.
    }
    {since 6.0}
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 18209 14 {unadvertised} 45 item:{UndoItem-of tValue, tDataModel, tRange} "void"}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1447 14 {unadvertised} "#tValue" 4 null}
{FieldDocInfo "controls/logical-controls/text-fields.scurl" 1786 14 {unadvertised} "#tValue" 0 }
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 15331 845 {text {purpose 
        Records a deleting typing gesture with the undo stack.
    }
    {parameter num-chars,
        The number of {docref char}s to delete.
    }
    {parameter forward?,
        The direction in which to delete: {ctext false} (the default)
        for deleting backward (as in the {ctext backspace} key) and
        {ctext true} for deleting forward (as in the {ctext delete} key).
    }
    {details
        This method attempts to combine sequential typing gestures so
        that undo can treat the entire sequence as a unit.

        Also see
        {docref-abbr BaseTextControl-of.record-typing-for-undo} and
        {docref-abbr BaseTextControl-of.end-undo-typing-sequence}.
    }
    {notes
        Check {docref-abbr BaseTextControl-of.record-for-undo?} before
        calling this method.
    }
    {since 6.0}
  } 36 num-chars:int, forward?:bool = false "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 18665 2 "" "bool"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 5070 2 "" "#tValue"}
{MethodDocInfo "controls/logical-controls/text-fields.scurl" 11274 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 6873 354 {text {purpose
          The {docref StringDataModel} associated with this
          object.
      }
      {notes
          Setting the data model will change {docref-abbr
          BaseTextControl-of.value} to match the contents of the new
          data model. Setting the value will change the contents of
          the current data model.
      }
  } "tDataModel"}
{AccessorDocInfo "controls/logical-controls/text-fields.scurl" 5748 553 {text {purpose
        The maximum number of characters that should be
        entered into the text field.  Default is -1.
    }
    {details
        When the limit is reached, the text field refuses to accept
        additional typed or pasted characters.  The value -1 means
        that there is no restriction on the number of characters that
        can be entered.
    }
    {notes
        A side effect of setting this property is that the value of
        the control is unset via {docref-abbr
        BaseTextControl-of.unset-value}.
    }
  } "int"}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 31185 16618 {text {purpose 
        Sortable, filterable, and editable grid of data.
    }
    {details
        {ctext RecordGrid} displays the data in its {ctext record-source} 
        according to the specification of its collection of 
        {docref RecordGridColumn}s, {docref-abbr RecordGrid.columns}.
        Each column governs the display and editability of a field in the 
        record-source.  These columns may be manipulated directly in
        order to change the way data is displayed. {ctext RecordGrid}
        can create these columns automatically based on its
        {ctext record-source}, or they may be specified directly.
        
        Note that {italic local} options set on {ctext RecordGrid} will be 
        "inherited" by its {ctext RecordGridColumn}s, and 
        {docref RecordGridCell}s, in a way similar to non-local options. 
        See {docref RecordGridOptions} for more information.
        
        {ctext RecordGrid} also allows the selection of either its records 
        or its columns, or both.  The type of selection maintained is a 
        {docref RecordGridSelection}. By default, only records are 
        selectable.  
        
        Finally, note that a {ctext RecordGrid} will fire the notification
        events typically fired by {docref RecordSetDisplay}s and
        {docref SelectionContext}s.
    }
    {visual-testing
        This class implements the {ctext CurlDataTable} visual test
        type.

        Rows and columns are referenced to by name (although since
        RecordGrid doesn't have named rows, that's not supported) or
        index.  A cell is referenced by a row, column pair.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    Action
                }
                {cell font-style = "italic", <none>}
                {cell Perform the standard action on a table.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ActivateCell
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}, {param col}:{docref String}
                }
                {cell
                    Activates cell {param row}, {param col}.  As a special
                    case, if either {param row} or {param col} are {ctext -1},
                    then all cells will be deactivated.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ActivateRow
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}
                }
                {cell Activates row {param row}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeleteSelectedRows
                }
                {cell font-style = "italic", <none>}
                {cell Deletes the currently selected rows.}
            }
            {row
                {cell
                    font-family = "monospace",
                    text-breakable? = false,
                    ColumnMove
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param move-col}:{docref String},
                    {param before-col}:{docref String}
                }
                {cell
                    Move column {param move-col} before
                    column {param before-col}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ColumnResize
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col}:{docref String}, {param delta}:{docref int}
                }
                {cell
                    Changes the size of column {param col} by {param delta}
                    pixels.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ColumnsResize
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col1}:{docref String}, {param col2}:{docref String},
                    {param delta}:{docref int}
                }
                {cell
                    Changes the size of columns from
                    {param col1} to {param col2} by {param delta} pixels.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ColumnSort
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col}:{docref String},
                    {param ascending?}:{docref bool}
                }
                {cell Sorts the column.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeselectAll
                }
                {cell font-style = "italic", <none>}
                {cell Deselects everthing in the table.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeselectColumn
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col}:{docref String}
                }
                {cell Deselects the column {param col}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeselectColumns
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col1}:{docref String}, {param col2}:{docref String}
                }
                {cell Deselects the columns from {param col1} to {param col2}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeselectRow
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}
                }
                {cell Deselects the row {param row}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    DeselectRows
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row1}:{docref String}, {param row2}:{docref String}
                }
                {cell Deselects the rows from {param row1} to {param row2}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendCell
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}, {param col}:{docref String}
                }
                {cell
                    Adds the cell {param row}, {param col} to the set of
                    selected cells.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendCellsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-row}:{docref String},
                    {param start-col}:{docref String},{br}
                    {param end-row}:{docref String},
                    {param end-col}:{docref String}
                }
                {cell
                    Adds the cells from {param start-row}, {param start-col}
                    to {param end-row}, {param end-col} to
                    the set of selected cells.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendColumn
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col}:{docref String}
                }
                {cell Adds column {param col} to the set of selected columns.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendColumnsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col1}:{docref String}, {param col2}:{docref String}
                }
                {cell
                    Extends the set of selected columns to include the columns
                    from {param col1} to {param col2}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendRow
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}
                }
                {cell Adds row {param row} to the set of selected rows.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    ExtendRowsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row1}:{docref String}, {param row2}:{docref String}
                }
                {cell
                    Extends the set of selected rows to include the rows from
                    {param row1} to {param row2}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    GetCellData
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}, {param col}:{docref String}
                }
                {cell Returns the data contained in the specified cell.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    ModifyCellsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-row}:{docref String},
                    {param start-col}:{docref String},{br}
                    {param end-row}:{docref String},
                    {param end-col}:{docref String}
                }
                {cell
                    Modifies the last region selected to be the cells from
                    {param start-row}, {param start-col} to {param end-row},
                    {param end-col}.  Other selections, if any, are unaffected.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectAll
                }
                {cell font-style = "italic", <none>}
                {cell Selects everthing in the table.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectCell
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}, {param col}:{docref String}
                }
                {cell Selects the cell {param row}, {param col}.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    SelectCellsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param start-row}:{docref String},
                    {param start-col}:{docref String},{br}
                    {param end-row}:{docref String},
                    {param end-col}:{docref String}
                }
                {cell
                    Selects the cells from {param start-row}, {param start-col}
                    to {param end-row}, {param end-col}.
                }
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectColumn
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col}:{docref String}
                }
                {cell Selects column {param col}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectColumnsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param col1}:{docref String}, {param col2}:{docref String}
                }
                {cell Selects the columns from {param col1} to {param col2}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectRow
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}
                }
                {cell Selects row {param row}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SelectRowsRange
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row1}:{docref String}, {param row2}:{docref String}
                }
                {cell Selects the rows from {param row1} to {param row2}.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    SetCellData
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param row}:{docref String}, {param col}:{docref String},
                    {param data}:{docref String}
                }
                {cell Sets the specified cell's contents.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param rows}:{docref String}
                }
                {cell The number of rows in the table.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param columns}:{docref String}
                }
                {cell The number of columns in the table.}
            }
        }
    }
    {notes
        This object can be styled by writing style rules for "RecordGrid" and
        "RecordGrid/internal-grid". See
        {link href = {url
                         "curl://install/docs/en/dguide/styled-controls.curl#skinning-recordgrid"
                     },
        Skinning RecordGrid} for more information.
    }
} "SelectionContext, RecordSetDisplay, MultiUIControlFrame, RecordGridOptions, TestTabularData"$""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31756 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 94073 2 "" 19 sc:SelectionChanged "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32654 14 {unadvertised} "int" 2 -1}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 57997 "bool" 4 true 58 {text {purpose
        Display record selectors?
    }
  }}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 52482 2 "" "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 118455 14 {unadvertised} 10 d:Distance "int"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31677 14 {unadvertised} "int" 0 }
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 61276 "any" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 50854 2 "" "RecordGridRowOptions"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 73185 834 {text {purpose
        Notify the grid that one of its {docref RecordGridRowOptions} 
        has changed.
    }
    {parameter property-name,
        {ctext String}. Property of the row
        that changed.  If equal to the empty string it should 
        be assumed that the entire row has changed.
    }
    {details
        Currently the only supported {ctext RecordGridRowOptions} 
        is {docref RecordGrid.header-options}.

        This method should be called by the row when it is changed.
        It should not normally need to be called by applications.
    }
    {override 
        The default implementation of this method will call the
        method of the same name on the control's {ctext ui-object}.
        Implementation of this method should typically call the
        super implementation as well.
    }
  } 46 row:RecordGridRowOptions, property-name:String "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 114527 14 {unadvertised} 49 arg:any, action:String, negative-ok?:bool = false "int"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31469 14 {unadvertised} "{Array-of RecordGridColumn}" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 102748 2 "" 38 action:String, args:{FastArray-of any} "any"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 61337 "any" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 62518 962 {text {purpose
        Get information about grid objects corresponding
        to a particular location in the grid.
    }
    {details
        This method is used for pointer event handlers placed
        on the grid which need to act on a particular
        column, record, or cell.
        
        Note that a point may be related to a column or record and
        not a cell, if for example, it falls between cells, or 
        on the column-header or record selector.
    }
    {return-vals
        {itemize
            {item
                cell, {docref RecordGridCell} at point, or {ctext null}
            }
            {item
                record-index, index of the record at the point in
                the {ctext records} collection or -1.
            }
            {item 
                column-index, index of the {docref RecordGridColumn} in
                the {ctext columns} collection at the point or -1.
            }
        }
    }
  } 22 x:Distance, y:Distance "(cell:#RecordGridCell,
                         record-index:int,
                         column-index:int
                        )"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 74412 2 "" 41 index-change?:bool, identity-change?:bool "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 50756 513 {text {purpose 
        A "bundle" of graphic option settings to be applied to
        all column headers in this {ctext RecordGrid}.
    }
    {details
        Use this property to centrally manage  graphic option settings
        for use by all the column headers.  The options set here will
        be applied to all headers by the {ctext RecordGridUI}.

        The option settings specified in this property will take precedence
        over any settings specified in the {ctext RecordGridColumn}s.
    }
  } "RecordGridRowOptions"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31797 14 {unadvertised} "int" 49 BaseRecordGridColumn.parent-check-recursion-limit}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 51508 2 "" "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 32847 2 "" "String"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 63955 672 {text {purpose
        Set the number of rows and columns that should be locked in place,
        and where the visible rows and columns should start.
    }
    {parameter rows, 
        the count of rows to be frozen.
    }
    {parameter columns, 
        the count of columns to be frozen.
    }
    {parameter row-start, 
        the index of the first row to be frozen (prior rows being hidden).
    }
    {parameter column-start, 
        the index of the first column to be frozen (prior rows being hidden).
    }
    {details
        If not supported by the particular {docref RecordGridUI} in
        use, calling this method will have no visual effect.
    }
  } 64 rows:int, columns:int, row-start:int = -1, column-start:int = -1 "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 80828 2 "" 30 item:OptionItem, removed?:bool "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 79987 2 "" 20 forward?:bool = true "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 53617 141 {text {purpose
        Whether there a change in the set of columns or their arrangement
        is about to occur.
    }
    {since 7.0}
  } "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 51877 241 {text {purpose
        The index of the first row that should be locked in place.
    }
    {details
        If not supported by the particular {docref RecordGridUI} in
        use, setting this property will have no visual effect.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 52854 244 {text {purpose
        The index of the first column that should be locked in place.
    }
    {details
        If not supported by the particular {docref RecordGridUI} in
        use, setting this property will have no visual effect.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 75266 2 "" 11 name:String "#Command"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 86624 127 {text {purpose
        Select a range of columns.
    }  
    {details
        See {docref RecordGrid.select-column}.
    }
  } 90 start-column:BaseRecordGridColumn, end-column:BaseRecordGridColumn, additive?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 80576 2 "" 26 key:OptionKey, local?:bool "(item:#OptionItem, local-key?:bool)"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 91719 457 {text {purpose
        Select a rectangular region.
    }  
    {parameter region,
        {docref RecordGridRegion} to be selected.  An error
        will be thrown if this value describes an area extending
        beyond the record or column bounds of the {ctext RecordGrid}.
    }
    {parameter additive?,
        If {ctext true}, the region will be added to the existing 
        selection. Otherwise, the existing selection will be cleared. 
    }
  } 47 region:RecordGridRegion, additive?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 84064 124 {text {purpose
        Select a range of records.
    }
    {details
        See {docref RecordGrid.select-record}
    }
  } 54 start-index:int, end-index:int, additive?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 118306 14 {unadvertised} 5 i:int "String"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 39736 14 {unadvertised} 99 val:{Array-of BaseRecordGridColumn}, validate?:bool = true, refresh-automatic-columns?:bool = false "void"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 56125 "bool" 4 true 56 {text {purpose
        Are records selectable?
    }
  }}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32339 139 {text {purpose
        The maximum column group depth of any
        {docref RecordGridColumn} used in this grid.
    }
    {since 7.0}
  } "int" 1 0}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 92953 156 {text {purpose
        Remove a region from the current selection.
    }  
    {parameter region,
        {docref RecordGridRegion} to be removed.
    }
  } 23 region:RecordGridRegion "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 94723 14 {unadvertised} 23 region:RecordGridRegion "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 67117 894 {text {purpose 
        Synchronize the automatic {docref RecordGridColumn}s in the 
        {docref-abbr RecordGrid.columns} collection with the 
        {docref RecordGrid.record-source}.
    }
    {details
        This method implements the "refresh" operation described
        for the property {docref RecordGrid.automatic-columns?}.  
        See the documentation for this property for more details.
        
        If {ctext RecordGrid.automatic-columns?} is {ctext false},
        calling this method should have no effect.
    }
    {override
        Override this method to change the algorithm used to synchronize 
        the {ctext record-source}'s {ctext fields} collection
        and the grid's {ctext columns} collection. 
        
        Note that any changes to the basic rules described by
        {docref RecordGrid.automatic-columns?} must be well documented.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 81498 2 "" "Graphic"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 38076 2 "" "{Array-of RecordGridColumn}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 120588 2 "" 11 name:String "any"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 57073 "bool" 4 true 77 {text {purpose
        May multiple records or columns be selected?
    }
  }}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31407 14 {unadvertised} "{Array-of BaseRecordGridColumn}" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32550 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 93717 463 {text {purpose 
        Replace the last region in the current selection.
    }  
    {parameter region, 
        {ctext RecordGridRegion} to replace the last region selected.
        An error will be thrown if this value describes
        an area extending beyond the record or column bounds
        of the {ctext RecordGrid}.
    }
    {details
        If no region is currently selected
        {param region} will become the single selected region. 
    }
  } 23 region:RecordGridRegion "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 99410 2 "" "String"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 115444 14 {unadvertised} 22 arg:any, action:String "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 61396 "Background" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 75053 2 "" "any"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32753 14 {unadvertised} "{Array-of int}" 20 {new {Array-of int}}}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 52945 2 "" "int"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 57456 "bool" 4 true 56 {text {purpose
        Display column headers?
    }
  }}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 59463 "bool" 0  2 ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 51962 2 "" "int"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 59558 "#{proc-type {{Array-of MenuItem}, RecordGridCell}:{Array-of MenuItem}}" 4 null 2 ""}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 94465 "Background" 0  2 ""}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32133 14 {unadvertised} "bool" 5 false}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 89874 397 {text {purpose
        Select a column.
    }  
    {details 
        If {ctext additive?} is {ctext true}, the column will be
        added to the existing selection. Otherwise, the existing 
        selection will be cleared.
        
        If a {docref RecordGridColumnGroup} is given as an argument,
        all {docref RecordGridColumn}s under that group will be
        selected.
    }
  } 51 column:BaseRecordGridColumn, additive?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 99544 2 "" 18 action:String, ... "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 70249 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 53245 101 {text {purpose
        Whether there is any row or column freeze in effect.
    }
    {since 7.0}
  } "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 59400 "bool" 5 false 1293 {text {purpose
        Should user gestures that move the current record
        also cause it to be selected?
    }
    {details
        Set this option to {ctext true} if you want the record that 
        the user chooses with the keyboard or the mouse to be selected, as 
        well as made the {ctext current-record}.  This behavior is
        is very similar to the behavior of {ctext ListBox}.

        If this option is {ctext false} (default), records will only be 
        selected when the user clicks or drags on the record selectors.  
        However, if this option is {ctext true}, unconsumed clicks or
        drags on the body of records will cause the records to be selected. 
        
        Also, if {ctext true}, keyboard navigation gestures that change the 
        current record -- for example {ctext KeyPressValue.up},
        {ctext KeyPressValue.dn}, {ctext KeyPressValue.pgup},
        {ctext KeyPressValue.pgdn}, {ctext KeyPressValue.home} 
        or {ctext KeyPressValue.end} -- will also select the new
        record as well.
        
        This option is most useful for non-editable grids with cells that
        do not take focus.  In particular, it should typically with
        {docref RecordGrid.cells-take-focus?} set to {ctext false}.
    }   
  }}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31966 14 {unadvertised} "bool" 5 false}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 56751 "bool" 5 false 68 {text {purpose
        Are rectangular regions selectable?
    }
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 71823 734 {text {purpose
        Notify the grid that one of its {ctext columns} has
        changed.
    }
    {parameter property-name,
        {ctext String}. Property of the column
        that changed.  If equal to the empty string it should 
        be assumed that the entire column has changed.
    }
    {details
        This method should be called by the columns collection
        when it is changed.  It should not normally need to
        be called by applications.
    }
    {override 
        The default implementation of this method will call the
        method of the same name on the control's {ctext ui-object}.
        Implementation of this method should typically call the
        super implementation as well.
    }
  } 49 column:BaseRecordGridColumn, property-name:String "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32602 14 {unadvertised} "int" 2 -1}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 34055 1020 {text {purpose
        Construct this object.
    }
    {parameter record-source, 
        the {docref RecordSet} to be displayed. 
    }
    {parameter sort,
        a {docref RecordSort}.
        See {docref-abbr RecordSetDisplay.sort}.
    }
    {parameter filter,
        a {docref RecordFilter}.
        See {docref-abbr RecordSetDisplay.filter}.
    }
    {parameter key-spec,
        an {docref any}.
        See {docref-abbr RecordSetDisplay.key-spec}.
    }
    {parameter header-options,
        a {docref RecordGridRowOptions}.
        See {docref-abbr RecordGrid.header-options}.
    }
    {parameter ui-object, 
        The UI delegate that handles drawing and events.
    }
    {parameter ..., 
        may include options for passing along to the constructor of
        {docref MultiUIControlFrame}. This collection may also include
        custom {docref RecordGridColumn}s. Note that any columns
        specified here will override automatically generated columns for 
        the same field.
    }
  } 205 record-source:#RecordSet = null, sort:#RecordSort = null, filter:#RecordFilter = null, key-spec:any = null, header-options:RecordGridRowOptions = {RecordGridRowOptions}, ui-object:#RecordGridUI = null, ... ""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 93983 2 "" "RecordGridSelection"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 57828 "bool" 5 false 260 {text {purpose
        Display an empty column to fill extra space?
    }
    {details 
        If {ctext true} a "filler" column, with an empty header
        and no cells will be drawn between the last column and the
        right edge of the grid.
    }
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 96648 592 {text {purpose
        Moves a {docref RecordGridColumn} within the grid.
    }
    {parameter source-index,
        The index of the {docref RecordGridColumn} to be moved in this grid.
    }
    {parameter destination-index,
        The index to which to move the {docref RecordGridColumn}
        specified by {param source-index}.
    }
    {details
        This method will not move a column into or out of a
        {docref RecordGridColumnGroup}; in these cases, it will return
        without effect.
        This limitation may be removed in a later release.
    }
    {since 7.0}
  } 39 source-index:int, destination-index:int "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 118817 2 "" 24 min-row:int, max-row:int "(column-titles:StringVec, data:FastArray)"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 80113 2 "" 20 forward?:bool = true "bool"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 51423 243 {text {purpose
        The number of rows (records) that should be locked in place.
    }
    {details
        If not supported by the particular {docref RecordGridUI} in
        use, setting this property will have no visual effect.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 95087 14 {unadvertised} 19 notify?:bool = true "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 86031 238 {text {purpose
        Select a record.
    }  
    {details 
        If {ctext additive?} is {ctext true}, the record will be
        added to the existing selection. Otherwise, the existing 
        selection will be cleared. 
    }
  } 33 index:int, additive?:bool = false "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 118030 14 {unadvertised} 22 arg:any, action:String "Distance"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 52391 236 {text {purpose
        The number of columns that should be locked in place.
    }
    {details
        If not supported by the particular {docref RecordGridUI} in
        use, setting this property will have no visual effect.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 90443 78 {text {purpose
        Remove a column from the current selection.
    }  
  } 27 column:BaseRecordGridColumn "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 37985 1104 {text {purpose
        The {docref RecordGridColumn}s to be displayed,
        in the order they are to be displayed.
    }
    {details
        If a column cannot be associated with a field
        in the {docref RecordGrid.data-source} property, 
        the column will be shown without any data.
        
        If {docref RecordGrid.base-columns} is changed, then this
        property will be updated, and vice versa. Note that only
        {docref RecordGridColumn}s can be used with this accessor,
        and any grouping information on columns will be lost when
        it is set (i.e. {docref BaseRecordGridColumn.parent-group}
        will be unset on all columns). To maintain column groups,
        use {docref RecordGrid.base-columns} instead.
        
        Important Note: While the individual columns in this 
        collection may be edited directly, the collection 
        itself should {bold not} be modified. To change the set 
        (or order) of columns being displayed, edit a clone of this 
        collection, and reset the property to be the edited clone.    
    }
  } "{Array-of RecordGridColumn}"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 56440 "bool" 5 false 56 {text {purpose
        Are columns selectable?
    }
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 48734 14 {unadvertised} 28 column:#BaseRecordGridColumn "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 76150 2 "" 17 ev:RecordSetEvent "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 81565 2 "" 0  "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31586 14 {unadvertised} "RecordGridRowOptions" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 81868 77 {text {purpose
        Select all records, columns, and/or regions.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 94548 14 {unadvertised} 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 36662 363 {text {purpose
        Filter to be applied to the {ctext records}.
    }
    {details 
        The default implementation of this method calls
        {docref RecordGridUI.note-filter-changing} method and then
        sets the property with the same name on the {ctext records}
        collection.
    }
    {override 
        Not typically overridden.
    }
  } "#RecordFilter"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 60813 "#{proc-type {RecordGrid, Record, int}:#Background}" 4 null 1016 {text {purpose
        A {ctext proc} to set the {ctext background} option of each
        displayed row.
    }
    {details
        If non-{docref null}, the proc set here will be called repeatedly
        to generate a {docref Background} for each row displayed in this
        {ctext RecordGrid}. Any such proc must take three arguments:
        this {ctext RecordGrid},
        the {docref Record} corresponding to the row of interest, and
        the index of that {docref Record} in {ctext RecordGrid.records}.
        The proc should return null if no {docref Background} is desired
        for that row, or a {docref Background} to be used for that row.
        
        Setting this option to {docref null} will {docref unset} all
        computed row backgrounds.
        
        Any proc set here may be called frequently, even when the
        underlying data or layout has not changed. This behavior will be
        dependent on the {docref RecordGridUI} implementation used. 
    }
    {since 6.0}
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 79316 2 "" 0  "ControlUI"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 43317 14 {unadvertised} 39 refresh-automatic-columns?:bool = false "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31715 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 39461 2 "" "{Array-of BaseRecordGridColumn}"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 120349 2 "" 0  "(full-size:int,
                         min-visible-row:int,
                         max-visible-row:int)"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 61218 "FillPattern" 0  2 ""}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 55868 "bool" 4 true 2051 {text {purpose
        Should the {ctext RecordGrid} automatically generate
        {docref RecordGridColumn}s which correspond to the 
        fields in its {docref RecordGrid.record-source}? 
    }
    {details 
        If {ctext true} this object will automatically
        generate and manage columns corresponding to the fields in
        its record-source. These automatic columns will be marked
        using the property {docref RecordGridColumn.automatic?}.

        Automatic columns will be "refreshed" whenever the
        {ctext record-source} is changed to a new non-null value,
        or when the {docref RecordSet.fields} collection of the 
        existing {ctext record-source} changes.  This operation is 
        designed to keep the {ctext columns} collection synchronized 
        with the {ctext record-source}, while at the same time 
        preserving as much as possible any application or end-user 
        changes which have been made to the {ctext columns} collection.
 
        Refreshing occurs according to the following rules:
        
        {itemize
            {item            
                New {ctext automatic?} columns will be created for 
                field names in the {ctext record-source} not currently
                represented in the {ctext columns} collection.  These
                columns will be placed at the end of the collection.
            }
            {item 
                {ctext automatic?} columns referring to field names
                no longer in the {ctext record-source} will be removed. 
            }
            {item 
                {ctext automatic?} columns will never replace an existing
                non-{ctext automatic?} column with the same field name.
            }
        }

        Note that applications that wish to take over the management of 
        a column that was automatically generated (and thereby prevent 
        it from being replaced or removed) should set the column's
        {ctext automatic?} property to {ctext false}.  
    }
  }}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 72239 14 {unadvertised} 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 117354 14 {unadvertised} 7 arg:any "(i:int, valid?:bool)"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 82968 62 {text {purpose
        Delete the current selection.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 42122 14 {unadvertised} 58 val:{Array-of BaseRecordGridColumn}, validate?:bool = true "{Set-of BaseRecordGridColumn}"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31522 14 {unadvertised} "DefaultRecordGridSelection" 0 }
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 31639 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 63178 194 {text {purpose
        The ui object for this control, as {docref RecordGridUI}
    }    
    {override
        Do not override.
        Override {docref RecordGrid.ui-object} instead.
    }
  } "RecordGridUI"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 32498 14 {unadvertised} "int" 2 -1}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 59696 "bool" 0  2 ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 86273 78 {text {purpose
        Remove a record from the current selection.
    }  
  } 9 index:int "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 114074 14 {unadvertised} 49 count:int, args:{FastArray-of any}, action:String "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 115978 14 {unadvertised} 22 arg:any, action:String "int"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 79526 2 "" 19 ev:ContextMenuEvent "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 65980 75 {text {purpose
        Removes any frozen setting from this grid.
    }
  } 0  "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 39356 946 {text {purpose 
          The {docref BaseRecordGridColumn}s to be displayed, 
          in the order they are to be displayed.
      }
      {details
          Unlike {docref RecordGrid.columns}, this represents both
          concrete and abstract column entities, but only those at the
          topmost level of their {docref RecordGridColumnGroup} hierarchies. 
          {docref RecordGrid.columns} can be obtained by taking the
          set of all {docref RecordGridColumn} children of all 
          {docref RecordGridColumnGroup}s returned by this, in depth-first
          order.
          
          Important Note: While the individual column entities in this 
          collection may be edited directly, the collection itself 
          should not be modified. To change the set (or order) of 
          columns being displayed, edit a clone of this collection, 
          and reset the property to be the edited clone.
      }
  } "{Array-of BaseRecordGridColumn}"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 74111 452 {text {purpose
        The {docref RecordSet} containing the data to be displayed.
    }
    {details
        See {docref RecordSetDisplay.record-source} for general information
        on this property.  
        
        Note that if {docref RecordGrid.automatic-columns?} is
        {ctext true}, setting this property may cause the
        columns collection to be updated. See 
        {docref RecordGrid.automatic-columns?} for details.
    }
  } "#RecordSet"}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 144984 1051 {text {purpose
        Specifies the formatting and layout of a column to be 
        displayed in a {docref RecordGrid}.
    }
    {details
        There are three main ways in which {ctext RecordGridColumn}
        may be used to format its contents:
        {itemize
            {item 
                {ctext RecordGridColumn} specifies the 
                {docref RecordGridCell}s that will be used 
                to display and edit all data in this column.  
            }                
            {item
                {ctext RecordGridColumn} specifies the {ctext header}
                graphic that will be shown above the column.
            }
            {item
                Graphic options may be set on a {ctext RecordGridColumn} 
                in order to control the display of its contents.
                See {docref RecordGridOptions} for more information.
                {ctext width}, {ctext enabled?}, {ctext valign}, and
                {ctext halign} are also of particular interest.
            }
        }
    }
} "BaseRecordGridColumn"$""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 145783 227 {text {purpose
        Construct an instance of this object.
    }
    {parameter field-name,
        See {docref-abbr RecordGridColumn.field-name}.
    }
    {parameter ... ,
        options to be set on this object.
    }
  } 22 field-name:String, ... ""}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 150441 408 {text {purpose 
        Add a {docref RecordGridCell} as an option
        child of this column.
    }
    {details
        Calling code is responsible for calling 
        {docref OptionListInterface.change-option-parent-notify}
        on the input to this method as appropriate.
    }
    {override
        Implementations should be sure to call the super 
        implementation of this method.
    }
  } 20 value:RecordGridCell "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 145336 261 {text {purpose 
        Name of {docref RecordField} in associated 
        {docref RecordGrid}'s {ctext record-source} that
        should be associated with this column.
    }
    {details
        No data will be shown if no such field can be found.
    }
  } "String" 0 }
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 147922 129 {text {purpose
        Is this column selected?
    }
    {details
        See also: {docref RecordGrid.select-column}.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 145387 14 {unadvertised} "{Set-of RecordGridCell}" 0 }
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 151359 2 "" 30 item:OptionItem, removed?:bool "void"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 148270 136 {text {purpose
        {docref RecordField} associated with this column.
    }
    {override
        Not typically overridden.
    }
  } "#RecordField"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 147307 2 "" "#RecordField"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 147203 357 {text {purpose
        {docref RecordField} from which this column was
        last automatically specified.
    }
    {usage
        Not for application use.  For use by implementations
        of {docref RecordGrid} in managing columns it generates
        automatically.  See {docref RecordGrid.automatic-columns?}
        for more information.
    }
  } "#RecordField"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 150988 413 {text {purpose 
        Remove a {docref RecordGridCell} as an option 
        child from this column.
    }
    {details
        Calling code is responsible for calling
        {docref OptionListInterface.change-option-parent-notify}
        on the input to this method as appropriate.
    }
    {override
        Implementations should be sure to call the super 
        implementation of this method.
    }
  } 20 value:RecordGridCell "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 151627 2 "" 30 p:{proc-type {OptionKey}:void} "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 151964 2 "" 30 item:OptionItem, removed?:bool "void"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 145443 14 {unadvertised} "bool" 5 false}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 149417 "any" 0  852 {text {purpose 
        The width that should be allocated to this column.
    }
    {details
        Specify this option as a {docref Dimension} representing a width 
        preference for this column. This dimension can be used by the 
        {docref RecordGridUI} -- in conjunction with the width preferences
        set on all other columns -- in order to calculate a column layout.  
        Note that the actual width of the column will be likely be
        determined by the total available space, the other columns present,
        and user manipulations (such as column resizing) to the grid.
        
        The value of this option will be converted to an elastic using
        the proc {docref dimension-to-elastic}. If not specified, a 
        default width preference will be assigned by the
        {docref RecordGridUI}.  
    }
  }}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 146754 2 "" "bool"}
{OptionDocInfo "controls/logical-controls/record-grid.scurl" 149936 "Background" 23 FillPattern.transparent 71 {text {purpose 
        The background color for this column.
    }
  }}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 146680 680 {text {purpose 
        Was this column generated automatically
        by {docref RecordGrid}?
    }
    {details
        See {docref RecordGrid.automatic-columns?} for more 
        information.
        
        Note that applications may set this value to {ctext false}
        in order to take over the management of the column
        and prevent it from being changed by its {docref RecordGrid}.  

        Applications should not typically set this property to 
        {ctext true}. Implementations of {ctext RecordGrid} that
        do mark this value as {ctext true} should also set the
        property {docref RecordGridColumn.last-automatic-source} as well.
    }
  } "bool"}
{FieldDocInfo "controls/logical-controls/record-grid.scurl" 145484 14 {unadvertised} "#RecordField" 4 null}
{ClassDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 26894 102 {text {purpose
        A class indicating that a rich text attribute is unset.
    }
    {since 7.0}
} ""$""}
{MethodDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27287 14 {unadvertised} 0  ""}
{ClassProcDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 27175 95 {text {purpose
        Returns a {ctext RichTextAttributeUnsetValue}.
    }
    {since 7.0}
  } 0  "RichTextAttributeUnsetValue"}
{ClassVariableDocInfo "controls/logical-controls/RichTextStringDataModel.scurl" 26951 14 {unadvertised} "RichTextAttributeUnsetValue" 46 {RichTextAttributeUnsetValue.create-singleton}}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 39982 123 {text {purpose
      A {docref StringDataModelMovableRange} that supports manipulation
      of the range's contents.
  }
} "StringDataModelMovableRange"$"RichTextStringDataModelWritableRange"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 41439 329 {text {purpose Insert a string at the point.}
    {parameter str,
        The {docref StringInterface} to insert.
    }
    {details
        Unless the range was previously collapsed (see {docref-abbr
        StringDataModelRange.collapsed?}), the previous contents of the
        range will be replaced by {param str}.
    }
  } 19 str:StringInterface "void"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 41745 124 {text {purpose
        Deletes the contents of the range.
    }
    {details Has no effect when the range is collapsed.}
  } 0  "void"}
{ClassProcDocInfo "controls/logical-controls/StringDataModel.scurl" 40820 107 {text {purpose
        Creates a {ctext StringDataModelWritableRange} from another
        range.
    }
  } 26 range:StringDataModelRange "StringDataModelWritableRange"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 40466 374 {text {purpose Create this object.}
    {parameter data-model,
       The {docref StringDataModel} whose substring this range
       represents.
    }
    {parameter anchor,
       The {docref-abbr StringDataModelRange.anchor} index for this
       range.
    }
    {parameter point,
       The {docref-abbr StringDataModelRange.point} index for this
       range.
    }
  } 49 data-model:StringDataModel, anchor:int, point:int ""}
{ClassDocInfo "controls/logical-controls/selection.scurl" 331 69 {text {purpose Interface for controls that contain SelectableItems}
} ""$"MultipleSelectionControl, SingleSelectionControl"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 505 109 {text {purpose Selects a single index, causing all other selected indices to
        be deselected.
    }
  } 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 732 158 {text {purpose Selects a single index, causing all other selected indices to
        be deselected, and also fires ValueChanged and ValueFinished events.}
  } 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/selection.scurl" 869 56 {text {purpose Deselects all items in this control.}
  } 0  "void"}
{ClassDocInfo "controls/logical-controls/button-uis.scurl" 43334 14 {unadvertised} "CheckButtonUI"$""}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43526 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43897 2 "" 11 focus?:bool "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43782 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43724 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43478 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43840 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43675 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43626 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43576 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/button-uis.scurl" 43408 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-model.scurl" 18551 726 {text {purpose
        A standard {docref TreeNode} for use by applications.
    }
    {details
        An instance of this class is created by the default
        factory for {ctext TreeNode}.

        This class includes implementation and state for
        managing the local contents, as well as the related
        parent, children, and tree-model of this node.
        
        Children can be specified directly to the constructor, or
        by modifying the instance through the {docref Sequence-of} 
        interface.         
    }
    {override
        The {ctext Sequence-of} methods of this class are implemented
        by referring to the {docref DefaultTreeNode.internal-children}
        collection.
    }
} "TreeNode"$"LazyTreeNode"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 25987 2 "" 35 s:{Sequence-of TreeNode}, index:int "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 21411 308 {text {purpose The children of this {ctext TreeNode}.}
    {details 
        Subclasses should refer to this collection when doing
        bulk modifications to the children collection, instead of the 
        {docref Sequence-of} methods, which typically fire
        change notifications.        
    }
  } "{Array-of TreeNode}"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 26449 14 {unadvertised} 13 node:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 21978 2 "" 13 item:TreeNode "void"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 18619 14 {unadvertised} "#TreeModel" 4 null}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 22561 2 "" 29 p:{proc-type {TreeNode}:bool} "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 20791 740 {text {purpose The parent of this {ctext TreeNode}.}
    {details 
        Note that the calling code is responsible for
        ensuring that the former parent and new parent 
        of this node are each updated to reflect the change
        to their collection of children.

        See {docref TreeNode.parent} for more information.
    }
    {override
        This implementation of the setter will also update
        the state of the {docref TreeNode.tree-model} to
        be consistent with {docref TreeNode.tree-model} of
        its new parent.
        
        Overrides should be sure to call the super implementation 
        to actually change the state of this property, and
        handle associated bookkeeping.
    }
  } "#TreeNode"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 20862 2 "" "#TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 23129 2 "" 24 p:{proc-type {int}:bool} "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 19749 328 {text {purpose 
        {docref TreeModel} containing this node.
    }
    {details
        The default implementation of the setter property 
        recursively updates the {ctext tree-model}
        property on all currently existing children.
        
        See {docref TreeNode.tree-model} for more information.
    }
  } "#TreeModel"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 18665 14 {unadvertised} "{Array-of TreeNode}" 21 {{Array-of TreeNode}}}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 21546 2 "" "int"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 21751 2 "" 21 start:int, length:int "{Sequence-of TreeNode}"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 24149 2 "" 10 e:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 22459 2 "" 25 s1:{Sequence-of TreeNode} "void"}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 18744 14 {unadvertised} "#TreeNode" 4 null}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 25640 2 "" 60 comparison-proc:#{proc-type {TreeNode,TreeNode}:bool} = null "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 19829 2 "" "#TreeModel"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 23705 2 "" 21 e:TreeNode, index:int "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 25294 2 "" 27 index:int, element:TreeNode "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 25108 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 24359 2 "" 0  "TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 22206 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 21625 2 "" 7 key:int "(TreeNode, bool)"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 24463 2 "" 54 key:int, length:int = 1, error-if-missing?:bool = true "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 23939 2 "" 0  "TreeNode"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 19057 254 {text {purpose Construct this object.}
    {parameter
        node-data, {ctext any}. 
        See {docref DefaultTreeNode.node-data}
    }
    {parameter
        ..., zero or more {ctext TreeNode}s to
        be added as children to this node.
    }
  } 34 node-data:any = null, ...:TreeNode ""}
{ClassDocInfo "controls/logical-controls/scrollbar-ui.scurl" 1189 14 {unadvertised} "ScrollbarUI"$""}
{MethodDocInfo "controls/logical-controls/scrollbar-ui.scurl" 1259 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 18153 14 {unadvertised} "ListBoxUI"$""}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18427 2 "" 13 item:ListItem "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18287 2 "" 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18384 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18334 2 "" 5 i:int "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18219 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/text-area-ui.scurl" 185 92 {text {purpose 
        A superclass for {docref TextArea} user interface delegates.
    }
} "BaseTextFieldUI"$"StandardTextAreaUI, SkinnableTextAreaUI"}
{MethodDocInfo "controls/logical-controls/text-area-ui.scurl" 399 125 {text {purpose
        Instantiate this object.
    }
    {parameter ...,
        Additional option specifications.
    }
  } 3 ... ""}
{ClassDocInfo "controls/logical-controls/tree-control.scurl" 72532 782 {text {purpose
        Base interface for icon to be used by {docref DefaultTreeItem}.
    }
    {details 
        This class should be mixed-in to a {ctext Graphic}.   
      
        This class defines the additional method {docref DefaultTreeIcon.refresh} 
        which will be called on this object by the {ctext DefaultTreeItem.refresh}
        method of the associated item.  Override this method to modify the appearance
        of this icon to reflect the current state of the item and its underlying node.        
    }
    {usage
        Applications should consider creating instances of
        the two concrete subclasses of this class,
        {docref DefaultFrameTreeIcon} and {docref DefaultPixmapTreeIcon}.  
        See these classes for more information.
    }
} ""$"DefaultPixmapTreeIcon, DefaultFrameTreeIcon"}
{MethodDocInfo "controls/logical-controls/tree-control.scurl" 73227 401 {text {purpose
        Called when the {docref DefaultTreeIcon.item} 
        is refreshed.
    }
    {override
        Override this method to modify the appearance
        or state of this icon to reflect the current
        state of the associated item.  See
        {docref DefaultTreeItem.refresh} for 
        more information on when this method can be 
        expected to be called.
    }
  } 0  "void"}
{FieldDocInfo "controls/logical-controls/tree-control.scurl" 72752 155 {text {purpose
        {docref DefaultTreeItem} containing this icon.
    }
    {details
        Set by the {docref DefaultTreeItem.icon} setter.
    }
  } "#DefaultTreeItem" 4 null}
{ClassDocInfo "controls/logical-controls/list-control-uis.scurl" 18878 14 {unadvertised} "ComboBoxUI"$""}
{AccessorDocInfo "controls/logical-controls/list-control-uis.scurl" 19089 2 "" "Distance"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 19014 2 "" 28 items:{Iterator-of ListItem} "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 19199 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 19254 2 "" 0  "String"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 19151 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/list-control-uis.scurl" 18946 14 {unadvertised} 3 ... ""}
{ClassDocInfo "controls/logical-controls/list-controls.scurl" 51455 14 {unadvertised} "{SelectedIterator int}"$""}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 51636 2 "" 0  "(val:int, eof?:bool)"}
{MethodDocInfo "controls/logical-controls/list-controls.scurl" 51544 14 {unadvertised} 25 items:{Array-of ListItem} ""}
{ClassDocInfo "controls/logical-controls/multi-tab-control.scurl" 2505 2413 {text {purpose
        The common base class for tab controls that can have multiple
        {docref TabPane}s visible at a given point of time.
    }
    {notes
        The user interface delegate for this class is {docref
        MultiTabControlUI}. {ctext MultiTabControlUI} is an abstract
        class. Subclasses implement a particular UI.
    }
    {visual-testing
        This class implements the {ctext CurlMultiTab} visual test
        type.

        In addition to the default visual test actions supported by
        all {docref Visual}s, objects of this class support the
        following actions:

        {table
            {header-row
                {cell action}
                {cell arguments}
                {cell description}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Hide
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Hides the {param item} tab panel.}
            }
            {row
                {cell font-family = "monospace", text-breakable? = false,
                    Show
                }
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param item}:{docref String}
                }
                {cell Shows the {param item} tab panel.}
            }
        }

        In addition to the default visual test properties supported by
        all {docref Visual}s, objects of this class support the
        following visual test properties:

        {table
            {header-row
                {cell property}
                {cell description}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param items count}:{docref int}
                }
                {cell The number of items to select from.}
            }
            {row
                {cell
                    font-family = "monospace", text-breakable? = false,
                    {param list}:{docref String}
                }
                {cell
                    The names of the tab panels currently shown, separated by
                    ';'.
                }
            }
        }
    }
} "BaseTabControl"$"MultiTabAccordion"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 6945 247 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter pane, {ctext TabPane} to be shown.}
    {return-vals 
        {ctext true} if the {ctext TabPane} was shown
        successfully, otherwise {ctext false}.
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 7850 2 "" 29 action:String, args:FastArray "any"}
{AccessorDocInfo "controls/logical-controls/multi-tab-control.scurl" 7765 2 "" "#String"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 4272 818 {text {purpose
        Remove a {docref TabPane} from this container.
    }
    {parameter index, position of {ctext TabPane} to be removed.}
    {details
        If the specified index is within bounds for this 
        {ctext SingleTabControl}, the corresponding {docref TabPane}
        is removed.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and removed
        successfully, otherwise {ctext false}.
    }
    {override
        The default implementation of this method does the actual
        bookkeeping of removing the pane from the 
        {docref BaseTabControl.tab-panes} collection and
        notifying the ui-object if necessary. Therefore
        implementations should be sure to call the super
        implementation to ensure that this bookkeeping occurs.
    }
  } 9 index:int "bool"}
{FieldDocInfo "controls/logical-controls/multi-tab-control.scurl" 2583 14 {unadvertised} "bool" 5 false}
{FieldDocInfo "controls/logical-controls/multi-tab-control.scurl" 2627 14 {unadvertised} "{Array-of TabPane}" 20 {{Array-of TabPane}}}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 6079 325 {text {purpose 
        Hide the indicated {docref TabPane}. 
    }
    {parameter 
        index, The position of the pane to be hidden.
        The index of the first pane is 0.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and
        hidden successfully, otherwise {ctext false}.
    }
  } 9 index:int "bool"}
{AccessorDocInfo "controls/logical-controls/multi-tab-control.scurl" 7650 14 {unadvertised} "MultiTabControlUI"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 4726 2 "" 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 7417 249 {text {purpose 
        Hide the indicated {docref TabPane}. 
    }
    {parameter pane, {ctext TabPane} to be hidden.}
    {return-vals 
        {ctext true} if the {ctext TabPane} was hidden
        successfully, otherwise {ctext false}.
    }
  } 12 pane:TabPane "bool"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 5163 323 {text {purpose 
        Show the indicated {docref TabPane}. 
    }
    {parameter 
        index, The position of the pane to be shown.
        The index of the first pane is 0.
    }
    {return-vals 
        {ctext true} if the {ctext TabPane} was found and
        shown successfully, otherwise {ctext false}.
    }
  } 9 index:int "bool"}
{MethodDocInfo "controls/logical-controls/multi-tab-control.scurl" 2957 230 {text {purpose
        Initialize a {ctext MultiTabControl}.
    }
    {parameter 
        ui-object, The UI delegate.
    }
    {parameter 
        ..., Option settings, event handlers, or {docref TabPane}s to be added.
    }
  } 40 ui-object:#MultiTabControlUI = null, ... ""}
{ClassDocInfo "controls/logical-controls/tree-model.scurl" 28009 1283 {text {purpose
        A {docref TreeNode} for use by applications which
        need to generate child tree-nodes "lazily" or 
        "just-in-time" for efficiency reasons.
    }
    {details
        Children are created by this node whenever they are
        first requested.  To force the regeneration of these
        children at any time, the method {docref LazyTreeNode.refresh-children}
        method may be called.
    
        Note that {docref LazyTreeNode} also supports modification of its child 
        collection via the normal {docref Sequence-of} interface.  However, 
        without special provisions such changes will typically be lost
        when the children are refreshed.  Therefore it is strongly reccommended
        that applications that do not intended to support such editing place
        {ctext LazyTreeNode}s in a {ctext read-only?} {docref TreeModel}s. 
    }
    {override
        Subclasses should override the {docref LazyTreeNode.compute-children} 
        method in order to create this node's collection of children.

        Subclasses are also strongly encouraged to provide an efficient
        implementation of {docref TreeNode.has-children?} in order to avoid 
        generating children before they are actually needed.    
    }
} "DefaultTreeNode"$""}
{FieldDocInfo "controls/logical-controls/tree-model.scurl" 28183 14 {unadvertised} "bool" 0 }
{ClassVariableDocInfo "controls/logical-controls/tree-model.scurl" 28088 14 {unadvertised} "{HashTable-of TreeNode, int}" 30 {{HashTable-of TreeNode, int}}}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 28999 760 {text {purpose Have the children been computed for the first time?}
    {details
        If {ctext false}, any reference to the
        {docref LazyTreeNode.internal-children} property 
        will force the children to be computed first
        via a call to {docref LazyTreeNode.compute-children}.
        This property will then be set to {ctext true}.

        Subclasses may reset this to property to {ctext false}
        in order to clear this node's children and force 
        them to be recomputed when next requested.  This will trigger
        a change notification of type {ctext TreeModelChangeType.children-changed}
        immediately, but no additional notification will occur later when 
        the children are actually computed.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 30220 234 {text {purpose 
        Force an immediate refresh of the child nodes.
    }
    {override 
        Not typically overridden. Subclasses should
        usually override {docref LazyTreeNode.compute-children}
        instead.
    }
  } 0  "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 33494 14 {unadvertised} 18 initializing?:bool "void"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 33183 1977 {text {purpose Compute children {ctext TreeNode}s.}
    {parameter
        children, {ctext {Array-of TreeNode}}. The array containing the
        children of this node.  If this call represents a recomputation 
        of the children of this node, this collection will contain the
        existing children of the node.
    }
    {parameter
        initializing?, {ctext bool}.  Indicates whether this
        is the first time the children are being computed.
    }
    {override
        Subclasses should override this method appropriately to compute or
        recompute their children.  The array input to this method represents
        the {docref DefaultTreeNode.internal-children} property of the node and
        should be populated directly.

        Note that the {param children} collection may contain children previously 
        generated or added programmatically via the {docref Sequence-of} methods.  
        Therefore implementations should take care to selectively reuse its
        contents only as appropriate.  If no reuse of existing nodes is intended,
        the safest approach is to call {docref Array-of.clear} on this array at the
        beginning of the implementation.
    
        The calling method will adjust the {docref TreeNode.parent} pointers on children
        which have been removed so that they no longer refer to this node, and also
        ensure that parent pointers for children which have been added do refer to this
        node.

        The calling method will also ensure that an appropriate change notification will be
        triggered if {param initializing?} is {ctext false}, and the contents or ordering
        of the {param children} collection has been changed.
    }
    {usage 
        This method is called internally by the 
        {docref LazyTreeNode.internal-children} getter, or the 
        {docref LazyTreeNode.refresh-children} method.  It should not
        typically be called otherwise.
    }
  } 48 children:{Array-of TreeNode}, initializing?:bool "void"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 30949 425 {text {purpose The children of this {ctext TreeNode}.}
      {details 
          The implementation of this getter will cause
          children of this node to be generated if
          they have not yet been generated.  See
          {docref LazyTreeNode.compute-children} for 
          more information.
          
          See also  {docref DefaultTreeNode.internal-children} for
          more information.
      }
  } "{Array-of TreeNode}"}
{AccessorDocInfo "controls/logical-controls/tree-model.scurl" 29093 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/tree-model.scurl" 29871 141 {text {purpose Construct this object.}
    {parameter
        node-data, {ctext any}. 
        See {docref LazyTreeNode.node-data}.
    }
  } 20 node-data:any = null ""}
{ClassDocInfo "controls/logical-controls/StringDataModel.scurl" 16403 3333 {text {purpose Represents a substring of a {docref StringDataModel}.}
    {details

        The substring range is defined using a pair of integers
        representing the endpoints of the range.  These
        integers{em-dash}known as selection indices{em-dash}represent
        the positions between characters, so 0 represents the position
        before the first character, 1 represents the position between
        the first and second characters, and so on.  The largest legal
        value that can be used as a selection index is the length of
        the string contained in the data model, since that value
        represents the position just after the last character.

        The first index in the range is {docref
        StringDataModelRange.start}, and the last index in the range
        is {docref StringDataModelRange.end}.  The {ctext start}
        should always be less than or equal to the {ctext end}.  When
        the values are equal, the range is collapsed (note {docref-abbr
        StringDataModelRange.collapsed?}) but occupies the position
        indicated by the indices.  This can occur, for example, when
        an editable text control has no selected text but displays a
        blinking caret.

        The {docref String} value of the range can be obtained via
        {docref-abbr StringDataModelRange.to-String}.  This value
        should be equivalent to obtaining the substring of the data
        model at position {ctext start} with length {ctext end -
        start}.

        Since this class is intended to be used with editable text
        controls, support is provided for designating one of the two
        indices as that used to represent the current caret position.
        This index is known as the {docref-abbr
        StringDataModelRange.point}, and the other index is known as
        the {docref-abbr StringDataModelRange.anchor}.  The {ctext
        point} may be before, equal to, or after the {ctext anchor}.
        When the {ctext point} is before the {ctext anchor}, then the
        {ctext point} should be equal to the {ctext start} and {ctext
        anchor} should be equal to the {ctext end}.  When the {ctext
        point} is after the {ctext anchor}, then the {ctext point}
        should be equal to the {ctext end} and the {ctext anchor}
        should be equal to the {ctext start}.  When the {ctext anchor}
        and {ctext point} are equal, both values should be equal to
        both the {ctext start} and the {ctext end}.

        Although support is provided for distinguishing the {ctext
        point}, this class does not support direct programmatic
        manipulation of the range indices.  Consider using the {docref
        StringDataModelMovableRange} for this purpose.  Note that this
        does not mean that other {ctext StringDataModelRange}s can be
        considered constant: the {ctext StringDataModelRange} observes
        the underlying data model and reflects changes to the data by
        updating the range indices as appropriate.

        When using a range to represent the current selection of an
        editable text control, consider using the {docref
        StringDataModelWritableRange} subclass, which allows
        manipulation of the contents of the range as well as the range
        indices.
    }
} "Observer, Observable"$"StringDataModelMovableRange"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 18505 2 "" "int"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 16684 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 18865 269 {text {purpose
        The range index that represents a caret position.
    }
    {details
        This value is distinguished from the {docref-abbr
        StringDataModelRange.anchor}.  See {docref
        StringDataModelRange} itself for more information.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 19727 62 {text {purpose The number of {docref char}s in the range.}
  } "int"}
{ClassProcDocInfo "controls/logical-controls/StringDataModel.scurl" 17512 91 {text {purpose
        Creates a {ctext StringDataModelRange} from another range.
    }
  } 26 range:StringDataModelRange "StringDataModelRange"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 22038 239 {text {purpose Get the contents of the substring range.}
    {details
        This value should be equivalent to obtaining the substring of
        the data model at position {ctext start} with length {ctext
        end - start}.
    }
  } 0  "String"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 18440 654 {text {purpose
        The range index that does not represent a caret position.
    }
    {details
        This value is distinguished from the {docref-abbr
        StringDataModelRange.point}.  See {docref
        StringDataModelRange} itself for more information.
    }
    {override
        Subclasses should not allow other objects to set this value
        directly.  Client objects should consider the anchor to be a
        fixed value, and should use {docref-abbr
        StringDataModelMovableRange.swap-anchor-and-point} or
        {docref-abbr StringDataModelMovableRange.collapse-to-point} to
        manipulate the {ctext anchor}.
    }
  } "int"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 16656 14 {unadvertised} "int" 0 }
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 18928 2 "" "int"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 19246 230 {text {purpose The starting index of the range.}
    {details
        This value will always be less than or equal to {docref
        StringDataModelRange.end}.  When equal to {ctext end}, the
        range is collapsed.
    }
  } "int"}
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 19951 139 {text {purpose Indicates that the range is collapsed.}
    {details
        This value should be equivalent to {ctext size == 0}.
    }
  } "bool"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 20032 2 "" 30 sender:Observable, message:any "void"}
{FieldDocInfo "controls/logical-controls/StringDataModel.scurl" 16605 108 {text {purpose
        The {docref StringDataModel} whose substring this range
        represents.
    }
  } "StringDataModel" 0 }
{AccessorDocInfo "controls/logical-controls/StringDataModel.scurl" 19574 235 {text {purpose The ending index of the range.}
    {details
        This value will always be greater than or equal to {docref
        StringDataModelRange.start}.  When equal to {ctext start}, the
        range is collapsed.
    }
  } "int"}
{MethodDocInfo "controls/logical-controls/StringDataModel.scurl" 17098 374 {text {purpose Create this object.}
    {parameter data-model,
       The {docref StringDataModel} whose substring this range
       represents.
    }
    {parameter anchor,
       The {docref-abbr StringDataModelRange.anchor} index for this
       range.
    }
    {parameter point,
       The {docref-abbr StringDataModelRange.point} index for this
       range.
    }
  } 49 data-model:StringDataModel, anchor:int, point:int ""}
{ProcDocInfo "controls/logical-controls/shared.scurl" 10169 14 {unadvertised} 52 r:Renderer2d, x:Distance, y:Distance, width:Distance "void"}
{ClassDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 2939 14 {unadvertised} "RichTextStringUndoItem"$""}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3107 14 {unadvertised} "#RichTextString" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3772 14 {unadvertised} 7 ch:char "RichTextString"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3080 14 {unadvertised} "int" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 5120 14 {unadvertised} 52 control:RichTextStringBaseTextControl, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 6648 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 4716 14 {unadvertised} 52 control:RichTextStringBaseTextControl, num-chars:int "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 6821 2 "" 27 message:SetAttributeMessage "void"}
{AccessorDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 4660 14 {unadvertised} "bool"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3148 14 {unadvertised} "bool" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 5816 14 {unadvertised} 7 ch:char "void"}
{FieldDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3034 14 {unadvertised} "RichTextString" 0 }
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 6052 14 {unadvertised} 37 control:RichTextStringBaseTextControl "void"}
{MethodDocInfo "controls/logical-controls/undo-rta-helpers.scurl" 3183 14 {unadvertised} 87 value:RichTextString, index:int, length:int, ch:char = '\ufffe', has-value?:bool = true ""}
{ClassDocInfo "controls/logical-controls/record-grid.scurl" 199058 468 {text {purpose 
        Copy {docref RecordGrid} selection to clipboard.
    }
    {details 
        The default instance of this method outputs the tab delimited
        contents of the selected cells, formatted according to
        the rules of {docref RecordGridCell.get-formatted-data}.

        The base implementation of this command is enabled when
        the selection is non-empty and contains records only, 
        columns only, or a single region.
    }
} "CopyCommand"$""}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 199480 2 "" "bool"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 203064 14 {unadvertised} 38 record:Record, column:RecordGridColumn "String"}
{AccessorDocInfo "controls/logical-controls/record-grid.scurl" 199388 2 "" "RecordGrid"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 200027 2 "" 0  "void"}
{MethodDocInfo "controls/logical-controls/record-grid.scurl" 199298 162 {text {purpose
        Instantiate this object.
    }
    {parameter context,
        The {docref RecordGrid} this command is used with.
    }
    {since 6.0}
  } 18 context:RecordGrid ""}
||BeginDocIndex
P 28 COM.CURL.GUI.CONTROL-LOGICAL 114 4
 C 37 StringDataModelRangeBoundaryException 1033 4 
  I 5 range 1265 44c
  B 7 default 1484 4
 end
 C 21 PlaceholderTextAreaUI 1661 1 
 end
 C 8 SliderUI 1855 4a 
  I 10 has-focus? 2331 42d
  M 11 on-focus-in 2605 4
  J 6 slider 2694 4
  M 12 on-focus-out 2978 4
  M 16 on-pointer-press 3069 4
  M 19 note-labels-changed 3164 4a
  B 7 default 3527 4
 end
 C 13 SpinControlUI 3805 4a 
  J 12 spin-control 4294 4
  J 12 focus-object 4574 4
  B 7 default 5048 4
 end
 C 19 MultiTabAccordionUI 5337 4a 
  J 19 multi-tab-accordion 5620 4
  B 7 default 5923 4
 end
 T 15 menubar-padding 6330 44c
 C 22 TypingComboBoxUndoItem 6530 1f 
 end
 C 20 TreeControlSelectAll 8062 4 
  J 7 context 8247 4
  M 7 execute 8337 2
  J 8 enabled? 8421 4
  B 7 default 8504 4
 end
 C 21 SimpleStringDataModel 8759 4 
  J 4 size 8999 4
  I 22 cached-to-String-value 9084 22
  M 6 splice 9451 4
  M 3 get 9569 4
  M 9 to-String 9665 4
  I 3 rep 9754 22c
  M 5 clear 9907 4
  M 12 set-contents 9994 4
  M 6 substr 10103 4
  M 6 remove 10214 4
  B 7 default 10358 4
 end
 C 17 ReadOnlyListModel 10813 4a 
  M 11 set-quietly 11007 4
  M 5 clear 11143 4
  M 14 append-quietly 11226 4
  M 14 insert-quietly 11351 4
  M 6 remove 11487 4
 end
 L 13 radio-buttons 11627 4
 C 13 PasswordField 16659 4 
  K 12 value#setter 19494 4
  M 29 replace-selection-with-string 19578 4
  J 9 echo-char 19692 4
  K 16 echo-char#setter 20037 4
  J 13 style-element 20119 4
  O 6 halign 20203 4
  M 24 create-default-ui-object 20585 2
  M 14 create-command 20768 4
  B 7 default 20867 4
 end
 C 10 CornerFill 22758 1 
  M 11 adjust-size 23084 4
  I 9 scrollbox 23164 44c
  Y 13 control-color 23247 4
  Y 30 control-appearance-changeable? 23333 4
  J 7 vscroll 23413 4
  I 9 scrollbar 23497 44c
  J 7 hscroll 23581 4
  J 24 associated-with-hscroll? 23665 4
 end
 C 20 TypingStringUndoItem 23744 1f 
 end
 C 23 RecordGridMoveToCommand 25151 4 
  I 12 column-index 25402 44
  I 12 record-index 25572 44
  J 8 enabled? 25732 4
  M 7 execute 25815 2
  B 7 default 25899 4
 end
 C 25 RecordGridMoveNextCommand 26154 4 
  M 7 execute 26401 2
  J 8 enabled? 26485 4
  B 7 default 26568 4
 end
 C 14 RichTextString 26823 4f 
  M 9 to-String 27864 4
  D 19 from-string#factory 29807 4
  M 6 equal? 31014 4
  M 24 iterate-attribute-values 32836 4
  J 4 size 34159 4
 end
 C 17 RecordGridOptions 35894 4a 
  O 10 parse-spec 36475 4
  O 17 cells-take-focus? 37941 4
  O 9 cell-spec 38326 4
  O 9 sort-spec 38855 4
  O 17 column-resizable? 39498 4
  O 11 format-spec 40288 4
  O 21 enclose-header-label? 41788 4
  O 15 column-movable? 42290 4
  O 6 valign 42461 4
  O 9 editable? 42738 4
  O 6 halign 42912 4
  O 16 filter-menu-proc 43189 4
  O 11 header-spec 44112 4
  O 14 edit-on-focus? 45156 4
 end
 L 13 submit-button 47291 4
 C 20 RecordGridRowOptions 48244 4s 
  M 14 option-changed 49520 4
  O 6 valign 49626 4
  O 6 halign 49904 4
  O 10 background 50182 4
  B 7 default 50470 4
 end
 C 19 RecordGridSelectAll 50594 4 
  J 7 context 50798 4
  M 7 execute 50887 2
  J 8 enabled? 50971 4
  B 7 default 51054 4
 end
 Q 30 calendar-control-holiday-color 51319 4
 C 24 MultipleSelectionControl 51474 4a 
  M 21 remove-selected-index 51685 4a
  M 26 select-indices-with-events 51821 4a
  M 16 select-all-items 52038 4a
  M 18 add-selected-index 52199 4a
  J 16 selection-policy 52333 4a
  J 16 selected-indices 52861 4a
  K 23 selection-policy#setter 53026 4a
  J 19 selected-item-count 53116 4a
  J 14 selected-items 53269 4a
 end
 C 8 ComboBox 53481 4 
  M 32 note-selection-context-activated 58471 4
  J 9 can-redo? 58557 4
  M 12 select-index 58962 4
  M 34 note-selection-context-deactivated 59056 4
  I 16 record-for-undo? 59240 44
  J 13 style-element 59791 4
  J 10 has-value? 60388 4f
  J 9 container 60568 4
  J 6 prompt 60776 4
  J 17 string-data-model 61226 4
  J 5 value 61887 4
  M 21 set-value-with-events 62831 4
  K 13 prompt#setter 63132 4
  B 7 default 63219 4
  J 9 max-chars 64406 4
  J 9 selection 65003 4
  M 24 select-index-with-events 65097 4
  K 12 value#setter 65188 4
  M 29 replace-selection-with-string 65492 4
  M 4 redo 65599 4
  J 9 writable? 65685 4
  M 28 become-active-from-traversal 65769 4
  K 16 max-chars#setter 65994 4
  M 22 record-typing-for-undo 66077 4
  J 12 focus-object 66958 4
  M 14 select-nothing 67045 4
  M 10 select-all 67131 4
  M 23 handle-observer-message 67341 2
  M 24 create-default-ui-object 67458 2
  K 24 string-data-model#setter 67646 4
  M 30 request-undo-stack-depth-limit 67741 4f
  M 18 add-from-init-args 68887 2
  M 4 undo 69079 4
  M 16 delete-selection 69312 4
  M 16 clear-undo-stack 69398 4
  K 17 data-model#setter 69858 4
  M 11 unset-value 70600 4
  J 10 form-value 70685 4
  M 24 end-undo-typing-sequence 71133 4
  O 9 editable? 71758 4
  J 21 string-selected-range 72207 4
  M 31 record-typing-deletion-for-undo 72417 4
  J 9 can-undo? 73355 4
 end
 C 21 RichTextStringGraphic 73539 4 
  M 4 draw 74051 4
  J 9 num-lines 74166 4
  J 8 contents 74889 4
  M 21 get-height-preference 76598 4
  M 28 get-last-caret-index-on-line 76713 4
  M 28 get-position-for-caret-index 77397 4
  M 38 get-x-position-for-caret-index-on-line 77550 4
  M 31 get-line-number-for-caret-index 78651 4
  M 28 get-caret-index-for-position 79580 4
  K 15 contents#setter 80231 4
  M 19 get-caret-rectangle 80332 4
  M 18 reset-cached-items 80793 2
  M 20 get-width-preference 80885 4
  M 15 constrain-width 82087 4
  M 29 get-first-caret-index-on-line 82238 4
  M 36 get-caret-index-for-position-on-line 82659 4
  B 7 default 83258 4
 end
 C 8 TreeItem 83787 4a 
  J 8 current? 85180 4
  J 11 selectable? 85768 4
  M 11 fire-action 86111 4
  J 9 expanded? 86631 4
  M 7 refresh 87229 4
  J 9 selected? 88787 4
  J 7 control 89367 4
  M 16 connector-anchor 89561 4
  M 11 toggle-node 90866 4
  J 13 style-element 91414 4
  K 14 control#setter 91499 4
  J 4 node 91590 4
  B 7 default 92076 4
 end
 C 16 ComboBoxUndoItem 92444 1a 
  M 14 apply-internal 93243 2f
 end
 C 20 SelectedItemIterator 93778 1f 
  M 8 read-one 93904 4
 end
 Q 17 major-tick-length 94136 4
 C 14 TabContainerUI 94806 4a 
  J 13 tab-container 95078 4
  M 21 ensure-button-visible 95375 2a
  B 7 default 95964 4
 end
 C 29 RecordGridMovePreviousCommand 96254 4 
  M 7 execute 96504 2
  J 8 enabled? 96588 4
  B 7 default 96671 4
 end
 C 31 RecordSetDisplayNavigationPanel 96926 4 
  J 11 halign-spec 98070 2
  J 14 hstretch?-spec 98152 2
  J 11 valign-spec 98235 2
  Y 9 font-size 98425 4
  J 14 vstretch?-spec 98702 2
  B 7 default 98785 4
 end
 C 11 SpinControl 99033 4 
  O 10 parse-spec 104990 4
  J 4 step 106503 4
  K 11 step#setter 107832 4
  K 12 value#setter 107914 4
  I 14 pending-value? 107996 44
  O 11 format-spec 108656 4
  J 16 allowable-values 111285 4f
  M 8 test-run 112256 4
  J 12 focus-object 112369 4
  J 9 min-value 112712 4
  J 6 domain 113058 4
  J 9 max-value 113950 4
  J 13 style-element 114297 4
  M 16 get-parsed-value 114479 4
  M 24 create-default-ui-object 115519 2
  M 21 increment-with-events 115608 4
  O 5 wrap? 116459 4
  M 13 replace-value 117207 4
  K 13 domain#setter 117701 4
  M 18 get-formatted-data 117786 4
  M 21 decrement-with-events 118652 4
  M 9 decrement 119596 4
  J 10 has-value? 120744 4
  M 9 increment 120827 4
  M 17 get-test-property 121879 4
  M 12 on-focus-out 121974 4
  M 11 unset-value 122069 4
  J 5 value 122564 4
  M 21 set-value-with-events 123496 4
  J 14 test-type-name 123968 4
  O 9 editable? 124152 4
  B 7 default 125008 4
 end
 N 8 TabStyle 126455 4
 end
 N 12 ListBoxStyle 127296 4
 end
 C 23 RichTextStringDataModel 128888 4f 
  M 6 splice 129273 4
  M 9 to-String 129398 4
  M 13 set-attribute 129615 4
  M 22 set-rich-text-contents 130191 4
  M 12 set-contents 130626 4
  J 4 size 130742 4
  M 3 get 130942 4
  M 17 to-RichTextString 131442 4
  M 13 get-attribute 131823 4
  M 5 clear 133102 4
  M 6 substr 133341 4
  M 6 remove 133459 4
  B 7 default 133610 4
 end
 C 16 RecordGridRegion 133864 4 
  I 13 column-anchor 134214 44c
  I 10 row-anchor 134440 44c
  M 14 contains-cell? 134663 4
  I 12 first-column 135165 44c
  M 16 contains-region? 135320 4
  B 12 from-corners 135727 4
  M 6 equal? 136300 4
  I 12 column-count 136863 44c
  I 9 first-row 137019 44c
  I 9 row-count 137171 44c
  B 7 default 137324 4
 end
 C 7 TabPane 138053 4 
  J 20 first-active-control 138901 4
  J 5 label 139360 4
  J 5 show? 140366 4
  I 13 tab-container 140733 41
  J 8 showing? 140972 4s
  J 18 tab-button-tooltip 141135 4
  K 12 show?#setter 141417 4
  K 27 first-active-control#setter 141503 4
  J 7 content 141601 4s
  M 12 on-key-press 141869 4
  Y 15 display-context 141968 4
  J 13 style-element 142066 4
  M 13 become-active 142154 4
  M 17 dispatch-mnemonic 142262 4
  M 14 get-label-text 142355 4
  M 15 handle-mnemonic 143228 4
  K 12 label#setter 143315 4
  K 25 tab-button-tooltip#setter 143403 4
  B 7 default 143493 4
 end
 C 30 PlaceholderMultiTabAccordionUI 144336 1 
  M 23 note-pane-to-be-removed 144452 2
  M 21 note-pane-to-be-shown 144550 2
  M 15 note-pane-added 144648 2
  M 17 note-pane-to-hide 144746 2
  M 18 note-pane-modified 144844 2
 end
 C 25 PlaceholderRichTextAreaUI 145043 1 
  M 18 test-set-attribute 145153 4
  M 18 test-splice-string 145282 4
 end
 N 12 TabPlacement 145494 4
 end
 N 19 DateFieldFormatSpec 145730 4
 end
 C 9 ScrollBox 147178 4 
  M 16 constrain-height 148842 4
  O 24 expanded-hscroll-bounds? 148980 4
  K 24 vertical-position#setter 150099 4
  M 14 end-pagination 150378 4
  K 26 horizontal-position#setter 150561 4
  Y 13 focus-manager 150645 4
  M 17 create-main-panel 150834 2
  O 9 vunitsize 151527 4
  J 13 have-hscroll? 152318 4
  O 15 reserve-corner? 152398 4
  M 8 set-size 153216 4
  J 17 vertical-position 153328 4
  Y 15 display-context 153412 4
  J 13 style-element 153504 4
  O 11 take-focus? 153780 4
  M 13 make-gui-mark 154571 4
  M 12 on-drag-over 154655 4
  O 8 hscroll? 154844 4
  M 32 scroll-to-include-relative-point 155496 4
  M 37 descendant-suggests-key-focus-request 155683 4
  O 18 vscroll-quantized? 156208 4
  M 16 set-scroll-sizes 156632 4
  M 20 get-width-preference 157402 4
  O 8 vscroll? 157505 4
  M 15 constrain-width 158151 4
  J 21 max-vertical-position 158290 4
  J 19 horizontal-position 158374 4
  B 7 default 158650 4
  J 13 have-vscroll? 159820 4
  M 17 on-pointer-scroll 159992 4
  J 21 min-vertical-position 160231 4
  J 23 max-horizontal-position 160315 4
  O 23 always-disable-hscroll? 160399 4
  O 10 hblocksize 162461 4
  O 15 shrink-vscroll? 163695 4
  M 14 create-hscroll 164295 2
  M 21 get-height-preference 164764 4
  O 18 hscroll-quantized? 164986 4
  M 11 get-vscroll 165414 4
  J 23 min-horizontal-position 166810 4
  O 23 always-disable-vscroll? 166894 4
  M 11 get-hscroll 169160 4
  O 15 shrink-hscroll? 170560 4
  M 14 create-vscroll 171164 2
  M 16 on-pointer-press 171723 4
  M 9 scroll-to 171819 4
  M 16 scroll-to-object 171937 4
  M 8 paginate 172685 4
  O 9 hunitsize 172864 4
  O 10 vblocksize 173659 4
  M 12 on-key-press 174996 4
  O 13 accept-focus? 175185 4
  O 24 expanded-vscroll-bounds? 176005 4
 end
 C 16 RecordGridDelete 176808 4 
  J 7 context 176984 4
  M 7 execute 177073 2
  J 8 enabled? 177157 4
  B 7 default 177240 4
 end
 C 18 RecordGridKeyPress 177504 4 
  I 8 upwards? 177878 44
  I 8 original 178102 44c
  M 7 consume 178301 4
  B 7 default 178385 4
 end
 C 15 DefaultTreeItem 178771 4 
  O 7 spacing 182272 4
  Y 14 selected-color 182599 4
  M 9 get-label 182690 4
  M 4 draw 184065 4
  M 18 modify-for-current 184164 2
  J 4 icon 184859 4
  Y 19 selected-background 185724 4
  M 19 modify-for-selected 185814 2
  K 11 icon#setter 186506 4
  M 17 before-reposition 186818 4
  M 7 refresh 187027 4
  M 16 after-reposition 188189 4
  O 6 valign 188302 4
  M 16 connector-anchor 188763 4
  J 13 style-element 189042 4
  O 9 vstretch? 189127 4
  B 7 default 189617 4
 end
 C 8 MenuPane 190058 4 
  B 7 default 192700 4
  M 24 pointer-exited-contents? 193652 2
  M 21 react-to-state-change 194234 4
  M 3 add 194314 4
  K 25 use-look-and-feel?#setter 194408 4
  M 15 note-item-added 194487 2
  O 12 takes-focus? 194928 4
  I 8 vscroll? 195502 44c
  J 13 style-element 196015 4
  M 17 note-item-removed 196096 2
  M 5 clear 196541 4
  J 14 event-delegate 196621 4
  J 18 use-look-and-feel? 196987 4
  M 24 create-default-ui-object 197798 2
  M 6 remove 197883 4
  M 18 note-items-cleared 198004 2
 end
 C 26 PlaceholderCommandButtonUI 198349 1 
  M 16 draw-as-disabled 198454 2
  M 16 modify-for-focus 198536 2
  M 24 draw-as-rollover-checked 198630 2
  M 18 modify-for-default 198712 2
  M 24 draw-as-disabled-checked 198808 2
  M 14 draw-as-normal 198890 2
  M 23 draw-as-pressed-checked 198972 2
  M 15 draw-as-checked 199054 2
  M 15 draw-as-pressed 199136 2
  M 16 draw-as-rollover 199218 2
 end
 C 8 ListItem 199394 4a 
  B 7 default 201916 4
  I 5 index 202148 42
  Y 8 enabled? 202319 4
  K 16 selected?#setter 202405 4
  J 5 value 203158 4
  I 10 init-value 203242 44c
  I 18 list-model-control 203488 44
 end
 C 7 MenuBar 203665 4 
  K 25 use-look-and-feel?#setter 208486 4
  M 15 note-item-added 208564 2
  M 18 note-items-cleared 209001 2
  O 12 takes-focus? 209432 4
  M 21 react-to-state-change 210004 4
  M 17 note-item-removed 210083 2
  J 13 style-element 210615 4
  J 14 event-delegate 210695 4
  M 5 clear 211059 4
  M 3 add 211138 4
  J 18 use-look-and-feel? 211231 4
  M 24 create-default-ui-object 212041 2
  M 6 remove 212125 4
  B 7 default 212245 4
 end
 C 15 RecordGridPaste 212751 4 
  J 8 enabled? 213516 4
  J 7 context 213599 4
  M 7 execute 213688 2
  B 7 default 213966 4
 end
 C 13 ColorDropdown 214227 4 
  M 18 add-from-init-args 214741 2
  M 26 set-value-from-FillPattern 214831 4
  B 7 default 215303 4
 end
 C 12 RecordGridUI 216622 4a 
  M 19 note-column-changed 217620 4
  K 41 slide-grid-focus-on-record-change?#setter 217945 4a
  M 13 reserved-key? 218029 4
  M 23 fire-event-at-container 218678 2
  M 14 set-grid-focus 218775 4
  K 14 control#setter 219591 4
  O 9 tab-index 219679 4
  Y 26 horizontal-grid-line-width 219764 4
  M 24 note-row-options-changed 219848 4
  M 31 note-columns-collection-changed 220188 4
  J 34 slide-grid-focus-on-record-change? 220389 4a
  Y 24 vertical-grid-line-width 221167 4
  M 15 grid-objects-at 221251 4a
  M 27 note-current-record-changed 221588 4
  M 21 note-record-set-event 221795 4
  M 16 register-options 222088 4
  J 4 grid 222205 4
  M 20 note-filter-changing 222420 4
  M 20 traverse-from-visual 222856 4
  M 15 handle-mnemonic 222973 4
  O 8 mnemonic 223059 4
  I 10 grid-focus 223145 40
  M 22 reveal-grid-focus-cell 223820 4
  M 27 get-test-tabular-attributes 224707 4
  M 25 note-frozen-count-changed 225031 4
  M 22 notify-option-children 225406 4
  Y 15 grid-line-color 225523 4
  M 19 resize-column-range 225615 4a
  M 12 reveal-index 226601 2a
  Y 24 alternate-row-background 226997 4
  M 11 get-cell-at 227088 4a
  M 17 dispatch-mnemonic 228112 4
  M 17 get-cell-at-index 228204 4a
  M 15 context-menu-at 229208 4
  J 10 selecting? 230035 4a
  B 7 default 230224 4
 end
 C 12 TabContainer 230433 4 
  M 9 show-pane 231576 4
  M 8 test-run 232259 4
  O 10 panes-skin 232372 4
  O 13 tab-placement 232846 4
  J 13 style-element 233160 4
  O 17 close-button-proc 233245 4
  M 21 ensure-button-visible 234350 4
  O 9 tab-style 234966 4
  M 24 create-default-ui-object 235135 2
  M 18 show-pane-at-index 235224 4
  B 7 default 235999 4
 end
 C 21 PlaceholderGroupBoxUI 237440 1 
 end
 C 24 PlaceholderRadioButtonUI 237636 1 
  M 16 draw-as-disabled 237739 2
  M 16 modify-for-focus 237821 2
  M 24 draw-as-rollover-checked 237915 2
  M 24 draw-as-disabled-checked 237997 2
  M 14 draw-as-normal 238079 2
  M 23 draw-as-pressed-checked 238161 2
  M 15 draw-as-checked 238243 2
  M 15 draw-as-pressed 238325 2
  M 16 draw-as-rollover 238407 2
 end
 C 11 LineMetrics 238583 1f 
 end
 C 6 Slider 239268 4 
  O 11 orientation 245791 4
  O 6 labels 246267 4
  O 12 allow-range? 247080 4
  O 11 show-ticks? 247434 4
  O 11 format-spec 247609 4
  M 8 test-run 248991 4
  J 6 domain 249277 4
  M 9 set-range 250249 4
  J 13 style-element 250695 4
  J 9 blocksize 250773 4
  M 15 on-drag-started 252019 4
  M 9 get-range 252111 4
  K 25 major-tick-spacing#setter 252594 4
  J 10 has-value? 252670 4
  K 17 has-range?#setter 253088 4
  J 10 has-range? 253165 4
  M 17 get-test-property 253740 4
  J 18 major-tick-spacing 253829 4
  J 5 value 254672 4
  M 21 set-value-with-events 255728 4
  J 14 test-type-name 256530 4
  B 7 default 256876 4
  K 12 value#setter 258295 4
  O 10 panel-skin 258511 4
  J 16 allowable-values 258948 4f
  M 28 adjust-by-blocks-with-events 259879 4
  J 8 unitsize 261037 4
  M 15 adjust-by-units 262220 4
  K 16 blocksize#setter 263074 4
  J 18 minor-tick-spacing 263150 4
  J 9 min-value 263988 4
  J 9 max-value 264318 4
  O 12 show-labels? 264945 4
  M 24 create-default-ui-object 265220 2
  J 19 value-is-adjusting? 265303 4
  K 13 domain#setter 265923 4
  M 18 get-formatted-data 266002 4
  O 14 snap-to-ticks? 266747 4
  K 15 unitsize#setter 267496 4
  M 27 adjust-by-units-with-events 267572 4
  O 9 knob-skin 268722 4
  K 25 minor-tick-spacing#setter 269158 4
  M 11 unset-value 269234 4
  O 11 show-focus? 269793 4
  K 26 value-is-adjusting?#setter 269981 4
  M 16 adjust-by-blocks 270058 4
  M 19 note-labels-changed 270830 4
 end
 C 17 MultiTabAccordion 271481 4 
  O 15 tab-orientation 272522 4
  M 24 create-default-ui-object 272720 2
  J 13 style-element 272811 4
  B 7 default 272898 4
 end
 C 15 CalendarControl 274032 4 
  J 10 data-model 277382 4
  Y 35 calendar-control-holiday-background 277949 4
  K 12 value#setter 278043 4
  J 13 display-month 278135 4
  J 10 next-month 278563 4
  Y 33 calendar-control-today-background 279184 4
  Y 28 calendar-control-today-color 279278 4
  Y 35 calendar-control-selected-day-color 279373 4
  J 19 short-weekday-names 279468 4
  O 12 weekday-proc 279703 4
  O 18 show-week-of-year? 280516 4
  J 17 short-month-names 281006 4
  K 16 max-value#setter 281239 4
  K 20 start-weekday#setter 281330 4
  O 15 weeknumber-proc 281416 4
  M 17 create-data-model 282338 2
  Y 30 calendar-control-holiday-color 283206 4
  M 8 test-run 283301 4
  O 12 takes-focus? 283418 4
  Y 29 calendar-control-header-color 283510 4
  J 6 locale 283605 4
  J 12 display-year 284059 4
  J 9 min-value 284386 4
  J 9 max-value 284977 4
  J 13 weekday-names 285565 4
  O 20 show-adjacent-dates? 285794 4
  J 13 style-element 286061 4
  M 23 handle-observer-message 286149 2
  M 24 create-default-ui-object 286367 2
  M 22 set-display-month-year 286460 4
  J 13 start-weekday 287624 4
  Y 34 calendar-control-header-background 287953 4
  O 8 holidays 288168 4
  O 25 navigation-changes-value? 289138 4
  M 21 react-to-state-change 290789 2
  J 10 has-value? 290877 4
  J 14 previous-month 291128 4
  J 11 month-names 291750 4
  M 17 get-test-property 291976 4
  M 21 note-holidays-changed 292075 4
  K 17 data-model#setter 292791 4
  M 11 unset-value 292988 4
  J 13 previous-year 293252 4
  J 5 value 293873 4
  K 13 locale#setter 294792 4
  M 21 set-value-with-events 294881 4
  J 14 test-type-name 295688 4
  K 16 min-value#setter 295778 4
  O 8 day-proc 295869 4
  J 9 next-year 297827 4
  O 19 show-date-controls? 298447 4
  B 7 default 299029 4
 end
 C 19 SetAttributeMessage 302675 1 
 end
 C 15 BaseTextFieldUI 303353 4a S
  B 7 default 304881 4
 end
 C 28 ScrollbarPreferencesObserver 305090 1 
  M 23 handle-observer-message 305280 2
 end
 N 16 CheckButtonStyle 305491 4
 end
 Q 17 minor-tick-length 306726 4
 C 11 ScrollbarUI 307394 4a 
  J 9 scrollbar 307867 4
  B 7 default 308173 4
 end
 N 16 RadioButtonStyle 308472 4
 end
 C 26 DefaultRecordGridSelection 309694 1 
  M 14 contains-cell? 309805 4
  J 12 record-count 310021 4
  J 7 regions 310568 4
  J 7 columns 311681 4
  M 16 contains-record? 311911 4
  M 16 contains-column? 312004 4
  J 12 region-count 312114 4
  J 7 records 312501 4
  J 12 column-count 312887 4
 end
 C 19 PlaceholderSliderUI 313199 1 
  M 19 note-labels-changed 313295 4
 end
 Q 35 calendar-control-holiday-background 313467 4
 C 13 ListValueItem 313787 4 
  J 11 selectable? 315047 4
  J 9 selected? 315321 4
  M 14 adjust-visuals 315406 2
  J 5 label 315623 4
  J 13 style-element 315864 4
  M 21 set-selected?-quietly 315951 4
  K 12 label#setter 316429 4
  B 7 default 316516 4
 end
 C 13 ProgressBarUI 317235 4a 
  J 12 progress-bar 317724 4
  B 7 default 318004 4
 end
 C 25 {SelectedIterator t:Type} 318293 1as 
  M 5 reset 318692 4
  I 5 items 318777 22
  M 9 get-index 318974 2
 end
 Q 33 calendar-control-today-background 319274 4
 T 25 dashed-line-pattern-width 319449 11c
 C 10 ComboBoxUI 319542 4a 
  M 21 draw-as-current-value 320421 2a
  I 18 has-been-rendered? 320652 22
  J 12 focus-object 320864 4
  M 8 set-size 321303 4
  M 27 setup-value-after-key-press 321422 2
  M 21 react-to-state-change 321910 4
  M 21 on-context-menu-event 322381 4
  J 15 dropdown-height 322488 4
  M 16 get-visible-text 322579 4a
  M 14 draw-as-prompt 322746 2a
  B 7 default 322970 4
 end
 C 14 DropdownListUI 323182 4a 
  M 8 set-size 324085 4
  B 7 default 324204 4
  J 15 dropdown-height 324416 4
  M 21 draw-as-current-value 324507 2a
  I 18 has-been-rendered? 324896 22
  M 14 draw-as-prompt 325112 2a
  M 21 react-to-state-change 325494 4
 end
 Q 28 calendar-control-today-color 325985 4
 C 16 DropdownMenuPane 326155 4f 
  J 13 style-element 326552 4
  J 15 wrap-selection? 326634 4
  M 17 record-traversals 326895 4
  J 22 always-show-selection? 327016 4
  B 7 default 327355 4
 end
 C 13 ReactiveLabel 327958 4 
  O 13 label-pressed 328370 4
  B 7 default 328589 4
  M 19 show-label-rollover 330868 4
  O 22 label-disabled-checked 331192 4
  O 21 label-pressed-checked 331792 4
  M 27 show-label-rollover-checked 332084 4
  O 5 label 332363 4
  M 8 get-text 332497 4
  M 19 show-label-disabled 332683 4
  O 22 label-rollover-checked 332875 4
  I 13 current-label 333248 40
  M 18 show-label-pressed 333946 4
  O 13 label-checked 334431 4
  M 18 show-label-checked 334914 4
  M 27 show-label-disabled-checked 335104 4
  M 10 show-label 335665 4
  J 13 style-element 335786 4
  M 26 show-label-pressed-checked 335866 4
  O 14 label-rollover 336142 4
  O 14 label-disabled 336373 4
 end
 C 20 DateDataModelMessage 336939 4 
  B 7 default 337387 4
 end
 C 15 CommandButtonUI 337540 4a 
  M 15 on-grab-release 338784 4
  Y 8 enabled? 339180 4
  M 15 do-press-action 339262 2
  M 18 modify-for-default 339415 2a
  M 18 on-pointer-release 339583 4
  M 16 on-pointer-press 340468 4
  M 21 react-to-state-change 341465 4
  M 18 on-raw-key-release 341970 4
  M 15 draw-as-pressed 342567 2a
  M 16 draw-as-disabled 342798 2a
  M 16 modify-for-focus 342934 2a
  M 14 draw-as-normal 343083 2a
  M 12 on-key-press 343217 4
  M 16 draw-as-rollover 343789 2a
  B 7 default 343932 4
 end
 C 20 SetAttributeUndoItem 344069 1f 
 end
 C 11 RadioButton 345260 4 
  Y 8 enabled? 348604 4
  K 12 value#setter 348786 4
  J 5 label 348864 4
  J 14 pending-value? 349393 4
  M 28 become-active-from-traversal 349659 4
  J 5 style 350487 4
  M 8 test-run 351682 4
  J 16 test-description 351790 4
  K 12 style#setter 351973 4
  J 13 style-element 352063 4
  M 15 handle-mnemonic 352143 4
  M 24 create-default-ui-object 352454 2
  J 14 reactive-label 352538 4
  K 12 label#setter 353074 4
  I 11 radio-value 353154 44c
  J 10 has-value? 353606 4
  O 12 checked-skin 353959 4
  Y 11 radio-frame 354411 4
  M 17 get-test-property 355039 4
  M 11 unset-value 355229 4
  K 21 reactive-label#setter 355308 4
  J 10 form-value 355395 4
  J 5 value 356025 4
  M 21 set-value-with-events 356103 4
  J 14 test-type-name 356695 4
  O 11 show-focus? 356775 4
  O 11 label-inset 356946 4
  O 6 valign 358029 4
  B 7 default 358822 4
 end
 C 24 PlaceholderTreeControlUI 360319 1 
 end
 C 22 ConstantStringUndoItem 360524 1f 
 end
 C 23 PlaceholderRecordGridUI 361334 1 
  M 8 traverse 361440 4
  K 41 slide-grid-focus-on-record-change?#setter 361547 4
  M 23 fire-event-at-container 361632 2
  J 14 current-active 361729 4
  M 27 unregister-active-traversor 361826 2
  M 19 resize-column-range 361931 4
  J 34 slide-grid-focus-on-record-change? 362064 4
  M 12 reveal-index 362149 2
  M 15 grid-objects-at 362277 4
  M 21 react-to-child-change 362515 4
  K 21 current-active#setter 362620 4
  M 13 become-active 362717 4
  M 11 get-cell-at 362824 4
  M 17 get-cell-at-index 362960 4
  M 15 handle-mnemonic 363092 4
  M 25 register-active-traversor 363178 2
  J 10 selecting? 363283 4
 end
 C 21 DefaultPixmapTreeIcon 363466 4 
  M 16 constrain-height 364181 4
  K 29 expanded-parent-pixmap#setter 364322 4
  M 4 draw 364408 4
  K 13 pixmap#setter 364707 4
  M 21 get-height-preference 364990 4
  J 22 expanded-parent-pixmap 365096 4
  J 13 parent-pixmap 365565 4
  M 20 get-width-preference 365891 4
  J 6 pixmap 365997 4
  M 15 constrain-width 366168 4
  K 20 parent-pixmap#setter 366413 4
  B 7 default 366499 4
 end
 C 18 RSDMoveButtonLabel 367127 1 
  M 13 remove-styles 367677 2
 end
 C 14 BaseComboBoxUI 367874 4a 
  J 15 dropdown-height 368109 4a
  M 15 change-dropdown 368723 4a
  J 9 menu-pane 369001 4
  B 7 default 369187 4
 end
 N 18 CommandButtonStyle 369342 4
 end
 C 22 RichTextStringUndoItem 370578 1a 
  M 14 apply-internal 370792 2f
  M 13 set-attribute 370983 2
  M 19 apply-internal-rich 371246 2f
 end
 C 17 CalendarControlUI 371437 4a 
  J 16 calendar-control 371921 4
  M 21 note-holidays-changed 372225 4a
  B 7 default 372599 4
 end
 C 11 DateFieldUI 372893 4a 
  B 7 default 373382 4
  M 13 show-calendar 373664 4
  J 12 focus-object 373980 4
  M 13 hide-calendar 374444 4
  J 10 date-field 374760 4
 end
 C 11 TextFieldUI 375052 4a 
  B 7 default 375280 4
 end
 C 13 DateDataModel 375489 4 
  M 11 unset-value 376140 4
  J 5 value 376599 4
  K 12 value#setter 377176 4
  K 16 min-value#setter 377264 4
  M 7 compare 377451 4
  J 9 min-value 378027 4
  J 9 max-value 378723 4
  M 9 set-range 379406 4
  J 10 has-value? 380132 4
  K 16 max-value#setter 380543 4
  B 7 default 380630 4
 end
 C 27 StringDataModelMovableRange 381651 4 
  K 13 anchor#setter 382396 4
  D 18 from-Range#factory 383071 4
  M 21 swap-anchor-and-point 383317 4
  M 33 move-point-to-previous-word-start 383568 4
  K 12 point#setter 384069 4
  J 20 point-at-word-start? 384735 4
  M 12 widen-to-all 384963 4
  M 32 move-point-forward-one-character 385161 4
  J 9 max-index 385536 4
  M 34 move-point-to-next-paragraph-start 385887 4
  M 33 move-point-backward-one-character 386444 4
  M 38 move-point-to-previous-paragraph-start 386813 4
  M 29 move-point-to-next-word-start 387324 4
  M 18 widen-to-paragraph 387871 4
  J 25 point-at-paragraph-start? 388652 4
  M 13 widen-to-word 388885 4
  M 17 collapse-to-point 389634 4
  B 7 default 389867 4
 end
 Q 34 calendar-control-header-background 390374 4
 C 24 PlaceholderProgressBarUI 390658 1 
 end
 C 22 SingleSelectionControl 390863 4a 
  J 13 selected-item 391047 4a
  J 14 selected-index 391212 4a
 end
 T 21 StringBaseTextControl 391358 11c
 C 14 RichTextAreaUI 391561 4a 
  M 18 test-set-attribute 391776 4a
  M 18 test-splice-string 392387 4a
  B 7 default 392780 4
 end
 C 18 CurrentNodeChanged 392991 4 
  B 7 default 393230 4
 end
 C 13 TreeControlUI 393508 4a 
  M 22 note-tree-model-change 394984 4
  I 6 focus? 395398 44
  M 22 note-expansion-toggled 395935 4
  M 25 note-current-node-changed 396572 4
  M 11 on-focus-in 397191 4
  M 19 get-node-label-text 397286 4
  K 14 control#setter 397605 4
  M 22 note-selection-changed 397693 4
  M 12 on-focus-out 398019 4
  B 7 default 398116 4
 end
 L 13 context-popup 398534 4
 C 11 TreeControl 402797 4 
  M 10 walk-nodes 411161 4
  J 9 selection 412450 4
  M 9 last-node 412542 4
  M 12 select-nodes 413089 4
  M 13 collapse-node 414405 4
  M 13 previous-node 415721 4
  K 19 current-node#setter 416426 4
  M 8 test-run 416744 4
  M 14 select-nothing 416857 4
  M 14 deselect-nodes 416941 4
  J 13 style-element 417473 4
  K 23 selection-policy#setter 417669 4
  M 10 select-all 417763 4
  M 23 handle-observer-message 418029 2
  M 24 create-default-ui-object 418241 2
  O 23 display-toggle-buttons? 418330 4
  M 14 create-command 418736 4
  O 13 display-root? 418950 4
  I 23 tree-item-creation-proc 419728 44c
  K 21 expanded-nodes#setter 421037 4
  J 9 container 421272 4
  O 20 tree-connector-width 421358 4
  M 11 expand-node 421618 4
  O 11 indentation 422710 4
  K 17 data-model#setter 423013 4
  J 14 test-type-name 423101 4
  J 14 expanded-nodes 423187 4
  J 16 selection-policy 424241 4
  J 12 current-node 424830 4
  S 31 default-tree-item-creation-proc 425777 44c
  J 10 data-model 426395 4
  M 9 next-node 426601 4
  B 7 default 427302 4
 end
 C 10 MenuPaneUI 428097 4a 
  M 17 note-item-removed 428590 4a
  M 18 note-items-cleared 429288 4a
  M 15 note-item-added 429812 4a
  J 9 menu-pane 430533 4
  M 12 on-key-press 430838 4
  M 24 pointer-exited-contents? 430932 2a
  B 7 default 431314 4
 end
 C 9 ListModel 431612 4a 
  M 4 find 434880 4a
  M 18 unregister-control 437731 4
  I 16 controls-used-by 438041 44c
  M 21 fire-interval-changed 438268 4
  M 6 append 439209 4
  M 21 fire-interval-removed 439432 4
  M 14 insert-quietly 440351 4a
  M 11 to-Iterator 440675 4a
  J 4 size 440847 4a
  M 3 get 440987 4a
  M 3 set 441190 4
  M 16 register-control 441430 4
  M 6 insert 441715 4
  M 11 set-quietly 441960 4a
  M 5 clear 442313 4a
  M 14 append-quietly 442463 4a
  M 19 fire-interval-added 442941 4
  M 6 remove 443875 4a
  J 6 empty? 444083 4
 end
 C 10 RadioFrame 444237 4 
  K 12 value#setter 447235 4
  J 14 pending-value? 447312 4
  J 10 has-value? 447577 4
  M 3 add 448428 4
  J 15 selected-button 449083 4
  M 11 unset-value 449245 4
  J 10 form-value 449516 4
  J 5 value 449954 4
  M 21 set-value-with-events 450031 4
  J 13 style-element 450629 4
  M 5 clear 450709 4
  M 13 become-active 450788 4
  M 19 note-button-toggled 450985 4
  B 7 default 451450 4
 end
 C 17 BaseTextControlUI 451716 4a S
  M 21 on-context-menu-event 451963 4
  B 7 default 452066 4
 end
 C 16 SingleTabControl 452341 4a 
  M 9 show-pane 455244 4
  M 8 showing? 455872 4
  M 9 show-next 456090 4
  J 18 current-pane-index 456697 4
  M 18 show-pane-at-index 457723 4
  M 17 add-pane-at-index 458336 4
  M 8 test-run 458474 4
  J 14 test-type-name 458593 4
  M 20 remove-pane-at-index 458685 4
  M 13 show-previous 459601 4
  K 19 current-pane#setter 460208 4
  K 25 current-pane-index#setter 460411 4
  J 12 current-pane 460498 4
  B 7 default 461439 4
 end
 C 24 PlaceholderTextDisplayUI 461797 1 
 end
 C 7 ListBox 462000 4 
  M 24 select-index-with-events 467765 4
  M 26 select-indices-with-events 467855 4
  M 23 notify-interval-removed 468516 4
  K 12 value#setter 468622 4
  I 14 pending-value? 468705 42
  M 23 rebuild-from-data-model 469409 4
  I 14 selected-count 469603 22
  M 18 fire-value-changed 470041 4
  J 19 selected-item-count 470310 4
  J 14 selected-items 470393 4
  M 21 remove-selected-index 470501 4
  J 5 style 470591 4
  M 8 test-run 471623 4
  M 12 select-index 471737 4
  M 18 add-selected-index 471827 4
  K 12 style#setter 471917 4
  J 13 style-element 472009 4
  K 23 selection-policy#setter 472095 4
  M 24 create-default-ui-object 472190 2
  M 20 notify-item-selected 472280 4
  M 21 notify-interval-added 472379 4
  M 18 add-from-init-args 472508 2
  J 10 has-value? 472598 4
  M 17 get-test-property 472682 4
  K 17 data-model#setter 472886 4
  M 11 unset-value 472975 4
  M 18 deselect-all-items 473060 4
  J 10 form-value 473145 4
  J 5 value 473713 4
  M 21 set-value-with-events 474599 4
  J 14 test-type-name 474847 4
  M 16 select-all-items 474934 4
  J 16 selection-policy 475019 4
  J 16 selected-indices 475114 4
  M 19 fire-value-finished 475211 4
  M 23 notify-interval-changed 475472 4
  B 7 default 475601 4
 end
 Q 15 repeat-interval 477198 4
 C 13 RSDMoveButton 477408 1 
  M 9 on-action 477513 4
 end
 C 20 DefaultFrameTreeIcon 478249 4 
  B 7 default 478854 4
 end
 C 8 TextArea 479254 4 
  M 24 create-default-ui-object 481158 2
  J 13 style-element 481243 4
  M 28 become-active-from-traversal 481324 4
  B 7 default 481425 4
 end
 C 12 BaseButtonUI 482770 4a S
  B 7 default 484076 4
  M 15 on-grab-release 484215 4
  M 17 on-pointer-motion 484460 4
  I 16 pointer-pressed? 484827 44
  I 9 rollover? 485053 44
  I 6 focus? 485257 44
  Y 8 enabled? 485533 4
  M 18 remove-action-char 485614 2
  M 18 on-pointer-release 485822 4
  M 15 do-press-action 486542 2a
  I 18 has-been-rendered? 487077 22
  M 16 on-pointer-press 487286 4
  M 11 on-focus-in 488013 4
  M 18 on-raw-key-release 488277 4
  M 12 on-focus-out 488612 4
  I 8 grabbed? 488878 44
  M 16 modify-for-focus 489148 2a
  M 16 on-pointer-enter 489481 4
  M 12 on-key-press 489848 4
  I 12 action-chars 490421 44
  I 15 button-pressed? 490595 44
  M 8 set-size 490789 4
  M 15 add-action-char 491055 2
  M 15 is-action-char? 491261 2
  M 16 on-pointer-leave 491463 4
  I 24 action-char-key-pressed? 491742 44
 end
 C 14 SelectableItem 491985 4a 
  M 21 set-selected?-quietly 492443 4
  J 11 selectable? 493078 4
  J 5 value 493418 4a
  K 16 selected?#setter 493649 4
  J 9 selected? 493728 4
  B 7 default 494113 4
 end
 C 16 ListModelControl 494228 4a 
  B 7 default 495446 4
  M 4 find 495941 4
  M 20 notify-item-selected 496371 4a
  M 21 notify-interval-added 496872 4
  J 10 list-items 498365 4
  M 23 notify-interval-removed 498552 4
  I 29 list-item-selected-background 499651 44
  I 5 items 499863 22
  M 23 rebuild-from-data-model 500349 4
  M 6 append 500901 4
  I 29 list-item-selected-foreground 502049 44
  M 11 clear-items 502261 4
  K 17 data-model#setter 502475 4
  J 4 size 502563 4
  M 3 get 502803 4
  M 3 set 503124 4
  M 6 insert 503427 4
  I 23 list-item-creation-proc 503835 44
  M 6 remove 505220 4
  M 23 notify-interval-changed 505536 4
  J 10 data-model 507053 4
  H 31 default-list-item-creation-proc 507361 4
  J 14 for-loop-count 508051 4i
 end
 C 33 RichTextStringReplacementUndoItem 508404 1f 
 end
 C 15 StringDataModel 509300 4a 
  J 4 size 510315 4a
  M 6 splice 510465 4a
  M 3 get 511457 4
  M 9 to-String 512217 4a
  M 5 clear 512411 4a
  M 12 set-contents 513122 4a
  M 6 substr 513970 4a
  M 6 remove 514910 4a
  D 15 default#factory 517393 4
  J 6 empty? 517792 4
 end
 C 14 TabAccordionUI 517943 4a 
  B 7 default 518211 4
  J 13 tab-accordion 518497 4
 end
 C 11 ProgressBar 518789 4 
  M 11 update-view 520378 4f
  K 12 value#setter 521848 4
  J 10 has-value? 521933 4
  O 19 progress-frame-skin 522460 4
  O 14 indeterminate? 522920 4
  K 16 max-value#setter 523926 4
  O 17 caption-placement 524011 4
  M 11 unset-value 524633 4
  M 21 set-value-with-events 524935 4
  J 5 value 525468 4
  O 16 determinate-skin 526042 4
  K 16 min-value#setter 526525 4
  O 7 caption 526706 4
  O 14 progress-color 527214 4
  J 9 min-value 527749 4
  J 9 max-value 528463 4
  J 13 style-element 529057 4
  O 18 indeterminate-skin 529238 4
  M 13 become-active 529842 4
  M 24 create-default-ui-object 529947 2
  J 16 percent-complete 530146 4
  B 7 default 530451 4
 end
 C 13 RadioButtonUI 531101 4a 
  M 16 draw-as-disabled 532451 2a
  M 15 do-press-action 532587 2
  M 24 draw-as-rollover-checked 532743 2a
  M 16 modify-for-focus 532891 2a
  M 24 draw-as-disabled-checked 533040 2a
  M 14 draw-as-normal 533188 2a
  M 12 on-key-press 533322 4
  M 23 draw-as-pressed-checked 533415 2a
  M 21 react-to-state-change 533562 4
  M 15 draw-as-checked 533945 2a
  M 15 draw-as-pressed 534080 2a
  M 16 draw-as-rollover 534215 2a
  B 7 default 534358 4
 end
 N 15 SelectionPolicy 534495 4
 end
 Q 20 minimum-thumb-length 535468 4
 C 13 CommandButton 535763 4 
  J 8 default? 537903 4f
  Y 8 enabled? 538285 4
  J 5 label 538562 4
  M 9 on-action 539092 4
  M 11 take-action 539278 4
  Y 12 repeat-delay 539565 4
  O 10 repeating? 539909 4
  K 21 reactive-label#setter 540514 4
  J 5 style 540600 4
  M 8 test-run 541581 4
  J 14 test-type-name 541689 4
  Y 15 repeat-interval 541770 4
  O 11 show-focus? 542095 4
  O 11 label-inset 542266 4
  J 16 test-description 543232 4
  M 18 on-command-changed 543313 4
  K 12 style#setter 543409 4
  J 13 style-element 543501 4
  O 14 fire-on-press? 543580 4
  M 24 create-default-ui-object 544045 2
  J 14 reactive-label 544128 4
  K 15 default?#setter 544682 4f
  K 12 label#setter 544760 4
  M 15 handle-mnemonic 544839 4
  B 7 default 545150 4
 end
 C 24 PlaceholderSpinControlUI 546080 1 
 end
 Q 35 calendar-control-selected-day-color 546285 4
 Q 26 horizontal-grid-line-width 546462 4
 Q 12 repeat-delay 546616 4
 N 19 TreeModelChangeType 546827 4
 end
 C 9 TextStyle 547042 1f 
 end
 T 29 RichTextStringBaseTextControl 552915 11c
 Q 24 vertical-grid-line-width 553144 4
 C 26 {BaseComboBox tValue:Type} 553301 4a 
  M 23 notify-interval-changed 553802 4
  M 24 select-index-with-events 553931 4
  M 20 notify-item-selected 554459 4
  M 21 notify-interval-added 554558 4
  M 23 notify-interval-removed 554908 4
  M 18 add-from-init-args 555014 2
  I 14 pending-value? 555104 44
  M 21 react-to-state-change 555975 4
  J 15 dropdown-height 556060 4
  M 17 get-test-property 556847 4
  K 22 dropdown-height#setter 557049 4
  M 18 deselect-all-items 557137 4
  M 21 set-value-with-events 557595 4
  J 14 selected-index 558155 4
  M 8 test-run 558673 4
  M 12 select-index 558787 4
  J 14 test-type-name 559094 4
  O 14 dropdown-width 559181 4
  J 13 selected-item 560002 4
  M 21 select-index-internal 560385 2
  B 7 default 561214 4
 end
 Q 29 calendar-control-header-color 562116 4
 C 9 DateField 562376 4 
  O 10 parse-spec 564879 4
  M 38 note-calendar-control-property-changed 567805 4
  K 12 value#setter 568784 4
  I 14 pending-value? 568870 44
  O 18 show-spin-buttons? 569525 4
  K 16 max-value#setter 570140 4
  O 11 format-spec 570225 4
  M 8 test-run 573735 4
  I 16 calendar-control 573846 40
  O 12 takes-focus? 574054 4
  J 6 locale 574140 4
  J 12 focus-object 574425 4
  J 9 min-value 574760 4
  J 9 max-value 575247 4
  J 13 style-element 575727 4
  O 16 date-format-spec 576200 4
  M 16 get-parsed-value 576628 4
  M 23 handle-observer-message 577968 2
  M 24 create-default-ui-object 578081 2
  O 10 separators 578168 4
  M 13 replace-value 580455 4
  M 18 get-formatted-data 580946 4
  M 21 react-to-state-change 583270 2
  J 10 has-value? 583352 4
  J 6 prompt 583585 4
  M 17 get-test-property 584373 4
  M 12 on-focus-out 584466 4
  M 11 unset-value 584559 4
  J 5 value 584805 4
  K 13 locale#setter 585208 4
  M 21 set-value-with-events 585291 4
  J 14 test-type-name 586005 4
  K 16 min-value#setter 586089 4
  K 13 prompt#setter 586372 4
  B 7 default 586456 4
 end
 V 25 _dashed-line-fill-pattern 589455 11
 C 20 BaseRecordGridColumn 589557 4as 
  B 7 default 589994 4
  M 18 option-lookup-here 590173 4
  K 20 option-parent#setter 590315 4
  M 23 get-first-shared-parent 590644 4
  M 14 option-changed 591089 4
  J 12 parent-group 591195 4
  K 19 parent-group#setter 591485 4
  J 12 column-depth 591586 4
  K 11 grid#setter 591799 2
  J 4 grid 592354 4
  J 13 option-parent 592754 4
  M 23 propagate-option-change 592853 2
 end
 C 18 SingleTabControlUI 593438 4a 
  B 7 default 593923 4
 end
 C 25 PlaceholderTabAccordionUI 594220 1 
  M 23 note-pane-to-be-removed 594324 2
  M 21 note-pane-to-be-shown 594416 2
  M 15 note-pane-added 594508 2
  M 18 note-pane-modified 594600 2
 end
 C 14 RecordGridCell 594786 4a 
  K 19 record-index#setter 601796 4
  M 20 commit-pending-value 601878 4
  M 18 refresh-appearance 602177 4
  J 14 pending-value? 603248 4
  M 23 fire-event-at-container 603669 2
  J 10 test-value 603764 4
  O 9 tab-index 604012 4
  J 6 column 604095 4
  J 6 record 604598 4
  O 11 format-spec 604807 4
  J 8 current? 604890 4
  M 11 update-data 605094 4
  M 8 test-run 606470 4
  M 5 parse 606583 4
  J 4 grid 608218 4
  M 6 format 608449 4
  M 23 propagate-option-change 609438 2
  J 13 style-element 609553 4
  J 12 record-index 609638 4
  O 6 halign 610012 4
  M 12 refresh-data 610095 4
  M 16 get-parsed-value 611246 4
  M 18 note-grid-focus-in 611868 4
  M 15 handle-mnemonic 612584 4
  M 13 become-active 612668 4
  O 8 mnemonic 612773 4
  M 19 note-grid-focus-out 612857 4
  M 18 option-lookup-here 613481 4
  J 13 pending-value 613623 4
  K 13 column#setter 614127 4
  M 18 get-formatted-data 614223 4
  J 9 selected? 615574 4
  O 17 cells-take-focus? 615775 4
  J 5 field 615859 4
  J 11 valign-spec 616076 2
  M 8 get-data 616158 4
  J 11 can-update? 617164 4
  M 19 flush-pending-value 617933 4
  M 11 get-indices 618118 4
  J 15 has-grid-focus? 618326 4
  M 12 on-key-press 618530 4
  O 6 valign 618722 4
  J 13 option-parent 618805 4
  J 11 halign-spec 618899 2
  B 7 default 618981 4
 end
 C 22 PlaceholderTextFieldUI 619134 1 
 end
 C 24 RichTextAttributeCommand 619335 4f 
  M 17 get-current-value 619669 4
  J 15 new-value-param 620553 4
  J 8 enabled? 620759 4
  M 7 prepare 620844 4
  H 15 get-unset-value 620930 4
  K 22 new-value-param#setter 621669 4
  M 6 update 621859 4
  I 3 key 621945 44c
  M 7 execute 622225 4
 end
 C 26 PlaceholderPasswordFieldUI 622448 1 
 end
 C 24 ConstantComboBoxUndoItem 622653 1f 
 end
 L 17 add-context-popup 623676 4
 C 9 TextField 624645 4 
  J 13 style-element 627267 4
  O 6 halign 627351 4
  K 12 value#setter 627711 4
  M 24 create-default-ui-object 627795 2
  M 29 replace-selection-with-string 627883 4
  B 7 default 627997 4
 end
 C 20 RecordGridColumnSort 629520 4 
  I 8 delegate 629773 44c
  M 13 sort-sequence 629939 4
  I 10 ascending? 630094 44c
  M 7 compare 630277 4
  I 6 column 630381 44c
  B 7 default 630582 4
 end
 C 12 RichTextArea 631169 4 
  O 29 distinguish-unset-attributes? 643573 4
  K 12 value#setter 645163 4
  J 9 writable? 645686 4
  M 11 get-command 646101 4
  M 28 become-active-from-traversal 647346 4
  M 26 parse-curl-source-fragment 648396 4f
  M 17 get-test-property 651991 4
  M 23 format-as-html-fragment 652088 4f
  M 17 create-data-model 653904 2
  O 25 display-formatting-panel? 654745 4
  M 8 test-run 656016 4
  J 14 test-type-name 657716 4
  J 5 value 657804 4
  J 13 style-element 659113 4
  O 9 editable? 659200 4
  M 30 format-as-curl-source-fragment 659894 4f
  M 23 handle-observer-message 662150 2
  M 24 create-default-ui-object 662267 2
  M 14 create-command 662358 4
  B 7 default 662460 4
 end
 Q 11 radio-frame 663903 4
 C 16 DefaultListModel 664204 4 
  M 4 find 664480 4
  M 6 splice 664938 4
  I 5 array 665190 22
  M 6 filter 665699 4
  M 14 insert-quietly 665909 4
  M 11 to-Iterator 666045 4
  M 11 filter-keys 666141 4
  J 4 size 666430 4
  M 3 get 666511 4
  M 11 clone-range 666602 4
  M 4 push 666907 4
  M 6 concat 667133 4
  M 4 sort 667390 4
  M 7 reverse 667640 4
  M 11 set-quietly 667857 4
  M 5 clear 667993 4
  M 14 append-quietly 668076 4
  M 6 remove 668201 4
  M 3 pop 668341 4
  B 7 default 668616 4
 end
 T 17 color-combo-array 669090 11c
 C 9 MenuBarUI 669433 4a 
  M 17 note-item-removed 669922 4a
  M 18 note-items-cleared 670615 4a
  M 15 note-item-added 671134 4a
  M 12 on-key-press 671850 4
  J 8 menu-bar 671943 4
  B 7 default 672246 4
 end
 C 14 BaseTabControl 672542 4a 
  M 9 show-pane 673926 4a
  M 8 add-pane 674274 4
  M 9 show-last 675767 4
  M 18 note-pane-modified 676147 2
  M 8 showing? 677277 4a
  M 3 add 677455 4
  M 17 get-test-property 679287 4
  M 18 show-pane-at-index 679386 4a
  M 17 add-pane-at-index 679943 4
  M 11 remove-pane 681287 4
  M 20 remove-pane-at-index 682107 4a
  M 10 show-first 682650 4
  O 11 show-focus? 683057 4
  I 9 tab-panes 683237 44c
  M 5 clear 683730 4
  M 16 remove-all-panes 683921 4
  B 7 default 684224 4
 end
 C 25 RadioButtonsRestArgParser 684577 1f 
  M 17 process-rest-args 684754 2
  M 20 non-keyword-init-arg 684933 2
  M 16 keyword-init-arg 685017 2
 end
 C 9 ListBoxUI 685647 4a 
  M 20 notify-item-selected 686137 4a
  I 6 focus? 686870 22
  K 22 selection-point#setter 687355 4
  I 18 has-been-rendered? 687849 44
  J 16 selection-anchor 688060 4
  M 11 on-focus-in 688145 4
  M 10 setup-item 688507 4a
  M 12 on-focus-out 689212 4
  K 23 selection-anchor#setter 689479 4
  M 12 rebuild-list 689973 4a
  J 15 selection-point 690659 4
  M 8 set-size 690744 4
  M 12 select-range 690862 4
  M 14 select-indexes 691558 4
  M 13 teardown-item 692110 4a
  B 7 default 692626 4
 end
 C 8 GroupBox 692822 4 
  O 15 title-area-skin 693524 4
  J 5 label 693969 4
  O 12 content-skin 694409 4
  J 8 contents 694974 4
  O 9 tab-index 695229 4
  M 3 add 695308 4
  M 12 remove-child 695402 4d
  O 12 takes-focus? 695763 4
  O 10 label-skin 696340 4
  J 13 style-element 696803 4
  M 5 clear 696883 4
  M 15 handle-mnemonic 696963 4
  M 24 create-default-ui-object 697043 2
  K 12 label#setter 697128 4
  B 7 default 697209 4
 end
 Q 24 alternate-row-background 698089 4
 C 11 TextDisplay 698330 4 
  M 11 unset-value 699221 4
  J 10 form-value 699304 4
  J 5 value 699385 4
  O 12 takes-focus? 699469 4
  K 12 value#setter 700050 4
  J 10 has-value? 700233 4
  J 13 style-element 700315 4
  O 6 halign 700399 4
  M 24 create-default-ui-object 700781 2
  B 7 default 700869 4
 end
 C 24 StringDataModelSelection 701240 4 
  M 8 get-text 701470 4
  I 5 range 701559 44
  J 6 empty? 701909 4
  B 7 default 701995 4
 end
 T 16 color-box-height 702274 11c
 C 40 {UndoItem-of tValue, tDataModel, tRange} 702380 1a 
 end
 C 28 PlaceholderCalendarControlUI 703560 1 
  M 21 note-holidays-changed 703675 4
 end
 C 19 MenuButtonAddParser 703867 1f 
  M 12 reinitialize 704064 2
  M 7 release 704145 2
  M 5 reset 704227 2
  I 7 graphic 704309 22
  I 3 box 704388 22
  M 16 process-add-args 704643 4
  M 20 non-keyword-init-arg 704740 2
  M 16 keyword-init-arg 704827 2
  M 12 add-at-index 705163 2
 end
 C 10 GroupBoxUI 705249 4a 
  B 7 default 705726 4
  J 9 group-box 706009 4
 end
 C 11 CheckButton 706283 4 
  Y 8 enabled? 710243 4
  K 12 value#setter 710425 4
  J 5 label 710503 4
  J 14 pending-value? 711032 4
  J 10 has-value? 711298 4
  O 12 checked-skin 711631 4
  M 17 get-test-property 712083 4
  M 11 unset-value 712173 4
  K 21 reactive-label#setter 712252 4
  J 10 form-value 712339 4
  I 11 check-value 712869 44
  J 5 value 713240 4
  J 5 style 713318 4
  M 21 set-value-with-events 714512 4
  J 14 test-type-name 715050 4
  O 11 show-focus? 715130 4
  O 11 label-inset 715301 4
  J 16 test-description 716385 4
  O 6 valign 716466 4
  K 12 style#setter 717268 4
  M 8 test-run 717358 4
  J 13 style-element 717466 4
  M 15 handle-mnemonic 717546 4
  M 24 create-default-ui-object 717833 2
  J 14 reactive-label 717917 4
  K 12 label#setter 718461 4
  B 7 default 718541 4
 end
 C 13 CheckButtonUI 720108 4a 
  M 16 draw-as-disabled 721458 2a
  M 15 do-press-action 721594 2
  M 24 draw-as-rollover-checked 721755 2a
  M 16 modify-for-focus 721903 2a
  M 24 draw-as-disabled-checked 722052 2a
  M 14 draw-as-normal 722200 2a
  M 23 draw-as-pressed-checked 722334 2a
  M 21 react-to-state-change 722481 4
  M 15 draw-as-checked 722864 2a
  M 15 draw-as-pressed 722999 2a
  M 16 draw-as-rollover 723134 2a
  B 7 default 723277 4
 end
 C 13 ListSeparator 723656 4 
  J 13 style-element 725199 4
  M 24 create-separator-graphic 725286 2
  B 7 default 725648 4
 end
 C 13 TreeSelection 725918 4 
  B 7 default 726123 4
  J 6 empty? 726242 4
  I 5 nodes 726323 40
 end
 C 19 StringSpliceMessage 726799 4 
  I 6 length 727111 42
  I 5 index 727259 42
  B 7 default 727404 4
 end
 C 19 StringRemoveMessage 727735 4 
  I 6 length 728042 42
  I 5 index 728182 42
  B 7 default 728329 4
 end
 C 21 RecordGridColumnGroup 728646 4 
  I 18 first-column-index 729170 42
  J 13 child-columns 729400 4
  M 22 notify-option-children 729911 4
  K 14 caption#setter 730246 4
  J 26 has-concrete-child-column? 730441 4
  K 11 grid#setter 730678 2
  J 7 caption 730916 4
  M 16 register-options 731272 4
  M 23 propagate-option-change 731387 2
  K 20 child-columns#setter 731502 4
  I 17 last-column-index 731612 42
  B 7 default 732351 4
 end
 C 17 MultiTabControlUI 732708 4a 
  M 17 note-pane-to-hide 733180 2a
  B 7 default 733510 4
 end
 C 13 BaseTextField 733806 4a 
  M 17 create-data-model 740358 2
  M 8 test-run 741219 4
  J 14 test-type-name 741331 4
  K 12 value#setter 741416 4
  J 9 writable? 741829 4
  O 9 editable? 742241 4
  M 17 get-test-property 743140 4
  B 7 default 743466 4
 end
 C 12 DropdownList 744873 4 
  B 7 default 750708 4
  M 11 unset-value 751831 4
  J 10 form-value 751916 4
  J 5 value 752355 4
  K 12 value#setter 752438 4
  J 10 has-value? 753348 4
  M 21 react-to-state-change 753432 4
  J 13 style-element 753517 4
  O 6 halign 753603 4
  J 6 prompt 753981 4
  M 24 create-default-ui-object 754539 2
  K 13 prompt#setter 754629 4
  K 17 data-model#setter 754716 4
 end
 C 12 MenuButtonUI 754805 4a 
  M 25 synchronize-menu-elements 755306 4a
  B 7 default 755727 4
  M 23 note-other-item-removed 756029 2a
  M 21 note-other-item-added 756691 2a
  M 22 note-menu-item-removed 757340 2a
  J 11 menu-button 758001 4
  M 11 on-focus-in 758310 4
  M 20 note-menu-item-added 758404 2a
  M 12 on-focus-out 759052 4
  M 18 note-items-cleared 759148 2a
 end
 C 23 PlaceholderMenuButtonUI 759897 1 
  M 18 note-items-cleared 760002 2
  M 25 synchronize-menu-elements 760087 4
  M 23 note-other-item-removed 760172 2
  M 20 note-menu-item-added 760266 2
  M 21 note-other-item-added 760360 2
  M 22 note-menu-item-removed 760454 2
 end
 C 9 Scrollbar 760645 4 
  O 21 shrink-when-disabled? 769121 4
  M 16 set-scroll-value 770058 4
  M 15 scroll-by-units 771003 4
  O 12 channel-skin 772098 4
  K 20 is-adjusting?#setter 772530 4
  O 9 thickness 772610 4
  M 15 fire-adjustment 773921 4
  O 10 quantized? 774496 4
  O 9 direction 774845 4
  O 3 min 775474 4
  O 8 unitsize 775976 4
  M 8 test-run 776399 4
  O 12 takes-focus? 776509 4
  O 10 thumb-skin 777085 4
  O 3 max 777515 4
  O 12 thumb-length 778253 4
  Y 15 display-context 780867 4
  J 13 style-element 780959 4
  O 9 blocksize 781040 4
  J 21 adjusted-thumb-length 781744 4
  M 24 create-default-ui-object 782208 2
  M 14 set-to-include 782729 4
  M 16 get-scroll-value 783544 4
  M 17 get-test-property 783953 4
  J 14 test-type-name 784334 4
  M 16 scroll-by-blocks 784513 4
  O 18 multi-unit-scroll? 785504 4
  J 19 effective-thickness 785724 4
  J 13 is-adjusting? 786265 4
  B 7 default 787142 4
 end
 C 10 MenuButton 787836 4 
  B 7 default 793187 4
  M 18 note-items-cleared 793569 2
  O 9 rollover? 794104 4
  M 20 note-menu-item-added 794576 2
  M 3 add 795376 4
  M 17 get-test-property 796911 4
  M 12 add-at-index 797005 2
  B 9 from-proc 799372 4
  M 25 synchronize-menu-elements 799889 4
  M 23 note-other-item-removed 800481 2
  M 21 note-other-item-added 801017 2
  M 8 test-run 801547 4
  J 14 test-type-name 801659 4
  M 22 note-menu-item-removed 801744 2
  O 11 show-focus? 802524 4
  O 10 menu-label 802737 4
  J 13 style-element 803085 4
  J 14 other-elements 803169 4
  J 13 menu-elements 803447 4
  I 9 menu-proc 803906 44c
  M 5 clear 804777 4
  M 25 get-menu-element-at-index 805449 4
  M 26 get-other-element-at-index 805972 4
  M 24 create-default-ui-object 806497 2
  M 6 remove 806585 4
  J 18 menu-element-count 808022 4
  J 19 other-element-count 808351 4
 end
 C 14 ListItemDragee 808779 4f 
  M 19 get-visuals-to-drag 809078 2
  B 7 default 809191 4
 end
 C 14 StringUndoItem 810020 1a 
  M 14 apply-internal 810178 2f
 end
 C 36 RichTextStringDataModelWritableRange 810493 4f 
  M 13 get-attribute 810770 4
  M 14 set-attributes 811450 4
  D 18 from-Range#factory 812042 4
  M 13 set-attribute 812464 4
  B 7 default 812809 4
 end
 C 19 RecordGridSelection 813286 4a 
  M 14 contains-cell? 813785 4a
  J 7 columns 814080 4a
  J 12 record-count 814248 4a
  M 16 contains-record? 814389 4a
  M 16 contains-column? 814558 4a
  J 12 region-count 814910 4a
  M 21 regions-contain-cell? 815051 4
  J 7 records 815611 4a
  J 7 regions 815953 4a
  J 12 column-count 816121 4a
  J 6 empty? 816262 4
 end
 C 25 PlaceholderTabContainerUI 816345 1 
  M 23 note-pane-to-be-removed 816454 2
  M 21 ensure-button-visible 816550 2
  M 21 note-pane-to-be-shown 816646 2
  M 15 note-pane-added 816742 2
  M 18 note-pane-modified 816838 2
 end
 C 22 PlaceholderDateFieldUI 817033 1 
 end
 C 30 ConstantRichTextStringUndoItem 817232 1f 
 end
 C 15 TreeModelChange 818126 4 
  B 7 default 818261 4
  I 11 change-type 818659 44c
  I 4 node 818862 44c
 end
 L 12 reset-button 819127 4
 C 20 PlaceholderMenuBarUI 819806 1 
  M 17 note-item-removed 819905 4
  M 18 note-items-cleared 819996 4
  M 15 note-item-added 820078 4
 end
 C 8 TreeNode 820263 4a 
  I 21 modifying-internally? 822550 22
  J 16 previous-sibling 823293 4
  M 13 notify-change 823752 2
  J 10 node-label 824896 4
  K 16 node-data#setter 825424 4
  J 9 node-data 825504 4
  J 13 has-children? 826171 4
  K 17 tree-model#setter 827031 4a
  J 12 next-sibling 827118 4
  J 10 read-only? 827661 4
  J 6 parent 828534 4a
  K 13 parent#setter 828787 4a
  D 15 default#factory 828873 4
  J 10 tree-model 829302 4a
 end
 C 25 PlaceholderDropdownListUI 829448 1 
  J 15 dropdown-height 829558 4
  M 15 change-dropdown 829649 4
  M 21 draw-as-current-value 829766 2
  M 14 draw-as-prompt 829854 2
 end
 C 16 BaseTabControlUI 830042 4a 
  M 11 on-focus-in 830530 4
  M 23 note-pane-to-be-removed 830629 2a
  M 21 note-pane-to-be-shown 831014 2a
  I 6 focus? 831324 22
  M 15 note-pane-added 831831 2a
  M 12 on-focus-out 832212 4
  M 18 note-pane-modified 832313 2a
  B 7 default 833049 4
 end
 C 12 TabAccordion 833344 4 
  O 8 animate? 834329 4
  J 13 style-element 834566 4
  O 15 tab-orientation 834749 4
  M 24 create-default-ui-object 834941 2
  B 7 default 835026 4
 end
 C 13 TextDisplayUI 836290 4a 
  B 7 default 836534 4
 end
 C 15 PasswordFieldUI 836743 4a 
  B 7 default 837629 4
 end
 C 21 RecordGridMoveCommand 837838 4a 
  I 11 record-grid 838384 22
  B 7 default 838564 4
 end
 C 21 PlaceholderMenuPaneUI 838924 1 
  M 17 note-item-removed 839025 4
  M 18 note-items-cleared 839117 4
  M 15 note-item-added 839200 4
  M 24 pointer-exited-contents? 839292 2
 end
 C 9 TreeModel 839493 4 
  J 13 batch-notify? 839694 4
  B 7 default 841510 4
  M 22 note-tree-model-change 842011 4
  M 10 walk-nodes 842934 4
  K 20 batch-notify?#setter 844002 4
  J 4 root 844082 4
  J 10 read-only? 844268 4
  K 17 read-only?#setter 844580 4
  K 11 root#setter 844660 4
 end
 C 63 {BaseTextControl-of tValue:Type, tDataModel:Type, tRange:Type } 844836 1as 
  J 9 selection 844990 4
  M 32 note-selection-context-activated 845301 4
  K 12 value#setter 845384 4a
  J 9 can-redo? 845467 4
  M 4 redo 845643 4
  M 29 replace-selection-with-string 845726 4
  I 14 pending-value? 845840 44
  M 28 become-active-from-traversal 846710 4
  K 16 max-chars#setter 847307 4
  M 22 record-typing-for-undo 847387 4
  M 17 create-data-model 848146 2a
  M 8 test-run 848446 4
  M 34 note-selection-context-deactivated 848558 4
  M 14 select-nothing 848641 4
  I 16 record-for-undo? 848723 44
  M 10 select-all 849436 4
  M 23 handle-observer-message 849663 2
  M 30 request-undo-stack-depth-limit 850165 4f
  J 14 selected-range 851296 4
  M 4 undo 852119 4
  J 10 has-value? 852202 4
  J 9 container 852376 4
  J 6 prompt 852460 4
  M 16 delete-selection 852914 4
  M 17 get-test-property 852997 4
  M 16 clear-undo-stack 853091 4
  M 12 on-focus-out 853588 4
  M 11 unset-value 853797 4
  K 17 data-model#setter 853879 4
  J 10 form-value 853966 4
  J 5 value 854319 4
  M 21 set-value-with-events 854498 4
  M 24 end-undo-typing-sequence 855244 4
  M 31 record-typing-deletion-for-undo 856113 4
  J 9 can-undo? 857078 4
  K 13 prompt#setter 857160 4
  J 10 data-model 857340 4
  J 9 max-chars 857781 4
 end
 C 10 RecordGrid 858414 4 
  M 20 on-selection-changed 875297 4
  O 25 display-record-selectors? 875496 4
  K 26 frozen-column-count#setter 875640 4
  Y 26 horizontal-grid-line-width 875922 4
  K 21 header-options#setter 876004 4
  M 24 note-row-options-changed 876102 4
  M 8 test-run 877330 4
  Y 24 vertical-grid-line-width 877452 4
  M 15 grid-objects-at 877534 4
  M 27 note-current-record-changed 878731 2
  J 14 header-options 878856 4
  K 23 frozen-row-count#setter 879611 4
  J 13 style-element 879692 4
  M 17 set-frozen-region 879776 4
  M 23 propagate-option-change 880596 4
  M 13 become-active 880710 4
  J 22 column-change-pending? 880814 4
  J 16 frozen-row-start 881037 4
  J 19 frozen-column-start 881359 4
  M 14 create-command 881684 4
  M 19 select-column-range 881783 4
  M 18 option-lookup-here 882084 4
  M 13 select-region 882225 4
  M 19 select-record-range 882813 4
  O 25 record-selection-enabled? 883375 4
  I 16 max-column-depth 883517 42
  M 15 deselect-region 883738 4
  M 25 refresh-automatic-columns 884121 2
  J 9 container 885098 4
  K 14 columns#setter 885183 4
  M 17 get-test-property 885288 4
  O 27 multiple-selection-enabled? 885383 4
  M 27 modify-last-selected-region 885764 4
  J 14 test-type-name 886334 4
  Y 24 alternate-row-background 886538 4
  K 15 key-spec#setter 886627 4
  K 26 frozen-column-start#setter 886834 4
  O 23 display-column-headers? 886915 4
  O 25 display-navigation-panel? 887057 4
  K 23 frozen-row-start#setter 887140 4
  O 16 filter-menu-proc 887221 4
  O 10 background 887374 4
  M 13 select-column 887563 4
  M 11 test-record 888095 4
  J 7 frozen? 888293 4
  O 22 select-current-record? 888476 4
  O 25 region-selection-enabled? 889958 4
  M 19 note-column-changed 890113 4
  B 7 default 891076 4
  J 9 selection 892383 4
  O 22 display-filler-column? 892480 4
  M 11 move-column 892828 4
  M 21 get-test-tabular-data 893543 4
  M 28 become-active-from-traversal 893689 4
  J 16 frozen-row-count 893793 4
  M 13 select-record 894233 4
  J 19 frozen-column-count 894712 4
  M 15 deselect-column 895029 4
  J 7 columns 895217 4
  O 25 column-selection-enabled? 896427 4
  M 21 note-record-set-event 896695 4
  M 14 select-nothing 896796 4
  M 10 select-all 896990 4
  K 13 filter#setter 897245 4
  O 19 row-background-spec 897699 4
  M 24 create-default-ui-object 898849 2
  K 19 base-columns#setter 899167 4
  M 27 get-test-tabular-attributes 899276 4
  Y 15 grid-line-color 899463 4
  O 18 automatic-columns? 899553 4
  M 16 delete-selection 901908 4
  J 2 ui 902443 4
  O 21 enclose-header-label? 902823 4
  M 15 deselect-record 902906 4
  M 21 on-context-menu-event 903341 4
  M 19 unset-frozen-region 903444 4
  J 12 base-columns 903601 4
  K 20 record-source#setter 904656 4
 end
 C 16 RecordGridColumn 905196 4 
  B 7 default 906347 4
  M 8 add-cell 906677 4
  I 10 field-name 907190 40
  J 9 selected? 907536 4
  M 22 notify-option-children 907863 4
  J 5 field 907978 4
  K 28 last-automatic-source#setter 908205 4
  J 21 last-automatic-source 908296 4
  M 11 remove-cell 908744 4
  M 16 register-options 909262 4
  M 23 propagate-option-change 909377 2
  O 5 width 909593 4
  K 17 automatic?#setter 910528 4
  O 10 background 910611 4
  J 10 automatic? 910795 4
 end
 C 27 RichTextAttributeUnsetValue 911666 4f 
  D 15 default#factory 911962 4
 end
 C 28 StringDataModelWritableRange 912362 4 
  M 22 insert-string-at-point 912630 4
  M 12 delete-range 913066 4
  D 18 from-Range#factory 913277 4
  B 7 default 913525 4
 end
 C 16 SelectionControl 914032 4a 
  M 12 select-index 914222 4a
  M 24 select-index-with-events 914415 4a
  M 18 deselect-all-items 914657 4a
 end
 C 24 PlaceholderCheckButtonUI 914791 1 
  M 16 draw-as-disabled 914894 2
  M 16 modify-for-focus 914976 2
  M 24 draw-as-rollover-checked 915070 2
  M 24 draw-as-disabled-checked 915152 2
  M 14 draw-as-normal 915234 2
  M 23 draw-as-pressed-checked 915316 2
  M 15 draw-as-checked 915398 2
  M 15 draw-as-pressed 915480 2
  M 16 draw-as-rollover 915562 2
 end
 C 15 DefaultTreeNode 915738 4 
  M 6 splice 916561 4
  J 17 internal-children 916679 2
  M 6 append 917192 4
  M 6 filter 917392 4
  J 6 parent 917504 4
  K 13 parent#setter 918330 4
  M 11 filter-keys 918416 4
  J 10 tree-model 918523 4
  J 4 size 919069 4
  M 11 clone-range 919149 4
  M 4 push 919271 4
  M 6 concat 919364 4
  M 4 sort 919575 4
  K 17 tree-model#setter 919718 4
  M 6 insert 919805 4
  M 3 set 919909 4
  M 7 reverse 920019 4
  M 12 top-of-stack 920101 4
  M 5 clear 920187 4
  M 13 get-if-exists 920269 4
  M 6 remove 920370 4
  M 3 pop 920507 4
  B 7 default 920593 4
 end
 C 22 PlaceholderScrollbarUI 920960 1 
 end
 C 20 PlaceholderListBoxUI 921157 1 
  M 20 notify-item-selected 921262 4
  M 10 setup-item 921364 4
  M 12 rebuild-list 921457 4
  M 13 teardown-item 921545 4
 end
 C 10 TextAreaUI 921738 4a 
  B 7 default 921960 4
 end
 C 15 DefaultTreeIcon 922166 4a 
  M 7 refresh 923070 4
  I 4 item 923555 41
 end
 C 21 PlaceholderComboBoxUI 923809 1 
  J 15 dropdown-height 923915 4
  M 15 change-dropdown 924006 4
  M 21 draw-as-current-value 924123 2
  M 16 get-visible-text 924211 4
  M 14 draw-as-prompt 924301 2
 end
 C 21 SelectedIndexIterator 924489 1f 
  M 8 read-one 924604 4
 end
 C 15 MultiTabControl 924825 4a 
  M 9 show-pane 927353 4
  M 8 test-run 927701 4
  J 14 test-type-name 927818 4
  M 20 remove-pane-at-index 927908 4
  M 18 hide-pane-at-index 929063 4
  M 8 showing? 929598 4
  M 9 hide-pane 929699 4
  M 18 show-pane-at-index 930049 4
  B 7 default 930469 4
 end
 C 12 LazyTreeNode 930824 4a 
  J 18 children-computed? 932451 2
  M 16 refresh-children 933292 4
  M 16 compute-children 933722 2a
  J 17 internal-children 935831 2
  K 25 children-computed?#setter 936352 2
  B 7 default 936433 4
 end
 C 20 StringDataModelRange 936673 4 
  K 13 anchor#setter 940136 2
  J 5 point 940319 4
  J 4 size 940673 4
  D 18 from-Range#factory 940819 4
  M 9 to-String 941042 4
  J 6 anchor 941370 4
  K 12 point#setter 942207 2
  J 5 start 942292 4
  J 10 collapsed? 942607 4
  M 23 handle-observer-message 942832 2
  I 10 data-model 942950 44c
  J 3 end 943155 4
  B 7 default 943475 4
 end
 C 28 TypingRichTextStringUndoItem 944124 1f 
  M 13 set-attribute 945010 2f
 end
 C 14 RecordGridCopy 945861 4 
  J 8 enabled? 946419 4
  J 7 context 946640 4
  M 7 execute 946729 2
  B 7 default 946813 4
 end
end
