if there is no listMessage, try aspect to get models text
authorClaus Gittinger <cg@exept.de>
Fri, 26 Apr 1996 15:56:21 +0200
changeset 587 19deffec383d
parent 586 032b3245e53a
child 588 2d6fc80017df
if there is no listMessage, try aspect to get models text
ListView.st
SelListV.st
SelectionInListView.st
--- a/ListView.st	Thu Apr 25 19:34:16 1996 +0200
+++ b/ListView.st	Fri Apr 26 15:56:21 1996 +0200
@@ -194,6 +194,7 @@
         top open
 
 
+
       globally set the fg/bg colors:
 
         |top l|
@@ -209,6 +210,7 @@
         top open
 
 
+
       non-string entries:
 
         |top list l|
@@ -223,6 +225,65 @@
         l list:list.
 
         top open
+
+
+
+      using a model (default listMessage is aspectMessage):
+
+        |top model l theModelsText|
+
+        model := Plug new.
+        model respondTo:#modelsAspect
+                   with:[ theModelsText ].
+
+        top := StandardSystemView new.
+        top extent:100@200.
+
+        l := ListView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
+        l model:model.
+        l aspect:#modelsAspect.
+
+        top open.
+
+        Delay waitForSeconds:3.
+        theModelsText := #('foo' 'bar' 'baz').
+        model changed:#modelsAspect.
+
+
+
+      using a model with different aspects
+      for two listViews:
+
+        |top model l1 l2 plainText|
+
+        plainText := #('').
+
+        model := Plug new.
+        model respondTo:#modelsUppercaseText
+                   with:[ plainText asStringCollection 
+                              collect:[:l | l asUppercase]].
+        model respondTo:#modelsLowercaseText
+                   with:[ plainText asStringCollection 
+                              collect:[:l | l asLowercase]].
+
+        top := StandardSystemView extent:200@200.
+
+        l1 := ListView origin:0.0 @ 0.0 corner:1.0 @ 0.5 in:top.
+        l1 model:model.
+        l1 aspect:#modelsAspect.
+        l1 listMessage:#modelsUppercaseText.
+
+        l2 := ListView origin:0.0 @ 0.5 corner:1.0 @ 1.0 in:top.
+        l2 model:model.
+        l2 aspect:#modelsAspect.
+        l2 listMessage:#modelsLowercaseText.
+
+        top open.
+
+        Delay waitForSeconds:3.
+        plainText := #('foo' 'bar' 'baz').
+        model changed:#modelsAspect.
+        
 "
 ! !
 
@@ -552,33 +613,36 @@
 !
 
 removeIndex:lineNr
-    "delete line, update view"
+    "delete a line, redraw the view"
 
     |visLine w
      srcY "{ Class: SmallInteger }" |
 
     (self removeIndexWithoutRedraw:lineNr) ifFalse:[^ self].
+
     "
      is there a need to redraw ?
     "
     shown ifFalse:[^ self].
     visLine := self listLineToVisibleLine:lineNr.
     visLine notNil ifTrue:[
-	w := self widthForScrollBetween:lineNr and:(firstLineShown + nLinesShown).
-	srcY := topMargin + (visLine * fontHeight).
-	self catchExpose.
-	self copyFrom:self x:textStartLeft y:srcY
-			 toX:textStartLeft y:(srcY - fontHeight)
-		       width:w height:((nLinesShown - visLine) * fontHeight).
-	self redrawVisibleLine:nFullLinesShown.
-	"
-	 redraw last partial line - if any
-	"
-	(nFullLinesShown ~~ nLinesShown) ifTrue:[
-	    self redrawVisibleLine:nLinesShown
-	].
-	self waitForExpose
+        w := self widthForScrollBetween:lineNr and:(firstLineShown + nLinesShown).
+        srcY := topMargin + (visLine * fontHeight).
+        self catchExpose.
+        self copyFrom:self x:textStartLeft y:srcY
+                         toX:textStartLeft y:(srcY - fontHeight)
+                       width:w height:((nLinesShown - visLine) * fontHeight).
+        self redrawVisibleLine:nFullLinesShown.
+        "
+         redraw last partial line - if any
+        "
+        (nFullLinesShown ~~ nLinesShown) ifTrue:[
+            self redrawVisibleLine:nLinesShown
+        ].
+        self waitForExpose
     ]
+
+    "Modified: 26.4.1996 / 13:44:47 / cg"
 !
 
 removeIndexWithoutRedraw:lineNr
@@ -1443,18 +1507,28 @@
 !
 
 getListFromModel
-    "ask my model (if any) for the text via the listMsg."
-
-    |text|
-
-    (model notNil
-    and:[listMsg notNil]) ifTrue:[
-	text := model perform:listMsg.
-	text notNil ifTrue:[
-	    text := text asStringCollection.
-	].
-	self list:text 
+    "ask my model (if any) for the text via the listMsg.
+     If there is no listMessage, try aspect for backward compatibility."
+
+    |text msg|
+
+    model notNil ifTrue:[
+        msg := listMsg.
+        msg isNil ifTrue:[
+            msg := aspectMsg
+        ].
+
+
+        msg notNil ifTrue:[
+            text := model perform:msg.
+            text notNil ifTrue:[
+                text := text asStringCollection.
+            ].
+            self list:text 
+        ]
     ].
+
+    "Modified: 26.4.1996 / 14:09:42 / cg"
 !
 
 lineOfCharacterPosition:charPos
@@ -1814,6 +1888,16 @@
 
 !
 
+lineIsFullyVisible:line
+    "is line fully visible?"
+
+    (line >= firstLineShown
+     and:[ line < (firstLineShown + nFullLinesShown) ]) ifTrue:[ ^ true ].
+    ^ false.
+
+    "Created: 26.4.1996 / 14:36:45 / cg"
+!
+
 lineIsVisible:line
     "is line visible?"
 
@@ -2970,5 +3054,5 @@
 !ListView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/ListView.st,v 1.77 1996-04-25 17:32:39 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ListView.st,v 1.78 1996-04-26 13:55:45 cg Exp $'
 ! !
--- a/SelListV.st	Thu Apr 25 19:34:16 1996 +0200
+++ b/SelListV.st	Fri Apr 26 15:56:21 1996 +0200
@@ -2089,26 +2089,34 @@
 !
 
 getListFromModel
-    "if I have a model and a listMsg, get my list from it"
-
-    |text|
+    "if I have a model, get my list from it using the listMessage.
+     If listMessage is nil, try aspectMessage for backward compatibilty."
+
+    |text msg|
 
     model notNil ifTrue:[
-	listMsg notNil ifTrue:[
-	    items := model perform:listMsg.
-	    items notNil ifTrue:[
-		printItems ifTrue:[
-		    text := items collect:[:element | element printString]
-		] ifFalse:[
-		    text := items
-		].
+        msg := listMsg.
+        msg isNil ifTrue:[
+            msg := aspectMsg
+        ].
+
+        listMsg notNil ifTrue:[
+            items := model perform:msg.
+            items notNil ifTrue:[
+                printItems ifTrue:[
+                    text := items collect:[:element | element printString]
+                ] ifFalse:[
+                    text := items
+                ].
 "/                text notNil ifTrue:[
 "/                    text := text asStringCollection.
 "/                ]
-	    ].
-	    self list:text keepSelection:true. "/ expandTabs:false
-	].
+            ].
+            self list:text keepSelection:true. "/ expandTabs:false
+        ].
     ].
+
+    "Modified: 26.4.1996 / 14:09:04 / cg"
 !
 
 getSelectionFromModel
@@ -2723,5 +2731,5 @@
 !SelectionInListView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.65 1996-04-25 17:33:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.66 1996-04-26 13:56:21 cg Exp $'
 ! !
--- a/SelectionInListView.st	Thu Apr 25 19:34:16 1996 +0200
+++ b/SelectionInListView.st	Fri Apr 26 15:56:21 1996 +0200
@@ -2089,26 +2089,34 @@
 !
 
 getListFromModel
-    "if I have a model and a listMsg, get my list from it"
-
-    |text|
+    "if I have a model, get my list from it using the listMessage.
+     If listMessage is nil, try aspectMessage for backward compatibilty."
+
+    |text msg|
 
     model notNil ifTrue:[
-	listMsg notNil ifTrue:[
-	    items := model perform:listMsg.
-	    items notNil ifTrue:[
-		printItems ifTrue:[
-		    text := items collect:[:element | element printString]
-		] ifFalse:[
-		    text := items
-		].
+        msg := listMsg.
+        msg isNil ifTrue:[
+            msg := aspectMsg
+        ].
+
+        listMsg notNil ifTrue:[
+            items := model perform:msg.
+            items notNil ifTrue:[
+                printItems ifTrue:[
+                    text := items collect:[:element | element printString]
+                ] ifFalse:[
+                    text := items
+                ].
 "/                text notNil ifTrue:[
 "/                    text := text asStringCollection.
 "/                ]
-	    ].
-	    self list:text keepSelection:true. "/ expandTabs:false
-	].
+            ].
+            self list:text keepSelection:true. "/ expandTabs:false
+        ].
     ].
+
+    "Modified: 26.4.1996 / 14:09:04 / cg"
 !
 
 getSelectionFromModel
@@ -2723,5 +2731,5 @@
 !SelectionInListView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.65 1996-04-25 17:33:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.66 1996-04-26 13:56:21 cg Exp $'
 ! !