Merge jv
authorMerge Script
Mon, 12 Sep 2016 06:57:58 +0200
branchjv
changeset 5237 e532570a2549
parent 5235 59dff2af4d54 (diff)
parent 5236 cd1625cfd882 (current diff)
child 5241 599ff1102334
Merge
TerminalView.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Mon Sep 12 06:57:58 2016 +0200
@@ -0,0 +1,16 @@
+
+syntax: glob
+*Init.c   
+makefile
+*.so
+*.H
+*.o
+*.STH
+*.sc
+objbc
+objvc
+*.class
+java/libs/*.jar
+java/libs-src/*.jar
+*-Test.xml
+st.chg
--- a/AssistantApplication.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/AssistantApplication.st	Mon Sep 12 06:57:58 2016 +0200
@@ -1,3 +1,14 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
 "{ Package: 'stx:libwidg2' }"
 
 "{ NameSpace: Smalltalk }"
@@ -16,6 +27,20 @@
 
 !AssistantApplication class methodsFor:'documentation'!
 
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
 documentation
 "
     an easy to use framework for assistant-dialog applications.
--- a/ColoredListEntry.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ColoredListEntry.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 ListEntry subclass:#ColoredListEntry
 	instanceVariableNames:'color string bgColor'
@@ -179,3 +180,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ColoredListEntry.st,v 1.14 2006-11-13 16:11:29 cg Exp $'
 ! !
+
--- a/ComboBrowseView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ComboBrowseView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 ComboBoxView subclass:#ComboBrowseView
 	instanceVariableNames:'browseAction'
@@ -154,3 +155,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ComboBrowseView.st,v 1.4 2006-11-13 16:11:29 cg Exp $'
 ! !
+
--- a/ComboUpDownView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ComboUpDownView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,10 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
 "{ Package: 'stx:libwidg2' }"
 
-'From Smalltalk/X, Version:3.2.1 on 25-oct-1997 at 9:33:18 pm'                  !
+"{ NameSpace: Smalltalk }"
 
 ComboBoxView subclass:#ComboUpDownView
 	instanceVariableNames:'minValue maxValue step currentValue values valueIndex'
@@ -287,3 +286,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ComboUpDownView.st,v 1.5 2006-11-13 16:11:29 cg Exp $'
 ! !
+
--- a/DoWhatIMeanSupport.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/DoWhatIMeanSupport.st	Mon Sep 12 06:57:58 2016 +0200
@@ -1185,7 +1185,7 @@
                 language := method programmingLanguage
             ] ifFalse:[
                 contextOrNilArg isJavaContext ifTrue:[
-                    language := JavaLanguage instance
+                    language := (Smalltalk at:#JavaLanguage) instance
                 ] ifFalse:[
                     language := SmalltalkLanguage instance.
                 ].
@@ -1212,10 +1212,9 @@
 
     "/ No completion support for given language
     "/ self breakPoint: #cg.
-    self breakPoint: #jv.
 
     "Created: / 27-09-2013 / 10:21:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 26-11-2013 / 23:43:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-09-2015 / 07:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 codeCompletionForLanguage: languageOrNil class: classOrNilArg context:contextOrNilArg codeView:codeViewArg
@@ -1282,21 +1281,21 @@
      or nil, if called from the browser.
      If nonNil, we can make better guesses, because we actually know what a variable's type is"
 
-    languageOrNil := STXJavaScriptLanguage instance.
+    languageOrNil := (Smalltalk at:#STXJavaScriptLanguage) instance.
     methodOrNil := methodOrNilArg.
     classOrNil := classOrNilArg.
     codeView := codeViewArg.
     contextOrNil := contextOrNilArg.
 
-    JavaScriptCompletionEngine notNil ifTrue:[
-        JavaScriptCompletionEngine new
+    (Smalltalk at:#STXJavaScriptLanguage) notNil ifTrue:[
+        (Smalltalk at:#STXJavaScriptLanguage) new
            completeForMethod: methodOrNil class: classOrNil context: contextOrNil codeView: codeView into: actionBlock.
     ].
 
     self information:'Not yet supported'.
 
     "Created: / 18-09-2013 / 16:24:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-09-2013 / 15:13:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-09-2015 / 07:37:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !DoWhatIMeanSupport methodsFor:'code completion - Smalltalk'!
@@ -4799,7 +4798,9 @@
                         rbTypes size > 1 ifTrue:[
                             rbTypes remove:ProtoObject ifAbsent:[].
                             rbTypes remove:Autoload ifAbsent:[].
-                            rbTypes remove:ObsoleteObject ifAbsent:[].
+                            (Smalltalk includesKey:#ObsoleteObject) ifTrue:[
+                                rbTypes remove:(Smalltalk at:#ObsoleteObject) ifAbsent:[].
+                            ]
                         ].
                         rbTypes size == 1 ifTrue:[
                             rbType := rbTypes first.
@@ -5102,8 +5103,8 @@
     ].
 
     "Created: / 10-11-2006 / 13:18:27 / cg"
-    "Modified: / 16-02-2010 / 10:33:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 30-04-2016 / 18:21:21 / cg"
+    "Modified: / 25-09-2015 / 07:39:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 codeCompletionForVariable:node inClass:classOrNil codeView:codeView
@@ -6199,5 +6200,10 @@
 
 version_CVS
     ^ '$Header$'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
 
--- a/GraphColumn.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/GraphColumn.st	Mon Sep 12 06:57:58 2016 +0200
@@ -1,5 +1,7 @@
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 Model subclass:#GraphColumn
 	instanceVariableNames:'aspects functionYblock'
 	classVariableNames:''
@@ -733,3 +735,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumn.st,v 1.4 2006-11-13 16:11:29 cg Exp $'
 ! !
+
--- a/GraphColumnView2DSpec.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/GraphColumnView2DSpec.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 GraphColumnViewSpec subclass:#GraphColumnView2DSpec
 	instanceVariableNames:'gridX gridY actionBlock doubleClickBlock buttonReleaseBlock
 		menuAccessBlock'
@@ -487,3 +489,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView2DSpec.st,v 1.11 2008-01-10 13:00:51 cg Exp $'
 ! !
+
--- a/GraphColumnView3D.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/GraphColumnView3D.st	Mon Sep 12 06:57:58 2016 +0200
@@ -874,7 +874,7 @@
         index := colorMap size + self class numberOfStandardColors.
 
         (    (index > self class maxColors)
-         or:[(useCol := useCol onDevice:device) colorId isNil]
+         or:[(useCol := useCol onDevice:self device) colorId isNil]
         ) ifTrue:[
             Transcript showCR:'cannot allocate more colors'.
             index := (useCol brightness > 0.5) ifTrue:[White]
--- a/GraphColumnView3DSpec.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/GraphColumnView3DSpec.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 GraphColumnViewSpec subclass:#GraphColumnView3DSpec
 	instanceVariableNames:'rotateX rotateY rotateZ zoomZ'
 	classVariableNames:''
@@ -356,3 +358,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView3DSpec.st,v 1.10 2008-01-10 13:00:52 cg Exp $'
 ! !
+
--- a/GraphColumnViewSpec.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/GraphColumnViewSpec.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 MenuComponentSpec subclass:#GraphColumnViewSpec
 	instanceVariableNames:'listHolder references referenceSelector showGrid showDefaultMenu
 		zoomY windowSize graphOriginX scrollUpdatesOriginX'
@@ -690,4 +692,5 @@
     ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnViewSpec.st,v 1.13 2008-01-10 13:00:55 cg Exp $'
 ! !
 
+
 GraphColumnViewSpec initialize!
--- a/HorizontalScale.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/HorizontalScale.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 SimpleView subclass:#HorizontalScale
 	instanceVariableNames:'slider range action'
@@ -143,3 +144,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/HorizontalScale.st,v 1.6 2006-11-13 16:11:30 cg Exp $'
 ! !
+
--- a/ImageSelectionBox.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ImageSelectionBox.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 FileSelectionBox subclass:#ImageSelectionBox
 	instanceVariableNames:'previewField preview info'
@@ -19,7 +20,7 @@
 	category:'Views-DialogBoxes'
 !
 
-!ImageSelectionBox  class methodsFor:'documentation'!
+!ImageSelectionBox class methodsFor:'documentation'!
 
 copyright
 "
@@ -183,8 +184,9 @@
     "Modified: 7.6.1996 / 12:25:19 / cg"
 ! !
 
-!ImageSelectionBox  class methodsFor:'documentation'!
+!ImageSelectionBox class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ImageSelectionBox.st,v 1.6 2006-11-13 16:11:30 cg Exp $'
 ! !
+
--- a/KeyboardView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/KeyboardView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 View subclass:#KeyboardView
 	instanceVariableNames:'targetView keyboardImage keyPositions shiftLeftState
 		shiftRightState altLeftState altRightState ctrlLeftState
--- a/LabelAndIcon.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/LabelAndIcon.st	Mon Sep 12 06:57:58 2016 +0200
@@ -460,7 +460,8 @@
 
     |iconHeight imageHeight stringHeight oneMillimeter|
 
-    oneMillimeter := aGC device isNil ifTrue:[2] ifFalse:[aGC horizontalIntegerPixelPerMillimeter].
+    "/oneMillimeter := aGC device isNil ifTrue:[2] ifFalse:[aGC horizontalIntegerPixelPerMillimeter].
+    oneMillimeter := 0.
 
     icon notNil ifTrue:[
         iconHeight := icon value height + oneMillimeter
@@ -478,6 +479,8 @@
         stringHeight := 0   
     ].
     ^ (iconHeight max: imageHeight) max: stringHeight
+
+    "Modified: / 02-06-2015 / 14:14:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 widthOn:aGC
@@ -528,5 +531,10 @@
 
 version_CVS
     ^ '$Header$'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
 
--- a/LinkButton.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/LinkButton.st	Mon Sep 12 06:57:58 2016 +0200
@@ -1,3 +1,14 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
 "{ Package: 'stx:libwidg2' }"
 
 "{ NameSpace: Smalltalk }"
@@ -11,6 +22,20 @@
 
 !LinkButton class methodsFor:'documentation'!
 
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
 documentation
 "
     Looks like a Label, but behaves like a button with individually clickable text components.
--- a/ListEditor.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ListEditor.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 ApplicationModel subclass:#ListEditor
 	instanceVariableNames:'choiceList choiceSelection selectionList selectionSelection'
@@ -200,3 +201,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ListEditor.st,v 1.5 2006-11-13 16:11:30 cg Exp $'
 ! !
+
--- a/Make.proto	Sun Sep 11 15:41:51 2016 +0200
+++ b/Make.proto	Mon Sep 12 06:57:58 2016 +0200
@@ -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/libbasic2 -I$(INCLUDE_TOP)/stx/libui -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/browser -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libui -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
 
 
 # if you need any additional defines for embedded C code,
@@ -70,6 +70,13 @@
 
 
 
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_libwidg2.$(O): $(shell hg root)/.hg/dirstate
+endif
+
 
 
 
--- a/Make.spec	Sun Sep 11 15:41:51 2016 +0200
+++ b/Make.spec	Mon Sep 12 06:57:58 2016 +0200
@@ -76,6 +76,7 @@
 	HierarchyNode \
 	ImageView \
 	LabelledEnterField \
+	LicenceBox \
 	LinkButton \
 	LinkButtonController \
 	ListEntry \
@@ -120,6 +121,7 @@
 	ImageEditView \
 	ModelListEntry \
 	MultiColListEntry \
+	PluggableHierarchicalList \
 	SelectionInListModelView \
 	TabView \
 	ThreeColumnTextView \
@@ -135,7 +137,6 @@
 	HierarchicalItemWithLabelAndIcon \
 	LabelAndTwoIcons \
 	HierarchicalItemWithLabelAndIconAndValue \
-	LicenceBox \
 
 
 
@@ -166,6 +167,7 @@
     $(OUTDIR_SLASH)HierarchyNode.$(O) \
     $(OUTDIR_SLASH)ImageView.$(O) \
     $(OUTDIR_SLASH)LabelledEnterField.$(O) \
+    $(OUTDIR_SLASH)LicenceBox.$(O) \
     $(OUTDIR_SLASH)LinkButton.$(O) \
     $(OUTDIR_SLASH)LinkButtonController.$(O) \
     $(OUTDIR_SLASH)ListEntry.$(O) \
@@ -210,6 +212,7 @@
     $(OUTDIR_SLASH)ImageEditView.$(O) \
     $(OUTDIR_SLASH)ModelListEntry.$(O) \
     $(OUTDIR_SLASH)MultiColListEntry.$(O) \
+    $(OUTDIR_SLASH)PluggableHierarchicalList.$(O) \
     $(OUTDIR_SLASH)SelectionInListModelView.$(O) \
     $(OUTDIR_SLASH)TabView.$(O) \
     $(OUTDIR_SLASH)ThreeColumnTextView.$(O) \
@@ -225,7 +228,6 @@
     $(OUTDIR_SLASH)HierarchicalItemWithLabelAndIcon.$(O) \
     $(OUTDIR_SLASH)LabelAndTwoIcons.$(O) \
     $(OUTDIR_SLASH)HierarchicalItemWithLabelAndIconAndValue.$(O) \
-    $(OUTDIR_SLASH)LicenceBox.$(O) \
 
 
 
--- a/MenuButton.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/MenuButton.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 Button subclass:#MenuButton
 	instanceVariableNames:'enterAction'
 	classVariableNames:''
--- a/MenuPanel.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/MenuPanel.st	Mon Sep 12 06:57:58 2016 +0200
@@ -6883,17 +6883,21 @@
 
     app := menuPanel application.
 
+    "/ JV@2016-04-15: Fix for https://swing.fit.cvut.cz/projects/stx-jv/ticket/78
+    "/ The isKinfOf: below is a super ugly, whip me hard,
+    "/ but a correct fix, i.e., adding isUIPainter to UISelectionPanel
+    "/ would require to fork stx:libtool2 which I'd like to avoid for now.
+    "/ If more fixes would go to stx:libtool2 then I will fork, and
+    "/ remove this code.
     (menuPanel receiver isNil
     and:[ app notNil
-    and:[ app askFor:#isUIPainter]])
+    and:[ (app askFor:#isUIPainter) or:[app isKindOf: (Smalltalk at:#UISelectionPanel)]]])
     ifTrue:[
-	^ self "/ suppressed
-    ].
-    aMessage infoPrint.
-"/    app notNil ifTrue:[
-"/        ' Application: ' infoPrint. app infoPrint
-"/    ].
-    '' infoPrintCR.
+        ^ self "/ suppressed
+    ].
+    Logger info: aMessage
+
+    "Modified: / 15-04-2016 / 18:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 indication
@@ -7467,7 +7471,7 @@
             ex reject
         ].
         self ifNotInUIBuilderInfoPrintCR:
-            ('MenuPanel::Item [error]: application (%1) does not provide aspect: %2 (in %3)'
+            ('application (%1) does not provide aspect: %2 (in %3)'
              bindWith:appl classNameWithArticle
              with:aKey
              with:(label isString ifTrue:[label] ifFalse:[self nameKey ? self itemValue ? '???'])).
@@ -7485,6 +7489,7 @@
     ^ value
 
     "Modified: / 02-08-2013 / 16:44:28 / cg"
+    "Modified: / 15-04-2016 / 18:29:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !MenuPanel::Item methodsFor:'change & update'!
@@ -8504,39 +8509,40 @@
     indication isNil ifTrue:[^ self].                                   "no indication specified"
 
     indication isSymbol ifFalse:[
-	indication perform:#value: with:aValue ifNotUnderstood:nil.     "block or model"
-	^ self
+        indication perform:#value: with:aValue ifNotUnderstood:nil.     "block or model"
+        ^ self
     ].
 
     (numArgs := indication numArgs) == 0 ifTrue:[                       "no arguments to selector; cannot set"
-	^ self
+        ^ self
     ].
 
     recv := menuPanel receiver.
     recv isValueModel ifTrue:[^ self].
 
     recv isNil ifTrue:[
-	recv := menuPanel application.
-	recv isNil ifTrue:[^ self].
+        recv := menuPanel application.
+        recv isNil ifTrue:[^ self].
     ].
 
     MessageNotUnderstood handle:[:ex|
-	(ex selector ~~ indication) ifTrue:[
-	    ex reject
-	].
-	self ifNotInUIBuilderInfoPrintCR:
-	    ('MenuPanel::Item [info]: application (%1) does not respond to: %2'
-	     bindWith:recv classNameWithArticle
-	     with:indication).
+        (ex selector ~~ indication) ifTrue:[
+            ex reject
+        ].
+        self ifNotInUIBuilderInfoPrintCR:
+            ('application (%1) does not respond to: %2'
+             bindWith:recv classNameWithArticle
+             with:indication).
     ] do:[
-	numArgs == 1 ifTrue:[
-	    recv perform:indication with:aValue
-	] ifFalse:[
-	    recv perform:indication with:(menuItem argument ? self) with:aValue
-	]
+        numArgs == 1 ifTrue:[
+            recv perform:indication with:aValue
+        ] ifFalse:[
+            recv perform:indication with:(menuItem argument ? self) with:aValue
+        ]
     ].
 
     "Modified (format): / 02-08-2013 / 16:42:20 / cg"
+    "Modified: / 15-04-2016 / 18:28:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 isEntered
@@ -9270,6 +9276,11 @@
 
 version_CVS
     ^ '$Header$'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
 
 
--- a/MotionButton.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/MotionButton.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 Button subclass:#MotionButton
 	instanceVariableNames:'oldBorderWidth'
 	classVariableNames:''
--- a/NoteBookFrameView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/NoteBookFrameView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 SimpleView subclass:#NoteBookFrameView
 	instanceVariableNames:''
@@ -169,3 +170,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/NoteBookFrameView.st,v 1.3 2006-11-13 16:11:31 cg Exp $'
 ! !
+
--- a/ParagraphSpecification.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/ParagraphSpecification.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 TabulatorSpecification subclass:#ParagraphSpecification
 	instanceVariableNames:'leftMargin rightMargin textAlignment'
@@ -48,25 +49,30 @@
 leftMargin
     "return leftMargin"
 
-    ^ leftMargin!
+    ^ leftMargin
+!
 
 leftMargin:something
     "set leftMargin"
 
-    leftMargin := something.!
+    leftMargin := something.
+!
 
 rightMargin
     "return rightMargin"
 
-    ^ rightMargin!
+    ^ rightMargin
+!
 
 rightMargin:something
     "set rightMargin"
 
-    rightMargin := something.! !
+    rightMargin := something.
+! !
 
 !ParagraphSpecification class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/ParagraphSpecification.st,v 1.6 2006-11-13 16:11:31 cg Exp $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PluggableHierarchicalList.st	Mon Sep 12 06:57:58 2016 +0200
@@ -0,0 +1,137 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libwidg2' }"
+
+"{ NameSpace: Smalltalk }"
+
+HierarchicalList subclass:#PluggableHierarchicalList
+	instanceVariableNames:'childBlock labelBlock iconBlock'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Views-Support'
+!
+
+!PluggableHierarchicalList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"
+    A customizable hierarchical tree list for ad-hoc trees
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+        protocol examples
+
+"
+! !
+
+!PluggableHierarchicalList class methodsFor:'examples'!
+
+example1
+    | window view list |
+    "
+    PluggableHierarchicalList example1
+    "
+
+    window := StandardSystemView new; extent:300@300.  
+    window label: self class name , '>> #example1'.
+    view := ScrollableView for:HierarchicalListView origin:0.0@0.0 corner:1.0@1.0 in: window.
+
+    list := PluggableHierarchicalList new.
+    list childBlock:[ :parent | 1 to: 5 collect: [:i | parent copyWith: i ] ].
+    list labelBlock:[ :child  | 'Section ' , child printString ].
+    list root: #(1).
+    view list: list.
+
+    window open.
+
+    "Created: / 21-05-2015 / 19:05:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PluggableHierarchicalList methodsFor:'accessing'!
+
+childBlock
+    ^ childBlock
+!
+
+childBlock:aBlock
+    childBlock := aBlock.
+!
+
+iconBlock
+    ^ iconBlock
+!
+
+iconBlock:aBlock
+    iconBlock := aBlock.
+!
+
+labelBlock
+    ^ labelBlock
+!
+
+labelBlock:aBlock
+    labelBlock := aBlock.
+! !
+
+!PluggableHierarchicalList methodsFor:'accessing-root'!
+
+root:anObject
+    | item |
+
+    item := HierarchicalItemWithLabelAndIconAndValue new.
+    item label: (labelBlock notNil ifTrue:[ labelBlock value: anObject ] ifFalse:[ anObject displayString ]).
+    item icon:  (iconBlock notNil ifTrue:[ iconBlock value: anObject ] ifFalse:[ nil ]).
+    item value: anObject. 
+    super root: item.
+
+    "Created: / 21-05-2015 / 19:17:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PluggableHierarchicalList methodsFor:'protocol'!
+
+childrenFor: parentItem
+    | parent children |
+
+    parent := parentItem value.
+    children := childBlock value: parent.
+    ^ children collect:[ :child |
+        | childItem |
+        childItem := HierarchicalItemWithLabelAndIconAndValue new.
+        childItem label: (labelBlock notNil ifTrue:[ labelBlock value: child ] ifFalse:[ child displayString ]).
+        childItem icon:  (iconBlock notNil ifTrue:[ iconBlock value: child] ifFalse:[ nil ]).
+        childItem value: child.   
+        childItem parent: parentItem
+    ]
+
+    "Created: / 21-05-2015 / 19:19:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/RoundButton.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/RoundButton.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 Button subclass:#RoundButton
 	instanceVariableNames:''
@@ -148,3 +149,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/RoundButton.st,v 1.5 2006-11-13 16:11:31 cg Exp $'
 ! !
+
--- a/Ruler.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/Ruler.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 SimpleView subclass:#Ruler
 	instanceVariableNames:'fgColor metric paperWidth paperHeight scale showUnit orientation'
@@ -513,3 +514,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/Ruler.st,v 1.28 2002-10-31 21:49:29 cg Exp $'
 ! !
+
--- a/Scale.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/Scale.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 SimpleView subclass:#Scale
 	instanceVariableNames:'slider range action'
@@ -141,3 +142,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/Scale.st,v 1.6 2006-11-13 16:11:31 cg Exp $'
 ! !
+
--- a/StrokeView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/StrokeView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -1,5 +1,7 @@
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 View subclass:#StrokeView
 	instanceVariableNames:'strokes currentStroke lastPoint clearButton clearLastButton
 		strokeAction'
@@ -190,3 +192,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/StrokeView.st,v 1.3 2004-03-02 08:44:45 cg Exp $'
 ! !
+
--- a/TabControl.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/TabControl.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 NoteBookView subclass:#TabControl
 	instanceVariableNames:''
@@ -230,3 +231,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/TabControl.st,v 1.2 2006-03-13 19:27:30 cg Exp $'
 ! !
+
--- a/TabView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/TabView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 NoteBookView subclass:#TabView
 	instanceVariableNames:''
 	classVariableNames:''
@@ -152,4 +154,10 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libwidg2/TabView.st,v 1.48 2010-05-11 11:43:14 ca Exp $'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
+
--- a/TextRuler.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/TextRuler.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,16 +9,17 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 Ruler subclass:#TextRuler
-	 instanceVariableNames:'leftMargin rightMargin spec moving settingTab'
-	 classVariableNames:'LeftAlignForm RightAlignForm AlignForm CenterForm LeftMarginForm
+	instanceVariableNames:'leftMargin rightMargin spec moving settingTab'
+	classVariableNames:'LeftAlignForm RightAlignForm AlignForm CenterForm LeftMarginForm
 		RightMarginForm LeftTabForm RightTabForm CenterTabForm
 		DecimalTabForm'
-	 poolDictionaries:''
-	 category:'Views-Interactors'
+	poolDictionaries:''
+	category:'Views-Interactors'
 !
 
 !TextRuler class methodsFor:'documentation'!
@@ -48,48 +49,17 @@
 
     TextRuler new open
 "
-!
-
-version
-    ^ '$Header: /cvs/stx/stx/libwidg2/TextRuler.st,v 1.15 2006-11-13 16:11:31 cg Exp $'
 ! !
 
 !TextRuler class methodsFor:'defaults'!
 
-rightMarginForm
-    "return the form displayed for the right margin marker"
+alignForm
+    "return the form displayed in the align-button"
 
-    RightMarginForm isNil ifTrue:[
-	RightMarginForm := Image fromFile:'bitmaps/rightMarg.xbm' resolution:100
-    ].
-    ^ RightMarginForm
-!
-
-leftMarginForm
-    "return the form displayed for the left margin marker"
-
-    LeftMarginForm isNil ifTrue:[
-	LeftMarginForm := Image fromFile:'bitmaps/leftMargin.xbm' resolution:100
+    AlignForm isNil ifTrue:[
+	AlignForm := Image fromFile:'bitmaps/align.xbm' resolution:100
     ].
-    ^ LeftMarginForm
-!
-
-rightAlignForm
-    "return the form displayed in the rightAlign-button"
-
-    RightAlignForm isNil ifTrue:[
-	RightAlignForm :=  Image fromFile:'bitmaps/rightAlign.xbm' resolution:100
-    ].
-    ^ RightAlignForm
-!
-
-leftTabForm
-    "return the form displayed in the leftTab-button"
-
-    LeftTabForm isNil ifTrue:[
-	LeftTabForm := Image fromFile:'bitmaps/leftTab.xbm' resolution:100
-    ].
-    ^ LeftTabForm
+    ^ AlignForm
 !
 
 centerForm
@@ -101,31 +71,13 @@
     ^ CenterForm
 !
 
-alignForm
-    "return the form displayed in the align-button"
-
-    AlignForm isNil ifTrue:[
-	AlignForm := Image fromFile:'bitmaps/align.xbm' resolution:100
-    ].
-    ^ AlignForm
-!
-
-rightTabForm
-    "return the form displayed in the rightTab-button"
+centerTabForm
+    "return the form displayed in the centerTab-button"
 
-    RightTabForm isNil ifTrue:[
-	RightTabForm := Image fromFile:'bitmaps/rightTab.xbm' resolution:100
+    CenterTabForm isNil ifTrue:[
+	CenterTabForm := Image fromFile:'bitmaps/centerTab.xbm' resolution:100
     ].
-    ^ RightTabForm
-!
-
-leftAlignForm
-    "return the form displayed in the leftAlign-button"
-
-    LeftAlignForm isNil ifTrue:[
-	LeftAlignForm := Image fromFile:'bitmaps/leftAlign.xbm' resolution:100
-    ].
-    ^ LeftAlignForm
+    ^ CenterTabForm
 !
 
 decimalTabForm
@@ -137,13 +89,58 @@
     ^ DecimalTabForm
 !
 
-centerTabForm
-    "return the form displayed in the centerTab-button"
+leftAlignForm
+    "return the form displayed in the leftAlign-button"
+
+    LeftAlignForm isNil ifTrue:[
+	LeftAlignForm := Image fromFile:'bitmaps/leftAlign.xbm' resolution:100
+    ].
+    ^ LeftAlignForm
+!
+
+leftMarginForm
+    "return the form displayed for the left margin marker"
+
+    LeftMarginForm isNil ifTrue:[
+	LeftMarginForm := Image fromFile:'bitmaps/leftMargin.xbm' resolution:100
+    ].
+    ^ LeftMarginForm
+!
+
+leftTabForm
+    "return the form displayed in the leftTab-button"
 
-    CenterTabForm isNil ifTrue:[
-	CenterTabForm := Image fromFile:'bitmaps/centerTab.xbm' resolution:100
+    LeftTabForm isNil ifTrue:[
+	LeftTabForm := Image fromFile:'bitmaps/leftTab.xbm' resolution:100
+    ].
+    ^ LeftTabForm
+!
+
+rightAlignForm
+    "return the form displayed in the rightAlign-button"
+
+    RightAlignForm isNil ifTrue:[
+	RightAlignForm :=  Image fromFile:'bitmaps/rightAlign.xbm' resolution:100
     ].
-    ^ CenterTabForm
+    ^ RightAlignForm
+!
+
+rightMarginForm
+    "return the form displayed for the right margin marker"
+
+    RightMarginForm isNil ifTrue:[
+	RightMarginForm := Image fromFile:'bitmaps/rightMarg.xbm' resolution:100
+    ].
+    ^ RightMarginForm
+!
+
+rightTabForm
+    "return the form displayed in the rightTab-button"
+
+    RightTabForm isNil ifTrue:[
+	RightTabForm := Image fromFile:'bitmaps/rightTab.xbm' resolution:100
+    ].
+    ^ RightTabForm
 ! !
 
 !TextRuler methodsFor:'accessing'!
@@ -152,232 +149,6 @@
     spec := aSpec
 ! !
 
-!TextRuler methodsFor:'redrawing'!
-
-redraw
-    "redraw margin & tab marks"
-
-    |x top form tab type tabStops tabAlign viewOrigin orgX orgY|
-
-    self clear.
-
-    super redraw.
-
-    viewOrigin := self viewOrigin.
-    orgX := viewOrigin x.
-    orgY := viewOrigin y.
-
-    self paint:fgColor.
-
-    top := height - (font height) - (font ascent).
-
-    x := (self inchToPixel:leftMargin) rounded.
-    form := self class leftMarginForm.
-    self displayForm:form
-		   x:(x - (form width // 2) - orgX)
-		   y:(top - form height - orgY).
-
-    x := (self inchToPixel:rightMargin) rounded.
-    form := self class rightMarginForm.
-    self displayForm:form
-		   x:(x - (form width // 2) - orgX)
-		   y:(top - form height - orgY).
-
-    spec notNil ifTrue:[
-	tabStops := spec positions.
-	tabAlign := spec align.
-	tabStops notNil ifTrue:[
-	    1 to:tabStops size do:[:tabNr |
-		tab := tabStops at:tabNr.
-		type := tabAlign at:tabNr.
-		x := (spec positionOfTab:tabNr on:self) rounded.
-		(type == #left) ifTrue:[
-		    form := self class leftTabForm
-		] ifFalse:[
-		    (type == #right) ifTrue:[
-			form := self class rightTabForm
-		    ] ifFalse:[
-			(type == #center) ifTrue:[
-			    form := self class centerTabForm
-			] ifFalse:[
-			    (type == #decimal) ifTrue:[
-				form := self class decimalTabForm
-			    ]
-			]
-		    ]
-		].
-		self displayForm:form
-			       x:(x - (form width // 2) - orgX)
-			       y:(top - form height - orgY)
-	    ]
-	]
-    ]
-!
-
-clearMargin:which
-    "clear margin"
-
-    |this other otherX otherX2 x x2 top form symOther viewOrigin|
-
-    self paint:viewBackground.
-
-    top := height - (font height) - (font ascent).
-
-    (which == #left) ifTrue:[
-	this := leftMargin.
-	other := rightMargin. symOther := #right.
-	form := self class leftMarginForm
-    ].
-    (which == #right) ifTrue:[
-	this := rightMargin.
-	other := leftMargin. symOther := #left.
-	form := self class rightMarginForm
-    ].
-
-    x := (self inchToPixel:this) rounded - (form width // 2).
-    viewOrigin := self viewOrigin.
-    self displayForm:form
-		   x:x + viewOrigin x
-		   y:(top - form height - viewOrigin y).
-
-    "
-     if it covers any other, redraw them
-    "
-    x2 := x + form width.
-    otherX := (self inchToPixel:other) rounded - (form width // 2).
-    otherX2 := otherX + form width.
-
-    otherX  > x2 ifFalse:[
-	otherX2 < x ifFalse:[
-	    self drawMargin:symOther
-	]
-    ].
-!
-
-drawMargin:which
-    "clear margin"
-
-    |x top form viewOrigin|
-
-    self paint:fgColor.
-
-    top := height - (font height) - (font ascent).
-
-    (which == #left) ifTrue:[
-	x := (self inchToPixel:leftMargin) rounded.
-	form := self class leftMarginForm
-    ].
-    (which == #right) ifTrue:[
-	x := (self inchToPixel:rightMargin) rounded.
-	form := self class rightMarginForm
-    ].
-
-    viewOrigin := self viewOrigin.
-    self displayForm:form
-		   x:(x - (form width // 2) - viewOrigin x)
-		   y:(top - form height - viewOrigin y).
-
-! !
-
-!TextRuler methodsFor:'user interaction'!
-
-buttonRelease:button x:x y:y
-    "position a tab or start moving a ruler"
-
-    moving := nil
-!
-
-buttonPress:button x:pX y:y
-    "position a tab or start moving a ruler"
-
-    |mpos x|
-
-    ((button == #select) or:[button == 1]) ifFalse:[
-	^ super buttonPress:button x:pX y:y
-    ].
-
-    x := pX + self viewOrigin x.
-    settingTab notNil ifTrue:[
-	self setTabX:x.
-	settingTab := nil.
-	^ self
-    ].
-
-    mpos := self inchToPixel:leftMargin.
-    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
-	"start moving left margin"
-	moving := #left.
-	^ self
-    ].
-    mpos := self inchToPixel:rightMargin.
-    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
-	"start moving right margin"
-	moving := #right.
-	^ self
-    ].
-
-    ^ self
-!
-
-buttonMotion:state x:x y:y
-    "position a tab or start moving a ruler"
-
-    |mpos|
-
-    moving notNil ifTrue:[
-	self clearMargin:moving.
-	mpos := self pixelToInch:x + self viewOrigin x.
-	(mpos < 0) ifTrue:[
-	    mpos := 0
-	].
-	(mpos > paperWidth) ifTrue:[
-	    mpos := paperWidth
-	].
-	(moving == #left) ifTrue:[
-	    leftMargin := mpos
-	].
-	(moving == #right) ifTrue:[
-	    rightMargin := mpos
-	].
-	self drawMargin:moving
-    ]
-!
-
-leftAlign
-    ^ self
-!
-
-rightAlign
-    ^ self
-!
-
-leftTab
-    settingTab := #left.
-
-!
-
-align
-    ^ self
-!
-
-center
-    ^ self
-!
-
-centerTab
-    settingTab := #center.
-!
-
-rightTab
-    settingTab := #right.
-
-!
-
-decimalTab
-    settingTab := #decimal.
-
-! !
-
 !TextRuler methodsFor:'initializing'!
 
 initialize
@@ -447,3 +218,236 @@
 
     "TextRuler new open"
 ! !
+
+!TextRuler methodsFor:'redrawing'!
+
+clearMargin:which
+    "clear margin"
+
+    |this other otherX otherX2 x x2 top form symOther viewOrigin|
+
+    self paint:viewBackground.
+
+    top := height - (font height) - (font ascent).
+
+    (which == #left) ifTrue:[
+	this := leftMargin.
+	other := rightMargin. symOther := #right.
+	form := self class leftMarginForm
+    ].
+    (which == #right) ifTrue:[
+	this := rightMargin.
+	other := leftMargin. symOther := #left.
+	form := self class rightMarginForm
+    ].
+
+    x := (self inchToPixel:this) rounded - (form width // 2).
+    viewOrigin := self viewOrigin.
+    self displayForm:form
+		   x:x + viewOrigin x
+		   y:(top - form height - viewOrigin y).
+
+    "
+     if it covers any other, redraw them
+    "
+    x2 := x + form width.
+    otherX := (self inchToPixel:other) rounded - (form width // 2).
+    otherX2 := otherX + form width.
+
+    otherX  > x2 ifFalse:[
+	otherX2 < x ifFalse:[
+	    self drawMargin:symOther
+	]
+    ].
+!
+
+drawMargin:which
+    "clear margin"
+
+    |x top form viewOrigin|
+
+    self paint:fgColor.
+
+    top := height - (font height) - (font ascent).
+
+    (which == #left) ifTrue:[
+	x := (self inchToPixel:leftMargin) rounded.
+	form := self class leftMarginForm
+    ].
+    (which == #right) ifTrue:[
+	x := (self inchToPixel:rightMargin) rounded.
+	form := self class rightMarginForm
+    ].
+
+    viewOrigin := self viewOrigin.
+    self displayForm:form
+		   x:(x - (form width // 2) - viewOrigin x)
+		   y:(top - form height - viewOrigin y).
+
+!
+
+redraw
+    "redraw margin & tab marks"
+
+    |x top form tab type tabStops tabAlign viewOrigin orgX orgY|
+
+    self clear.
+
+    super redraw.
+
+    viewOrigin := self viewOrigin.
+    orgX := viewOrigin x.
+    orgY := viewOrigin y.
+
+    self paint:fgColor.
+
+    top := height - (font height) - (font ascent).
+
+    x := (self inchToPixel:leftMargin) rounded.
+    form := self class leftMarginForm.
+    self displayForm:form
+		   x:(x - (form width // 2) - orgX)
+		   y:(top - form height - orgY).
+
+    x := (self inchToPixel:rightMargin) rounded.
+    form := self class rightMarginForm.
+    self displayForm:form
+		   x:(x - (form width // 2) - orgX)
+		   y:(top - form height - orgY).
+
+    spec notNil ifTrue:[
+	tabStops := spec positions.
+	tabAlign := spec align.
+	tabStops notNil ifTrue:[
+	    1 to:tabStops size do:[:tabNr |
+		tab := tabStops at:tabNr.
+		type := tabAlign at:tabNr.
+		x := (spec positionOfTab:tabNr on:self) rounded.
+		(type == #left) ifTrue:[
+		    form := self class leftTabForm
+		] ifFalse:[
+		    (type == #right) ifTrue:[
+			form := self class rightTabForm
+		    ] ifFalse:[
+			(type == #center) ifTrue:[
+			    form := self class centerTabForm
+			] ifFalse:[
+			    (type == #decimal) ifTrue:[
+				form := self class decimalTabForm
+			    ]
+			]
+		    ]
+		].
+		self displayForm:form
+			       x:(x - (form width // 2) - orgX)
+			       y:(top - form height - orgY)
+	    ]
+	]
+    ]
+! !
+
+!TextRuler methodsFor:'user interaction'!
+
+align
+    ^ self
+!
+
+buttonMotion:state x:x y:y
+    "position a tab or start moving a ruler"
+
+    |mpos|
+
+    moving notNil ifTrue:[
+	self clearMargin:moving.
+	mpos := self pixelToInch:x + self viewOrigin x.
+	(mpos < 0) ifTrue:[
+	    mpos := 0
+	].
+	(mpos > paperWidth) ifTrue:[
+	    mpos := paperWidth
+	].
+	(moving == #left) ifTrue:[
+	    leftMargin := mpos
+	].
+	(moving == #right) ifTrue:[
+	    rightMargin := mpos
+	].
+	self drawMargin:moving
+    ]
+!
+
+buttonPress:button x:pX y:y
+    "position a tab or start moving a ruler"
+
+    |mpos x|
+
+    ((button == #select) or:[button == 1]) ifFalse:[
+	^ super buttonPress:button x:pX y:y
+    ].
+
+    x := pX + self viewOrigin x.
+    settingTab notNil ifTrue:[
+	self setTabX:x.
+	settingTab := nil.
+	^ self
+    ].
+
+    mpos := self inchToPixel:leftMargin.
+    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
+	"start moving left margin"
+	moving := #left.
+	^ self
+    ].
+    mpos := self inchToPixel:rightMargin.
+    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
+	"start moving right margin"
+	moving := #right.
+	^ self
+    ].
+
+    ^ self
+!
+
+buttonRelease:button x:x y:y
+    "position a tab or start moving a ruler"
+
+    moving := nil
+!
+
+center
+    ^ self
+!
+
+centerTab
+    settingTab := #center.
+!
+
+decimalTab
+    settingTab := #decimal.
+
+!
+
+leftAlign
+    ^ self
+!
+
+leftTab
+    settingTab := #left.
+
+!
+
+rightAlign
+    ^ self
+!
+
+rightTab
+    settingTab := #right.
+
+! !
+
+!TextRuler class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libwidg2/TextRuler.st,v 1.15 2006-11-13 16:11:31 cg Exp $'
+! !
+
--- a/VT52TerminalView.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/VT52TerminalView.st	Mon Sep 12 06:57:58 2016 +0200
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 TerminalView subclass:#VT52TerminalView
 	instanceVariableNames:'param1 param2'
 	classVariableNames:''
--- a/VerticalRuler.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/VerticalRuler.st	Mon Sep 12 06:57:58 2016 +0200
@@ -9,8 +9,9 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+"{ Package: 'stx:libwidg2' }"
 
-"{ Package: 'stx:libwidg2' }"
+"{ NameSpace: Smalltalk }"
 
 Ruler subclass:#VerticalRuler
 	instanceVariableNames:''
@@ -60,3 +61,4 @@
 version
     ^ '$Header: /cvs/stx/stx/libwidg2/VerticalRuler.st,v 1.11 2006-11-13 16:11:31 cg Exp $'
 ! !
+
--- a/abbrev.stc	Sun Sep 11 15:41:51 2016 +0200
+++ b/abbrev.stc	Mon Sep 12 06:57:58 2016 +0200
@@ -26,6 +26,7 @@
 HierarchyNode HierarchyNode stx:libwidg2 'Interface-Support' 0
 ImageView ImageView stx:libwidg2 'Views-Misc' 2
 LabelledEnterField LabelledEnterField stx:libwidg2 'Views-Interactors' 2
+LicenceBox LicenceBox stx:libwidg2 'Views-DialogBoxes' 2
 LinkButton LinkButton stx:libwidg2 'Views-Layout' 2
 LinkButtonController LinkButtonController stx:libwidg2 'Interface-Support-Controllers' 0
 ListEntry ListEntry stx:libwidg2 'Views-Support' 0
@@ -51,7 +52,6 @@
 TabulatorSpecification TabulatorSpecification stx:libwidg2 'Views-Support' 0
 TerminalView TerminalView stx:libwidg2 'Views-TerminalViews' 2
 TextBox TextBox stx:libwidg2 'Views-DialogBoxes' 2
-ThumbWheel ThumbWheel stx:libwidg2 'Views-Interactors' 2
 TreeItem TreeItem stx:libwidg2 'Interface-Support' 0
 UpDownButton UpDownButton stx:libwidg2 'Views-Interactors' 2
 ViewScroller ViewScroller stx:libwidg2 'Views-Basic' 2
@@ -70,6 +70,7 @@
 ImageEditView ImageEditView stx:libwidg2 'Views-Misc' 2
 ModelListEntry ModelListEntry stx:libwidg2 'Views-Support' 0
 MultiColListEntry MultiColListEntry stx:libwidg2 'Views-Support' 0
+PluggableHierarchicalList PluggableHierarchicalList stx:libwidg2 'Views-Support' 0
 SelectionInListModelView SelectionInListModelView stx:libwidg2 'Views-Lists' 2
 TabView TabView stx:libwidg2 'Views-Interactors' 2
 ThreeColumnTextView ThreeColumnTextView stx:libwidg2 'Views-Text' 2
@@ -96,7 +97,7 @@
 GraphColumnView GraphColumnView stx:libwidg2 'Views-Graphs' 2
 GraphColumnView2D GraphColumnView2D stx:libwidg2 'Views-Graphs' 2
 GraphColumnView2DSpec GraphColumnView2DSpec stx:libwidg2 'Interface-Support-UI-Specs' 0
-GraphColumnView3D GraphColumnView3D stx:libwidg2 'Views-Graphs' 0
+GraphColumnView3D GraphColumnView3D stx:libwidg2 'Views-Graphs' 2
 GraphColumnView3DSpec GraphColumnView3DSpec stx:libwidg2 'Interface-Support-UI-Specs' 0
 GraphColumnViewSpec GraphColumnViewSpec stx:libwidg2 'Interface-Support-UI-Specs' 0
 HorizontalScale HorizontalScale stx:libwidg2 'Views-Interactors' 2
@@ -104,6 +105,11 @@
 ListEditor ListEditor stx:libwidg2 'Views-Lists' 1
 MotionButton MotionButton stx:libwidg2 'Views-Obsolete' 2
 NoteBookFrameView NoteBookFrameView stx:libwidg2 'Views-Misc' 2
+KeyboardView KeyboardView stx:libwidg2 'Views-Special' 2
+ListEditor ListEditor stx:libwidg2 'Views-Lists' 1
+MenuButton MenuButton stx:libwidg2 'Views-Obsolete' 2
+MotionButton MotionButton stx:libwidg2 'Views-Obsolete' 2
+NoteBookFrameView NoteBookFrameView stx:libwidg2 'Views-Misc' 2
 ParagraphSpecification ParagraphSpecification stx:libwidg2 'Views-Support' 0
 RoundButton RoundButton stx:libwidg2 'Views-Interactors' 2
 Ruler Ruler stx:libwidg2 'Views-Misc' 2
@@ -112,4 +118,8 @@
 TextRuler TextRuler stx:libwidg2 'Views-Interactors' 2
 VT52TerminalView VT52TerminalView stx:libwidg2 'Views-TerminalViews' 2
 VerticalRuler VerticalRuler stx:libwidg2 'Views-Misc' 2
-LicenceBox LicenceBox stx:libwidg2 'Views-DialogBoxes' 2
+StrokeView StrokeView stx:libwidg2 'Views-Special' 2
+TabControl TabControl stx:libwidg2 'Views-Layout' 2
+TextRuler TextRuler stx:libwidg2 'Views-Interactors' 2
+VT52TerminalView VT52TerminalView stx:libwidg2 'Views-TerminalViews' 2
+VerticalRuler VerticalRuler stx:libwidg2 'Views-Misc' 2
--- a/bc.mak	Sun Sep 11 15:41:51 2016 +0200
+++ b/bc.mak	Mon Sep 12 06:57:58 2016 +0200
@@ -38,7 +38,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libui -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\browser -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libui -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
@@ -69,7 +69,7 @@
 test: $(TOP)\goodies\builder\reports\NUL
 	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
 	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
-        
+
 clean::
 	-del *.$(CSUFFIX)
 
@@ -162,3 +162,12 @@
 $(OUTDIR)LicenceBox.$(O) LicenceBox.$(C) LicenceBox.$(H): LicenceBox.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libwidg\DialogBox.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_libwidg2.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- a/bmake.bat	Sun Sep 11 15:41:51 2016 +0200
+++ b/bmake.bat	Mon Sep 12 06:57:58 2016 +0200
@@ -5,6 +5,7 @@
 @REM -------
 @SET DEFINES=
 
+
 make.exe -N -f bc.mak  %DEFINES% %*
 
 
--- a/libInit.cc	Sun Sep 11 15:41:51 2016 +0200
+++ b/libInit.cc	Mon Sep 12 06:57:58 2016 +0200
@@ -139,6 +139,7 @@
     _HierarchyNode_Init(pass,__pRT__,snd);
     _ImageView_Init(pass,__pRT__,snd);
     _LabelledEnterField_Init(pass,__pRT__,snd);
+_LicenceBox_Init(pass,__pRT__,snd);
     _LinkButton_Init(pass,__pRT__,snd);
     _LinkButtonController_Init(pass,__pRT__,snd);
     _ListEntry_Init(pass,__pRT__,snd);
@@ -183,6 +184,7 @@
     _ImageEditView_Init(pass,__pRT__,snd);
     _ModelListEntry_Init(pass,__pRT__,snd);
     _MultiColListEntry_Init(pass,__pRT__,snd);
+_PluggableHierarchicalList_Init(pass,__pRT__,snd);
     _SelectionInListModelView_Init(pass,__pRT__,snd);
     _TabView_Init(pass,__pRT__,snd);
     _ThreeColumnTextView_Init(pass,__pRT__,snd);
@@ -198,7 +200,6 @@
     _HierarchicalItemWithLabelAndIcon_Init(pass,__pRT__,snd);
     _LabelAndTwoIcons_Init(pass,__pRT__,snd);
     _HierarchicalItemWithLabelAndIconAndValue_Init(pass,__pRT__,snd);
-    _LicenceBox_Init(pass,__pRT__,snd);
 
 
   __END_PACKAGE__();
--- a/stx_libwidg2.st	Sun Sep 11 15:41:51 2016 +0200
+++ b/stx_libwidg2.st	Mon Sep 12 06:57:58 2016 +0200
@@ -52,7 +52,6 @@
 additionalClassNamesAndAttributes
     ^ #(
         "/ <className> or (<className> attributes...)
-        'LicenceBox'
     )
 
     "Created: / 21-08-2006 / 19:52:03 / cg"
@@ -170,6 +169,7 @@
         HierarchyNode
         ImageView
         LabelledEnterField
+        LicenceBox
         LinkButton
         LinkButtonController
         ListEntry
@@ -214,6 +214,7 @@
         ImageEditView
         ModelListEntry
         MultiColListEntry
+        PluggableHierarchicalList
         SelectionInListModelView
         TabView
         ThreeColumnTextView
@@ -229,10 +230,6 @@
         HierarchicalItemWithLabelAndIcon
         LabelAndTwoIcons
         HierarchicalItemWithLabelAndIconAndValue
-        (KeyboardView autoload)
-        (MenuButton autoload)
-        (StrokeView autoload)
-        (TabControl autoload)
         (ColoredListEntry autoload)
         (ComboBrowseView autoload)
         (ComboUpDownView autoload)
@@ -245,7 +242,9 @@
         (GraphColumnViewSpec autoload)
         (HorizontalScale autoload)
         (ImageSelectionBox autoload)
+        (KeyboardView autoload)
         (ListEditor autoload)
+        (MenuButton autoload)
         (MotionButton autoload)
         (NoteBookFrameView autoload)
         (ParagraphSpecification autoload)
@@ -253,6 +252,8 @@
         (Ruler autoload)
         (Scale autoload)
         (SelectionInHierarchyView autoload)
+        (StrokeView autoload)
+        (TabControl autoload)
         (TextRuler autoload)
         (VT52TerminalView autoload)
         (VerticalRuler autoload)
@@ -303,5 +304,9 @@
 
 version_CVS
     ^ '$Header$'
+!
+
+version_HG
+    ^ '$Changeset: <not expanded> $'
 ! !
 
--- a/vcmake.bat	Sun Sep 11 15:41:51 2016 +0200
+++ b/vcmake.bat	Mon Sep 12 06:57:58 2016 +0200
@@ -10,6 +10,10 @@
     popd
 )
 @SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
 
 make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*