VersionDiffBrowser.st
changeset 17349 2b493c7ccb5e
parent 17348 4b01dfe3fd4b
child 17350 9b2d4f4433cf
--- a/VersionDiffBrowser.st	Mon Feb 06 09:19:03 2017 +0100
+++ b/VersionDiffBrowser.st	Mon Feb 06 09:52:37 2017 +0100
@@ -580,6 +580,17 @@
                   label: '-'
                 )
                (MenuItem
+                  label: 'Export Filter Settings'
+                  itemValue: exportFilterParameters
+                )
+               (MenuItem
+                  label: 'Import Filter Settings From...'
+                  itemValue: importFilterParameters
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
                   label: 'Forget Filter Named...'
                   itemValue: forgetFilterNamed
                 )
@@ -597,7 +608,7 @@
             )
 
     "Created: / 05-02-2017 / 11:11:30 / cg"
-    "Modified: / 06-02-2017 / 09:09:25 / cg"
+    "Modified: / 06-02-2017 / 09:27:22 / cg"
 !
 
 mainMenu
@@ -2256,6 +2267,7 @@
                     filteredMethods contains:[:filter |
                         |filterSelector filterClassName|
 
+                        "/ migration - will be always an assoc
                         filter isAssociation ifTrue:[
                             filterClassName := filter key.
                             filterSelector := filter value.
@@ -2390,7 +2402,7 @@
     ].
     self information:info
 
-    "Modified (format): / 06-02-2017 / 09:11:29 / cg"
+    "Modified (format): / 06-02-2017 / 09:21:20 / cg"
 !
 
 updateVersionList
@@ -2711,6 +2723,49 @@
 
 !VersionDiffBrowser methodsFor:'menu action - filters'!
 
+currentFilterParameters
+    "get the current settings"
+    
+    |filterParameters|
+
+    "/ migration - will be removed
+    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.
+    filterParameters filteredClassNames:filteredClasses.
+    filterParameters filteredMethodNames:filteredMethods.
+    filterParameters filteredSelectors:filteredSelectors.
+
+    ^ filterParameters.
+
+    "Created: / 06-02-2017 / 09:20:07 / cg"
+!
+
+exportFilterParameters
+    "generate XML with the current settings
+     (to be pasted into Jabber for interchange)"
+    
+    |filterParameters|
+
+    filterParameters := self currentFilterParameters.
+    Workspace 
+        openWith:(XMLStandardCoder encode:filterParameters)
+        title:'Current Filter'
+
+    "Created: / 06-02-2017 / 09:19:52 / cg"
+!
+
 filterClassInA
     "filter all changes for the selected change's class (don't show it)."
 
@@ -2890,21 +2945,30 @@
     "Modified: / 06-02-2017 / 02:17:47 / cg"
 !
 
+importFilterParameters
+    "ask for XML representation as exported previously.
+     (to be pasted from Jabber for interchange)"
+    
+    |xml filterParameters|
+
+    xml := Dialog requestText:'Paste XML Exported Filter Here and Accept'.
+    xml isEmptyOrNil ifTrue:[^ self].
+
+    filterParameters := XMLStandardCoder decode:xml.
+    (filterParameters isKindOf:FilterParameters) ifTrue:[
+        self setFilterParameters:filterParameters
+    ].
+
+    "Created: / 06-02-2017 / 09:51:11 / cg"
+!
+
 inspectFilterParameters
     "inspect the current settings"
     
-    |filterParameters|
-
-    filterParameters := FilterParameters new.
-    filterParameters filteredClassNameMatchPattern:classPatternFilters.
-    filterParameters filteredSelectorMatchPattern:selectorPatternFilters.
-    filterParameters filteredClassNames:filteredClasses.
-    filterParameters filteredMethodNames:filteredMethods.
-    filterParameters filteredSelectors:filteredSelectors.
-
-    filterParameters inspect.
+    self currentFilterParameters inspect.
 
     "Created: / 06-02-2017 / 02:00:55 / cg"
+    "Modified: / 06-02-2017 / 09:20:15 / cg"
 !
 
 loadFilterNamed
@@ -2918,16 +2982,10 @@
     filterName isEmptyOrNil ifTrue:[^ self].
 
     filterParameters := RememberedFilters at:filterName.
-    
-    selectorPatternFilters := filterParameters filteredSelectorMatchPattern.
-    classPatternFilters := filterParameters filteredClassNameMatchPattern.
-    filteredClasses := filterParameters filteredClassNames.
-    filteredMethods := filterParameters filteredMethodNames.
-    filteredSelectors := filterParameters filteredSelectors.
-
-    self filterChanged.
+    self setFilterParameters:filterParameters.
 
     "Created: / 06-02-2017 / 01:57:48 / cg"
+    "Modified: / 06-02-2017 / 09:51:47 / cg"
 !
 
 rememberFilterAs
@@ -2940,30 +2998,28 @@
                     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.
-    filterParameters filteredClassNames:filteredClasses.
-    filterParameters filteredMethodNames:filteredMethods.
-    filterParameters filteredSelectors:filteredSelectors.
+    filterParameters := self currentFilterParameters.
 
     RememberedFilters isNil ifTrue:[
         RememberedFilters := Dictionary new.
     ].
     RememberedFilters at:filterName put:filterParameters.
 
-    "Modified: / 06-02-2017 / 09:06:45 / cg"
+    "Modified: / 06-02-2017 / 09:20:35 / cg"
+!
+
+setFilterParameters:filterParameters
+    "setup from a remembered filter"
+    
+    selectorPatternFilters := filterParameters filteredSelectorMatchPattern.
+    classPatternFilters := filterParameters filteredClassNameMatchPattern.
+    filteredClasses := filterParameters filteredClassNames.
+    filteredMethods := filterParameters filteredMethodNames.
+    filteredSelectors := filterParameters filteredSelectors.
+
+    self filterChanged.
+
+    "Created: / 06-02-2017 / 09:51:37 / cg"
 ! !
 
 !VersionDiffBrowser methodsFor:'private'!