Author: pmouawad Date: Tue Oct 18 19:14:55 2016 New Revision: 1765498 URL: http://svn.apache.org/viewvc?rev=1765498&view=rev Log: Bug 60266 - Usability/ UX : It should not be possible to close/exit/Revert/Load/Load a recent project or create from template a JMeter plan or open a new one if a test is running Bugzilla Id: 60266
Added: jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java (with props) Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/Close.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/ExitCommand.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/Load.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/Move.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/RevertProject.java jmeter/trunk/src/core/org/apache/jmeter/gui/action/TemplatesCommand.java jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties jmeter/trunk/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java jmeter/trunk/xdocs/changes.xml Added: jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java?rev=1765498&view=auto ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java (added) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java Tue Oct 18 19:14:55 2016 @@ -0,0 +1,54 @@ +/* + * 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.gui.action; + +import java.awt.event.ActionEvent; + +import javax.swing.JOptionPane; + +import org.apache.jmeter.exceptions.IllegalUserActionException; +import org.apache.jmeter.gui.GuiPackage; +import org.apache.jmeter.util.JMeterUtils; + +/** + * {@link AbstractAction} implementation that check no test is running + * before calling {@link AbstractActionWithNoRunningTest#doActionAfterCheck(ActionEvent)} + * @since 3.1 + */ +public abstract class AbstractActionWithNoRunningTest extends AbstractAction { + + @Override + public final void doAction(ActionEvent e) throws IllegalUserActionException { + if (JMeterUtils.isTestRunning()) { + JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(), + JMeterUtils.getResString("action_check_message"), //$NON-NLS-1$ + JMeterUtils.getResString("action_check_title"), //$NON-NLS-1$ + JOptionPane.WARNING_MESSAGE); + return; + } + doActionAfterCheck(e); + } + + /** + * Called to handle {@link ActionEvent} only if no test is running + * @param e {@link ActionEvent} + * @throws IllegalUserActionException + */ + protected abstract void doActionAfterCheck(ActionEvent e) throws IllegalUserActionException; +} Propchange: jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractActionWithNoRunningTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java Tue Oct 18 19:14:55 2016 @@ -24,19 +24,15 @@ import java.util.HashSet; import java.util.Locale; import java.util.Set; -import javax.swing.JOptionPane; - -import org.apache.jmeter.gui.GuiPackage; -import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; /** - * + * Change language */ -public class ChangeLanguage extends AbstractAction { +public class ChangeLanguage extends AbstractActionWithNoRunningTest { private static final Set<String> commands = new HashSet<>(); private static final Logger log = LoggingManager.getLoggerForClass(); @@ -46,17 +42,10 @@ public class ChangeLanguage extends Abst } /** - * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) + * @see org.apache.jmeter.gui.action.AbstractActionWithNoRunningTest#doActionAfterCheck(ActionEvent) */ @Override - public void doAction(ActionEvent e) { - if (JMeterContextService.getTestStartTime()>0) { - JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(), - JMeterUtils.getResString("language_change_test_running"), //$NON-NLS-1$ - JMeterUtils.getResString("language_change_title"), //$NON-NLS-1$ - JOptionPane.WARNING_MESSAGE); - return; - } + public void doActionAfterCheck(ActionEvent e) { String locale = ((Component) e.getSource()).getName(); Locale loc; Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/Close.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Close.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/Close.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/Close.java Tue Oct 18 19:14:55 2016 @@ -34,7 +34,7 @@ import org.apache.jmeter.util.JMeterUtil * test plan. * */ -public class Close extends AbstractAction { +public class Close extends AbstractActionWithNoRunningTest { private static final Set<String> commands = new HashSet<>(); @@ -65,7 +65,7 @@ public class Close extends AbstractActio * the generic UI action event */ @Override - public void doAction(ActionEvent e) { + public void doActionAfterCheck(ActionEvent e) { performAction(e); } Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ExitCommand.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ExitCommand.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ExitCommand.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ExitCommand.java Tue Oct 18 19:14:55 2016 @@ -27,7 +27,7 @@ import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; -public class ExitCommand extends AbstractAction { +public class ExitCommand extends AbstractActionWithNoRunningTest { private static final Set<String> commands = new HashSet<>(); @@ -58,7 +58,7 @@ public class ExitCommand extends Abstrac * Description of Parameter */ @Override - public void doAction(ActionEvent e) { + public void doActionAfterCheck(ActionEvent e) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_DIRTY)); if (GuiPackage.getInstance().isDirty()) { int chosenOption = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/Load.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Load.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/Load.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/Load.java Tue Oct 18 19:14:55 2016 @@ -50,7 +50,7 @@ import com.thoughtworks.xstream.converte * Handles the Open (load a new file) and Merge commands. * */ -public class Load extends AbstractAction { +public class Load extends AbstractActionWithNoRunningTest { private static final Logger log = LoggingManager.getLoggerForClass(); private static final boolean expandTree = JMeterUtils.getPropDefault("onload.expandtree", false); //$NON-NLS-1$ @@ -72,7 +72,7 @@ public class Load extends AbstractAction } @Override - public void doAction(final ActionEvent e) { + public void doActionAfterCheck(final ActionEvent e) { final JFileChooser chooser = FileDialoger.promptToOpenFile(new String[] { ".jmx" }); //$NON-NLS-1$ if (chooser == null) { return; Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java Tue Oct 18 19:14:55 2016 @@ -59,7 +59,7 @@ public class LoadRecentProject extends L } @Override - public void doAction(ActionEvent e) { + public void doActionAfterCheck(ActionEvent e) { // We must ask the user if it is ok to close current project if (!Close.performAction(e)) { return; Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/Move.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Move.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/Move.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/Move.java Tue Oct 18 19:14:55 2016 @@ -35,6 +35,10 @@ import org.apache.jmeter.testelement.Tes import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; +/** + * Move a node up/down/left/right + * + */ public class Move extends AbstractAction { private static final Set<String> commands = new HashSet<>(); Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/RevertProject.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RevertProject.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/RevertProject.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/RevertProject.java Tue Oct 18 19:14:55 2016 @@ -32,7 +32,7 @@ import org.apache.jmeter.util.JMeterUtil * Handles the Revert Project command. * */ -public class RevertProject extends AbstractAction { +public class RevertProject extends AbstractActionWithNoRunningTest { private static final Set<String> commands = new HashSet<>(); static { @@ -49,7 +49,7 @@ public class RevertProject extends Abstr } @Override - public void doAction(ActionEvent e) { + public void doActionAfterCheck(ActionEvent e) { // Get the file name of the current project String projectFile = GuiPackage.getInstance().getTestPlanFile(); // Check if the user has loaded any file Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/TemplatesCommand.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/TemplatesCommand.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/TemplatesCommand.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/TemplatesCommand.java Tue Oct 18 19:14:55 2016 @@ -26,7 +26,7 @@ import java.util.Set; * Open Templates * @since 2.10 */ -public class TemplatesCommand extends AbstractAction { +public class TemplatesCommand extends AbstractActionWithNoRunningTest { private static final Set<String> commands = new HashSet<>(); @@ -41,10 +41,10 @@ public class TemplatesCommand extends Ab } /** - * @see Command#doAction(ActionEvent) + * @see org.apache.jmeter.gui.action.AbstractActionWithNoRunningTest#doActionAfterCheck(ActionEvent) */ @Override - public void doAction(ActionEvent e) { + public void doActionAfterCheck(ActionEvent e) { IODH.dialog.setVisible(true); } Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original) +++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Tue Oct 18 19:14:55 2016 @@ -559,8 +559,8 @@ junit_success_default_msg=Test successfu junit_success_msg=Success Message junit_test_config=JUnit Test Parameters junit_test_method=Test Method -language_change_test_running=A Test is currently running, stop or shutdown test to change language -language_change_title=Test Running +action_check_message=A Test is currently running, stop or shutdown test to execute this command +action_check_title=Test Running ldap_argument_list=LDAPArgument List ldap_connto=Connection timeout (in milliseconds) ldap_parse_results=Parse the search results ? Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original) +++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Tue Oct 18 19:14:55 2016 @@ -549,8 +549,8 @@ junit_success_default_msg=Test r\u00E9us junit_success_msg=Message de succ\u00E8s junit_test_config=Param\u00E8tres Test JUnit junit_test_method=M\u00E9thode de test -language_change_test_running=Un test est en cours, arr\u00EAtez le avant de changer la langue -language_change_title=Test en cours +action_check_message=Un test est en cours, arr\u00EAtez le avant d''utiliser cette commande +action_check_title=Test en cours ldap_argument_list=Liste d'arguments LDAP ldap_connto=D\u00E9lai d'attente de connexion (millisecondes) ldap_parse_results=Examiner les r\u00E9sultats de recherche ? Modified: jmeter/trunk/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java Tue Oct 18 19:14:55 2016 @@ -84,7 +84,7 @@ public abstract class AbstractThreadGrou if(this.isEnabled() && // Check test is not started already - JMeterContextService.getTestStartTime()==0) { + !JMeterUtils.isTestRunning()) { pop.addSeparator(); JMenuItem runTg = new JMenuItem(JMeterUtils.getResString("run_threadgroup")); runTg.setName("run_threadgroup"); Modified: jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java Tue Oct 18 19:14:55 2016 @@ -51,6 +51,7 @@ import javax.swing.SwingUtilities; import org.apache.commons.io.IOUtils; import org.apache.jmeter.gui.GuiPackage; +import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.test.UnitTestManager; @@ -1201,6 +1202,13 @@ public class JMeterUtils implements Unit } return retVal.toString(); } + + /** + * @return true if test is running + */ + public static boolean isTestRunning() { + return JMeterContextService.getTestStartTime()>0; + } /** * Get the JMeter home directory - does not include the trailing separator. Modified: jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1765498&r1=1765497&r2=1765498&view=diff ============================================================================== --- jmeter/trunk/xdocs/changes.xml [utf-8] (original) +++ jmeter/trunk/xdocs/changes.xml [utf-8] Tue Oct 18 19:14:55 2016 @@ -189,6 +189,7 @@ Summary <li><bug>60106</bug>Settings defaults : Switch "<code>jmeter.save.saveservice.connect_time</code>" to true (after 3.0)</li> <li><pr>229</pr> tiny memory allocation improvements. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> <li><bug>59945</bug>For all JSR223 elements, if script language has not been chosen on the UI, the script will be interpreted as a groovy script.</li> + <li><bug>60266</bug>Usability/ UX : It should not be possible to close/exit/Revert/Load/Load a recent project or create from template a JMeter plan or open a new one if a test is running</li> </ul> <ch_section>Non-functional changes</ch_section>