Merged 78099a0b25d2 and 69a5bff7b5cd (branch default - CVS HEAD) text-view-selection-refactoring
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 27 Sep 2013 23:01:16 +0100
branchtext-view-selection-refactoring
changeset 4851 6cebb40eb268
parent 4850 78099a0b25d2 (current diff)
parent 4801 69a5bff7b5cd (diff)
child 4852 04fe7fca9320
Merged 78099a0b25d2 and 69a5bff7b5cd (branch default - CVS HEAD)
EditTextView.st
TextView.st
libInit.cc
libwidg.rc
mingwmake.bat
vcmake.bat
--- a/EditTextView.st	Mon Sep 23 14:20:54 2013 +0100
+++ b/EditTextView.st	Fri Sep 27 23:01:16 2013 +0100
@@ -22,7 +22,7 @@
 		st80Mode disableIfInvisible cursorMovementWhenUpdating learnMode
 		learnedMacro cursorLineHolder cursorColHolder tabRequiresControl
 		undoSupport lastStringFromReplaceForNextSearch
-		lastReplacementInfo completionService'
+		lastReplacementInfo completionSupport'
 	classVariableNames:'DefaultCursorForegroundColor DefaultCursorBackgroundColor
 		DefaultCursorType DefaultCursorNoFocusForegroundColor
 		DefaultCursorTypeNoFocus LastColumnNumberForSort Macros'
@@ -467,8 +467,10 @@
 
 !EditTextView class methodsFor:'defaults'!
 
-codeCompletionServiceClass
-    ^ nil "/ redefinable by subclass which know what kind of text they deal with
+defaultCompletionSupportClass
+    ^ nil
+
+    "Created: / 26-09-2013 / 17:59:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 st80Mode
@@ -827,6 +829,20 @@
 
 !EditTextView methodsFor:'accessing'!
 
+completionSupport
+    ^ completionSupport
+!
+
+completionSupport:anEditTextViewCompletionSupport
+    completionSupport := anEditTextViewCompletionSupport.
+!
+
+completionSupportClass
+    ^ self class defaultCompletionSupportClass
+
+    "Created: / 26-09-2013 / 17:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 editedClass
     |cm|
 
@@ -1137,6 +1153,13 @@
     "Created: 14.2.1997 / 17:35:39 / cg"
 !
 
+reallyModifiedChannel
+    "return the valueHolder holding true if text was really modified.
+     For compatibility with views which use the modified flag for syntax highlighting."
+
+    ^ self modifiedChannel
+!
+
 st80Mode:aBoolean
     "set/clear the st80Mode flag.
      If on, the cursor wraps at the line end (like in vi or st80);
@@ -2927,7 +2950,7 @@
     ].
 
     "/ delete right rest of 1st line
-    self deleteCharsAtLine:startLine fromCol:startCol.
+    self deleteCharsAtLine:startLine fromCol:(startCol max:1).
 
     "/ delete the inner lines ...
     endLine > (startLine + 1) ifTrue:[
@@ -4505,9 +4528,9 @@
     hasKeyboardFocus := true.
     dragIsActive := false.
 
-    completionService notNil ifTrue:[ 
+    completionSupport notNil ifTrue:[ 
         "/ also give that guy a chance to close its popup view
-        completionService buttonPress:button x:x y:y
+        completionSupport buttonPress:button x:x y:y
     ].
 
     cursorShown ifTrue: [
@@ -4790,14 +4813,16 @@
     (immediateCompletion 
     or:[UserPreferences current codeCompletionOnControlKey
     or:[UserPreferences current codeCompletionOnTabKey]]) ifTrue:[
-        completionService isNil ifTrue:[
-            self initializeCodeCompletionService.            
+        completionSupport isNil ifTrue:[
+            self initializeCompletionSupport.
         ].
-    ] ifFalse:[
-        completionService := nil
-    ].
-    completionService notNil ifTrue:[
-        (completionService handleKeyPress:key x:x y:y) ifTrue:["eaten" ^ self].
+    ].
+    "/ JV: why setting it to nil here?
+"/    ifFalse:[
+"/        completionService := nil
+"/    ].
+    completionSupport notNil ifTrue:[
+        (completionSupport handleKeyPress:key x:x y:y) ifTrue:["eaten" ^ self].
     ].
 
     (key == #LearnKeyboardMacro) ifTrue:[
@@ -4856,7 +4881,7 @@
 "/          ].
         ].
         true "immediateCompletion" ifTrue:[ 
-            completionService notNil ifTrue:[ completionService postKeyPress:key].
+            completionSupport notNil ifTrue:[ completionSupport postKeyPress:key].
         ].
         ^ self
     ].
@@ -5161,7 +5186,7 @@
 
     "Modified: / 06-02-1998 / 11:59:59 / stefan"
     "Modified: / 14-07-2011 / 12:08:28 / cg"
-    "Modified: / 26-08-2013 / 17:50:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-09-2013 / 17:52:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 executeKeyboardMacro:cmdMacro
@@ -5348,7 +5373,7 @@
             self selectFromLine:selectionStartLine col:selectionStartCol toLine:cursorLine col:cursorCol-1.
         ].
     ].
-    completionService notNil ifTrue:[ completionService postKeyPress:keyArg ].
+    completionSupport notNil ifTrue:[ completionSupport postKeyPress:keyArg ].
 
     "Modified (comment): / 25-01-2012 / 00:30:11 / cg"
     "Modified: / 30-08-2013 / 20:10:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -5422,8 +5447,8 @@
     ].
 
     hasKeyboardFocus ifFalse:[
-        completionService notNil ifTrue:[
-            completionService editViewLostFocus.
+        completionSupport notNil ifTrue:[
+            completionSupport editViewLostFocus.
         ].
     ].
 
@@ -5597,10 +5622,6 @@
 
 !EditTextView methodsFor:'initialization'!
 
-codeCompletionServiceClass
-    ^ self class codeCompletionServiceClass
-!
-
 fetchDeviceResources
     "fetch device colors, to avoid reallocation at redraw time"
 
@@ -5686,19 +5707,21 @@
     undoSupport := UndoSupport for:self.
 !
 
-initializeCodeCompletionService
-    |serviceClass|
-
-    completionService isNil ifTrue:[
-        (serviceClass := self codeCompletionServiceClass) notNil ifTrue:[
-            completionService := serviceClass for:self.            
+initializeCompletionSupport
+    |supportClass|
+
+    completionSupport isNil ifTrue:[
+        (supportClass := self completionSupportClass) notNil ifTrue:[
+            completionSupport := supportClass for:self.            
         ].
     ].
+
+    "Created: / 26-09-2013 / 17:51:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 release
-    completionService notNil ifTrue:[
-        completionService release
+    completionSupport notNil ifTrue:[
+        completionSupport release
     ].
     super release
 ! !
@@ -8475,11 +8498,11 @@
 !EditTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.584 2013-09-20 15:28:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.587 2013-09-26 17:35:11 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.584 2013-09-20 15:28:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.587 2013-09-26 17:35:11 vrany Exp $'
 !
 
 version_HG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EditTextViewCompletionSupport.st	Fri Sep 27 23:01:16 2013 +0100
@@ -0,0 +1,291 @@
+"{ Package: 'stx:libwidg' }"
+
+Object subclass:#EditTextViewCompletionSupport
+	instanceVariableNames:'completionView completionProcess editView autoSelect'
+	classVariableNames:'LastCompletions'
+	poolDictionaries:''
+	category:'Views-Text'
+!
+
+!EditTextViewCompletionSupport class methodsFor:'documentation'!
+
+documentation
+"
+    An abstract supperclass to support completion in text views.
+    Individual completion engines may create a subclass of 
+    EditTextCompletionSupport and customize it.
+
+    Basucally, they have to implement #computeCompletions
+
+    [author:]
+        Claus Gittinger
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!EditTextViewCompletionSupport class methodsFor:'instance creation'!
+
+for:anEditView
+    ^ self new editView:anEditView
+! !
+
+!EditTextViewCompletionSupport class methodsFor:'queries'!
+
+isAbstract
+    ^true
+
+    "Created: / 26-09-2013 / 16:22:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!EditTextViewCompletionSupport methodsFor:'accessing'!
+
+editView:anEditTextView
+    editView := anEditTextView.
+! !
+
+!EditTextViewCompletionSupport methodsFor:'events'!
+
+buttonPress:button x:x y:y
+    self closeCompletionView.
+!
+
+editViewLostFocus
+    completionView notNil ifTrue:[
+        self closeCompletionView
+    ]
+!
+
+handleKeyPress:key x:x y:y
+    "return true, if I have eaten this keypress"
+
+    |ch completeImmediate eatCursorLeftOrRight|
+
+    completeImmediate := UserPreferences current immediateCodeCompletion.
+    
+    "/ open on CTRL- or TAB-key?
+    (completionView isNil or:[completionView realized not]) ifTrue:[
+        editView hasSelection ifFalse:[
+            ((ch := editView characterBeforeCursor) notNil "/ i.e. not at begin of line
+            and:[ ch isSeparator not ]) ifTrue:[
+                (key == #Control_L or:[ key == #Ctrl or:[ key == #Control_R or:[ key == #Control]]]) ifTrue:[
+                    UserPreferences current codeCompletionOnControlKey ifTrue:[
+                        autoSelect := true.
+                        self updateCompletionList
+                    ]
+                ].
+                (key == #Tab) ifTrue:[
+                    UserPreferences current codeCompletionOnTabKey ifTrue:[
+                        autoSelect := true.
+                        self updateCompletionList.
+                        ^ true
+                    ].
+                ]
+            ].
+        ].
+        ^ false.
+    ].
+
+    "/ key for completion view ? (careful: do not forward too many, it would disturb user's typing)
+    key isCharacter ifFalse:[
+        "/ forward to menu
+        (completionView notNil) ifTrue:[
+            eatCursorLeftOrRight := false.
+"/                                    completeImmediate not
+"/                                    or:[ editView sensor shiftDown 
+"/                                    or:[ editView sensor ctrlDown ]].
+            (key == #CursorDown 
+                or:[ (key == #CursorUp)
+                or:[ ((key == #CursorLeft) and:[eatCursorLeftOrRight])
+                or:[ ((key == #CursorRight) and:[eatCursorLeftOrRight])
+                or:[ ((key == #Return) and:[ completionView hasSelection ])
+            ]]]]) ifTrue:[
+                "/ only with shift - normal user typing should not interfere with completion
+                true "editView sensor shiftDown" ifTrue:[
+                    "/ forward to completion view
+                    completionView sensor pushUserEvent:#value for:[ completionView keyPress:key x:0 y:0 ].
+                    ^ true.
+                ].
+            ].
+
+            (key == #Control_L or:[ key == #Control_R or:[ key == #Control or:[ key == #Ctrl ]]]) ifTrue:[
+                "/ CTRL is a toggle
+                self closeCompletionView.   
+                ^ true.
+                "/ ^ false
+            ].
+            (key == #Escape) ifTrue:[
+                self closeCompletionView.
+                ^ true  "/ EAT
+            ].
+            "/ shift does not close
+            (key == #Shift_L or:[ key == #Shift_R or:[ key == #Shift]]) ifTrue:[
+                ^ false "/ don' eat
+            ].
+
+            self closeCompletionView.
+            ^ false "/ don' eat
+        ].
+    ].
+    ^ false.
+!
+
+postKeyPress:key
+    UserPreferences current immediateCodeCompletion ifFalse:[
+        "/ only update, if already open
+        completionView isNil ifTrue:[^ self].
+    ].
+
+    (key == #BackSpace or:[key == #BasicBackspace]) ifTrue:[
+        autoSelect := false.
+        self updateCompletionList.
+        ^ self
+    ].
+
+    key isCharacter ifTrue:[
+        key isSeparator ifTrue:[
+            self closeCompletionView
+        ] ifFalse:[
+            autoSelect := false.
+            self updateCompletionList.
+        ].
+        ^ self
+    ].
+! !
+
+!EditTextViewCompletionSupport methodsFor:'private'!
+
+release
+    self stopCompletionProcess.
+    self closeCompletionView.
+    super release
+!
+
+startCompletionProcess
+    "start the code completion process in the background"
+
+    |initialList cursorX cursorY|
+
+    "/ terminate any previous process
+    self stopCompletionProcess.
+
+    (editView sensor hasKeyPressEventFor:nil) ifTrue:[ 
+        self closeCompletionView. 
+        ^ self
+    ].
+    ((cursorX := editView xOfCursor) isNil
+    or:[ (cursorY := editView yOfCursor) isNil ]) ifTrue:[
+        "/ no cursor - user is selecting, or cursor has been scrolled out of sight.
+        self closeCompletionView. 
+        ^ self
+    ].
+
+    initialList := #( 'busy...' ).
+
+    self openCompletionView.
+
+    completionProcess := 
+        [
+            self computeCompletions.
+        ] forkAt:(Processor activePriority - 1).
+
+    "Modified: / 26-09-2013 / 17:36:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stopCompletionProcess
+    "kill any background completion process"
+
+    |p|
+
+    (p := completionProcess) notNil ifTrue:[
+        completionProcess := nil.
+        p terminate.
+    ].
+!
+
+updateCompletionList
+    "called for keypress events"
+
+    self startCompletionProcess.
+! !
+
+!EditTextViewCompletionSupport methodsFor:'private-API'!
+
+closeCompletionView
+    |v|
+
+    (v := completionView) notNil ifTrue:[
+        completionView := nil.
+        "/ let it close itself - avoids synchronization problems
+        v sensor
+            pushUserEvent:#value
+            for:[ v topView destroy ]
+    ].
+!
+
+computeCompletions
+    "Actually compute the completions and update the completion view."
+
+    self subclassResponsibility
+
+    "Created: / 26-09-2013 / 17:35:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openCompletionView
+    "Opens the completion view with an initial list. Called as soon as
+     completion is initiated but completion options are not yet computed."
+
+    self openCompletionView: (Array with: 'Busy...')
+
+    "Created: / 26-09-2013 / 17:06:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openCompletionView: list
+    "Makes sure the completion view is opened and with given `list`."
+    
+    | movePos topView |
+    "/ move the window
+    movePos := editView device translatePoint:(editView xOfCursor @ editView yOfCursor) fromView:editView toView:nil.
+    movePos := movePos - (editView viewOrigin x @ 0).
+    "/ currently, we have to stay away a bit, to avoid getting the focus
+    movePos := movePos + (60 @ (editView font height)).
+
+    completionView isNil ifTrue:[
+        completionView := CodeCompletionHelpMenuView new.
+        completionView name:'completion'.
+        completionView level:0.
+        completionView list:list.
+        completionView enable:false.
+        completionView extent:completionView preferredExtentForContents.
+        completionView font: editView font.
+        topView := CodeCompletionHelpView with:completionView.
+        topView origin:movePos.
+        topView resizeToFit.
+        "/ topView open.
+    ] ifFalse:[
+        completionView list:list.
+        topView := completionView topView.
+        topView ~~ completionView ifTrue:[
+            topView origin:movePos.
+            topView resizeToFit.
+        ]
+    ].
+
+    "Created: / 26-09-2013 / 17:07:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!EditTextViewCompletionSupport class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextViewCompletionSupport.st,v 1.1 2013-09-26 17:07:20 vrany Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextViewCompletionSupport.st,v 1.1 2013-09-26 17:07:20 vrany Exp $'
+! !
+
--- a/Make.proto	Mon Sep 23 14:20:54 2013 +0100
+++ b/Make.proto	Fri Sep 27 23:01:16 2013 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libwidg/Make.proto,v 1.90 2013-02-22 12:36:16 cg Exp $
+# $Header: /cvs/stx/stx/libwidg/Make.proto,v 1.91 2013-09-26 17:32:02 vrany Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libwidg.
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libui -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libview
 
 
 # if you need any additional defines for embedded C code,
@@ -83,13 +83,18 @@
 # add more postMake actions here
 postMake:: cleanjunk
 
-prereq: $(REQUIRED_SUPPORT_DIRS)
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
 	cd ../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+
 
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
 
 
 cleanjunk::
@@ -105,6 +110,7 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)ButtonController.$(O) ButtonController.$(H): ButtonController.st $(INCLUDE_TOP)/stx/libview/Controller.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DialogBox.$(O) DialogBox.$(H): DialogBox.st $(INCLUDE_TOP)/stx/libview/ModalBox.$(H) $(INCLUDE_TOP)/stx/libview/StandardSystemView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)EditTextViewCompletionSupport.$(O) EditTextViewCompletionSupport.$(H): EditTextViewCompletionSupport.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)EnterFieldGroup.$(O) EnterFieldGroup.$(H): EnterFieldGroup.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)FramedBox.$(O) FramedBox.$(H): FramedBox.st $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GenericToolbarIconLibrary.$(O) GenericToolbarIconLibrary.$(H): GenericToolbarIconLibrary.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -146,6 +152,7 @@
 $(OUTDIR)VariableVerticalPanel.$(O) VariableVerticalPanel.$(H): VariableVerticalPanel.st $(INCLUDE_TOP)/stx/libwidg/VariablePanel.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VariableVerticalPanelController.$(O) VariableVerticalPanelController.$(H): VariableVerticalPanelController.st $(INCLUDE_TOP)/stx/libwidg/VariablePanelController.$(H) $(INCLUDE_TOP)/stx/libview/Controller.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VerticalPanelView.$(O) VerticalPanelView.$(H): VerticalPanelView.st $(INCLUDE_TOP)/stx/libwidg/PanelView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)WorkspaceCompletionSupport.$(O) WorkspaceCompletionSupport.$(H): WorkspaceCompletionSupport.st $(INCLUDE_TOP)/stx/libwidg/EditTextViewCompletionSupport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)XPToolbarIconLibrary.$(O) XPToolbarIconLibrary.$(H): XPToolbarIconLibrary.st $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ArrowButton.$(O) ArrowButton.$(H): ArrowButton.st $(INCLUDE_TOP)/stx/libwidg/Button.$(H) $(INCLUDE_TOP)/stx/libwidg/Label.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)EditTextView.$(O) EditTextView.$(H): EditTextView.st $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(STCHDR)
--- a/Make.spec	Mon Sep 23 14:20:54 2013 +0100
+++ b/Make.spec	Fri Sep 27 23:01:16 2013 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libwidg/Make.spec,v 1.19 2013-02-22 12:36:14 cg Exp $
+# $Header: /cvs/stx/stx/libwidg/Make.spec,v 1.20 2013-09-26 17:31:44 vrany Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libwidg.
@@ -50,145 +50,149 @@
 STCWARNINGS=-warnNonStandard
 
 COMMON_CLASSES= \
-	Label \
-	Button \
 	ButtonController \
-	CheckLabel \
-	Toggle \
-	ListView \
-	TextView \
 	DialogBox \
-	EditTextView \
-	EditField \
-	EnterBox \
-	EnterBox2 \
+	EditTextViewCompletionSupport \
 	EnterFieldGroup \
-	ListSelectionBox \
-	FileSelectionBox \
-	SelectionInListView \
-	FontPanel \
 	FramedBox \
+	GenericToolbarIconLibrary \
+	Label \
+	ListView \
+	MenuEvent \
+	ObjectView \
+	PanelView \
+	PopUpMenu \
+	PullDownMenu \
+	RadioButtonGroup \
+	ScrollBar \
 	ScrollableView \
 	Scroller \
-	PanelView \
-	ScrollBar \
+	SelectionInList \
+	VariablePanel \
+	VariablePanelController \
+	stx_libwidg \
+	Button \
+	CheckLabel \
+	EnterBox \
+	FontPanel \
+	HVScrollableView \
+	HorizontalPanelView \
+	HorizontalScrollBar \
 	HorizontalScroller \
 	InfoBox \
-	ArrowButton \
-	FileSaveBox \
-	MenuView \
-	ClickMenuView \
 	MiniScroller \
-	SelectionInList \
-	ObjectView \
+	MultiColumnPanelView \
+	MultiSelectionInList \
 	OptionBox \
-	HorizontalPanelView \
-	PopUpList \
 	PopUpListController \
-	PopUpMenu \
-	PullDownMenu \
-	RadioButton \
+	SelectionInListView \
+	SequenceView \
+	TextView \
 	ToggleController \
-	RadioButtonGroup \
-	HorizontalScrollBar \
-	HVScrollableView \
-	HorizontalMiniScroller \
-	MultiSelectionInList \
-	FileSelectionList \
-	SequenceView \
-	TextCollector \
-	Workspace \
-	CheckToggle \
-	RadioButtonController \
-	VariablePanel \
-	VariablePanelController \
 	VariableHorizontalPanel \
 	VariableHorizontalPanelController \
 	VariableVerticalPanel \
 	VariableVerticalPanelController \
 	VerticalPanelView \
+	WorkspaceCompletionSupport \
+	XPToolbarIconLibrary \
+	ArrowButton \
+	EditTextView \
+	EnterBox2 \
+	FileSelectionList \
+	HorizontalMiniScroller \
+	ListSelectionBox \
+	MenuView \
+	PopUpList \
+	RadioButtonController \
+	Toggle \
+	VistaToolbarIconLibrary \
 	WarningBox \
-	CodeView \
+	CheckToggle \
+	ClickMenuView \
+	EditField \
+	FileSelectionBox \
+	RadioButton \
+	TextCollector \
+	Windows8ToolbarIconLibrary \
 	YesNoBox \
-	stx_libwidg \
-	MultiColumnPanelView \
-	GenericToolbarIconLibrary \
-	XPToolbarIconLibrary \
-	VistaToolbarIconLibrary \
-	MenuEvent \
-	Windows8ToolbarIconLibrary \
+	FileSaveBox \
+	Workspace \
+	CodeView \
 
 
 
 
 COMMON_OBJS= \
-    $(OUTDIR_SLASH)Label.$(O) \
-    $(OUTDIR_SLASH)Button.$(O) \
     $(OUTDIR_SLASH)ButtonController.$(O) \
-    $(OUTDIR_SLASH)CheckLabel.$(O) \
-    $(OUTDIR_SLASH)Toggle.$(O) \
-    $(OUTDIR_SLASH)ListView.$(O) \
-    $(OUTDIR_SLASH)TextView.$(O) \
     $(OUTDIR_SLASH)DialogBox.$(O) \
-    $(OUTDIR_SLASH)EditTextView.$(O) \
-    $(OUTDIR_SLASH)EditField.$(O) \
-    $(OUTDIR_SLASH)EnterBox.$(O) \
-    $(OUTDIR_SLASH)EnterBox2.$(O) \
+    $(OUTDIR_SLASH)EditTextViewCompletionSupport.$(O) \
     $(OUTDIR_SLASH)EnterFieldGroup.$(O) \
-    $(OUTDIR_SLASH)ListSelectionBox.$(O) \
-    $(OUTDIR_SLASH)FileSelectionBox.$(O) \
-    $(OUTDIR_SLASH)SelectionInListView.$(O) \
-    $(OUTDIR_SLASH)FontPanel.$(O) \
     $(OUTDIR_SLASH)FramedBox.$(O) \
+    $(OUTDIR_SLASH)GenericToolbarIconLibrary.$(O) \
+    $(OUTDIR_SLASH)Label.$(O) \
+    $(OUTDIR_SLASH)ListView.$(O) \
+    $(OUTDIR_SLASH)MenuEvent.$(O) \
+    $(OUTDIR_SLASH)ObjectView.$(O) \
+    $(OUTDIR_SLASH)PanelView.$(O) \
+    $(OUTDIR_SLASH)PopUpMenu.$(O) \
+    $(OUTDIR_SLASH)PullDownMenu.$(O) \
+    $(OUTDIR_SLASH)RadioButtonGroup.$(O) \
+    $(OUTDIR_SLASH)ScrollBar.$(O) \
     $(OUTDIR_SLASH)ScrollableView.$(O) \
     $(OUTDIR_SLASH)Scroller.$(O) \
-    $(OUTDIR_SLASH)PanelView.$(O) \
-    $(OUTDIR_SLASH)ScrollBar.$(O) \
+    $(OUTDIR_SLASH)SelectionInList.$(O) \
+    $(OUTDIR_SLASH)VariablePanel.$(O) \
+    $(OUTDIR_SLASH)VariablePanelController.$(O) \
+    $(OUTDIR_SLASH)stx_libwidg.$(O) \
+    $(OUTDIR_SLASH)Button.$(O) \
+    $(OUTDIR_SLASH)CheckLabel.$(O) \
+    $(OUTDIR_SLASH)EnterBox.$(O) \
+    $(OUTDIR_SLASH)FontPanel.$(O) \
+    $(OUTDIR_SLASH)HVScrollableView.$(O) \
+    $(OUTDIR_SLASH)HorizontalPanelView.$(O) \
+    $(OUTDIR_SLASH)HorizontalScrollBar.$(O) \
     $(OUTDIR_SLASH)HorizontalScroller.$(O) \
     $(OUTDIR_SLASH)InfoBox.$(O) \
-    $(OUTDIR_SLASH)ArrowButton.$(O) \
-    $(OUTDIR_SLASH)FileSaveBox.$(O) \
-    $(OUTDIR_SLASH)MenuView.$(O) \
-    $(OUTDIR_SLASH)ClickMenuView.$(O) \
     $(OUTDIR_SLASH)MiniScroller.$(O) \
-    $(OUTDIR_SLASH)SelectionInList.$(O) \
-    $(OUTDIR_SLASH)ObjectView.$(O) \
+    $(OUTDIR_SLASH)MultiColumnPanelView.$(O) \
+    $(OUTDIR_SLASH)MultiSelectionInList.$(O) \
     $(OUTDIR_SLASH)OptionBox.$(O) \
-    $(OUTDIR_SLASH)HorizontalPanelView.$(O) \
-    $(OUTDIR_SLASH)PopUpList.$(O) \
     $(OUTDIR_SLASH)PopUpListController.$(O) \
-    $(OUTDIR_SLASH)PopUpMenu.$(O) \
-    $(OUTDIR_SLASH)PullDownMenu.$(O) \
-    $(OUTDIR_SLASH)RadioButton.$(O) \
+    $(OUTDIR_SLASH)SelectionInListView.$(O) \
+    $(OUTDIR_SLASH)SequenceView.$(O) \
+    $(OUTDIR_SLASH)TextView.$(O) \
     $(OUTDIR_SLASH)ToggleController.$(O) \
-    $(OUTDIR_SLASH)RadioButtonGroup.$(O) \
-    $(OUTDIR_SLASH)HorizontalScrollBar.$(O) \
-    $(OUTDIR_SLASH)HVScrollableView.$(O) \
-    $(OUTDIR_SLASH)HorizontalMiniScroller.$(O) \
-    $(OUTDIR_SLASH)MultiSelectionInList.$(O) \
-    $(OUTDIR_SLASH)FileSelectionList.$(O) \
-    $(OUTDIR_SLASH)SequenceView.$(O) \
-    $(OUTDIR_SLASH)TextCollector.$(O) \
-    $(OUTDIR_SLASH)Workspace.$(O) \
-    $(OUTDIR_SLASH)CheckToggle.$(O) \
-    $(OUTDIR_SLASH)RadioButtonController.$(O) \
-    $(OUTDIR_SLASH)VariablePanel.$(O) \
-    $(OUTDIR_SLASH)VariablePanelController.$(O) \
     $(OUTDIR_SLASH)VariableHorizontalPanel.$(O) \
     $(OUTDIR_SLASH)VariableHorizontalPanelController.$(O) \
     $(OUTDIR_SLASH)VariableVerticalPanel.$(O) \
     $(OUTDIR_SLASH)VariableVerticalPanelController.$(O) \
     $(OUTDIR_SLASH)VerticalPanelView.$(O) \
+    $(OUTDIR_SLASH)WorkspaceCompletionSupport.$(O) \
+    $(OUTDIR_SLASH)XPToolbarIconLibrary.$(O) \
+    $(OUTDIR_SLASH)ArrowButton.$(O) \
+    $(OUTDIR_SLASH)EditTextView.$(O) \
+    $(OUTDIR_SLASH)EnterBox2.$(O) \
+    $(OUTDIR_SLASH)FileSelectionList.$(O) \
+    $(OUTDIR_SLASH)HorizontalMiniScroller.$(O) \
+    $(OUTDIR_SLASH)ListSelectionBox.$(O) \
+    $(OUTDIR_SLASH)MenuView.$(O) \
+    $(OUTDIR_SLASH)PopUpList.$(O) \
+    $(OUTDIR_SLASH)RadioButtonController.$(O) \
+    $(OUTDIR_SLASH)Toggle.$(O) \
+    $(OUTDIR_SLASH)VistaToolbarIconLibrary.$(O) \
     $(OUTDIR_SLASH)WarningBox.$(O) \
-    $(OUTDIR_SLASH)CodeView.$(O) \
+    $(OUTDIR_SLASH)CheckToggle.$(O) \
+    $(OUTDIR_SLASH)ClickMenuView.$(O) \
+    $(OUTDIR_SLASH)EditField.$(O) \
+    $(OUTDIR_SLASH)FileSelectionBox.$(O) \
+    $(OUTDIR_SLASH)RadioButton.$(O) \
+    $(OUTDIR_SLASH)TextCollector.$(O) \
+    $(OUTDIR_SLASH)Windows8ToolbarIconLibrary.$(O) \
     $(OUTDIR_SLASH)YesNoBox.$(O) \
-    $(OUTDIR_SLASH)stx_libwidg.$(O) \
-    $(OUTDIR_SLASH)MultiColumnPanelView.$(O) \
-    $(OUTDIR_SLASH)GenericToolbarIconLibrary.$(O) \
-    $(OUTDIR_SLASH)XPToolbarIconLibrary.$(O) \
-    $(OUTDIR_SLASH)VistaToolbarIconLibrary.$(O) \
-    $(OUTDIR_SLASH)MenuEvent.$(O) \
-    $(OUTDIR_SLASH)Windows8ToolbarIconLibrary.$(O) \
+    $(OUTDIR_SLASH)FileSaveBox.$(O) \
+    $(OUTDIR_SLASH)Workspace.$(O) \
+    $(OUTDIR_SLASH)CodeView.$(O) \
 
 
 
--- a/Makefile.init	Mon Sep 23 14:20:54 2013 +0100
+++ b/Makefile.init	Fri Sep 27 23:01:16 2013 +0100
@@ -1,22 +1,26 @@
 #
-# DO NOT EDIT 
-# automagically generated from Make.proto (by make mf)
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
 #
-include ../rules/stdHeader
-include ../configurations/COMMON/defines
-include ../configurations/vendorConf
-include ../configurations/myConf
-include ../rules/stdHeader2
-include Make.spec
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
 include Make.proto
 
-BASE_CONF=osx_x
-BASE_CONF_VENDOR=mac
-CONF_PACKS=
-CONF_TOOLS=
-
-include ../rules/stdRules
-
 makefile: mf
 
 mf:
--- a/TextView.st	Mon Sep 23 14:20:54 2013 +0100
+++ b/TextView.st	Fri Sep 27 23:01:16 2013 +0100
@@ -2047,9 +2047,9 @@
 fontLargerOrSmaller:largerBoolean
     |newFont|
 
-    newFont := font size:(largerBoolean
-			    ifTrue:[font size + 1]
-			    ifFalse:[(font size-1) max:4]).
+    newFont := font asSize:(largerBoolean
+                            ifTrue:[font size + 1]
+                            ifFalse:[(font size-1) max:4]).
     self font:newFont.
 
     "Modified: / 27-02-1996 / 00:53:51 / cg"
@@ -4317,30 +4317,31 @@
     |l t|
 
     selectionStartLine notNil ifTrue:[
-	expandingTop == true ifTrue:[
-	    l := selectionStartLine.
-	    selectionStartLine := selectionStartLine + 1.
-	    (selectionStartLine > clickLine
-	    or:[selectionStartLine == clickLine and:[selectionStartCol > clickCol]])
-	    ifTrue:[
-		t := selectionStartLine.
-		selectionStartLine := selectionEndLine.
-		selectionEndLine := t.
-		t := selectionStartCol.
-		selectionStartCol := selectionEndCol.
-		selectionEndCol := t.
-		expandingTop := false
-	    ].
-	] ifFalse:[
-	    l := selectionEndLine.
-	    selectionEndLine := selectionEndLine + 1.
-	].
+        expandingTop == true ifTrue:[
+            l := selectionStartLine.
+            selectionStartLine := selectionStartLine + 1.
+            (selectionStartLine > clickLine
+            or:[selectionStartLine == clickLine and:[selectionStartCol > clickCol]])
+            ifTrue:[
+                t := selectionStartLine.
+                selectionStartLine := selectionEndLine.
+                selectionEndLine := t.
+                t := selectionStartCol.
+                selectionStartCol := selectionEndCol.
+                selectionEndCol := t.
+                expandingTop := false
+            ].
+        ] ifFalse:[
+            l := selectionEndLine.
+            selectionEndLine := selectionEndLine + 1.
+        ].
 "/        self redrawLine:l.
 "/        self redrawLine:l+1.
-	self validateNewSelection.
-	self setPrimarySelection.
-	self redrawFromLine:l to:l+1.
-	self makeSelectionVisible.
+        self validateNewSelection.
+        self setPrimarySelection.
+        self selectionChanged.
+        self redrawFromLine:l to:l+1.
+        self makeSelectionVisible.
     ].
 
     "Created: / 01-03-1996 / 23:35:08 / cg"
@@ -4352,33 +4353,34 @@
     |c l t c1 c2|
 
     selectionStartLine notNil ifTrue:[
-	expandingTop == true ifTrue:[
-	    selectionStartCol == 0 ifTrue:[^ self].
-	    l := selectionStartLine.
-	    selectionStartCol := (selectionStartCol - 1) max:1.
-	    c := selectionStartCol.
-	] ifFalse:[
-	    l := selectionEndLine.
-	    selectionEndCol := (selectionEndCol - 1) max:0.
-	    c := selectionEndCol.
-	    selectionEndLine == selectionStartLine ifTrue:[
-		selectionEndCol <= selectionStartCol ifTrue:[
-		    t := selectionStartCol. selectionStartCol := selectionEndCol.
-		    selectionEndCol := t.
-		    expandingTop := true.
-		    c := selectionStartCol.
-		]
-	    ].
-	].
-	c1 := c.
-	c2 := c1 + 1.
-	c1 == 0 ifTrue:[
-	    c1 := 1
-	].
-	self validateNewSelection.
-	self setPrimarySelection.
-	self redrawLine:l from:c1 to:c2.
-	self makeSelectionVisible.
+        expandingTop == true ifTrue:[
+            selectionStartCol == 0 ifTrue:[^ self].
+            l := selectionStartLine.
+            selectionStartCol := (selectionStartCol - 1) max:1.
+            c := selectionStartCol.
+        ] ifFalse:[
+            l := selectionEndLine.
+            selectionEndCol := (selectionEndCol - 1) max:0.
+            c := selectionEndCol.
+            selectionEndLine == selectionStartLine ifTrue:[
+                selectionEndCol <= selectionStartCol ifTrue:[
+                    t := selectionStartCol. selectionStartCol := selectionEndCol.
+                    selectionEndCol := t.
+                    expandingTop := true.
+                    c := selectionStartCol.
+                ]
+            ].
+        ].
+        c1 := c.
+        c2 := c1 + 1.
+        c1 == 0 ifTrue:[
+            c1 := 1
+        ].
+        self validateNewSelection.
+        self setPrimarySelection.
+        self selectionChanged.
+        self redrawLine:l from:c1 to:c2.
+        self makeSelectionVisible.
     ].
 
     "Modified: / 18-03-1996 / 17:05:46 / cg"
@@ -4389,28 +4391,29 @@
     |l c t|
 
     selectionStartLine notNil ifTrue:[
-	expandingTop == true ifTrue:[
-	    l := selectionStartLine.
-	    c := selectionStartCol.
-	    selectionStartCol := selectionStartCol + 1.
-	    l == selectionEndLine ifTrue:[
-		c >= selectionEndCol ifTrue:[
-		    expandingTop := false.
-		    t := selectionStartCol. selectionStartCol := selectionEndCol.
-		    selectionEndCol := t.
-		    c := selectionStartCol.
-		]
-	    ]
-	] ifFalse:[
-	    l := selectionEndLine.
-	    c := selectionEndCol.
-	    selectionEndCol := selectionEndCol + 1.
-	].
-
-	self validateNewSelection.
-	self setPrimarySelection.
-	self redrawLine:l from:c to:c+1.
-	self makeSelectionVisible.
+        expandingTop == true ifTrue:[
+            l := selectionStartLine.
+            c := selectionStartCol.
+            selectionStartCol := selectionStartCol + 1.
+            l == selectionEndLine ifTrue:[
+                c >= selectionEndCol ifTrue:[
+                    expandingTop := false.
+                    t := selectionStartCol. selectionStartCol := selectionEndCol.
+                    selectionEndCol := t.
+                    c := selectionStartCol.
+                ]
+            ]
+        ] ifFalse:[
+            l := selectionEndLine.
+            c := selectionEndCol.
+            selectionEndCol := selectionEndCol + 1.
+        ].
+
+        self validateNewSelection.
+        self setPrimarySelection.
+        self selectionChanged.
+        self redrawLine:l from:c to:c+1.
+        self makeSelectionVisible.
     ].
 
     "Created: / 01-03-1996 / 23:33:17 / cg"
@@ -4422,32 +4425,33 @@
     |l t|
 
     selectionStartLine notNil ifTrue:[
-	expandingTop == true ifTrue:[
-	    selectionStartLine := (selectionStartLine - 1) max:1.
-	    l := selectionStartLine.
-	] ifFalse:[
-	    selectionEndLine := (selectionEndLine - 1) max:0.
-
-	    l := selectionEndLine.
-	    (selectionEndLine < clickLine
-	    or:[(selectionEndLine == clickLine and:[selectionEndCol < clickCol])])
-	    ifTrue:[
-		t := selectionStartLine.
-		selectionStartLine := selectionEndLine.
-		selectionEndLine := t.
-		t := selectionStartCol.
-		selectionStartCol := selectionEndCol.
-		selectionEndCol := t.
-		l := selectionStartLine.
-		expandingTop := true
-	    ].
-	].
-	self validateNewSelection.
-	self setPrimarySelection.
-	"/ self redrawLine:l.
-	"/ self redrawLine:l+1.
-	self redrawFromLine:l to:l+1.
-	self makeSelectionVisible.
+        expandingTop == true ifTrue:[
+            selectionStartLine := (selectionStartLine - 1) max:1.
+            l := selectionStartLine.
+        ] ifFalse:[
+            selectionEndLine := (selectionEndLine - 1) max:0.
+
+            l := selectionEndLine.
+            (selectionEndLine < clickLine
+            or:[(selectionEndLine == clickLine and:[selectionEndCol < clickCol])])
+            ifTrue:[
+                t := selectionStartLine.
+                selectionStartLine := selectionEndLine.
+                selectionEndLine := t.
+                t := selectionStartCol.
+                selectionStartCol := selectionEndCol.
+                selectionEndCol := t.
+                l := selectionStartLine.
+                expandingTop := true
+            ].
+        ].
+        self validateNewSelection.
+        self setPrimarySelection.
+        self selectionChanged.
+        "/ self redrawLine:l.
+        "/ self redrawLine:l+1.
+        self redrawFromLine:l to:l+1.
+        self makeSelectionVisible.
     ].
 
     "Modified: / 06-03-1996 / 14:12:06 / cg"
@@ -4587,6 +4591,7 @@
         selectionEndCol := endCol.
         self validateNewSelection.
         self setPrimarySelection.
+        self selectionChanged.
 
         (selectionStartLine == selectionEndLine 
             and:[oldStartLine == selectionStartLine 
@@ -4849,11 +4854,11 @@
 !TextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.364 2013-09-19 13:42:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.366 2013-09-26 15:10:27 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.364 2013-09-19 13:42:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.366 2013-09-26 15:10:27 cg Exp $'
 !
 
 version_HG
--- a/Workspace.st	Mon Sep 23 14:20:54 2013 +0100
+++ b/Workspace.st	Fri Sep 27 23:01:16 2013 +0100
@@ -25,13 +25,6 @@
 	category:'Interface-Smalltalk'
 !
 
-Object subclass:#CodeCompletionService
-	instanceVariableNames:'completionView completionProcess editView autoSelect'
-	classVariableNames:'LastCompletions'
-	poolDictionaries:''
-	privateIn:Workspace
-!
-
 Workspace comment:''
 !
 
@@ -125,8 +118,10 @@
 
 !Workspace class methodsFor:'defaults'!
 
-codeCompletionServiceClass
-    ^ CodeCompletionService
+defaultCompletionSupportClass
+    ^ WorkspaceCompletionSupport
+
+    "Created: / 26-09-2013 / 17:59:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 defaultLabel
@@ -2191,418 +2186,13 @@
     "Modified (comment): / 07-03-2012 / 17:52:59 / cg"
 ! !
 
-!Workspace::CodeCompletionService class methodsFor:'instance creation'!
-
-for:anEditView
-    ^ self new editView:anEditView
-! !
-
-!Workspace::CodeCompletionService methodsFor:'accessing'!
-
-editView:something
-    editView := something.
-! !
-
-!Workspace::CodeCompletionService methodsFor:'events'!
-
-buttonPress:button x:x y:y
-    self closeCompletionView.
-!
-
-editViewLostFocus
-    completionView notNil ifTrue:[
-        self closeCompletionView
-    ]
-!
-
-handleKeyPress:key x:x y:y
-    "return true, if I have eaten this keypress"
-
-    |ch completeImmediate eatCursorLeftOrRight|
-
-    completeImmediate := UserPreferences current immediateCodeCompletion.
-    
-    "/ open on CTRL- or TAB-key?
-    (completionView isNil or:[completionView realized not]) ifTrue:[
-        editView hasSelection ifFalse:[
-            ((ch := editView characterBeforeCursor) notNil "/ i.e. not at begin of line
-            and:[ ch isSeparator not ]) ifTrue:[
-                (key == #Control_L or:[ key == #Ctrl or:[ key == #Control_R or:[ key == #Control]]]) ifTrue:[
-                    UserPreferences current codeCompletionOnControlKey ifTrue:[
-                        autoSelect := true.
-                        self updateCompletionList
-                    ]
-                ].
-                (key == #Tab) ifTrue:[
-                    UserPreferences current codeCompletionOnTabKey ifTrue:[
-                        autoSelect := true.
-                        self updateCompletionList.
-                        ^ true
-                    ].
-                ]
-            ].
-        ].
-        ^ false.
-    ].
-
-    "/ key for completion view ? (careful: do not forward too many, it would disturb user's typing)
-    key isCharacter ifFalse:[
-        "/ forward to menu
-        (completionView notNil) ifTrue:[
-            eatCursorLeftOrRight := false.
-"/                                    completeImmediate not
-"/                                    or:[ editView sensor shiftDown 
-"/                                    or:[ editView sensor ctrlDown ]].
-            (key == #CursorDown 
-                or:[ (key == #CursorUp)
-                or:[ ((key == #CursorLeft) and:[eatCursorLeftOrRight])
-                or:[ ((key == #CursorRight) and:[eatCursorLeftOrRight])
-                or:[ ((key == #Return) and:[ completionView hasSelection ])
-            ]]]]) ifTrue:[
-                "/ only with shift - normal user typing should not interfere with completion
-                true "editView sensor shiftDown" ifTrue:[
-                    "/ forward to completion view
-                    completionView sensor pushUserEvent:#value for:[ completionView keyPress:key x:0 y:0 ].
-                    ^ true.
-                ].
-            ].
-
-            (key == #Control_L or:[ key == #Control_R or:[ key == #Control or:[ key == #Ctrl ]]]) ifTrue:[
-                "/ CTRL is a toggle
-                self closeCompletionView.   
-                ^ true.
-                "/ ^ false
-            ].
-            (key == #Escape) ifTrue:[
-                self closeCompletionView.
-                ^ true  "/ EAT
-            ].
-            "/ shift does not close
-            (key == #Shift_L or:[ key == #Shift_R or:[ key == #Shift]]) ifTrue:[
-                ^ false "/ don' eat
-            ].
-
-            self closeCompletionView.
-            ^ false "/ don' eat
-        ].
-    ].
-    ^ false.
-!
-
-postKeyPress:key
-    UserPreferences current immediateCodeCompletion ifFalse:[
-        "/ only update, if already open
-        completionView isNil ifTrue:[^ self].
-    ].
-
-    (key == #BackSpace or:[key == #BasicBackspace]) ifTrue:[
-        autoSelect := false.
-        self updateCompletionList.
-        ^ self
-    ].
-
-    key isCharacter ifTrue:[
-        key isSeparator ifTrue:[
-            self closeCompletionView
-        ] ifFalse:[
-            autoSelect := false.
-            self updateCompletionList.
-        ].
-        ^ self
-    ].
-! !
-
-!Workspace::CodeCompletionService methodsFor:'private'!
-
-closeCompletionView
-    |v|
-
-    (v := completionView) notNil ifTrue:[
-        completionView := nil.
-        "/ let it close itself - avoids synchronization problems
-        v sensor
-            pushUserEvent:#value
-            for:[ v topView destroy ]
-    ].
-!
-
-release
-    self stopCompletionProcess.
-    self closeCompletionView.
-    super release
-!
-
-startCompletionProcess
-    "start the code completion process in the background"
-
-    |movePos topView initialList cursorX cursorY|
-
-    "/ terminate any previous process
-    self stopCompletionProcess.
-
-    (editView sensor hasKeyPressEventFor:nil) ifTrue:[ 
-        self closeCompletionView. 
-        ^ self
-    ].
-    ((cursorX := editView xOfCursor) isNil
-    or:[ (cursorY := editView yOfCursor) isNil ]) ifTrue:[
-        "/ no cursor - user is selecting, or cursor has been scrolled out of sight.
-        self closeCompletionView. 
-        ^ self
-    ].
-
-    initialList := #( 'busy...' ).
-
-    "/ move the window
-    movePos := editView device translatePoint:(cursorX @ cursorY) fromView:editView toView:nil.
-    movePos := movePos - (editView viewOrigin x @ 0).
-    "/ currently, we have to stay away a bit, to avoid getting the focus
-    movePos := movePos + (60 @ (editView font height)).
-
-    completionView isNil ifTrue:[
-        completionView := CodeCompletionHelpMenuView new.
-        completionView name:'completion'.
-        completionView level:0.
-        completionView list:initialList.
-        completionView enable:false.
-        completionView extent:completionView preferredExtentForContents.
-        topView := CodeCompletionHelpView with:completionView.
-        topView origin:movePos.
-        topView resizeToFit.
-        "/ topView open.
-    ] ifFalse:[
-        completionView list:initialList.
-        topView := completionView topView.
-        topView ~~ completionView ifTrue:[
-            topView origin:movePos.
-            topView resizeToFit.
-        ]
-    ].
-
-    completionProcess := 
-        [
-            |suggestions implementations actions anyFound|
-
-            UserInformation ignoreIn:[
-                anyFound := false.
-                DoWhatIMeanSupport 
-                    codeCompletionForLanguage: editView editedLanguage
-                    method:editView editedMethod
-                    orClass:editView editedClass 
-                    context:nil 
-                    codeView:editView 
-                    into:[:listOfSuggestions :listOfActions :titleWhenAsking |
-"/ (listOfSuggestions contains:[:l | l isEmptyOrNil]) ifTrue:[self halt].
-                            suggestions := listOfSuggestions collect:[:entry | entry isArray ifTrue:[entry first] ifFalse:[entry]].
-                            implementations := listOfSuggestions collect:[:entry | entry isArray ifTrue:[entry second] ifFalse:[nil]].                            
-                            actions := listOfActions.
-                            anyFound := true.
-                            nil "/ must return nil to avoid DWIM to do it itself (for now)
-                    ]
-            ].
-            "/ anyFound ifFalse:[self halt].
-            "/ Transcript show:'suggestions: '; showCR:suggestions.
-            "/ Transcript show:'actions: '; showCR:actions.  
-            editView sensor
-                pushUserEvent:#'suggestionsArrived:implementations:actions:autoSelect:'
-                for:self
-                withArguments:{suggestions . implementations . actions . autoSelect }
-        ] forkAt:(Processor activePriority - 1).
-
-    "Modified: / 18-09-2013 / 14:17:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-stopCompletionProcess
-    "kill any background completion process"
-
-    |p|
-
-    (p := completionProcess) notNil ifTrue:[
-        completionProcess := nil.
-        p terminate.
-    ].
-!
-
-suggestionsArrived:suggestionsArg implementations:implementationsArg actions:actionsArg autoSelect:autoSelectArg
-    "the background process has generated some suggestions"
-
-    |v suggestions implementations actions suggestionOffset keyAndSnippet indexOfSnippet|
-
-    (editView sensor hasKeyPressEventFor:nil) ifTrue:[ 
-        self closeCompletionView. 
-        ^ self
-    ].
-
-    implementations := implementationsArg.
-    actions := actionsArg.
-
-    suggestions := suggestionsArg ? #().
-    suggestions size > 20 ifTrue:[ 
-        suggestions := suggestions copyTo:20.
-        implementations := implementations copyTo:20.
-        actions isArray ifTrue:[ actions := actions copyTo:20 ].
-    ].
-
-    "/ append snipplet, if any (can be easily reached via CRSR-up)
-    suggestionOffset := 0.
-    indexOfSnippet := nil.
-    (keyAndSnippet := editView findAbbreviationKeyBeforeCursor) notNil ifTrue:[
-        |abbrev sniplet i line|
-
-        abbrev := keyAndSnippet first.
-        sniplet := keyAndSnippet second.
-
-        "/ if the abbreviation is simply at the end of a longer word, ignore the abbrev.
-        line := editView lineStringBeforeCursor.
-        i := line findLast:[:ch | ch isLetterOrDigit not].
-        (i < (line size - abbrev size - 1)) ifFalse:[
-            sniplet := sniplet copyWithout:$!!.
-
-            "/ true, false and self are often found in both lists
-            (suggestions includes:sniplet) ifFalse:[   
-                suggestions isEmpty ifFalse:[ suggestions := suggestions copyWith: '-' ]. 
-                suggestions := suggestions copyWith: ( '%1 %2'
-                                        bindWith:(sniplet asStringCollection first "contractTo:25")
-                                        with: ( ('("',abbrev,'" snippet)') colorizeAllWith:Color grey)).
-                indexOfSnippet := suggestions size.
-
-                "/ change below, when reversing the order in above code
-                "/ suggestionOffset := 2.
-            ]
-        ]
-    ].
-    suggestions isEmptyOrNil ifTrue:[
-        self closeCompletionView.
-        ^ self
-    ].
-    (v := completionView) isNil ifTrue: [
-        ^ self
-    ].
-    v topView open.
-
-    v sensor
-        pushUserEvent:#value
-        for:[
-            |top idx preselectIdx|
-
-            (v == completionView) ifTrue: [
-                top := v topView.
-
-                LastCompletions notNil ifTrue:[
-                    "/ one of the last completions in list?
-                    idx := LastCompletions findFirst:[:compl | suggestions includes:compl].
-                    idx ~~ 0 ifTrue:[
-                        preselectIdx := suggestions indexOf:(LastCompletions at:idx).
-                    ].
-                ].
-                autoSelectArg ifTrue:[
-                    (preselectIdx isNil and:[suggestions size == 1]) ifTrue:[
-                        preselectIdx := 1.
-                    ].
-                ].
-                preselectIdx notNil ifTrue:[
-                    |pref|
-
-                    pref := suggestions at:preselectIdx.
-                    "/ for now, do not move to fron (action may need the index)
-                    suggestions at:preselectIdx put:(pref allBold).
-"/                    suggestions removeAtIndex:preselectIdx.                    
-"/                    suggestions addFirst:(pref allBold).
-"/                    implementations notNil ifTrue:[
-"/                        implementations removeAtIndex:preselectIdx.
-"/                        implementations addFirst:implementations.
-"/                    ]
-                ].
-
-                v list:suggestions 
-                        expandTabs:false scanForNonStrings:false
-                        includesNonStrings:false redraw:true.
-
-                implementations notNil ifTrue:[
-                    implementations keysAndValuesDo:[:idx :impls |
-                        |implsMenu|
-
-                        impls notEmptyOrNil ifTrue:[
-                            implsMenu := Menu new.
-                            impls do:[:each |
-                                implsMenu addItem:(MenuItem new label:each name).
-                            ].
-                            v subMenuAt:idx put:implsMenu
-                        ].
-                    ].
-                ].
-
-                v enable:true.
-                preselectIdx notNil ifTrue:[
-                    false ifTrue:[
-                        "/ very disturbing!!
-                        v selection:preselectIdx.
-                    ].
-                ].
-                v extent:completionView preferredExtentForContents.
-
-                v action:
-                    [:selectedListIndex | 
-                        |indexInSuggestions|
-
-                        self closeCompletionView.
-                        indexInSuggestions := selectedListIndex - suggestionOffset.
-                        (selectedListIndex == indexOfSnippet) ifTrue:[
-                            "/ replace the sniplet
-                            editView sensor
-                                pushUserEvent:#value
-                                for:[
-                                    editView expandAbbreviation
-                                ]
-                        ] ifFalse:[
-                            LastCompletions isNil ifTrue:[
-                                LastCompletions := OrderedCollection new.
-                            ].
-                            LastCompletions add:(suggestions at:indexInSuggestions).
-                            LastCompletions size > 200 ifTrue:[
-                                LastCompletions removeLast
-                            ].
-
-                            actions notNil ifTrue:[
-                                actions isBlock ifTrue:[
-                                    actions value:indexInSuggestions
-                                ] ifFalse:[
-                                    (actions at:indexInSuggestions) value
-                                ].
-                            ].
-                        ].
-                        "/ no, user has made his choice; so don't show more suggestions
-"/                        editView sensor
-"/                            pushUserEvent:#value
-"/                            for:[
-"/                                self updateCompletionList
-"/                            ]
-                    ].
-
-                (top ~~ v) ifTrue:[
-                    top resizeToFit.
-                    top bottom > v device usableHeight ifTrue:[
-                        top origin:((top origin x) @ (v device usableHeight - v height)).
-                    ].
-                    top raise.
-                ]
-            ]
-        ]
-!
-
-updateCompletionList
-    "called for keypress events"
-
-    self startCompletionProcess.
-! !
-
 !Workspace class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.306 2013-09-18 13:23:11 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.309 2013-09-26 17:34:48 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.306 2013-09-18 13:23:11 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.309 2013-09-26 17:34:48 vrany Exp $'
 ! !
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WorkspaceCompletionSupport.st	Fri Sep 27 23:01:16 2013 +0100
@@ -0,0 +1,240 @@
+"{ Package: 'stx:libwidg' }"
+
+EditTextViewCompletionSupport subclass:#WorkspaceCompletionSupport
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Smalltalk'
+!
+
+!WorkspaceCompletionSupport class methodsFor:'documentation'!
+
+documentation
+"
+    A completion support using DWIM to complete code for Smalltalk (and JavaScript)
+
+    [author:]
+        Claus Gittinger
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+        DoWhatIMeanSupport
+
+"
+! !
+
+!WorkspaceCompletionSupport methodsFor:'private'!
+
+computeCompletions
+
+    |suggestions implementations actions anyFound contextOrNil|
+
+    "/ a hack
+    (editView topView isKindOf: DebugView) ifTrue:[
+        contextOrNil := editView topView selectedContext.
+    ].
+
+    UserInformation ignoreIn:[
+        anyFound := false.
+        DoWhatIMeanSupport 
+            codeCompletionForLanguage: editView editedLanguage
+            method:editView editedMethod
+            orClass:editView editedClass 
+            context:contextOrNil 
+            codeView:editView 
+            into:[:listOfSuggestions :listOfActions :titleWhenAsking |
+"/ (listOfSuggestions contains:[:l | l isEmptyOrNil]) ifTrue:[self halt].
+                    suggestions := listOfSuggestions collect:[:entry | entry isArray ifTrue:[entry first] ifFalse:[entry]].
+                    implementations := listOfSuggestions collect:[:entry | entry isArray ifTrue:[entry second] ifFalse:[nil]].                            
+                    actions := listOfActions.
+                    anyFound := true.
+                    nil "/ must return nil to avoid DWIM to do it itself (for now)
+            ]
+    ].
+    "/ anyFound ifFalse:[self halt].
+    "/ Transcript show:'suggestions: '; showCR:suggestions.
+    "/ Transcript show:'actions: '; showCR:actions.  
+    editView sensor
+        pushUserEvent:#'suggestionsArrived:implementations:actions:autoSelect:'
+        for:self
+        withArguments:{suggestions . implementations . actions . autoSelect }
+
+    "Created: / 26-09-2013 / 17:44:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+suggestionsArrived:suggestionsArg implementations:implementationsArg actions:actionsArg autoSelect:autoSelectArg
+    "the background process has generated some suggestions"
+
+    |v suggestions implementations actions suggestionOffset keyAndSnippet indexOfSnippet|
+
+    (editView sensor hasKeyPressEventFor:nil) ifTrue:[ 
+        self closeCompletionView. 
+        ^ self
+    ].
+
+    implementations := implementationsArg.
+    actions := actionsArg.
+
+    suggestions := suggestionsArg ? #().
+    suggestions size > 20 ifTrue:[ 
+        suggestions := suggestions copyTo:20.
+        implementations := implementations copyTo:20.
+        actions isArray ifTrue:[ actions := actions copyTo:20 ].
+    ].
+
+    "/ append snipplet, if any (can be easily reached via CRSR-up)
+    suggestionOffset := 0.
+    indexOfSnippet := nil.
+    (keyAndSnippet := editView findAbbreviationKeyBeforeCursor) notNil ifTrue:[
+        |abbrev sniplet i line|
+
+        abbrev := keyAndSnippet first.
+        sniplet := keyAndSnippet second.
+
+        "/ if the abbreviation is simply at the end of a longer word, ignore the abbrev.
+        line := editView lineStringBeforeCursor.
+        i := line findLast:[:ch | ch isLetterOrDigit not].
+        (i < (line size - abbrev size - 1)) ifFalse:[
+            sniplet := sniplet copyWithout:$!!.
+
+            "/ true, false and self are often found in both lists
+            (suggestions includes:sniplet) ifFalse:[   
+                suggestions isEmpty ifFalse:[ suggestions := suggestions copyWith: '-' ]. 
+                suggestions := suggestions copyWith: ( '%1 %2'
+                                        bindWith:(sniplet asStringCollection first "contractTo:25")
+                                        with: ( ('("',abbrev,'" snippet)') colorizeAllWith:Color grey)).
+                indexOfSnippet := suggestions size.
+
+                "/ change below, when reversing the order in above code
+                "/ suggestionOffset := 2.
+            ]
+        ]
+    ].
+    suggestions isEmptyOrNil ifTrue:[
+        self closeCompletionView.
+        ^ self
+    ].
+    (v := completionView) isNil ifTrue: [
+        ^ self
+    ].
+
+    v sensor
+        pushUserEvent:#value
+        for:[
+            |top idx preselectIdx performCompletion|
+
+            (v == completionView) ifTrue: [
+                top := v topView.
+
+                LastCompletions notNil ifTrue:[
+                    "/ one of the last completions in list?
+                    idx := LastCompletions findFirst:[:compl | suggestions includes:compl].
+                    idx ~~ 0 ifTrue:[
+                        preselectIdx := suggestions indexOf:(LastCompletions at:idx).
+                    ].
+                ].
+                autoSelectArg ifTrue:[
+                    (preselectIdx isNil and:[suggestions size == 1]) ifTrue:[
+                        preselectIdx := 1.
+                    ].
+                ].
+                preselectIdx notNil ifTrue:[
+                    |pref|
+
+                    pref := suggestions at:preselectIdx.
+                    "/ for now, do not move to front (action needs the index)
+                    suggestions at:preselectIdx put:(pref allBold).
+"/                    suggestions removeAtIndex:preselectIdx.                    
+"/                    suggestions addFirst:(pref allBold).
+"/                    implementations notNil ifTrue:[
+"/                        implementations removeAtIndex:preselectIdx.
+"/                        implementations addFirst:implementations.
+"/                    ]
+                ].
+
+                performCompletion :=
+                    [:selectedListIndex | 
+                        |indexInSuggestions|
+
+                        self closeCompletionView.
+                        indexInSuggestions := selectedListIndex - suggestionOffset.
+                        (selectedListIndex == indexOfSnippet) ifTrue:[
+                            "/ replace the sniplet
+                            editView sensor pushUserEvent:#expandAbbreviation for:editView
+                        ] ifFalse:[
+                            LastCompletions isNil ifTrue:[
+                                LastCompletions := OrderedCollection new.
+                            ].
+                            LastCompletions add:(suggestions at:indexInSuggestions).
+                            LastCompletions size > 200 ifTrue:[
+                                LastCompletions removeLast
+                            ].
+
+                            actions notNil ifTrue:[
+                                actions isBlock ifTrue:[
+                                    actions value:indexInSuggestions
+                                ] ifFalse:[
+                                    (actions at:indexInSuggestions) value
+                                ].
+                            ].
+                        ].
+                        "/ disabled - user has made his choice; so don't show more suggestions
+                        "/ editView sensor pushUserEvent:#updateCompletionList for:self
+                    ].
+
+                ((suggestions size == 1) and:[preselectIdx == 1]) ifTrue:[
+                    "/ do it, right here and now
+                    performCompletion value:preselectIdx.
+                ] ifFalse:[
+                    top open.
+                    v list:suggestions 
+                            expandTabs:false scanForNonStrings:false
+                            includesNonStrings:false redraw:true.
+
+                    implementations notNil ifTrue:[
+                        implementations keysAndValuesDo:[:idx :impls |
+                            |implsMenu|
+
+                            impls notEmptyOrNil ifTrue:[
+                                implsMenu := Menu new.
+                                impls do:[:each |
+                                    implsMenu addItem:(MenuItem new label:each name).
+                                ].
+                                v subMenuAt:idx put:implsMenu
+                            ].
+                        ].
+                    ].
+
+                    v enable:true.
+                    preselectIdx notNil ifTrue:[
+                        "/ very disturbing!!
+                        v selection:preselectIdx.
+                    ].
+                    v extent:completionView preferredExtentForContents.
+                    v action:performCompletion.
+
+                    (top ~~ v) ifTrue:[
+                        top resizeToFit.
+                        top bottom > v device usableHeight ifTrue:[
+                            top origin:((top origin x) @ (v device usableHeight - v height)).
+                        ].
+                        top raise.
+                    ]
+                ]
+            ]
+        ]
+! !
+
+!WorkspaceCompletionSupport class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libwidg/WorkspaceCompletionSupport.st,v 1.1 2013-09-26 17:07:44 vrany Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libwidg/WorkspaceCompletionSupport.st,v 1.1 2013-09-26 17:07:44 vrany Exp $'
+! !
+
--- a/abbrev.stc	Mon Sep 23 14:20:54 2013 +0100
+++ b/abbrev.stc	Fri Sep 27 23:01:16 2013 +0100
@@ -1,37 +1,29 @@
 # automagically generated by the project definition
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
+Label Label stx:libwidg 'Views-Layout' 2
+Button Button stx:libwidg 'Views-Interactors' 2
 ArrowButton ArrowButton stx:libwidg 'Views-Interactors' 2
-Button Button stx:libwidg 'Views-Interactors' 2
 ButtonController ButtonController stx:libwidg 'Interface-Support-Controllers' 0
 CheckLabel CheckLabel stx:libwidg 'Views-Layout' 2
+Toggle Toggle stx:libwidg 'Views-Interactors' 2
+ToggleController ToggleController stx:libwidg 'Interface-Support-Controllers' 0
 CheckToggle CheckToggle stx:libwidg 'Views-Interactors' 2
-ClickMenuView ClickMenuView stx:libwidg 'Views-Menus' 2
-CodeView CodeView stx:libwidg 'Views-Text' 2
 DialogBox DialogBox stx:libwidg 'Views-DialogBoxes' 2
+ListView ListView stx:libwidg 'Views-Text' 2
+TextView TextView stx:libwidg 'Views-Text' 2
+EditTextView EditTextView stx:libwidg 'Views-Text' 2
 EditField EditField stx:libwidg 'Views-Text' 2
-EditTextView EditTextView stx:libwidg 'Views-Text' 2
 EnterBox EnterBox stx:libwidg 'Views-DialogBoxes' 2
 EnterBox2 EnterBox2 stx:libwidg 'Views-DialogBoxes' 2
 EnterFieldGroup EnterFieldGroup stx:libwidg 'Interface-Support' 0
-FileSaveBox FileSaveBox stx:libwidg 'Views-DialogBoxes' 2
-FileSelectionBox FileSelectionBox stx:libwidg 'Views-DialogBoxes' 2
-FileSelectionList FileSelectionList stx:libwidg 'Views-Lists' 2
 FontPanel FontPanel stx:libwidg 'Views-DialogBoxes' 2
 FramedBox FramedBox stx:libwidg 'Views-Layout' 2
-HVScrollableView HVScrollableView stx:libwidg 'Views-Basic' 2
-HorizontalMiniScroller HorizontalMiniScroller stx:libwidg 'Views-Interactors' 2
-HorizontalPanelView HorizontalPanelView stx:libwidg 'Views-Layout' 2
-HorizontalScrollBar HorizontalScrollBar stx:libwidg 'Views-Interactors' 2
-HorizontalScroller HorizontalScroller stx:libwidg 'Views-Interactors' 2
 InfoBox InfoBox stx:libwidg 'Views-DialogBoxes' 2
-Label Label stx:libwidg 'Views-Layout' 2
 ListSelectionBox ListSelectionBox stx:libwidg 'Views-DialogBoxes' 2
-ListView ListView stx:libwidg 'Views-Text' 2
+FileSelectionBox FileSelectionBox stx:libwidg 'Views-DialogBoxes' 2
+FileSaveBox FileSaveBox stx:libwidg 'Views-DialogBoxes' 2
 ListViewController ListViewController stx:libwidg 'Interface-Support' 0
-MenuView MenuView stx:libwidg 'Views-Menus' 2
-MiniScroller MiniScroller stx:libwidg 'Views-Interactors' 2
-MultiSelectionInList MultiSelectionInList stx:libwidg 'Interface-Support-Models' 0
 ObjectView ObjectView stx:libwidg 'Views-Basic' 2
 OptionBox OptionBox stx:libwidg 'Views-DialogBoxes' 2
 PanelView PanelView stx:libwidg 'Views-Layout' 2
@@ -43,24 +35,32 @@
 RadioButtonController RadioButtonController stx:libwidg 'Interface-Support-Controllers' 0
 RadioButtonGroup RadioButtonGroup stx:libwidg 'Views-Support' 0
 ScrollBar ScrollBar stx:libwidg 'Views-Interactors' 2
+HorizontalScrollBar HorizontalScrollBar stx:libwidg 'Views-Interactors' 2
 ScrollableView ScrollableView stx:libwidg 'Views-Basic' 2
+HVScrollableView HVScrollableView stx:libwidg 'Views-Basic' 2
+HorizontalPanelView HorizontalPanelView stx:libwidg 'Views-Layout' 2
 Scroller Scroller stx:libwidg 'Views-Interactors' 2
+MiniScroller MiniScroller stx:libwidg 'Views-Interactors' 2
+HorizontalMiniScroller HorizontalMiniScroller stx:libwidg 'Views-Interactors' 2
+HorizontalScroller HorizontalScroller stx:libwidg 'Views-Interactors' 2
 SelectionInList SelectionInList stx:libwidg 'Interface-Support-Models' 0
+MultiSelectionInList MultiSelectionInList stx:libwidg 'Interface-Support-Models' 0
 SelectionInListView SelectionInListView stx:libwidg 'Views-Lists' 2
+FileSelectionList FileSelectionList stx:libwidg 'Views-Lists' 2
+MenuView MenuView stx:libwidg 'Views-Menus' 2
+ClickMenuView ClickMenuView stx:libwidg 'Views-Menus' 2
 SequenceView SequenceView stx:libwidg 'Views-Lists' 2
 TextCollector TextCollector stx:libwidg 'Views-Text' 2
-TextView TextView stx:libwidg 'Views-Text' 2
-Toggle Toggle stx:libwidg 'Views-Interactors' 2
-ToggleController ToggleController stx:libwidg 'Interface-Support-Controllers' 0
+VariablePanel VariablePanel stx:libwidg 'Views-Layout' 2
+VariablePanelController VariablePanelController stx:libwidg 'Interface-Support-Controllers' 0
 VariableHorizontalPanel VariableHorizontalPanel stx:libwidg 'Views-Layout' 2
 VariableHorizontalPanelController VariableHorizontalPanelController stx:libwidg 'Interface-Support-Controllers' 0
-VariablePanel VariablePanel stx:libwidg 'Views-Layout' 2
-VariablePanelController VariablePanelController stx:libwidg 'Interface-Support-Controllers' 0
 VariableVerticalPanel VariableVerticalPanel stx:libwidg 'Views-Layout' 2
 VariableVerticalPanelController VariableVerticalPanelController stx:libwidg 'Interface-Support-Controllers' 0
 VerticalPanelView VerticalPanelView stx:libwidg 'Views-Layout' 2
 WarningBox WarningBox stx:libwidg 'Views-DialogBoxes' 2
 Workspace Workspace stx:libwidg 'Interface-Smalltalk' 2
+CodeView CodeView stx:libwidg 'Views-Text' 2
 YesNoBox YesNoBox stx:libwidg 'Views-DialogBoxes' 2
 stx_libwidg stx_libwidg stx:libwidg '* Projects & Packages *' 3
 MultiColumnPanelView MultiColumnPanelView stx:libwidg 'Views-Layout' 2
@@ -69,3 +69,5 @@
 VistaToolbarIconLibrary VistaToolbarIconLibrary stx:libwidg 'Interface-Smalltalk' 0
 MenuEvent MenuEvent stx:libwidg 'Views-Menus' 0
 Windows8ToolbarIconLibrary Windows8ToolbarIconLibrary stx:libwidg 'Interface-Smalltalk' 0
+EditTextViewCompletionSupport EditTextViewCompletionSupport stx:libwidg 'Views-Text' 0
+WorkspaceCompletionSupport WorkspaceCompletionSupport stx:libwidg 'Interface-Smalltalk' 0
--- a/bc.mak	Mon Sep 23 14:20:54 2013 +0100
+++ b/bc.mak	Fri Sep 27 23:01:16 2013 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libwidg/bc.mak,v 1.55 2013-05-28 10:33:15 cg Exp $
+# $Header: /cvs/stx/stx/libwidg/bc.mak,v 1.56 2013-09-26 17:32:55 vrany Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libwidg.
@@ -37,7 +37,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libui -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libview
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
@@ -51,21 +51,25 @@
 
 !INCLUDE $(TOP)\rules\stdRules_bc
 
-# build all prerequisite packages for this package
+# build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 	pushd ..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
 
 
 
 
 
+clean::
+	del *.$(CSUFFIX)
+
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)ButtonController.$(O) ButtonController.$(H): ButtonController.st $(INCLUDE_TOP)\stx\libview\Controller.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DialogBox.$(O) DialogBox.$(H): DialogBox.st $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)EditTextViewCompletionSupport.$(O) EditTextViewCompletionSupport.$(H): EditTextViewCompletionSupport.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)EnterFieldGroup.$(O) EnterFieldGroup.$(H): EnterFieldGroup.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)FramedBox.$(O) FramedBox.$(H): FramedBox.st $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GenericToolbarIconLibrary.$(O) GenericToolbarIconLibrary.$(H): GenericToolbarIconLibrary.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -107,6 +111,7 @@
 $(OUTDIR)VariableVerticalPanel.$(O) VariableVerticalPanel.$(H): VariableVerticalPanel.st $(INCLUDE_TOP)\stx\libwidg\VariablePanel.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VariableVerticalPanelController.$(O) VariableVerticalPanelController.$(H): VariableVerticalPanelController.st $(INCLUDE_TOP)\stx\libwidg\VariablePanelController.$(H) $(INCLUDE_TOP)\stx\libview\Controller.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VerticalPanelView.$(O) VerticalPanelView.$(H): VerticalPanelView.st $(INCLUDE_TOP)\stx\libwidg\PanelView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)WorkspaceCompletionSupport.$(O) WorkspaceCompletionSupport.$(H): WorkspaceCompletionSupport.st $(INCLUDE_TOP)\stx\libwidg\EditTextViewCompletionSupport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)XPToolbarIconLibrary.$(O) XPToolbarIconLibrary.$(H): XPToolbarIconLibrary.st $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ArrowButton.$(O) ArrowButton.$(H): ArrowButton.st $(INCLUDE_TOP)\stx\libwidg\Button.$(H) $(INCLUDE_TOP)\stx\libwidg\Label.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)EditTextView.$(O) EditTextView.$(H): EditTextView.st $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(STCHDR)
--- a/libInit.cc	Mon Sep 23 14:20:54 2013 +0100
+++ b/libInit.cc	Fri Sep 27 23:01:16 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * $Header$
+ * $Header: /cvs/stx/stx/libwidg/libInit.cc,v 1.30 2013-09-26 17:34:39 vrany Exp $
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libwidg.
@@ -29,6 +29,7 @@
 __BEGIN_PACKAGE2__("libstx_libwidg", _libstx_libwidg_Init, "stx:libwidg");
 _ButtonController_Init(pass,__pRT__,snd);
 _DialogBox_Init(pass,__pRT__,snd);
+_EditTextViewCompletionSupport_Init(pass,__pRT__,snd);
 _EnterFieldGroup_Init(pass,__pRT__,snd);
 _FramedBox_Init(pass,__pRT__,snd);
 _GenericToolbarIconLibrary_Init(pass,__pRT__,snd);
@@ -70,6 +71,7 @@
 _VariableVerticalPanel_Init(pass,__pRT__,snd);
 _VariableVerticalPanelController_Init(pass,__pRT__,snd);
 _VerticalPanelView_Init(pass,__pRT__,snd);
+_WorkspaceCompletionSupport_Init(pass,__pRT__,snd);
 _XPToolbarIconLibrary_Init(pass,__pRT__,snd);
 _ArrowButton_Init(pass,__pRT__,snd);
 _EditTextView_Init(pass,__pRT__,snd);
--- a/libwidg.rc	Mon Sep 23 14:20:54 2013 +0100
+++ b/libwidg.rc	Fri Sep 27 23:01:16 2013 +0100
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libwidg.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,32767,32767
+  FILEVERSION     6,2,1,34
   PRODUCTVERSION  6,2,3,0
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Elementary Widgets (LIB)\0"
-      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "FileVersion", "6.2.1.34\0"
       VALUE "InternalName", "stx:libwidg\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Fri, 30 Aug 2013 19:19:56 GMT\0"
+      VALUE "ProductDate", "Thu, 26 Sep 2013 17:31:25 GMT\0"
     END
 
   END
--- a/stx_libwidg.st	Mon Sep 23 14:20:54 2013 +0100
+++ b/stx_libwidg.st	Fri Sep 27 23:01:16 2013 +0100
@@ -122,37 +122,29 @@
 
     ^ #(
         "<className> or (<className> attributes...) in load order"
+        Label
+        Button     
         ArrowButton
-        Button
-        ButtonController
+        ButtonController 
         CheckLabel
+        Toggle
+        ToggleController
         CheckToggle
-        ClickMenuView
-        CodeView
         DialogBox
+        ListView
+        TextView
+        EditTextView
         EditField
-        EditTextView
         EnterBox
         EnterBox2
         EnterFieldGroup
-        FileSaveBox
-        FileSelectionBox
-        FileSelectionList
         FontPanel
         FramedBox
-        HVScrollableView
-        HorizontalMiniScroller
-        HorizontalPanelView
-        HorizontalScrollBar
-        HorizontalScroller
         InfoBox
-        Label
         ListSelectionBox
-        ListView
+        FileSelectionBox
+        FileSaveBox
         (ListViewController autoload)
-        MenuView
-        MiniScroller
-        MultiSelectionInList
         ObjectView
         OptionBox
         PanelView
@@ -164,24 +156,32 @@
         RadioButtonController
         RadioButtonGroup
         ScrollBar
+        HorizontalScrollBar
         ScrollableView
+        HVScrollableView
+        HorizontalPanelView
         Scroller
+        MiniScroller
+        HorizontalMiniScroller
+        HorizontalScroller
         SelectionInList
+        MultiSelectionInList
         SelectionInListView
+        FileSelectionList
+        MenuView
+        ClickMenuView
         SequenceView
         TextCollector
-        TextView
-        Toggle
-        ToggleController
+        VariablePanel
+        VariablePanelController
         VariableHorizontalPanel
         VariableHorizontalPanelController
-        VariablePanel
-        VariablePanelController
         VariableVerticalPanel
         VariableVerticalPanelController
         VerticalPanelView
         WarningBox
         Workspace
+        CodeView
         YesNoBox
         #'stx_libwidg'
         MultiColumnPanelView
@@ -190,8 +190,11 @@
         VistaToolbarIconLibrary
         MenuEvent
         Windows8ToolbarIconLibrary
-        DialogConfirmationRequest
+        EditTextViewCompletionSupport
+        WorkspaceCompletionSupport
     )
+
+    "Modified: / 26-09-2013 / 18:29:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames
@@ -240,10 +243,10 @@
 !stx_libwidg class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/stx_libwidg.st,v 1.34 2013-07-29 07:47:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/stx_libwidg.st,v 1.35 2013-09-26 17:34:51 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/stx_libwidg.st,v 1.34 2013-07-29 07:47:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/stx_libwidg.st,v 1.35 2013-09-26 17:34:51 vrany Exp $'
 ! !