<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Mark,<br>
    <br>
    Thanks for this initiative. I've just pushed your comments.<br>
    <br>
    Cheers!<br>
    <br>
    On 4/2/2025 4:11 PM, Mark Volkmann via Cuis-dev wrote:
    <blockquote
cite="mid:CAFfRWnXXm4zE==J4LY-bKB0aZOqMOPEm01vNYnsFFcuxWEN5_w@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>As a follow up to the Cuis meeting today, here's my initial
          progress on two of the comments. I want to get some feedback
          on this before I add more comments to the methods of this
          class. Fire away!</div>
        <div><br>
        </div>
        <div>For the TextModelMorph class I have the following:</div>
        <div><br>
        </div>
        <div><font face="monospace">This is a morph that enables users
            to view and edit text.<br>
            <br>
            The main features of this class include:</font></div>
        <div><font face="monospace">- using either a TextModel or
            TextProvider to hold the text being edited<br>
            - styling and text wrapping (provided by InnerTextMorph)<br>
            - scrolling with scrollbars (provided by superclass
            PluggableScrollPane)<br>
            <br>
            There are two approaches for creating instances. One
            approach is to hold the text value in a TextModel object.
            The class methods withModel: and withText: support this. The
            other approach is to hold the text value in a TextProvider.
            The class methods that begin with textProvider: support
            this. For examples, see the method comments in those class
            methods.<br>
            <br>
            The default background color is white. A border is only
            displayed when it has focus. One way to make its bounds
            apparent when it doesn't have focus is to set the background
            color of the parent component. Another way is to set the
            background color of this morph.<br>
            <br>
            By default, words that would extend past the right side wrap
            to the next line. To prevent wrapping, send an instance
            #wrapFlag: with an argument of false.<br>
            <br>
            The default size is 200 by 100, set in the initialize method
            of the superclass PluggableMorph. Depending on the font, the
            default size displays around four lines of wrapping text
            with around 17 characters per line. To change the size, send
            an instance #morphExtent: with a Point argument that
            specifies a width and height. The size should include space
            for scroll bars if they may be needed. Setting the height to
            zero causes it to actually be set to the height required for
            a single line in the current font.</font><br>
          <font face="monospace"><br>
            Related classes include TextModel, TextProvider,
            PluggableScrollPane, and InnerTextMorph.<br>
          </font></div>
        <div><br>
        </div>
        <div>For the class method testProvider:textGetter:textSetter: I
          have this:</div>
        <div><br>
        </div>
        <div><font face="monospace"> Answer a new instance that gets the
            text from aTextProvider.<br>
            <br>
            aTextProvider must have corresponding getter and setter
            methods<br>
            that manage the text to be edited.<br>
            For example, we can use an instance of the Exception class<br>
            which has the methods messageText and messageText:.<br>
            <br>
            Select and evaluate the code below.<br>
            In the Inspector that appears, select the messageText
            instance variable.<br>
            In the TextModelMorph that appears, change the text</font></div>
        <div><font face="monospace">and note how it updates in the
            Inspector.<br>
            <br>
            | exception morph |<br>
            exception := Exception new.<br>
            exception messageText: 'initial'.<br>
            exception inspect.<br>
            morph := TextModelMorph textProvider: exception textGetter:
            #messageText textSetter: #messageText:.<br>
            morph acceptOnAny: true.<br>
            morph openInWorld.</font><br>
          <br>
        </div>
        <span class="gmail_signature_prefix">-- </span><br>
        <div dir="ltr" class="gmail_signature"
          data-smartmail="gmail_signature">
          <div dir="ltr">
            <div>
              <div dir="ltr">
                <div>
                  <div dir="ltr">
                    <div dir="ltr">
                      <div><font face="arial, helvetica, sans-serif">R.
                          Mark Volkmann</font></div>
                      <div><span style="font-size: 12.8px;"><font
                            face="arial, helvetica, sans-serif">Object
                            Computing, Inc.</font></span></div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich</pre>
  </body>
</html>