DialogBox.st
changeset 4556 8b2117cb1f7b
parent 4545 ce6a7f5f5583
child 4581 b46c4e19de57
--- a/DialogBox.st	Wed Apr 03 21:43:55 2013 +0200
+++ b/DialogBox.st	Wed Apr 03 21:53:14 2013 +0200
@@ -3427,7 +3427,7 @@
 
 !DialogBox class methodsFor:'fill in the blank dialogs'!
 
-forRequestText:title editViewClass:editViewClass lines:numLines columns:numCols initialAnswer:initialText model:textModel
+forRequestText:title editViewClass:editViewClass lines:numLines columns:numCols initialAnswer:initialText initialSelection:anIntervalOrNil model:textModel
     "return a dialog asking for multiline text.
      The box is not shown yet, for further customization"
 
@@ -3435,18 +3435,36 @@
         forRequestText:title 
         editViewClass:EditTextView
         lines:numLines columns:numCols 
-        initialAnswer:initialText model:textModel
+        initialAnswer:initialText 
         setupWith:
-            [:textView :dialog| 
-                textView model:textModel.
-                textView acceptChannel:(dialog acceptChannel).
-                
+            [:textView :dialog|
+                initialText notEmptyOrNil ifTrue:[
+                    textModel value:initialText
+                ].
+                textView scrolledView
+                    model:textModel;
+                    acceptChannel:(dialog acceptChannel).
+                anIntervalOrNil notNil ifTrue:[
+                    textView scrolledView selectFromCharacterPosition:anIntervalOrNil start to:anIntervalOrNil stop.
+                ].
             ]
 
     "Modified: / 12-10-2006 / 13:59:21 / cg"
 !
 
-forRequestText:title editViewClass:editViewClass lines:numLines columns:numCols initialAnswer:initialText model:textModel setupWith:aSetupBlockOrNil
+forRequestText:title editViewClass:editViewClass lines:numLines columns:numCols initialAnswer:initialText model:textModel
+    "return a dialog asking for multiline text.
+     The box is not shown yet, for further customization"
+
+    ^ self
+        forRequestText:title 
+        editViewClass:editViewClass 
+        lines:numLines columns:numCols 
+        initialAnswer:initialText initialSelection:nil      
+        model:textModel
+!
+
+forRequestText:title editViewClass:editViewClass lines:numLines columns:numCols initialAnswer:initialText setupWith:aSetupBlockOrNil
     "return a dialog asking for multiline text.
      The box is not shown yet, for further customization"
 
@@ -3459,6 +3477,9 @@
                         withNumberOfLines:numLines 
                         hScrollable:true 
                         vScrollable:true.
+    initialText notEmptyOrNil ifTrue:[
+        textView contents:initialText
+    ].
     dialog width:(textView preferredExtentForLines:numLines cols:numCols) x.
     dialog addAbortAndOkButtons.
     dialog okButton isReturnButton:false.
@@ -3468,9 +3489,6 @@
     aSetupBlockOrNil notNil ifTrue:[
         aSetupBlockOrNil valueWithOptionalArgument:textView and:dialog
     ].
-    textModel notNil ifTrue:[
-        textModel value:initialText.
-    ].
 
     ^ dialog
 
@@ -3509,6 +3527,32 @@
     "Created: / 12-10-2006 / 13:59:27 / cg"
 !
 
+forRequestText:title lines:numLines columns:numCols initialAnswer:initialText initialSelection:anIntervalOrNil model:textModel
+    "return a dialog asking for multiline text.
+     The box is not shown yet, for further customization"
+
+    ^ self
+        forRequestText:title 
+        editViewClass:EditTextView
+        lines:numLines columns:numCols 
+        initialAnswer:initialText initialSelection:anIntervalOrNil
+        model:textModel
+
+    "
+     |dialog textHolder|
+
+     textHolder := ValueHolder new.
+     dialog := Dialog forRequestText:'foo' lines:10 columns:40 initialAnswer:'hello' model:textHolder.
+     dialog open.
+     dialog accepted ifTrue:[
+        ^ textHolder value
+     ].
+     ^ nil           
+    "
+
+    "Modified: / 12-10-2006 / 12:45:47 / cg"
+!
+
 forRequestText:title lines:numLines columns:numCols initialAnswer:initialText model:textModel
     "return a dialog asking for multiline text.
      The box is not shown yet, for further customization"
@@ -3517,7 +3561,8 @@
         forRequestText:title 
         editViewClass:EditTextView
         lines:numLines columns:numCols 
-        initialAnswer:initialText model:textModel
+        initialAnswer:initialText initialSelection:nil
+        model:textModel
 
     "
      |dialog textHolder|
@@ -3820,7 +3865,7 @@
 
 request:aString displayAt:aPoint centered:centered action:resultAction 
 initialAnswer:initial okLabel:okLabel cancelLabel:cancelLabel title:titleString 
-onCancel:cancelValue list:listToSelectFrom initialSelection:anInterval
+onCancel:cancelValue list:listToSelectFrom initialSelection:anIntervalOrNil
     "launch a Dialog, which allows user to enter a string.
      The dialogs window is titled titleString, or the default (if nil).
      If aPoint is nonNil, the box is shown there, optionally centered around it.
@@ -3841,7 +3886,7 @@
         title:titleString 
         onCancel:cancelValue 
         list:listToSelectFrom 
-        initialSelection:anInterval
+        initialSelection:anIntervalOrNil
         entryCompletionBlock:nil
 
     "
@@ -3905,7 +3950,7 @@
 
 request:aString displayAt:aPoint centered:centeredOrNil action:resultAction 
 initialAnswer:initial okLabel:okLabel cancelLabel:cancelLabel title:titleString 
-onCancel:cancelValue list:listToSelectFrom initialSelection:anInterval
+onCancel:cancelValue list:listToSelectFrom initialSelection:anIntervalOrNil
 entryCompletionBlock:entryCompletionBlock
     "launch a Dialog, which allows user to enter a string.
      The dialogs window is titled titleString, or the default (if nil).
@@ -3925,8 +3970,8 @@
         box list:listToSelectFrom.
     ].
     initial notNil ifTrue:[ box initialText:initial printString ].
-    anInterval notNil ifTrue:[
-        box selectFrom:anInterval start to:anInterval stop.
+    anIntervalOrNil notNil ifTrue:[
+        box selectFromCharacterPosition:anIntervalOrNil start to:anIntervalOrNil stop.
     ].
     box abortAction:[:val | box destroy. ^ cancelValue value].
     okLabel notNil ifTrue:[
@@ -4180,7 +4225,7 @@
     "Modified: 29.5.1996 / 14:30:05 / cg"
 !
 
-request:aString initialAnswer:initial initialSelection:anInterval
+request:aString initialAnswer:initial initialSelection:anIntervalOrNil
     "launch a Dialog, which allows user to enter something.
      Return the entered string (may be empty string) or nil (if cancel was pressed)"
 
@@ -4195,7 +4240,7 @@
         title:nil 
         onCancel:nil 
         list:nil 
-        initialSelection:anInterval
+        initialSelection:anIntervalOrNil
         entryCompletionBlock:nil
 
     "
@@ -4684,33 +4729,64 @@
      Return a stringCollection or nil if cancelled."
 
     ^ self 
-        requestText:title lines:10 columns:40 initialAnswer:''
+        requestText:title initialAnswer:'' initialSelection:nil
 
     "
      Dialog requestText:'Bla'
     "
 !
 
-requestText:title initialAnswer:initialAnswer
+requestText:title initialAnswer:initialAnswer 
     "open a dialog asking for multiline text.
      Return a stringCollection or nil if cancelled."
 
     ^ self 
-        requestText:title lines:10 columns:60 initialAnswer:initialAnswer
+        requestText:title initialAnswer:initialAnswer initialSelection:nil
 
     "
      Dialog requestText:'Bla' initialAnswer:'Hello world'
     "
 !
 
+requestText:title initialAnswer:initialAnswer initialSelection:anIntervalOrNil
+    "open a dialog asking for multiline text.
+     Return a stringCollection or nil if cancelled."
+
+    ^ self 
+        requestText:title lines:10 columns:60 initialAnswer:initialAnswer initialSelection:anIntervalOrNil
+
+    "
+     Dialog requestText:'Bla' initialAnswer:'Hello world' initialSelection:(1 to:5)
+    "
+!
+
 requestText:title lines:numLines columns:numCols initialAnswer:initialText
     "open a dialog asking for multiline text.
      Return a stringCollection or nil if cancelled."
 
+    ^ self
+        requestText:title lines:numLines columns:numCols 
+        initialAnswer:initialText initialSelection:nil
+
+    "
+     Dialog requestText:'Bla' lines:8 columns:40 initialAnswer:'hello world'
+    "
+
+   "Modified: / 18.8.2000 / 21:45:41 / cg"
+!
+
+requestText:title lines:numLines columns:numCols initialAnswer:initialText initialSelection:anIntervalOrNil
+    "open a dialog asking for multiline text.
+     Return a stringCollection or nil if cancelled."
+
     |dialog textHolder|
 
     textHolder := ValueHolder new.
-    dialog := Dialog forRequestText:title lines:numLines columns:numCols initialAnswer:initialText model:textHolder.
+    dialog := Dialog 
+                forRequestText:title editViewClass:EditTextView
+                lines:numLines columns:numCols 
+                initialAnswer:initialText initialSelection:anIntervalOrNil 
+                model:textHolder.
     dialog open.
     dialog accepted ifTrue:[
         ^ textHolder value
@@ -4718,8 +4794,12 @@
     ^ nil
 
     "
-     Dialog requestText:'Bla' lines:8 columns:40 initialAnswer:'hello world'
-    "
+     Dialog 
+        requestText:'Bla' lines:8 columns:40 initialAnswer:'hello world'
+
+     Dialog 
+        requestText:'Bla2' lines:8 columns:40 initialAnswer:'hello world' initialSelection:(1 to:5)
+   "
 
    "Modified: / 18.8.2000 / 21:45:41 / cg"
 ! !
@@ -9799,11 +9879,11 @@
 !DialogBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.334 2013-03-30 19:14:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.335 2013-04-03 19:53:14 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.334 2013-03-30 19:14:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.335 2013-04-03 19:53:14 cg Exp $'
 ! !