Package org.apache.jmeter.gui.action

Source Code of org.apache.jmeter.gui.action.Copy

// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Copy.java,v 1.10 2005/07/12 20:50:26 mstover1 Exp $
/*
* Copyright 2003-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

/*
* Created on Apr 9, 2003
*
* Clones a JMeterTreeNode
*/
package org.apache.jmeter.gui.action;

import java.awt.event.ActionEvent;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;

import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.gui.tree.JMeterTreeListener;
import org.apache.jmeter.gui.tree.JMeterTreeNode;
import org.apache.jmeter.testelement.TestElement;

/**
* @author Thad Smith
* @version $Revision: 1.10 $
*/
public class Copy extends AbstractAction {
  private static JMeterTreeNode copiedNode = null;

  private static JMeterTreeNode copiedNodes[] = null;

  private static String COPY = "Copy";

  private static HashSet commands = new HashSet();
  static {
    commands.add(COPY);
  }

  /*
   * @see org.apache.jmeter.gui.action.Command#getActionNames()
   */
  public Set getActionNames() {
    return commands;
  }

  public void doAction(ActionEvent e) {
    JMeterTreeListener treeListener = GuiPackage.getInstance().getTreeListener();
    JMeterTreeNode[] nodes = treeListener.getSelectedNodes();
    setCopiedNodes(nodes);
  }

  public static JMeterTreeNode[] getCopiedNodes() {
    for (int i = 0; i < copiedNodes.length; i++) {
      if (copiedNodes[i] == null) {
        return null;
      }
    }
    return cloneTreeNodes(copiedNodes);
  }

  public static JMeterTreeNode getCopiedNode() {
    if (copiedNode == null) {
      return null;
    }
    return cloneTreeNode(copiedNode);
  }

  public static void setCopiedNode(JMeterTreeNode node) {
    copiedNode = cloneTreeNode(node);
  }

  public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) {
    JMeterTreeNode treeNode = (JMeterTreeNode) node.clone();
    treeNode.setUserObject(((TestElement) node.getUserObject()).clone());
    cloneChildren(treeNode, node);
    return treeNode;
  }

  public static void setCopiedNodes(JMeterTreeNode nodes[]) {
    copiedNodes = new JMeterTreeNode[nodes.length];
    for (int i = 0; i < nodes.length; i++) {
      copiedNodes[i] = cloneTreeNode(nodes[i]);
    }
  }

  public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) {
    JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length];
    for (int i = 0; i < nodes.length; i++) {
      treeNodes[i] = cloneTreeNode(nodes[i]);
    }
    return treeNodes;
  }

  private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) {
    Enumeration enumFrom = from.children();
    while (enumFrom.hasMoreElements()) {
      JMeterTreeNode child = (JMeterTreeNode) enumFrom.nextElement();
      JMeterTreeNode childClone = (JMeterTreeNode) child.clone();
      childClone.setUserObject(((TestElement) child.getUserObject()).clone());
      to.add(childClone);
      cloneChildren((JMeterTreeNode) to.getLastChild(), child);
    }
  }
}
TOP

Related Classes of org.apache.jmeter.gui.action.Copy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.