Bug 59046 - JMeter Gui Replace controller should keep the name and the selection

#resolve #139
https://github.com/apache/jmeter/pull/139
Contribution by Benoit Wiart
Bugzilla Id: 59046

git-svn-id: https://svn.apache.org/repos/asf/jmeter/trunk@1731740 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Philippe Mouawad 2016-02-22 21:09:04 +00:00
parent 3282578e5f
commit e0804047cc
2 changed files with 23 additions and 0 deletions

View File

@ -24,11 +24,18 @@ import java.awt.event.ActionEvent;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JTree;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.control.Controller;
import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.gui.JMeterGUIComponent;
import org.apache.jmeter.gui.tree.JMeterTreeModel;
import org.apache.jmeter.gui.tree.JMeterTreeNode;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
@ -73,6 +80,16 @@ public class ChangeParent implements Command {
}
private void changeParent(TestElement newParent, GuiPackage guiPackage, JMeterTreeNode currentNode) {
// keep the old name if it was not the default one
Controller currentController = (Controller) currentNode.getUserObject();
JMeterGUIComponent currentGui = guiPackage.getCurrentGui();
String defaultName = JMeterUtils.getResString(currentGui.getLabelResource());
if(StringUtils.isNotBlank(currentController.getName())
&& !currentController.getName().equals(defaultName)){
newParent.setName(currentController.getName());
}
JMeterTreeModel treeModel = guiPackage.getTreeModel();
JMeterTreeNode newNode = new JMeterTreeNode(newParent, treeModel);
JMeterTreeNode parentNode = (JMeterTreeNode) currentNode.getParent();
@ -86,6 +103,11 @@ public class ChangeParent implements Command {
treeModel.removeNodeFromParent(node);
treeModel.insertNodeInto(node, newNode, newNode.getChildCount());
}
// select the node
TreeNode[] nodes = treeModel.getPathToRoot(newNode);
JTree tree = guiPackage.getTreeListener().getJTree();
tree.setSelectionPath(new TreePath(nodes));
}
}

View File

@ -213,6 +213,7 @@ Summary
<li><bug>59037</bug>Drop HtmlParserHTMLParser and dependencies on htmlparser and htmllexer</li>
<li><bug>58933</bug>JSyntaxTextArea : Ability to set font. Contributed by Denis Kirpichenkov (denis.kirpichenkov at gmail.com)</li>
<li><bug>58793</bug>Create developers page explaining how to build and contribute</li>
<li><bug>59046</bug>JMeter Gui Replace controller should keep the name and the selection. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>