1 | class Copy extends AbstractAction {↵ | | 1 | class ReportCopy extends AbstractAction {↵
|
2 | private static JMeterTreeNode copiedNode = null;↵ | | 2 | private static ReportTreeNode copiedNode = null;↵
|
|
3 | private static JMeterTreeNode copiedNodes[] = null;↵ | | 3 | private static ReportTreeNode copiedNodes[] = null;↵
|
|
| | | 4 | private static final String COPY = "Copy";↵
|
|
4 | private static final HashSet commands = new HashSet();↵ | | 5 | private static final HashSet commands = new HashSet();↵
|
5 | ↵ | | |
|
6 | static {↵ | | 6 | static {↵
|
7 | commands.add(ActionNames.COPY);↵ | | 7 | commands.add(COPY);↵
|
8 | }↵ | | 8 | }↵
|
|
9 | /*↵ | | 9 | /*↵
|
10 | * @see org.apache.jmeter.gui.action.Command#getActionNames()↵ | | 10 | * @see org.apache.jmeter.report.gui.action.Command#getActionNames()↵
|
11 | */↵ | | 11 | */↵
|
12 | public Set getActionNames() {↵ | | 12 | public Set getActionNames() {↵
|
13 | return commands;↵ | | 13 | return commands;↵
|
14 | }↵ | | 14 | }↵
|
|
15 | public void doAction(ActionEvent e) {↵ | | 15 | public void doAction(ActionEvent e) {↵
|
16 | JMeterTreeListener treeListener = GuiPackage.getInstance()↵ | | 16 | ReportTreeListener treeListener = ReportGuiPackage.getInstance()↵
|
17 | .getTreeListener();↵ | | 17 | .getTreeListener();↵
|
18 | JMeterTreeNode[] nodes = treeListener.getSelectedNodes();↵ | | 18 | ReportTreeNode[] nodes = treeListener.getSelectedNodes();↵
|
19 | setCopiedNodes(nodes);↵ | | 19 | setCopiedNodes(nodes);↵
|
20 | }↵ | | 20 | }↵
|
|
21 | public static JMeterTreeNode[] getCopiedNodes() {↵ | | 21 | public static ReportTreeNode[] getCopiedNodes() {↵
|
22 | for (int i = 0; i < copiedNodes.length; i++) {↵ | | 22 | for (int i = 0; i < copiedNodes.length; i++) {↵
|
23 | if (copiedNodes[i] == null) {↵ | | 23 | if (copiedNodes[i] == null) {↵
|
24 | return null;↵ | | 24 | return null;↵
|
25 | }↵ | | 25 | }↵
|
26 | }↵ | | 26 | }↵
|
27 | return cloneTreeNodes(copiedNodes);↵ | | 27 | return cloneTreeNodes(copiedNodes);↵
|
28 | }↵ | | 28 | }↵
|
|
29 | public static JMeterTreeNode getCopiedNode() {↵ | | 29 | public static ReportTreeNode getCopiedNode() {↵
|
30 | if (copiedNode == null) {↵ | | 30 | if (copiedNode == null) {↵
|
31 | return null;↵ | | 31 | return null;↵
|
32 | }↵ | | 32 | }↵
|
33 | return cloneTreeNode(copiedNode);↵ | | 33 | return cloneTreeNode(copiedNode);↵
|
34 | }↵ | | 34 | }↵
|
|
35 | public static void setCopiedNode(JMeterTreeNode node) {↵ | | 35 | public static void setCopiedNode(ReportTreeNode node) {↵
|
36 | copiedNode = cloneTreeNode(node);↵ | | 36 | copiedNode = cloneTreeNode(node);↵
|
37 | }↵ | | 37 | }↵
|
|
38 | public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) {↵ | | 38 | public static ReportTreeNode cloneTreeNode(ReportTreeNode node) {↵
|
39 | JMeterTreeNode treeNode = (JMeterTreeNode) node.clone();↵ | | 39 | ReportTreeNode treeNode = (ReportTreeNode) node.clone();↵
|
40 | treeNode.setUserObject(((TestElement) node.getUserObject()).clone());↵ | | 40 | treeNode.setUserObject(((TestElement) node.getUserObject()).clone());↵
|
41 | cloneChildren(treeNode, node);↵ | | 41 | cloneChildren(treeNode, node);↵
|
42 | return treeNode;↵ | | 42 | return treeNode;↵
|
43 | }↵ | | 43 | }↵
|
|
44 | public static void setCopiedNodes(JMeterTreeNode nodes[]) {↵ | | 44 | public static void setCopiedNodes(ReportTreeNode nodes[]) {↵
|
45 | copiedNodes = new JMeterTreeNode[nodes.length];↵ | | 45 | copiedNodes = new ReportTreeNode[nodes.length];↵
|
46 | for (int i = 0; i < nodes.length; i++) {↵ | | 46 | for (int i = 0; i < nodes.length; i++) {↵
|
47 | copiedNodes[i] = cloneTreeNode(nodes[i]);↵ | | 47 | copiedNodes[i] = cloneTreeNode(nodes[i]);↵
|
48 | }↵ | | 48 | }↵
|
49 | }↵ | | 49 | }↵
|
|
50 | public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) {↵ | | 50 | public static ReportTreeNode[] cloneTreeNodes(ReportTreeNode nodes[]) {↵
|
51 | JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length];↵ | | 51 | ReportTreeNode treeNodes[] = new ReportTreeNode[nodes.length];↵
|
52 | for (int i = 0; i < nodes.length; i++) {↵ | | 52 | for (int i = 0; i < nodes.length; i++) {↵
|
53 | treeNodes[i] = cloneTreeNode(nodes[i]);↵ | | 53 | treeNodes[i] = cloneTreeNode(nodes[i]);↵
|
54 | }↵ | | 54 | }↵
|
55 | return treeNodes;↵ | | 55 | return treeNodes;↵
|
56 | }↵ | | 56 | }↵
|
|
57 | private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) {↵ | | 57 | private static void cloneChildren(ReportTreeNode to, ReportTreeNode from) {↵
|
58 | Enumeration enumFrom = from.children();↵ | | 58 | Enumeration enumFrom = from.children();↵
|
59 | while (enumFrom.hasMoreElements()) {↵ | | 59 | while (enumFrom.hasMoreElements()) {↵
|
60 | JMeterTreeNode child = (JMeterTreeNode) enumFrom.nextElement();↵ | | 60 | ReportTreeNode child = (ReportTreeNode) enumFrom.nextElement();↵
|
61 | JMeterTreeNode childClone = (JMeterTreeNode) child.clone();↵ | | 61 | ReportTreeNode childClone = (ReportTreeNode) child.clone();↵
|
62 | childClone.setUserObject(((TestElement) child.getUserObject())↵ | | 62 | childClone.setUserObject(((TestElement) child.getUserObject())↵
|
63 | .clone());↵ | | 63 | .clone());↵
|
64 | to.add(childClone);↵ | | 64 | to.add(childClone);↵
|
65 | cloneChildren((JMeterTreeNode) to.getLastChild(), child);↵ | | 65 | cloneChildren((ReportTreeNode) to.getLastChild(), child);↵
|
66 | }↵ | | 66 | }↵
|
67 | }↵ | | 67 | }↵
|
68 | } | | 68 | }
|