Tools__ChangeList.st
branchjv
changeset 12680 4e2f5b0d4cb2
parent 12650 e0f607754b9a
parent 12666 c90e266fc135
child 13530 2269bce1636d
--- a/Tools__ChangeList.st	Tue Apr 16 09:35:45 2013 +0200
+++ b/Tools__ChangeList.st	Tue Apr 16 10:22:43 2013 +0200
@@ -29,7 +29,7 @@
 
 Tools::BrowserListWithFilter subclass:#ChangeList
 	instanceVariableNames:'listHolder showRemovedHolder showSameHolder showTimestampHolder
-		allowRemoveHolder allowAcceptHolder scrollToBottom applyAction'
+                allowRemoveHolder allowAcceptHolder scrollToBottom applyAction showConflictsOnlyHolder'
 	classVariableNames:'LastSelectionConditionString'
 	poolDictionaries:''
 	category:'Interface-Browsers-ChangeSet'
@@ -87,6 +87,10 @@
     "Modified: / 31-08-2011 / 10:54:00 / cg"
 !
 
+iconExcla
+    ^ ToolbarIconLibrary iconExclaRed12x12
+!
+
 iconMinus
     ^ ToolbarIconLibrary iconMinusRed12x12
 
@@ -440,16 +444,17 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
-	#allowAcceptHolder
-	#allowRemoveHolder
-	#inGeneratorHolder
-	#menuHolder
-	#outGeneratorHolder
-	#selectionHolder
-	#showFilterHolder
-	#showRemovedHolder
-	#showSameHolder
-	#showTimestampHolder
+        #allowAcceptHolder
+        #allowRemoveHolder
+        #inGeneratorHolder
+        #menuHolder
+        #outGeneratorHolder
+        #selectionHolder
+        #showFilterHolder
+        #showRemovedHolder
+        #showSameHolder
+        #showTimestampHolder
+        #showConflictsOnlyHolder
       ).
 
 ! !
@@ -626,6 +631,35 @@
     ^ listHolder
 !
 
+showConflictsOnlyHolder
+    "return/create the 'showConflictsOnlyHolder' value holder (automatically generated)"
+
+    showConflictsOnlyHolder isNil ifTrue:[
+        showConflictsOnlyHolder := ValueHolder with: true.
+        showConflictsOnlyHolder addDependent: self.
+    ].
+    ^ showConflictsOnlyHolder
+!
+
+showConflictsOnlyHolder:something
+    "set the 'showConflictsOnlyHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showConflictsOnlyHolder notNil ifTrue:[
+        oldValue := showConflictsOnlyHolder value.
+        showConflictsOnlyHolder removeDependent:self.
+    ].
+    showConflictsOnlyHolder := something.
+    showConflictsOnlyHolder notNil ifTrue:[
+        showConflictsOnlyHolder addDependent:self.
+    ].
+    newValue := showConflictsOnlyHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:showConflictsOnlyHolder.
+    ].
+!
+
 showRemovedHolder
     "return/create the 'showRemovedHolder' value holder (automatically generated)"
 
@@ -718,30 +752,36 @@
 
 !ChangeList methodsFor:'change & update'!
 
+selectionChanged
+   super selectionChanged
+!
+
 update: aspect with: param from: sender
 
     sender == allowRemoveHolder ifTrue:[
-	self listColumn: #removed visible: allowRemoveHolder value.
-	^self.
+        self listColumn: #removed visible: allowRemoveHolder value.
+        ^self.
     ].
 
     sender == showTimestampHolder ifTrue:[
-	self listColumn: #timeStamp visible: showTimestampHolder value.
-	^self.
+        self listColumn: #timeStamp visible: showTimestampHolder value.
+        ^self.
     ].
 
 
     sender == selectionHolder ifTrue:[
-	self selectionChanged.
-	^self
+        self selectionChanged.
+        ^ self
     ].
     sender == showSameHolder ifTrue:[
-	self updateList.
-	^self.
+        self updateList.
+        ^self.
     ].
     sender == showRemovedHolder ifTrue:[
-	self updateList.
-	^self.
+        self updateList
+    ].
+    sender == showConflictsOnlyHolder ifTrue:[
+        self updateList
     ].
 
     ^super update: aspect with: param from: sender
@@ -815,16 +855,16 @@
     "Superclass Tools::BrowserList says that I am responsible to implement this method"
 
     ^Iterator on:
-	[:whatToDo|
-	selectionHolder value do:
-	    [:changeListItem| | change |
-	    changeListItem notNil ifTrue:[
-		change := changeListItem change.
-		change isCompositeChange ifTrue:
-		    [change changes do: whatToDo]]]]
+        [:whatToDo|
+
+        selectionHolder value do:
+            [:changeListItem| | change |
+            change := changeListItem change.
+            change isCompositeChange ifTrue:
+                [change changes do: whatToDo]]].
 
     "Modified: / 24-07-2009 / 23:00:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 25-07-2012 / 15:39:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-10-2009 / 20:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 
@@ -857,19 +897,20 @@
 !ChangeList methodsFor:'menu actions'!
 
 listMenuApply
-    |sel list idx|
+    |sel list idx selectionHolder|
 
     self acceptEnabled ifFalse:[^self].
+    selectionHolder := self selectionHolder.
 
-    (sel := self selectionHolder value) do:[:e| applyAction value:e change].
+    (sel := selectionHolder value) do:[:e| applyAction value:e change].
     sel size == 1 ifTrue:[
-	list := self listHolder value.
-	idx := list indexOf:(sel first).
-	idx < list size ifTrue:[
-	    self selectionHolder value:(Array with:(list at:idx+1))
-	] ifFalse:[
-	    self selectionHolder value:#()
-	].
+        list := self listHolder value. 
+        idx := list indexOf:(sel first). 
+        idx < list size ifTrue:[
+            selectionHolder value:(Array with:(list at:idx+1))
+        ] ifFalse:[
+            selectionHolder value:#()
+        ].
     ].
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -896,31 +937,35 @@
 !
 
 listMenuBrowseChanges: changes
+    | classes methods methodsOnly browserClass|
 
-    | classes methods methodsOnly |
     classes := Set new.
     methods := Set new.
     methodsOnly := true.
-    changes do:
-	[:each|
-	each  isClassChange ifTrue:
-	    [each  changeClass ifNotNil:
-		[classes add: each  changeClass.
-		each isMethodCodeChange
-		    ifTrue:
-			[each changeMethod ifNotNil:
-			    [methods add:each changeMethod]]
-		    ifFalse:
-			[methodsOnly := false]]]].
-    methodsOnly
-	ifTrue:
-	    [methods size = 1
-		ifTrue:[Smalltalk browserClass openInMethod: methods anyOne]
-		ifFalse:[Smalltalk browserClass browseMethods: methods asArray title: 'Selected methods from changeset' sort: true]]
-	ifFalse:
-	    [classes size = 1
-		ifTrue:[Smalltalk browserClass browseClass: classes anyOne]
-		ifFalse:[Smalltalk browserClass browseClasses: classes]]
+    changes do: [:each |
+        each isClassChange ifTrue:[
+            each changeClass ifNotNil:[
+                classes add: each  changeClass.
+                each isMethodCodeChange 
+                    ifTrue:
+                        [each changeMethod ifNotNil:
+                            [methods add:each changeMethod]]
+                    ifFalse:
+                        [methodsOnly := false]
+            ]
+        ]
+    ].
+
+    browserClass := Smalltalk browserClass.
+    methodsOnly 
+        ifTrue:
+            [methods size = 1 
+                ifTrue:[ browserClass openInMethod: methods anyOne]
+                ifFalse:[ browserClass browseMethods: methods asArray title: 'Selected methods from changeset' sort: true]]
+        ifFalse:
+            [classes size = 1
+                ifTrue:[ browserClass browseClass: classes anyOne]
+                ifFalse:[ browserClass browseClasses: classes]]
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 24-01-2012 / 22:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1045,6 +1090,22 @@
     "Modified: / 24-07-2009 / 22:06:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+iconSelectorForChange:change
+    | delta sym selectorOrNil |
+
+    masterApplication notNil ifTrue:[
+        selectorOrNil := masterApplication iconSelectorForChange:change.
+        selectorOrNil notNil ifTrue:[ ^ selectorOrNil ].
+    ].
+    delta := change deltaDetail.
+    sym := delta shortDeltaSymbol.
+    sym = #+ ifTrue:[^#iconPlus].
+    sym = #- ifTrue:[^#iconMinus].
+    sym = #= ifTrue:[^#iconEqual].
+    "/ different.
+    ^ nil.
+!
+
 listColumn: columnId visible: visible
     visible ifTrue:[
         self listColumnShow: columnId
@@ -1126,44 +1187,44 @@
 
 updateList
     |inGenerator changeset firstLineShown oldSel newList newSel |
-
-    inGenerator := self inGeneratorHolder value.
-    listView notNil ifTrue:[
-	((listView isKindOf: ScrollableView) not or:[listView scrolledView notNil]) ifTrue:[
-	    firstLineShown := listView firstLineShown
-	].
-    ].
-    oldSel := self selection.
+    self withWaitCursorDo:[
+        inGenerator := self inGeneratorHolder value.
+        listView notNil ifTrue:[
+            ((listView isKindOf: ScrollableView) not or:[listView scrolledView notNil]) ifTrue:[
+                firstLineShown := listView firstLineShown
+            ].
+        ].
+        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 ~~ #=]]
-		    ].
-    newList := self filterList: newList.
-    newList := newList collect:[:chg | self listEntryFor:chg ].
-    self listHolder value ~= newList ifTrue:[
-	self listHolder value: newList.
-	((newList size ~~ 0) and:[scrollToBottom]) ifTrue:[
-	    self selection: { newList last }
-	] ifFalse:[
-	    oldSel notEmptyOrNil ifTrue:[
-		newSel := OrderedCollection new: oldSel size.
-		oldSel := oldSel reject:[:e|e isNil].
-		oldSel := oldSel collect:[:e|e change].
-		newList do:[:e|(oldSel includes:e change) ifTrue:[newSel add:e]].
-		self selection: newSel.
-	    ].
-	    (listView notNil and:[firstLineShown notNil]) ifTrue:[
-		listView scrollToLine: (newList size min: firstLineShown).
-	    ].
-	].
-	scrollToBottom := false.
+        changeset := inGenerator isNil ifTrue:[ #() ] ifFalse:[ inGenerator ].
+        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:[
+            self listHolder value: newList.
+            ((newList size ~~ 0) and:[scrollToBottom]) ifTrue:[
+                self selection: { newList last }
+            ] ifFalse:[
+                oldSel notEmptyOrNil ifTrue:[
+                    newSel := OrderedCollection new: oldSel size.
+                    oldSel := oldSel reject:[:e|e isNil].
+                    oldSel := oldSel collect:[:e|e change].
+                    newList do:[:e|(oldSel includes:e change) ifTrue:[newSel add:e]].
+                    self selection: newSel.
+                ].
+                (listView notNil and:[firstLineShown notNil]) ifTrue:[
+                    listView scrollToLine: (newList size min: firstLineShown).
+                ].
+            ].
+            scrollToBottom := false.
 
+        ]
     ]
-
     "Modified: / 28-12-2011 / 15:46:15 / cg"
     "Modified: / 01-08-2012 / 18:10:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -1190,14 +1251,15 @@
 !
 
 hasSingleChangeSelectedAndCanBrowse
-
+    self selectionHolder value ? #() do: [:each |
+        |chg|
 
-    self selectionHolder value ? #() do:
-	[:each|
-	(each change isClassChange and:
-	    [each change isMethodChange not
-		or:[each change isMethodCodeChange]]) ifFalse:[^false]].
-    ^true
+        chg := each change.
+        chg isClassChange ifTrue:[
+            (chg isMethodChange not or:[chg isMethodCodeChange]) ifFalse:[^ false]
+        ].
+    ].
+    ^ true
 !
 
 showColumn: columnSymbol
@@ -1275,18 +1337,31 @@
 children
 
     children isNil ifTrue:[
-	change isCompositeChange ifTrue:[
-	    children := OrderedCollection new: change changes size.
-	    change changes do:[:chg|
-		((self application showRemovedHolder value or:[ chg removed not ])
-		    and:[self application showSameHolder value or:[chg delta ~~ #=]])
-			ifTrue:[
-			    children add: ((self application listEntryFor: chg) parent: self)
-			]
-	    ].
-	] ifFalse:[
-	    children :=  #()
-	]
+        change isCompositeChange ifTrue:[
+            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)
+                    ]
+                ].
+            ] ifFalse:[
+                |showRemoved showSame|
+
+                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)
+                            ]
+                ].
+            ]
+        ] ifFalse:[
+            children :=  #()
+        ]
     ].
     ^children
 
@@ -1313,8 +1388,8 @@
 !
 
 iconDelta
+    | iconSelector |
 
-    | iconSelector |
     iconSelector := self iconSelector.
     iconSelector isNil ifTrue:[^nil].
     self removed ifTrue:[iconSelector := iconSelector , #Grayed].
@@ -1325,10 +1400,12 @@
 !
 
 iconRemoved
+    |appClass|
 
-    ^self removed
-	ifTrue: [self application class uncheckedIcon ]
-	ifFalse:[self application class checkedIcon ]
+    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>"
 !
@@ -1456,16 +1533,7 @@
 !ChangeList::ListEntry methodsFor:'private'!
 
 iconSelector
-    | delta |
-
-    delta := change deltaDetail.
-    delta shortDeltaSymbol = #+ ifTrue:[^#iconPlus].
-    delta shortDeltaSymbol = #- ifTrue:[^#iconMinus].
-    delta shortDeltaSymbol = #= ifTrue:[^#iconEqual].
-
-    ^ nil.
-
-    "Modified: / 31-08-2011 / 10:39:32 / cg"
+    ^ application iconSelectorForChange:change
 ! !
 
 
@@ -1482,11 +1550,11 @@
 !ChangeList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.21 2013-03-30 01:59:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.24 2013-04-14 19:55:58 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.21 2013-03-30 01:59:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeList.st,v 1.24 2013-04-14 19:55:58 cg Exp $'
 !
 
 version_HG