/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 *
 */

package org.apache.jmeter.report.gui.action;

import java.awt.event.ActionEvent;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;

import javax.swing.JOptionPane;

import org.apache.jmeter.control.ReplaceableController;
import org.apache.jmeter.gui.action.Command;
import org.apache.jmeter.gui.ReportGuiPackage;
import org.apache.jmeter.report.gui.tree.ReportTreeNode;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;

/**
 * Parent class for implementing Menu item commands
 */
public abstract class AbstractAction implements Command {
    private static final Logger log = LoggingManager.getLoggerForClass();

    /**
     * @see Command#doAction(ActionEvent)
     */
    public void doAction(ActionEvent e) {
    }

    /**
     * @see Command#getActionNames()
     */
    abstract public Set getActionNames();

    protected void convertSubTree(HashTree tree) {
        Iterator iter = new LinkedList(tree.list()).iterator();
        while (iter.hasNext()) {
            Object o = iter.next();
            if(o instanceof TestElement) {
                continue; //hey, no need to convert
            }
            ReportTreeNode item = (ReportTreeNode) o;
            if (item.isEnabled()) {
                if (item.getUserObject() instanceof ReplaceableController) {
                    ReplaceableController rc = (ReplaceableController) item.getTestElement();
                    HashTree subTree = tree.getTree(item);

                    if (subTree != null) {
                        HashTree replacementTree = rc.getReplacementSubTree();
                        convertSubTree(replacementTree);
                        tree.replace(item,rc);
                        tree.set(rc,replacementTree);
                    }
                } else {
                    convertSubTree(tree.getTree(item));
                    TestElement testElement = item.getTestElement();
                    tree.replace(item, testElement);
                }
            } else {
                tree.remove(item);
            }

        }
    }

    /**
     * @param e
     */
    protected void popupShouldSave(ActionEvent e) {
        log.debug("popupShouldSave");
        if (ReportGuiPackage.getInstance().getReportPlanFile() == null) {
            if (JOptionPane.showConfirmDialog(ReportGuiPackage.getInstance().getMainFrame(), JMeterUtils
                    .getResString("should_save"), JMeterUtils.getResString("warning"), JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
                ReportActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ReportSave.SAVE));
            }
        }
    }
}

@@ -882,64 +882,8 @@
 nt;%0A
-import java.util.Iterator;%0Aimport java.util.LinkedList;%0A
 impo
@@ -963,327 +963,116 @@
 ter.
-control.ReplaceableController;%0Aimport org.apache.jmeter.gui.action.Command;%0Aimport org.apache.jmeter.gui.ReportGuiPackage;%0Aimport org.apache.jmeter.report.gui.tree.ReportTreeNode;%0Aimport org.apache.jmeter.testelement.TestElement;%0Aimport org.apache.jmeter.util.JMeterUtils;%0Aimport org.apache.jorphan.collections.HashTree
+gui.ReportGuiPackage;%0Aimport org.apache.jmeter.gui.action.Command;%0Aimport org.apache.jmeter.util.JMeterUtils
 ;%0Aim
@@ -1550,1233 +1550,8 @@
 );%0A%0A
-    protected void convertSubTree(HashTree tree) %7B%0A        Iterator iter = new LinkedList(tree.list()).iterator();%0A        while (iter.hasNext()) %7B%0A            Object o = iter.next();%0A            if(o instanceof TestElement) %7B%0A                continue; //hey, no need to convert%0A            %7D%0A            ReportTreeNode item = (ReportTreeNode) o;%0A            if (item.isEnabled()) %7B%0A                if (item.getUserObject() instanceof ReplaceableController) %7B%0A                    ReplaceableController rc = (ReplaceableController) item.getTestElement();%0A                    HashTree subTree = tree.getTree(item);%0A%0A                    if (subTree != null) %7B%0A                        HashTree replacementTree = rc.getReplacementSubTree();%0A                        convertSubTree(replacementTree);%0A                        tree.replace(item,rc);%0A                        tree.set(rc,replacementTree);%0A                    %7D%0A                %7D else %7B%0A                    convertSubTree(tree.getTree(item));%0A                    TestElement testElement = item.getTestElement();%0A                    tree.replace(item, testElement);%0A                %7D%0A            %7D else %7B%0A                tree.remove(item);%0A            %7D%0A%0A        %7D%0A    %7D%0A%0A
     

Remove unused code