KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jmeter > gui > action > Copy


1 // $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Copy.java,v 1.7.2.1 2004/09/26 15:36:26 sebb Exp $
2
/*
3  * Copyright 2003-2004 The Apache Software Foundation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17 */

18
19 /*
20  * Created on Apr 9, 2003
21  *
22  * Clones a JMeterTreeNode
23  */

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 /**
37  * @author Thad Smith
38  * @version $Revision: 1.7.2.1 $
39  */

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     /*
52      * @see org.apache.jmeter.gui.action.Command#getActionNames()
53      */

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