--- 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