Author: pmouawad
Date: Tue Oct 11 19:46:59 2011
New Revision: 1182051

URL: http://svn.apache.org/viewvc?rev=1182051&view=rev
Log:
Bug 51876 - Functionnality to search in Samplers TreeView

Highlight all nodes up to ThreadGroup node to make search result visible if 
nodes are not expanded

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java?rev=1182051&r1=1182050&r2=1182051&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
 Tue Oct 11 19:46:59 2011
@@ -21,6 +21,7 @@ package org.apache.jmeter.gui.action;
 import java.awt.event.ActionEvent;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 
 import javax.swing.JOptionPane;
@@ -39,6 +40,7 @@ import org.apache.log.Logger;
  */
 public class SearchTreeCommand extends AbstractAction {
     private Logger logger = LoggingManager.getLoggerForClass();
+
     private static final Set<String> commands = new HashSet<String>();
 
     static {
@@ -58,6 +60,7 @@ public class SearchTreeCommand extends A
         GuiPackage guiPackage = GuiPackage.getInstance();
         JMeterTreeModel jMeterTreeModel = guiPackage.getTreeModel();
         Iterator<?> iter = 
jMeterTreeModel.getNodesOfType(Searchable.class).iterator();
+        Set<JMeterTreeNode> nodes = new HashSet<JMeterTreeNode>();
         while (iter.hasNext()) {
             try {
                 JMeterTreeNode jMeterTreeNode = (JMeterTreeNode) iter.next();
@@ -65,17 +68,20 @@ public class SearchTreeCommand extends A
                     Searchable searchable = (Searchable) 
jMeterTreeNode.getUserObject();
                     
                     boolean result = searchable.searchContent(wordToSearch);
+                    jMeterTreeNode.setMarkedBySearch(false);   
                     if(result) {
-                        jMeterTreeNode.setMarkedBySearch(true);
-                    }
-                    else {
-                        jMeterTreeNode.setMarkedBySearch(false);   
+                        List<JMeterTreeNode> matchingNodes = 
jMeterTreeNode.getPathToThreadGroup();
+                        nodes.addAll(matchingNodes);
                     }
                 }
             } catch (Exception ex) {
                 logger.error("Error occured searching for word:"+ 
wordToSearch, ex);
             }
         }
+        for (Iterator<JMeterTreeNode> iterator = nodes.iterator(); 
iterator.hasNext();) {
+            JMeterTreeNode jMeterTreeNode = iterator.next();
+            jMeterTreeNode.setMarkedBySearch(true);
+        }
         GuiPackage.getInstance().getMainFrame().repaint();
     }
 

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java?rev=1182051&r1=1182050&r2=1182051&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java 
Tue Oct 11 19:46:59 2011
@@ -22,12 +22,15 @@ import java.awt.Image;
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Enumeration;
+import java.util.List;
 
 import javax.swing.ImageIcon;
 import javax.swing.JPopupMenu;
 import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
 
 import org.apache.jmeter.gui.GUIFactory;
 import org.apache.jmeter.gui.GuiPackage;
@@ -43,6 +46,8 @@ public class JMeterTreeNode extends Defa
 
     private static final Logger log = LoggingManager.getLoggerForClass();
 
+    private static final int TEST_PLAN_LEVEL = 2;
+
     private final JMeterTreeModel treeModel;
 
     private boolean markedBySearch;
@@ -68,6 +73,27 @@ public class JMeterTreeNode extends Defa
     }
     
     /**
+     * Return nodes to level 2
+     * @return {@link List}<JMeterTreeNode>
+     */
+    public List<JMeterTreeNode> getPathToThreadGroup() {
+        List<JMeterTreeNode> nodes = new ArrayList<JMeterTreeNode>();
+        if(treeModel != null) {
+            TreeNode[] nodesToRoot = treeModel.getPathToRoot(this);
+            for (int i = 0; i < nodesToRoot.length; i++) {
+                JMeterTreeNode jMeterTreeNode = (JMeterTreeNode) 
nodesToRoot[i];
+                int level = jMeterTreeNode.getLevel();
+                if(level<TEST_PLAN_LEVEL) {
+                    continue;
+                } else {
+                    nodes.add(jMeterTreeNode);
+                }
+            }
+        }
+        return nodes;
+    }
+    
+    /**
      * Tag Node as result of a search
      * @return
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to