#UI_ENHANCEMENT by cg
authorClaus Gittinger <cg@exept.de>
Mon, 06 Feb 2017 09:19:03 +0100
changeset 17348 4b01dfe3fd4b
parent 17347 5fdabadbda8e
child 17349 2b493c7ccb5e
#UI_ENHANCEMENT by cg class: VersionDiffBrowser added: #filterMethod: comment/format in: #filterClassInA #filterClassInB #filterClassInM #filterSelectorFromA #filterSelectorFromB #filterSelectorFromM changed: #filterClassesMatching #filterMenu #filterMethodInA #filterMethodInB #filterMethodInM #filterSelectorsMatching #rememberFilterAs #updateLists
VersionDiffBrowser.st
--- a/VersionDiffBrowser.st	Mon Feb 06 02:32:56 2017 +0100
+++ b/VersionDiffBrowser.st	Mon Feb 06 09:19:03 2017 +0100
@@ -562,6 +562,10 @@
                   itemValue: filterClassesMatching
                 )
                (MenuItem
+                  label: 'Filter Selectors Matching...'
+                  itemValue: filterSelectorsMatching
+                )
+               (MenuItem
                   label: '-'
                 )
                (MenuItem
@@ -593,7 +597,7 @@
             )
 
     "Created: / 05-02-2017 / 11:11:30 / cg"
-    "Modified: / 06-02-2017 / 02:01:23 / cg"
+    "Modified: / 06-02-2017 / 09:09:25 / cg"
 !
 
 mainMenu
@@ -2248,8 +2252,22 @@
         isIgnoredChange := 
             [:change | 
                 (isIgnored3 value:change)
-                or:[ filteredMethods includes:change ]
-        ].
+                or:[ 
+                    filteredMethods contains:[:filter |
+                        |filterSelector filterClassName|
+
+                        filter isAssociation ifTrue:[
+                            filterClassName := filter key.
+                            filterSelector := filter value.
+                        ] ifFalse:[
+                            filterClassName := filter className.
+                            filterSelector := filter changeSelector.
+                        ].    
+                        ((change className = filterClassName)
+                        and:[change changeSelector = filterSelector])
+                    ]
+                ]
+            ].
     ].
     
     classPatternFilters notEmptyOrNil ifTrue:[
@@ -2257,7 +2275,9 @@
         isIgnoredChange := 
             [:change | 
                 (isIgnored4 value:change)
-                or:[ classPatternFilters contains:[:pattern | pattern match:change nonMetaClassName]]
+                or:[ 
+                    classPatternFilters contains:[:pattern | pattern match:change nonMetaClassName]
+                ]
         ].
     ].
     
@@ -2266,7 +2286,9 @@
         isIgnoredChange := 
             [:change | 
                 (isIgnored5 value:change)
-                or:[ selectorPatternFilters contains:[:pattern | pattern match:change changeSelector]]
+                or:[ 
+                    selectorPatternFilters contains:[:pattern | pattern match:change changeSelector]
+                ]
         ].
     ].
 
@@ -2368,7 +2390,7 @@
     ].
     self information:info
 
-    "Modified: / 06-02-2017 / 02:32:40 / cg"
+    "Modified (format): / 06-02-2017 / 09:11:29 / cg"
 !
 
 updateVersionList
@@ -2690,7 +2712,7 @@
 !VersionDiffBrowser methodsFor:'menu action - filters'!
 
 filterClassInA
-    "filter this class (don't show it)."
+    "filter all changes for the selected change's class (don't show it)."
 
     filteredClasses isNil ifTrue:[
         filteredClasses := Set new.
@@ -2700,10 +2722,11 @@
 
     "Created: / 05-02-2017 / 10:17:22 / cg"
     "Modified: / 05-02-2017 / 11:19:05 / cg"
+    "Modified (comment): / 06-02-2017 / 09:13:23 / cg"
 !
 
 filterClassInB
-    "filter this class (don't show it)."
+    "filter all changes for the selected change's class (don't show it)."
 
     filteredClasses isNil ifTrue:[
         filteredClasses := Set new.
@@ -2713,10 +2736,11 @@
 
     "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"
 !
 
 filterClassInM
-    "filter this class (don't show it)."
+    "filter all changes for the selected change's class (don't show it)."
 
     filteredClasses isNil ifTrue:[
         filteredClasses := Set new.
@@ -2725,12 +2749,16 @@
     self filterChanged.
 
     "Created: / 05-02-2017 / 10:38:06 / cg"
+    "Modified (comment): / 06-02-2017 / 09:13:33 / cg"
 !
 
 filterClassesMatching
-    |pattern|
-
-    pattern := Dialog request:'Pattern for Filter (will hide matching classes):'.
+    "ask for a GLOB pattern;
+     filter all changes with matching classnames ."
+
+   |pattern|
+
+    pattern := Dialog request:'Matchpattern for Classname Filter (will hide changes with matching classes):'.
     pattern isEmptyOrNil ifTrue:[^ self].
 
     classPatternFilters isNil ifTrue:[
@@ -2740,48 +2768,54 @@
     self filterChanged
 
     "Created: / 05-02-2017 / 11:11:42 / cg"
-    "Modified (format): / 06-02-2017 / 02:29:12 / cg"
+    "Modified: / 06-02-2017 / 09:18:15 / cg"
+!
+
+filterMethod:aChange
+    "filter this change (don't show it)."
+
+    filteredMethods isNil ifTrue:[
+        filteredMethods := Set new.
+    ]. 
+    aChange isMethodChange ifTrue:[
+        filteredMethods add:(aChange className -> aChange changeSelector).
+    ] ifFalse:[
+    ].
+    
+    self filterChanged.
+
+    "Created: / 06-02-2017 / 08:58:17 / cg"
 !
 
 filterMethodInA
     "filter this entry (don't show it)."
 
-    filteredMethods isNil ifTrue:[
-        filteredMethods := Set new.
-    ].    
-    filteredMethods add:(self selectedChangeInA).
-    self filterChanged.
+    self filterMethod:(self selectedChangeInA)
 
     "Created: / 05-02-2017 / 10:11:48 / cg"
+    "Modified: / 06-02-2017 / 08:58:38 / cg"
 !
 
 filterMethodInB
     "filter this entry (don't show it)."
 
-    filteredMethods isNil ifTrue:[
-        filteredMethods := Set new.
-    ].    
-    filteredMethods add:(self selectedChangeInB).
-    self filterChanged.
+    self filterMethod:(self selectedChangeInB)
 
     "Created: / 05-02-2017 / 10:15:57 / cg"
+    "Modified: / 06-02-2017 / 08:58:46 / cg"
 !
 
 filterMethodInM
     "filter this entry (don't show it)."
 
-    filteredMethods isNil ifTrue:[
-        filteredMethods := Set new.
-    ].    
-self halt.
-    filteredMethods add:(self selectedChangesInM first).
-    self filterChanged.
+    self filterMethod:(self selectedChangesInM first)
 
     "Created: / 05-02-2017 / 10:39:10 / cg"
+    "Modified: / 06-02-2017 / 08:58:59 / cg"
 !
 
 filterSelectorFromA
-    "filter selectors of this entry (don't show it)."
+    "filter all changes for the selected change's selector(don't show it)."
 
     filteredSelectors isNil ifTrue:[
         filteredSelectors := Set new.
@@ -2790,10 +2824,11 @@
     self filterChanged.
 
     "Created: / 05-02-2017 / 10:36:08 / cg"
+    "Modified (comment): / 06-02-2017 / 09:13:48 / cg"
 !
 
 filterSelectorFromB
-    "filter selectors of this entry (don't show it)."
+    "filter all changes for the selected change's selector(don't show it)."
 
     filteredSelectors isNil ifTrue:[
         filteredSelectors := Set new.
@@ -2802,10 +2837,11 @@
     self filterChanged.
 
     "Created: / 05-02-2017 / 10:36:14 / cg"
+    "Modified (comment): / 06-02-2017 / 09:13:52 / cg"
 !
 
 filterSelectorFromM
-    "filter selectors of this entry (don't show it)."
+    "filter all changes for the selected change's selector(don't show it)."
 
     filteredSelectors isNil ifTrue:[
         filteredSelectors := Set new.
@@ -2814,12 +2850,16 @@
     self filterChanged.
 
     "Created: / 05-02-2017 / 10:39:28 / cg"
+    "Modified (comment): / 06-02-2017 / 09:13:55 / cg"
 !
 
 filterSelectorsMatching
+    "ask for a GLOB pattern;
+     filter all changes with matching selectors."
+
     |pattern|
 
-    pattern := Dialog request:'Pattern for Filter (will hide matching selectors):'.
+    pattern := Dialog request:'Matchpattern for Selector Filter (will hide changes with matching selectors):'.
     pattern isEmptyOrNil ifTrue:[^ self].
 
     selectorPatternFilters isNil ifTrue:[
@@ -2829,6 +2869,7 @@
     self filterChanged
 
     "Created: / 06-02-2017 / 02:29:07 / cg"
+    "Modified: / 06-02-2017 / 09:18:20 / cg"
 !
 
 forgetFilterNamed
@@ -2899,6 +2940,17 @@
                     list:(RememberedFilters keys asNewOrderedCollection sort).
     filterName isEmptyOrNil ifTrue:[^ self].
 
+    filteredMethods notEmptyOrNil ifTrue:[
+        filteredMethods := filteredMethods
+                            collect:[:filter |
+                                filter isAssociation ifTrue:[
+                                    filter.
+                                ] ifFalse:[
+                                    filter className ->filter changeSelector.
+                                ].    
+                            ].        
+    ].
+    
     filterParameters := FilterParameters new.
     filterParameters filteredClassNameMatchPattern:classPatternFilters.
     filterParameters filteredSelectorMatchPattern:selectorPatternFilters.
@@ -2911,7 +2963,7 @@
     ].
     RememberedFilters at:filterName put:filterParameters.
 
-    "Modified: / 06-02-2017 / 02:29:42 / cg"
+    "Modified: / 06-02-2017 / 09:06:45 / cg"
 ! !
 
 !VersionDiffBrowser methodsFor:'private'!