--- a/VersionDiffBrowser.st Mon Aug 12 09:27:53 2019 +0200
+++ b/VersionDiffBrowser.st Tue Aug 13 16:33:36 2019 +0200
@@ -30,11 +30,11 @@
versionEntriesList selectedVersionHolder symbolicVersionList
symbolicVersionNameList selectedSymbolicVersionHolder
selectedSymbolicVersionIndexHolder symbolicToVersionMapping
- filteredClasses filteredMethods filteredSelectors
- classPatternFilters selectorPatternFilters
+ filteredClassNames filteredMethodNames filteredSelectors
+ filteredClassNamePatterns filteredSelectorPatterns
+ filterChangedBefore filterChangedAfter filteredOwnerClassNames
selectedVersionIndexHolder isMultipleClassesVersionBrowser
- classListHolder filterChangedBefore filterChangedAfter
- selectedClassIndexHolder'
+ classListHolder selectedClassIndexHolder'
classVariableNames:'RememberedFilters LastSearchString'
poolDictionaries:''
category:'Interface-Browsers'
@@ -51,7 +51,7 @@
Object subclass:#FilterParameters
instanceVariableNames:'filteredMethodNames filteredClassNames filteredSelectors
filteredClassNameMatchPattern filteredSelectorMatchPattern
- filterChangedBefore filterChangedAfter'
+ filterChangedBefore filterChangedAfter filteredOwnerClassNames'
classVariableNames:''
poolDictionaries:''
privateIn:VersionDiffBrowser
@@ -911,14 +911,27 @@
itemValue: filterSelectorsMatching
)
(MenuItem
- enabled: hasClassFilter
- label: 'Remove Class Filter'
- itemValue: removeClassFilter
+ enabled: hasClassPatternFilter
+ label: 'Remove Class Pattern Filter'
+ itemValue: removeClassPatternFilter
+ )
+ (MenuItem
+ enabled: hasSelectorPatternFilter
+ label: 'Remove Selector Pattern Filter'
+ itemValue: removeSelectorPatternFilter
)
(MenuItem
- enabled: hasSelectorFilter
- label: 'Remove Selector Filter'
- itemValue: removeSelectorFilter
+ label: '-'
+ )
+ (MenuItem
+ enabled: hasClassFilters
+ label: 'Remove all Class Filters'
+ itemValue: removeAllClassFilters
+ )
+ (MenuItem
+ enabled: hasSelectorFilters
+ label: 'Remove all Selector Filters'
+ itemValue: removeAllSelectorFilters
)
(MenuItem
label: '-'
@@ -1103,13 +1116,19 @@
#enabled: #hasChangeSelectedInA
)
#(#MenuItem
- #label: 'Filter Class'
+ #label: 'Filter this Class'
#translateLabel: true
#value: #filterClassInA
#enabled: #hasChangeSelectedInA
)
#(#MenuItem
- #label: 'Filter Selector'
+ #label: 'Filter this Class & its Private Classes'
+ #translateLabel: true
+ #value: #filterClassAndPrivateClassesInA
+ #enabled: #hasChangeSelectedInA
+ )
+ #(#MenuItem
+ #label: 'Filter this Selector'
#translateLabel: true
#value: #filterSelectorFromA
#enabled: #hasChangeSelectedInA
@@ -1189,13 +1208,19 @@
#enabled: #hasChangeSelectedInB
)
#(#MenuItem
- #label: 'Filter Class'
+ #label: 'Filter this Class'
#translateLabel: true
#value: #filterClassInB
#enabled: #hasChangeSelectedInB
)
#(#MenuItem
- #label: 'Filter Selector '
+ #label: 'Filter this Class & its Private Classes'
+ #translateLabel: true
+ #value: #filterClassAndPrivateClassesInB
+ #enabled: #hasChangeSelectedInB
+ )
+ #(#MenuItem
+ #label: 'Filter this Selector '
#translateLabel: true
#value: #filterSelectorFromB
#enabled: #hasChangeSelectedInB
@@ -1273,13 +1298,19 @@
#enabled: #hasChangeSelectedInM
)
#(#MenuItem
- #label: 'Filter Class'
+ #label: 'Filter this Class'
#translateLabel: true
#value: #filterClassInM
#enabled: #hasChangeSelectedInM
)
#(#MenuItem
- #label: 'Filter Selector '
+ #label: 'Filter this Class & its Private Classes'
+ #translateLabel: true
+ #value: #filterClassAndPrivateClassesInM
+ #enabled: #hasChangeSelectedInM
+ )
+ #(#MenuItem
+ #label: 'Filter this Selector '
#translateLabel: true
#value: #filterSelectorFromM
#enabled: #hasChangeSelectedInM
@@ -2449,8 +2480,16 @@
^ self methodsChangedSelection value notNil
!
-hasClassFilter
- ^ classPatternFilters notEmptyOrNil
+hasClassFilters
+ ^ filteredClassNames notEmptyOrNil
+ or:[filteredOwnerClassNames notEmptyOrNil
+ or:[filteredClassNamePatterns notEmptyOrNil]]
+
+ "Created: / 08-05-2019 / 11:50:12 / Claus Gittinger"
+!
+
+hasClassPatternFilter
+ ^ filteredClassNamePatterns notEmptyOrNil
"Created: / 08-05-2019 / 11:50:12 / Claus Gittinger"
!
@@ -2479,8 +2518,14 @@
"Created: / 08-05-2019 / 11:54:31 / Claus Gittinger"
!
-hasSelectorFilter
- ^ selectorPatternFilters notEmptyOrNil
+hasSelectorFilters
+ ^ filteredSelectors notEmptyOrNil or:[filteredSelectorPatterns notEmptyOrNil]
+
+ "Created: / 08-05-2019 / 11:50:12 / Claus Gittinger"
+!
+
+hasSelectorPatternFilter
+ ^ filteredSelectorPatterns notEmptyOrNil
"Created: / 08-05-2019 / 11:50:46 / Claus Gittinger"
!
@@ -2943,7 +2988,7 @@
printStringGenerator "sortBlockForChangeLists" filteredList
numIgnoredExtensions numIgnoredVersionMethods
info needFilter entryIsForCommentOrFormatOnly
- isIgnoredChange isIgnored1 isIgnored2 isIgnored3 isIgnored4 isIgnored5|
+ isIgnoredChange isIgnored1 isIgnored2 isIgnored3 isIgnored4 isIgnored5 isIgnored6|
printStringGenerator := [:aChange | self printStringForChange:aChange].
"/ sortBlockForChangeLists := [:a :b | (printStringGenerator value:a) < (printStringGenerator value:b)].
@@ -3000,13 +3045,14 @@
isIgnoredChange := [:change | false].
].
- filteredClasses notEmptyOrNil ifTrue:[
+ "/ build a stack of filters
+ filteredClassNames notEmptyOrNil ifTrue:[
isIgnored1 := isIgnoredChange.
isIgnoredChange :=
[:change |
(isIgnored1 value:change)
or:[
- filteredClasses includes:change nonMetaClassName
+ filteredClassNames includes:change nonMetaClassName
]
].
].
@@ -3018,13 +3064,13 @@
or:[ filteredSelectors includes:change changeSelector ]
].
].
- filteredMethods notEmptyOrNil ifTrue:[
+ filteredMethodNames notEmptyOrNil ifTrue:[
isIgnored3 := isIgnoredChange.
isIgnoredChange :=
[:change |
(isIgnored3 value:change)
or:[
- filteredMethods contains:[:filter |
+ filteredMethodNames contains:[:filter |
|filterSelector filterClassName|
"/ migration - will be always an assoc
@@ -3041,28 +3087,38 @@
]
].
].
-
- classPatternFilters notEmptyOrNil ifTrue:[
+ filteredClassNamePatterns notEmptyOrNil ifTrue:[
isIgnored4 := isIgnoredChange.
isIgnoredChange :=
[:change |
(isIgnored4 value:change)
or:[
- classPatternFilters contains:[:pattern | pattern match:change nonMetaClassName]
+ filteredClassNamePatterns contains:[:pattern | pattern match:change nonMetaClassName]
]
].
].
-
- selectorPatternFilters notEmptyOrNil ifTrue:[
+ filteredSelectorPatterns notEmptyOrNil ifTrue:[
isIgnored5 := isIgnoredChange.
isIgnoredChange :=
[:change |
(isIgnored5 value:change)
or:[
- selectorPatternFilters contains:[:pattern | pattern match:change changeSelector]
+ filteredSelectorPatterns contains:[:pattern | pattern match:change changeSelector]
]
].
].
+ filteredOwnerClassNames notEmptyOrNil ifTrue:[
+ isIgnored6 := isIgnoredChange.
+ isIgnoredChange :=
+ [:change |
+ (isIgnored6 value:change)
+ or:[
+ filteredOwnerClassNames contains:[:ownerName |
+ change nonMetaClassName startsWith:(ownerName,'::')
+ ]
+ ]
+ ].
+ ].
listOnlyInA := filteredList := self methodsOnlyInA.
listOnlyInA removeAll.
@@ -3649,8 +3705,8 @@
|filterParameters|
"/ migration - will be removed
- filteredMethods notEmptyOrNil ifTrue:[
- filteredMethods := filteredMethods
+ filteredMethodNames notEmptyOrNil ifTrue:[
+ filteredMethodNames := filteredMethodNames
collect:[:filter |
filter isAssociation ifTrue:[
filter.
@@ -3661,10 +3717,11 @@
].
filterParameters := FilterParameters new.
- filterParameters filteredClassNameMatchPattern:classPatternFilters.
- filterParameters filteredSelectorMatchPattern:selectorPatternFilters.
- filterParameters filteredClassNames:filteredClasses.
- filterParameters filteredMethodNames:filteredMethods.
+ filterParameters filteredClassNameMatchPattern:filteredClassNamePatterns.
+ filterParameters filteredSelectorMatchPattern:filteredSelectorPatterns.
+ filterParameters filteredClassNames:filteredClassNames.
+ filterParameters filteredOwnerClassNames:filteredOwnerClassNames.
+ filterParameters filteredMethodNames:filteredMethodNames.
filterParameters filteredSelectors:filteredSelectors.
filterParameters filterChangedBefore:filterChangedBefore.
filterParameters filterChangedAfter:filterChangedAfter.
@@ -3694,14 +3751,42 @@
"Modified: / 08-05-2019 / 11:56:31 / Claus Gittinger"
!
+filterClassAndPrivateClassesInA
+ "filter all changes for the selected change's class and its private classes (don't show it)."
+
+ self filterClassAndPrivateClassesNamed:(self selectedChangeInA nonMetaClassName)
+!
+
+filterClassAndPrivateClassesInB
+ "filter all changes for the selected change's class and its private classes (don't show it)."
+
+ self filterClassAndPrivateClassesNamed:(self selectedChangeInB nonMetaClassName)
+!
+
+filterClassAndPrivateClassesInM
+ "filter all changes for the selected change's class and its private classes (don't show it)."
+
+ self filterClassAndPrivateClassesNamed:(self selectedChangesInM first nonMetaClassName)
+!
+
+filterClassAndPrivateClassesNamed:nonMetaClassName
+ "filter all changes for the given class and its private classes (don't show it)."
+
+ filteredOwnerClassNames isNil ifTrue:[
+ filteredOwnerClassNames := Set new.
+ ].
+ filteredOwnerClassNames add:nonMetaClassName.
+ self filterChanged.
+
+ "Created: / 05-02-2017 / 10:16:45 / cg"
+ "Modified: / 05-02-2017 / 11:19:02 / cg"
+ "Modified (comment): / 06-02-2017 / 09:13:29 / cg"
+!
+
filterClassInA
"filter all changes for the selected change's class (don't show it)."
- filteredClasses isNil ifTrue:[
- filteredClasses := Set new.
- ].
- filteredClasses add:(self selectedChangeInA nonMetaClassName).
- self filterChanged.
+ self filterClassNamed:(self selectedChangeInA nonMetaClassName)
"Created: / 05-02-2017 / 10:17:22 / cg"
"Modified: / 05-02-2017 / 11:19:05 / cg"
@@ -3711,11 +3796,7 @@
filterClassInB
"filter all changes for the selected change's class (don't show it)."
- filteredClasses isNil ifTrue:[
- filteredClasses := Set new.
- ].
- filteredClasses add:(self selectedChangeInB nonMetaClassName).
- self filterChanged.
+ self filterClassNamed:(self selectedChangeInB nonMetaClassName)
"Created: / 05-02-2017 / 10:16:45 / cg"
"Modified: / 05-02-2017 / 11:19:02 / cg"
@@ -3725,16 +3806,26 @@
filterClassInM
"filter all changes for the selected change's class (don't show it)."
- filteredClasses isNil ifTrue:[
- filteredClasses := Set new.
- ].
- filteredClasses add:(self selectedChangesInM first nonMetaClassName).
- self filterChanged.
+ self filterClassNamed:(self selectedChangesInM first nonMetaClassName)
"Created: / 05-02-2017 / 10:38:06 / cg"
"Modified (comment): / 06-02-2017 / 09:13:33 / cg"
!
+filterClassNamed:nonMetaClassName
+ "filter all changes for the given class (don't show it)."
+
+ filteredClassNames isNil ifTrue:[
+ filteredClassNames := Set new.
+ ].
+ filteredClassNames add:nonMetaClassName.
+ self filterChanged.
+
+ "Created: / 05-02-2017 / 10:16:45 / cg"
+ "Modified: / 05-02-2017 / 11:19:02 / cg"
+ "Modified (comment): / 06-02-2017 / 09:13:29 / cg"
+!
+
filterClassesMatching
"ask for a GLOB pattern;
filter all changes with matching classnames ."
@@ -3744,10 +3835,10 @@
pattern := Dialog request:'Matchpattern for Classname Filter (will hide changes with matching classes):'.
pattern isEmptyOrNil ifTrue:[^ self].
- classPatternFilters isNil ifTrue:[
- classPatternFilters := OrderedCollection new.
+ filteredClassNamePatterns isNil ifTrue:[
+ filteredClassNamePatterns := OrderedCollection new.
].
- classPatternFilters add:pattern.
+ filteredClassNamePatterns add:pattern.
self filterChanged
"Created: / 05-02-2017 / 11:11:42 / cg"
@@ -3757,11 +3848,11 @@
filterMethod:aChange
"filter this change (don't show it)."
- filteredMethods isNil ifTrue:[
- filteredMethods := Set new.
+ filteredMethodNames isNil ifTrue:[
+ filteredMethodNames := Set new.
].
aChange isMethodChange ifTrue:[
- filteredMethods add:(aChange className -> aChange changeSelector).
+ filteredMethodNames add:(aChange className -> aChange changeSelector).
] ifFalse:[
].
@@ -3863,10 +3954,10 @@
pattern := Dialog request:'Matchpattern for Selector Filter (will hide changes with matching selectors):'.
pattern isEmptyOrNil ifTrue:[^ self].
- selectorPatternFilters isNil ifTrue:[
- selectorPatternFilters := OrderedCollection new.
+ filteredSelectorPatterns isNil ifTrue:[
+ filteredSelectorPatterns := OrderedCollection new.
].
- selectorPatternFilters add:pattern.
+ filteredSelectorPatterns add:pattern.
self filterChanged
"Created: / 06-02-2017 / 02:29:07 / cg"
@@ -3969,17 +4060,34 @@
"Modified: / 08-05-2019 / 11:54:08 / Claus Gittinger"
!
-removeClassFilter
- "clear the current class filter (but not named ones)"
-
- classPatternFilters := nil.
+removeAllClassFilters
+ "clear all the current class filter (but not named ones)"
+
+ filteredClassNamePatterns := nil.
+ filteredClassNames := nil.
+ filteredOwnerClassNames := nil.
self filterChanged
!
-removeSelectorFilter
+removeAllSelectorFilters
+ "clear all the current class filter (but not named ones)"
+
+ filteredSelectorPatterns := nil.
+ filteredSelectors := nil.
+ self filterChanged
+!
+
+removeClassPatternFilter
+ "clear the current class filter (but not named ones)"
+
+ filteredClassNamePatterns := nil.
+ self filterChanged
+!
+
+removeSelectorPatternFilter
"clear the current selector filter (but not named ones)"
- selectorPatternFilters := nil.
+ filteredSelectorPatterns := nil.
self filterChanged
"Created: / 06-02-2017 / 02:29:07 / cg"
@@ -4001,10 +4109,11 @@
setFilterParameters:filter
"setup from a remembered filter"
- selectorPatternFilters := filter filteredSelectorMatchPattern.
- classPatternFilters := filter filteredClassNameMatchPattern.
- filteredClasses := filter filteredClassNames.
- filteredMethods := filter filteredMethodNames.
+ filteredSelectorPatterns := filter filteredSelectorMatchPattern.
+ filteredClassNamePatterns := filter filteredClassNameMatchPattern.
+ filteredClassNames := filter filteredClassNames.
+ filteredOwnerClassNames := filter filteredOwnerClassNames.
+ filteredMethodNames := filter filteredMethodNames.
filteredSelectors := filter filteredSelectors.
filterChangedBefore := filter filterChangedBefore.
filterChangedAfter := filter filterChangedAfter.
@@ -4853,6 +4962,14 @@
filteredMethodNames := something.
!
+filteredOwnerClassNames
+ ^ filteredOwnerClassNames
+!
+
+filteredOwnerClassNames:something
+ filteredOwnerClassNames := something.
+!
+
filteredSelectorMatchPattern
^ filteredSelectorMatchPattern
!