1 18 19 24 package org.apache.jmeter.gui.action; 25 26 import java.awt.event.ActionEvent; 27 import java.util.Enumeration; 28 import java.util.HashSet; 29 import java.util.Set; 30 31 import org.apache.jmeter.gui.GuiPackage; 32 import org.apache.jmeter.gui.tree.JMeterTreeListener; 33 import org.apache.jmeter.gui.tree.JMeterTreeNode; 34 import org.apache.jmeter.testelement.TestElement; 35 36 40 public class Copy extends AbstractAction 41 { 42 private static JMeterTreeNode copiedNode = null; 43 private static JMeterTreeNode copiedNodes[] = null; 44 45 private static String COPY = "Copy"; 46 private static HashSet commands = new HashSet(); 47 static { 48 commands.add(COPY); 49 } 50 51 54 public Set getActionNames() 55 { 56 return commands; 57 } 58 59 public void doAction(ActionEvent e) 60 { 61 JMeterTreeListener treeListener = 62 GuiPackage.getInstance().getTreeListener(); 63 JMeterTreeNode[] nodes = treeListener.getSelectedNodes(); 64 setCopiedNodes(nodes); 65 } 66 67 public static JMeterTreeNode[] getCopiedNodes() 68 { 69 for(int i=0;i<copiedNodes.length;i++) { 70 if (copiedNodes[i] == null) 71 { 72 return null; 73 } 74 } 75 return cloneTreeNodes(copiedNodes); 76 } 77 78 public static JMeterTreeNode getCopiedNode() 79 { 80 if (copiedNode == null) 81 { 82 return null; 83 } 84 return cloneTreeNode(copiedNode); 85 } 86 87 public static void setCopiedNode(JMeterTreeNode node) 88 { 89 copiedNode = cloneTreeNode(node); 90 } 91 92 public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) 93 { 94 JMeterTreeNode treeNode = (JMeterTreeNode) node.clone(); 95 treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); 96 cloneChildren(treeNode, node); 97 return treeNode; 98 } 99 public static void setCopiedNodes(JMeterTreeNode nodes[]) 100 { 101 copiedNodes = new JMeterTreeNode[nodes.length]; 102 for(int i=0;i<nodes.length;i++) 103 { 104 copiedNodes[i] = cloneTreeNode(nodes[i]); 105 } 106 } 107 108 public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) 109 { 110 JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length]; 111 for(int i=0;i<nodes.length;i++) { 112 treeNodes[i] = cloneTreeNode(nodes[i]); 113 } 114 return treeNodes; 115 } 116 117 private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) 118 { 119 Enumeration enum = from.children(); 120 while (enum.hasMoreElements()) 121 { 122 JMeterTreeNode child = (JMeterTreeNode) enum.nextElement(); 123 JMeterTreeNode childClone = (JMeterTreeNode) child.clone(); 124 childClone.setUserObject( 125 ((TestElement) child.getUserObject()).clone()); 126 to.add(childClone); 127 cloneChildren((JMeterTreeNode) to.getLastChild(), child); 128 } 129 } 130 } | Popular Tags |