Tools__ChangeList.st
branchjv
changeset 15566 184cea584be5
parent 13676 b14ed2a36bae
parent 15432 e4656b4e606d
child 15600 067b6e4913af
--- a/Tools__ChangeList.st	Sun Jan 12 23:30:25 2014 +0000
+++ b/Tools__ChangeList.st	Wed Apr 01 10:38:01 2015 +0100
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-	      All Rights Reserved
+              All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -30,7 +30,7 @@
 BrowserListWithFilter subclass:#ChangeList
 	instanceVariableNames:'listHolder showRemovedHolder showSameHolder showTimestampHolder
 		allowRemoveHolder allowAcceptHolder scrollToBottom applyAction
-		showConflictsOnlyHolder'
+		showConflictsOnlyHolder showDefinitionsOnlyHolder'
 	classVariableNames:'LastSelectionConditionString'
 	poolDictionaries:''
 	category:'Interface-Browsers-ChangeSet'
@@ -48,7 +48,7 @@
 copyright
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-	      All Rights Reserved
+              All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -103,6 +103,12 @@
     "Modified: / 31-08-2011 / 10:54:40 / cg"
 !
 
+iconNone
+    ^ nil
+
+    "Created: / 05-09-2014 / 00:34:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 iconPlus
     ^ ToolbarIconLibrary iconPlusBlue12x12
 
@@ -203,100 +209,105 @@
 
     ^#(
       (DataSetColumnSpec
-	 label: 'Removed'
-	 id: 'removed'
-	 labelButtonType: Button
-	 width: 20
-	 minWidth: 20
-	 editorType: CheckToggle
-	 rendererType: CheckToggle
-	 model: notRemoved
-	 menuFromApplication: false
-	 printSelector: notRemoved
-	 isResizeable: false
-	 showRowSeparator: false
-	 showSelectionHighLighted: false
-	 showColSeparator: false
+         label: 'Removed'
+         id: 'removed'
+         labelButtonType: Button
+         width: 20
+         minWidth: 20
+         height: heightOfFirstRow
+         editorType: CheckToggle
+         rendererType: CheckToggle
+         model: notRemoved
+         menuFromApplication: false
+         printSelector: notRemoved
+         isResizeable: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Delta'
-	 id: 'delta'
-	 labelButtonType: Button
-	 width: 20
-	 minWidth: 20
-	 menuFromApplication: false
-	 printSelector: iconDelta
-	 canSelect: false
-	 isResizeable: false
-	 showRowSeparator: false
-	 showSelectionHighLighted: false
-	 showColSeparator: false
+         label: 'Delta'
+         id: 'delta'
+         labelButtonType: Button
+         width: 20
+         minWidth: 20
+         height: heightOfFirstRow
+         menuFromApplication: false
+         printSelector: iconDelta
+         canSelect: false
+         isResizeable: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Change'
-	 id: change
-	 labelAlignment: left
-	 labelButtonType: Button
-	 menuFromApplication: false
-	 printSelector: label
-	 canSelect: false
-	 showRowSeparator: false
-	 showColSeparator: false
+         label: 'Change'
+         id: change
+         labelAlignment: left
+         labelButtonType: Button
+         height: heightOfFirstRow
+         menuFromApplication: false
+         printSelector: label
+         canSelect: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Class'
-	 id: 'className'
-	 labelAlignment: left
-	 activeHelpKey: ''
-	 activeHelpKeyForLabel: ''
-	 labelButtonType: Button
-	 usePreferredWidth: true
-	 model: className
-	 menuFromApplication: false
-	 canSelect: false
-	 showRowSeparator: false
-	 showColSeparator: false
+         label: 'Class'
+         id: 'className'
+         labelAlignment: left
+         activeHelpKey: ''
+         activeHelpKeyForLabel: ''
+         labelButtonType: Button
+         usePreferredWidth: true
+         height: heightOfFirstRow
+         model: className
+         menuFromApplication: false
+         canSelect: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Selector'
-	 id: 'selector'
-	 labelAlignment: left
-	 activeHelpKey: ''
-	 activeHelpKeyForLabel: ''
-	 labelButtonType: Button
-	 usePreferredWidth: true
-	 model: selector
-	 menuFromApplication: false
-	 canSelect: false
-	 showRowSeparator: false
-	 showColSeparator: false
+         label: 'Selector'
+         id: 'selector'
+         labelAlignment: left
+         activeHelpKey: ''
+         activeHelpKeyForLabel: ''
+         labelButtonType: Button
+         usePreferredWidth: true
+         height: heightOfFirstRow
+         model: selector
+         menuFromApplication: false
+         canSelect: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Category'
-	 id: category
-	 labelAlignment: left
-	 labelButtonType: Button
-	 usePreferredWidth: true
-	 model: category
-	 menuFromApplication: false
-	 canSelect: false
-	 showRowSeparator: false
-	 showColSeparator: false
+         label: 'Category'
+         id: category
+         labelAlignment: left
+         labelButtonType: Button
+         usePreferredWidth: true
+         height: heightOfFirstRow
+         model: category
+         menuFromApplication: false
+         canSelect: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       (DataSetColumnSpec
-	 label: 'Time Stamp'
-	 id: timeStamp
-	 labelAlignment: left
-	 labelButtonType: Button
-	 usePreferredWidth: true
-	 model: timeStamp
-	 menuFromApplication: false
-	 canSelect: false
-	 showRowSeparator: false
-	 showColSeparator: false
+         label: 'Time Stamp'
+         id: timeStamp
+         labelAlignment: left
+         labelButtonType: Button
+         usePreferredWidth: true
+         height: heightOfFirstRow
+         model: timeStamp
+         menuFromApplication: false
+         canSelect: false
+         showRowSeparator: false
+         showColSeparator: false
        )
       )
-
+    
 ! !
 
 !ChangeList class methodsFor:'menu specs'!
@@ -316,7 +327,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -357,7 +368,7 @@
          (MenuItem
             label: 'Select...'
             translateLabel: true
-            submenu:
+            submenu: 
            (Menu
               (
                (MenuItem
@@ -440,6 +451,7 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
+        environmentHolder
         #allowAcceptHolder
         #allowRemoveHolder
         #inGeneratorHolder
@@ -451,8 +463,10 @@
         #showSameHolder
         #showTimestampHolder
         #showConflictsOnlyHolder
+        #showDefinitionsOnlyHolder
       ).
 
+    "Modified: / 24-02-2014 / 10:37:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeList methodsFor:'accessing'!
@@ -557,7 +571,7 @@
     "return/create the valueHolder 'acceptEnabledHolder'"
 
     allowAcceptHolder isNil ifTrue:[
-	allowAcceptHolder := ValueHolder with:nil "defaultValue here".
+        allowAcceptHolder := ValueHolder with:nil "defaultValue here".
     ].
     ^ allowAcceptHolder
 
@@ -572,35 +586,35 @@
 
 allowRemoveHolder
     "return/create the 'allowRemoveHolder' value holder (automatically generated)"
-
+    
     allowRemoveHolder isNil ifTrue:[
-	allowRemoveHolder := ValueHolder with:true.
-	allowRemoveHolder addDependent:self.
+        allowRemoveHolder := ValueHolder with:true.
+        allowRemoveHolder addDependent:self.
     ].
     ^ allowRemoveHolder
 
     "Modified (comment): / 24-01-2012 / 19:44:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-allowRemoveHolder:something
+allowRemoveHolder:something 
     "set the 'showRemovedHolder' value holder (automatically generated)"
-
+    
     |oldValue newValue|
 
     allowRemoveHolder notNil ifTrue:[
-	oldValue := allowRemoveHolder value.
-	allowRemoveHolder removeDependent:self.
+        oldValue := allowRemoveHolder value.
+        allowRemoveHolder removeDependent:self.
     ].
     allowRemoveHolder := something.
     allowRemoveHolder notNil ifTrue:[
-	allowRemoveHolder addDependent:self.
+        allowRemoveHolder addDependent:self.
     ].
     newValue := allowRemoveHolder value.
     oldValue ~~ newValue ifTrue:[
-	self
-	    update:#value
-	    with:newValue
-	    from:allowRemoveHolder.
+        self 
+            update:#value
+            with:newValue
+            from:allowRemoveHolder.
     ].
 !
 
@@ -619,7 +633,7 @@
 
 listHolder
     listHolder isNil ifTrue:[
-	listHolder := ValueHolder new.
+        listHolder := ValueHolder new.
     ].
     ^ listHolder
 !
@@ -628,10 +642,12 @@
     "return/create the 'showConflictsOnlyHolder' value holder (automatically generated)"
 
     showConflictsOnlyHolder isNil ifTrue:[
-        showConflictsOnlyHolder := ValueHolder with: true.
+        showConflictsOnlyHolder := ValueHolder with: false.
         showConflictsOnlyHolder addDependent: self.
     ].
     ^ showConflictsOnlyHolder
+
+    "Modified: / 05-09-2014 / 00:54:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showConflictsOnlyHolder:something
@@ -653,12 +669,43 @@
     ].
 !
 
+showDefinitionsOnlyHolder
+    "return/create the 'showDefinitionsOnlyHolder' value holder (automatically generated)"
+
+    showDefinitionsOnlyHolder isNil ifTrue:[
+        showDefinitionsOnlyHolder := ValueHolder with: false.
+        showDefinitionsOnlyHolder addDependent: self.
+    ].
+    ^ showDefinitionsOnlyHolder
+
+    "Modified: / 05-09-2014 / 00:52:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showDefinitionsOnlyHolder:something
+    "set the 'showDefinitionsOnlyHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showDefinitionsOnlyHolder notNil ifTrue:[
+        oldValue := showDefinitionsOnlyHolder value.
+        showDefinitionsOnlyHolder removeDependent:self.
+    ].
+    showDefinitionsOnlyHolder := something.
+    showDefinitionsOnlyHolder notNil ifTrue:[
+        showDefinitionsOnlyHolder addDependent:self.
+    ].
+    newValue := showDefinitionsOnlyHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:showDefinitionsOnlyHolder.
+    ].
+!
+
 showRemovedHolder
     "return/create the 'showRemovedHolder' value holder (automatically generated)"
 
     showRemovedHolder isNil ifTrue:[
-	showRemovedHolder := ValueHolder with: true.
-	showRemovedHolder addDependent: self.
+        showRemovedHolder := ValueHolder with: true.
+        showRemovedHolder addDependent: self.
     ].
     ^ showRemovedHolder
 !
@@ -669,16 +716,16 @@
     |oldValue newValue|
 
     showRemovedHolder notNil ifTrue:[
-	oldValue := showRemovedHolder value.
-	showRemovedHolder removeDependent:self.
+        oldValue := showRemovedHolder value.
+        showRemovedHolder removeDependent:self.
     ].
     showRemovedHolder := something.
     showRemovedHolder notNil ifTrue:[
-	showRemovedHolder addDependent:self.
+        showRemovedHolder addDependent:self.
     ].
     newValue := showRemovedHolder value.
     oldValue ~~ newValue ifTrue:[
-	self update:#value with:newValue from:showRemovedHolder.
+        self update:#value with:newValue from:showRemovedHolder.
     ].
 !
 
@@ -686,8 +733,8 @@
     "return/create the 'showSameHolder' value holder (automatically generated)"
 
     showSameHolder isNil ifTrue:[
-	showSameHolder := ValueHolder with: true.
-	showSameHolder addDependent:self.
+        showSameHolder := ValueHolder with: true.
+        showSameHolder addDependent:self.
     ].
     ^ showSameHolder
 
@@ -700,16 +747,16 @@
     |oldValue newValue|
 
     showSameHolder notNil ifTrue:[
-	oldValue := showSameHolder value.
-	showSameHolder removeDependent:self.
+        oldValue := showSameHolder value.
+        showSameHolder removeDependent:self.
     ].
     showSameHolder := something.
     showSameHolder notNil ifTrue:[
-	showSameHolder addDependent:self.
+        showSameHolder addDependent:self.
     ].
     newValue := showSameHolder value.
     oldValue ~~ newValue ifTrue:[
-	self update:#value with:newValue from:showSameHolder.
+        self update:#value with:newValue from:showSameHolder.
     ].
 !
 
@@ -775,6 +822,9 @@
     sender == showConflictsOnlyHolder ifTrue:[
         self updateList
     ].
+    sender == showDefinitionsOnlyHolder ifTrue:[
+        self updateList
+    ].
 
     ^super update: aspect with: param from: sender
 
@@ -819,19 +869,24 @@
 handlesKeyPress:key inView:aView
     <resource: #keyboard (#Accept #Ctrls)>
 
-    ^(key == #Accept or:[ key == #Ctrls]) 
-        and:[ listView scrolledView == aView ]
+    (super handlesKeyPress:key inView:aView)
+        or:[(key == #Accept or:[ key == #Ctrls]) 
+                and:[ listView scrolledView == aView ]]
 
     "Created: / 08-02-2012 / 14:43:11 / cg"
+    "Modified: / 10-04-2014 / 11:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 keyPress:key x:x y:y view:aView
     (key == #Accept or:[ key == #Ctrls]) ifTrue:[
-	self listMenuApply.
-	^ self
-    ].
+        self listMenuApply.
+        ^ self
+    ]. 
+
+    super keyPress:key x:x y:y view:aView
 
     "Created: / 08-02-2012 / 14:42:18 / cg"
+    "Modified: / 10-04-2014 / 11:31:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeList methodsFor:'generators'!
@@ -842,7 +897,7 @@
     ^Iterator on:
         [:whatToDo|
 
-        selectionHolder value do:
+        (selectionHolder value ? #()) do:
             [:changeListItem| | change |
             change := changeListItem change.
             change isCompositeChange ifTrue:
@@ -857,9 +912,10 @@
 postBuildListView: aView
 
     super postBuildListView: aView.
-    listView scrolledView delegate: self.
+    aView scrolledView delegate: self.
 
     "Created: / 29-11-2011 / 14:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 10-04-2014 / 11:29:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeList methodsFor:'initialization'!
@@ -904,7 +960,7 @@
     self acceptEnabled ifFalse:[^self].
 
     self selection value do:
-	[:e|e removed ifFalse:[applyAction value:e change]].
+        [:e|e removed ifFalse:[applyAction value:e change]].
 
     "Created: / 05-12-2009 / 14:53:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 10-09-2012 / 13:57:58 / cg"
@@ -913,30 +969,34 @@
 listMenuBrowse
 
     self listMenuBrowseChanges:
-	((self selectionHolder value ? #()) collect:[:e|e change])
+        ((self selectionHolder value ? #()) collect:[:e|e change])
 
     "Modified: / 24-01-2012 / 22:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 listMenuBrowseChanges: changes
-    | classes methods methodsOnly browserClass|
+    | collectChanges classes methods methodsOnly browserClass|
 
     classes := Set new.
     methods := Set new.
     methodsOnly := true.
-    changes do: [:each |
-        each isClassChange ifTrue:[
-            each changeClass ifNotNil:[
+
+    collectChanges := 
+        [:each |
+            (each isClassChange and:[each changeClass notNil]) ifTrue:[
                 classes add: each  changeClass.
-                each isMethodCodeChange 
-                    ifTrue:
-                        [each changeMethod ifNotNil:
-                            [methods add:each changeMethod]]
-                    ifFalse:
-                        [methodsOnly := false]
+                each isMethodCodeChange ifTrue:[
+                    each changeMethod notNil ifTrue: [methods add:each changeMethod]
+                ] ifFalse:[
+                    methodsOnly := false
+                ]
+            ] ifFalse:[
+                each isCompositeChange ifTrue:[
+                    each changes do:collectChanges
+                ]
             ]
-        ]
-    ].
+        ].
+    changes do: collectChanges.
 
     browserClass := environment browserClass.
     methodsOnly 
@@ -956,7 +1016,7 @@
 listMenuDeleteSelection
 
     self selectionHolder value do:
-	[:each|each removed: true].
+        [:each|each removed: true].
     self updateList
 !
 
@@ -966,8 +1026,8 @@
 
     selection := self selectionHolder value collect:[:e|e change].
     selection size = 1
-	ifTrue:[selection anyOne inspect]
-	ifFalse:[selection inspect].
+        ifTrue:[selection anyOne inspect]
+        ifFalse:[selection inspect].
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -982,11 +1042,11 @@
     self listMenuSelectAllSuchThat:[:change|true]
 !
 
-listMenuSelectAllSuchThat:conditionBlock
+listMenuSelectAllSuchThat:conditionBlock 
     |newSelection|
 
-    newSelection := self listHolder value
-		select:[:entry | conditionBlock value:entry change ].
+    newSelection := self listHolder value 
+                select:[:entry | conditionBlock value:entry change ].
     self selectionHolder value:newSelection
 !
 
@@ -1015,23 +1075,23 @@
      "/ change is an instance of Change
      "/ change will be selected if and only if block returns true
 
-
+    
      true"/always select the change
 ]
 '.
 
     LastSelectionConditionString isNil ifTrue:[
-	LastSelectionConditionString := template.
+        LastSelectionConditionString := template.
     ].
 
 
     textHolder := ValueHolder new.
     dialog := Dialog
-		 forRequestText:(resources string:'Enter condition for selection')
-		 lines:20
-		 columns:70
-		 initialAnswer:LastSelectionConditionString
-		 model:textHolder.
+                 forRequestText:(resources string:'Enter condition for selection')
+                 lines:20
+                 columns:70
+                 initialAnswer:LastSelectionConditionString
+                 model:textHolder.
     dialog addButton:(Button label:'Template' action:[textHolder value:template. textHolder changed:#value.]).
     dialog open.
     dialog accepted ifFalse:[^ self].
@@ -1041,8 +1101,8 @@
 
     conditionBlock := Parser evaluate:conditionBlockString.
     conditionBlock isBlock ifFalse:[
-	self error:'Bad selection block (syntax error?)'.
-	^ self
+        self error:'Bad selection block (syntax error?)'.
+        ^ self
     ].
 
     self listMenuSelectAllSuchThat: conditionBlock
@@ -1051,7 +1111,7 @@
 listMenuUndeleteSelection
 
     self selectionHolder value do:
-	[:each|each removed: false].
+        [:each|each removed: false].
     self updateList
 ! !
 
@@ -1143,7 +1203,7 @@
     "Created: / 26-07-2012 / 17:56:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-listEntryFor:chg
+listEntryFor:chg 
     ^ListEntry change:chg application: self
 
     "Modified: / 05-12-2009 / 14:39:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1167,7 +1227,8 @@
 !
 
 updateList
-    |inGenerator changeset firstLineShown oldSel newList newSel |
+    |inGenerator changeset firstLineShown oldSel newList newSel|
+
     self withWaitCursorDo:[
         inGenerator := self inGeneratorHolder value.
         listView notNil ifTrue:[
@@ -1178,12 +1239,30 @@
         oldSel := self selection.
 
         changeset := inGenerator isNil ifTrue:[ #() ] ifFalse:[ inGenerator ].
-        newList := changeset
-                    select:
-                        [:chg |
-                        (self showRemovedHolder value or:[ chg removed not ])
-                            and:[self showSameHolder value or:[chg delta ~~ #=]]
-                        ].
+        self showDefinitionsOnlyHolder value ifTrue:[
+            newList := changeset select: [:chg | chg isOrContainsClassDefinitionChange ].
+        ] ifFalse:[
+            self showConflictsOnlyHolder value ifTrue:[
+                newList := changeset select: [:chg | chg isConflict ].
+            ] ifFalse:[
+                | showRemoved showSame |
+
+                showRemoved := self showRemovedHolder value.
+                showSame := self showSameHolder value.
+
+                newList := changeset select: [:chg | 
+                               (showRemoved or:[ chg removed not ])
+                                   and:[showSame or:[chg delta ~~ #=]]
+                           ].
+            ].
+        ].
+"/ OLD CODE
+"/        newList := changeset
+"/                    select:
+"/                        [:chg |
+"/                        (self showRemovedHolder value or:[ chg removed not ])
+"/                            and:[self showSameHolder value or:[chg delta ~~ #=]]
+"/                        ].
         newList := self filterList: newList.
         newList := newList collect:[:chg | self listEntryFor:chg ].
         self listHolder value ~= newList ifTrue:[
@@ -1206,8 +1285,9 @@
 
         ]
     ]
+
     "Modified: / 28-12-2011 / 15:46:15 / cg"
-    "Modified: / 01-08-2012 / 18:10:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-02-2014 / 17:15:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeList methodsFor:'queries'!
@@ -1319,30 +1399,33 @@
 !
 
 children
+    |app addIf showRemoved showSame|
 
     children isNil ifTrue:[
         change isCompositeChange ifTrue:[
+            app := self application.
+
             children := OrderedCollection new: change changes size.
-            self application showConflictsOnlyHolder value ifTrue:[
-                change changes do:[:chg|
-                    (chg isConflict) ifTrue:[
-                        children add: ((self application listEntryFor: chg) parent: self)
-                    ]
-                ].
+            app showDefinitionsOnlyHolder value ifTrue:[
+                addIf := [:chg | chg isOrContainsClassDefinitionChange].
             ] ifFalse:[
-                |showRemoved showSame|
+                app showConflictsOnlyHolder value ifTrue:[
+                    addIf := [:chg | chg isConflict].
+                ] ifFalse:[
+                    showRemoved := app showRemovedHolder value.
+                    showSame := app showSameHolder value.
 
-                showRemoved := self application showRemovedHolder value.
-                showSame := self application showSameHolder value.
-
-                change changes do:[:chg|
-                    ((showRemoved or:[ chg removed not ])
-                        and:[showSame or:[chg delta ~~ #=]]) 
-                            ifTrue:[
-                                children add: ((self application listEntryFor: chg) parent: self)
-                            ]
-                ].
-            ]
+                    addIf := [:chg | 
+                                ((showRemoved or:[ chg removed not ])
+                                and:[showSame or:[chg delta ~~ #=]])
+                             ].
+                ]
+            ].
+            change changes do:[:chg|
+                (addIf value:chg) ifTrue:[
+                    children add: ((app listEntryFor: chg) parent: self)
+                ]
+            ].
         ] ifFalse:[
             children :=  #()
         ]
@@ -1371,29 +1454,6 @@
     "Created: / 31-08-2011 / 10:29:21 / cg"
 !
 
-iconDelta
-    | iconSelector |
-
-    iconSelector := self iconSelector.
-    iconSelector isNil ifTrue:[^nil].
-    self removed ifTrue:[iconSelector := iconSelector , #Grayed].
-    ^self application class perform: iconSelector asSymbol.
-
-    "Created: / 05-12-2009 / 14:11:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:56:33 / cg"
-!
-
-iconRemoved
-    |appClass|
-
-    appClass := self application class.
-    ^self removed 
-        ifTrue: [appClass uncheckedIcon ]
-        ifFalse:[appClass checkedIcon ]
-
-    "Created: / 05-12-2009 / 14:11:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 imageSource
     "return the source for the in-image version of the change"
 
@@ -1479,18 +1539,18 @@
 !ChangeList::ListEntry methodsFor:'displaying'!
 
 displayLabel:aLabel h:lH on:aGC x:newX y:y h:h
+    | list cx icon |
 
-    | list cx icon colW colS |
     list := self application.
     cx := x := newX.
     (list allowRemoveHolder value and:[list showRemovedHolder value]) ifTrue: [
-	(icon := self iconRemoved) notNil ifTrue:[
-	    icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
-	].
-	cx := cx + 22."experimental value - this looks good"
+        (icon := self iconRemoved) notNil ifTrue:[
+            icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
+        ].
+        cx := cx + 22."experimental value - this looks good"
     ].
     (icon := self iconDelta) notNil ifTrue:[
-	icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
+        icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
     ].
     cx := cx + 16."12 + 2px gap"
 
@@ -1510,9 +1570,64 @@
 "/    ].
 
     "Modified: / 27-07-2012 / 17:13:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
+!
+
+displayLabel:aLabel h:lH on:aGC x:newX y:y h:h isHighlightedAsSelected:isHighlightedAsSelected
+    | list cx icon |
+
+    list := self application.
+    cx := x := newX.
+    (list allowRemoveHolder value and:[list showRemovedHolder value]) ifTrue: [
+        (icon := self iconRemoved) notNil ifTrue:[
+            icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
+        ].
+        cx := cx + 22."experimental value - this looks good"
+    ].
+    (icon := self iconDelta) notNil ifTrue:[
+        icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
+    ].
+    cx := cx + 16."12 + 2px gap"
+
+    super displayLabel:aLabel h:lH on:aGC x:cx y:y h:h isHighlightedAsSelected:isHighlightedAsSelected.
 
-!ChangeList::ListEntry methodsFor:'private'!
+"/    "Now, display additional columns..."
+"/    (list showColumn: #timestamp) ifTrue:[
+"/        cx := cx + (aLabel widthOn: aGC) + 5."px - padding"
+"/        colS := change timeOfChangeIfKnown notNil
+"/                    ifTrue:[change timeOfChangeIfKnown printString]
+"/                    ifFalse:['???'].
+"/        [ (colW := colS widthOn: aGC) > (aGC width - cx - 5) ] whileTrue:[
+"/            colS = '...' ifTrue:[ ^ self ].
+"/            colS := '...' , (colS copyFrom: 6).
+"/        ].
+"/        super displayLabel:colS h:lH on:aGC x: (aGC width - 5 - colW) y:y h:h.
+"/    ].
+
+    "Modified: / 27-07-2012 / 17:13:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+iconDelta
+    | iconSelector |
+
+    iconSelector := self iconSelector.
+    iconSelector isNil ifTrue:[^nil].
+    self removed ifTrue:[iconSelector := iconSelector , #Grayed].
+    ^self application class perform: iconSelector asSymbol.
+
+    "Created: / 05-12-2009 / 14:11:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-11-2011 / 14:56:33 / cg"
+!
+
+iconRemoved
+    |appClass|
+
+    appClass := self application class.
+    ^self removed 
+        ifTrue: [appClass uncheckedIcon ]
+        ifFalse:[appClass checkedIcon ]
+
+    "Created: / 05-12-2009 / 14:11:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
 iconSelector
     ^ application iconSelectorForChange:change
@@ -1530,19 +1645,14 @@
 !ChangeList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.26 2013-09-05 23:18:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.37 2015-02-26 01:06:39 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.26 2013-09-05 23:18:30 cg Exp $'
-!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.37 2015-02-26 01:06:39 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Tools__ChangeList.st,v 1.26 2013-09-05 23:18:30 cg Exp $'
+    ^ '$Id: Tools__ChangeList.st,v 1.37 2015-02-26 01:06:39 cg Exp $'
 ! !