changeset 125:7e39fbbb64d8

Bug 2736: The Excluded classes are listed in "Class Search". Reviewed-by: ykubota
author Yasumasa Suenaga <yasuenag@gmail.com>
date Fri, 11 Dec 2015 12:51:18 +0900
parents dea22a8f1da6
children 9ea2c0187067
files ChangeLog analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/snapshot/tabs/HistogramController.java
diffstat 2 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Dec 10 21:49:05 2015 +0900
+++ b/ChangeLog	Fri Dec 11 12:51:18 2015 +0900
@@ -1,3 +1,7 @@
+2015-12-11  Yasumasa Suenaga  <yasuenag@gmail.com>
+
+	* Bug 2736: The Excluded classes are listed in "Class Search".
+
 2015-12-10  Yasumasa Suenaga  <yasuenag@gmail.com>
 
 	* Bug 2706: [REDO] Cannot show all Japanese chars in SnapShot Data tab.
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/snapshot/tabs/HistogramController.java	Thu Dec 10 21:49:05 2015 +0900
+++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/snapshot/tabs/HistogramController.java	Fri Dec 11 12:51:18 2015 +0900
@@ -30,6 +30,7 @@
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import javafx.application.Platform;
 import javafx.beans.binding.Bindings;
 import javafx.beans.property.BooleanProperty;
@@ -149,6 +150,8 @@
 
     private Consumer<Task<Void>> taskExecutor;
 
+    private List<String> hideRegexList;
+
     /**
      * Initializes the controller class.
      */
@@ -348,12 +351,6 @@
     public Predicate<? super ObjectData> getFilter() {
         HashSet<String> targetSet = new HashSet<>(searchList.getSelectionModel().getSelectedItems());
         Predicate<ObjectData> searchFilter = o -> targetSet.contains(o.getName());
-
-        List<String> hideRegexList = excludeTable.getItems().stream()
-                .filter(f -> f.isHide())
-                .flatMap(f -> f.getClasses().getName().stream())
-                .map(s -> ".*" + s + ".*")
-                .collect(Collectors.toList());
         Predicate<ObjectData> hideFilter = o -> hideRegexList.stream().noneMatch(s -> o.getName().matches(s));
 
         Predicate<ObjectData> filter;
@@ -379,6 +376,11 @@
     @FXML
     private void onHiddenFilterApply(ActionEvent event) {
         excludeFilterEnable = true;
+        hideRegexList = excludeTable.getItems().stream()
+                .filter(f -> f.isHide())
+                .flatMap(f -> f.getClasses().getName().stream())
+                .map(s -> ".*" + s + ".*")
+                .collect(Collectors.toList());
         Predicate<? super ObjectData> filter = getFilter();
 
         taskExecutor.accept(getDrawTopNDataTask(currentTarget.get(), false, filter));
@@ -391,9 +393,14 @@
      */
     @FXML
     private void onSearchTextChanged(KeyEvent event) {
+        Stream<String> searchStrings = currentClassNameSet.get().stream();
+        
+        if(excludeFilterEnable){
+            searchStrings = searchStrings.filter(n -> hideRegexList.stream().noneMatch(s -> n.matches(s)));
+        }
+        
         searchList.getItems().clear();
-        searchList.getItems().addAll(currentClassNameSet.get().stream()
-                .filter(n -> n.contains(searchText.getText()))
+        searchList.getItems().addAll(searchStrings.filter(n -> n.contains(searchText.getText()))
                 .collect(Collectors.toList()));
     }
 
@@ -423,7 +430,7 @@
         searchText.setText("");
         searchList.getItems().clear();
 
-        taskExecutor.accept(getDrawTopNDataTask(currentTarget.get(), false, null));
+        taskExecutor.accept(getDrawTopNDataTask(currentTarget.get(), true, null));
     }
 
     /**