JMeterMenuBar.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.apache.jmeter.gui.util |
![]() |
![]() |
JMeter |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* 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.util;
import java.awt.Component;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import javax.swing.JComponent;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.MenuElement;
import javax.swing.UIManager;
import org.apache.jmeter.gui.action.ActionNames;
import org.apache.jmeter.gui.action.ActionRouter;
import org.apache.jmeter.gui.action.KeyStrokes;
import org.apache.jmeter.gui.action.LoadRecentProject;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.util.LocaleChangeEvent;
import org.apache.jmeter.util.LocaleChangeListener;
import org.apache.jmeter.util.SSLManager;
import org.apache.jorphan.util.JOrphanUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
public class JMeterMenuBar extends JMenuBar implements LocaleChangeListener {
private static final Logger log = LoggingManager.getLoggerForClass();
private JMenu fileMenu;
private JMenuItem file_save_as;
private JMenuItem file_selection_as;
private JMenuItem file_revert;
private JMenuItem file_load;
private List file_load_recent_files;
private JMenuItem file_merge;
private JMenuItem file_exit;
private JMenuItem file_close;
private JMenu editMenu;
private JMenu edit_add;
// JMenu edit_add_submenu;
private JMenuItem edit_remove; // TODO - should this be created?
private JMenu runMenu;
private JMenuItem run_start;
private JMenu remote_start;
private JMenuItem remote_start_all;
private Collection remote_engine_start;
private JMenuItem run_stop;
private JMenuItem run_shut;
private JMenu remote_stop;
private JMenuItem remote_stop_all;
private Collection remote_engine_stop;
private JMenuItem run_clear;
private JMenuItem run_clearAll;
// JMenu reportMenu;
// JMenuItem analyze;
private JMenu optionsMenu;
private JMenu lafMenu;
private JMenuItem sslManager;
private JMenu helpMenu;
private JMenuItem help_about;
private String[] remoteHosts;
private JMenu remote_exit;
private JMenuItem remote_exit_all;
private Collection remote_engine_exit;
public JMeterMenuBar() {
// List for recent files menu items
file_load_recent_files = new LinkedList();
// Lists for remote engines menu items
remote_engine_start = new LinkedList();
remote_engine_stop = new LinkedList();
remote_engine_exit = new LinkedList();
remoteHosts = JOrphanUtils.split(JMeterUtils.getPropDefault("remote_hosts", ""), ","); //$NON-NLS-1$
if (remoteHosts.length == 1 && remoteHosts[0].equals("")) {
remoteHosts = new String[0];
}
this.getRemoteItems();
createMenuBar();
}
public void setFileSaveEnabled(boolean enabled) {
if(file_save_as != null) {
file_save_as.setEnabled(enabled);
}
}
public void setFileLoadEnabled(boolean enabled) {
if (file_load != null) {
file_load.setEnabled(enabled);
}
if (file_merge != null) {
file_merge.setEnabled(enabled);
}
}
public void setFileRevertEnabled(boolean enabled) {
if(file_revert != null) {
file_revert.setEnabled(enabled);
}
}
public void setProjectFileLoaded(String file) {
if(file_load_recent_files != null && file != null) {
LoadRecentProject.updateRecentFileMenuItems(file_load_recent_files, file);
}
}
public void setEditEnabled(boolean enabled) {
if (editMenu != null) {
editMenu.setEnabled(enabled);
}
}
public void setEditAddMenu(JMenu menu) {
// If the Add menu already exists, remove it.
if (edit_add != null) {
editMenu.remove(edit_add);
}
// Insert the Add menu as the first menu item in the Edit menu.
edit_add = menu;
editMenu.insert(edit_add, 0);
}
public void setEditMenu(JPopupMenu menu) {
if (menu != null) {
editMenu.removeAll();
Component[] comps = menu.getComponents();
for (int i = 0; i < comps.length; i++) {
editMenu.add(comps[i]);
}
editMenu.setEnabled(true);
} else {
editMenu.setEnabled(false);
}
}
public void setEditAddEnabled(boolean enabled) {
// There was a NPE being thrown without the null check here.. JKB
if (edit_add != null) {
edit_add.setEnabled(enabled);
}
// If we are enabling the Edit-->Add menu item, then we also need to
// enable the Edit menu. The Edit menu may already be enabled, but
// there's no harm it trying to enable it again.
if (enabled) {
setEditEnabled(true);
} else {
// If we are disabling the Edit-->Add menu item and the
// Edit-->Remove menu item is disabled, then we also need to
// disable the Edit menu.
// The Java Look and Feel Guidelines say to disable a menu if all
// menu items are disabled.
if (!edit_remove.isEnabled()) {
editMenu.setEnabled(false);
}
}
}
public void setEditRemoveEnabled(boolean enabled) {
edit_remove.setEnabled(enabled);
// If we are enabling the Edit-->Remove menu item, then we also need to
// enable the Edit menu. The Edit menu may already be enabled, but
// there's no harm it trying to enable it again.
if (enabled) {
setEditEnabled(true);
} else {
// If we are disabling the Edit-->Remove menu item and the
// Edit-->Add menu item is disabled, then we also need to disable
// the Edit menu.
// The Java Look and Feel Guidelines say to disable a menu if all
// menu items are disabled.
if (!edit_add.isEnabled()) {
editMenu.setEnabled(false);
}
}
}
/**
* Creates the MenuBar for this application. I believe in my heart that this
* should be defined in a file somewhere, but that is for later.
*/
public void createMenuBar() {
makeFileMenu();
makeEditMenu();
makeRunMenu();
makeOptionsMenu();
makeHelpMenu();
this.add(fileMenu);
this.add(editMenu);
this.add(runMenu);
this.add(optionsMenu);
this.add(helpMenu);
}
private void makeHelpMenu() {
// HELP MENU
helpMenu = new JMenu(JMeterUtils.getResString("help")); //$NON-NLS-1$
helpMenu.setMnemonic('H');
JMenuItem contextHelp = new JMenuItem(JMeterUtils.getResString("help"), 'H'); //$NON-NLS-1$
contextHelp.setActionCommand(ActionNames.HELP);
contextHelp.setAccelerator(KeyStrokes.HELP);
contextHelp.addActionListener(ActionRouter.getInstance());
JMenuItem whatClass = new JMenuItem(JMeterUtils.getResString("help_node"), 'W');//$NON-NLS-1$
whatClass.setActionCommand(ActionNames.WHAT_CLASS);
whatClass.setAccelerator(KeyStrokes.WHAT_CLASS);
whatClass.addActionListener(ActionRouter.getInstance());
JMenuItem setDebug = new JMenuItem(JMeterUtils.getResString("debug_on"));//$NON-NLS-1$
setDebug.setActionCommand(ActionNames.DEBUG_ON);
setDebug.setAccelerator(KeyStrokes.DEBUG_ON);
setDebug.addActionListener(ActionRouter.getInstance());
JMenuItem resetDebug = new JMenuItem(JMeterUtils.getResString("debug_off"));//$NON-NLS-1$
resetDebug.setActionCommand(ActionNames.DEBUG_OFF);
resetDebug.setAccelerator(KeyStrokes.DEBUG_OFF);
resetDebug.addActionListener(ActionRouter.getInstance());
help_about = new JMenuItem(JMeterUtils.getResString("about"), 'A'); //$NON-NLS-1$
help_about.setActionCommand(ActionNames.ABOUT);
help_about.addActionListener(ActionRouter.getInstance());
helpMenu.add(contextHelp);
helpMenu.addSeparator();
helpMenu.add(whatClass);
helpMenu.add(setDebug);
helpMenu.add(resetDebug);
helpMenu.addSeparator();
helpMenu.add(help_about);
}
private void makeOptionsMenu() {
// OPTIONS MENU
optionsMenu = new JMenu(JMeterUtils.getResString("option")); //$NON-NLS-1$
JMenuItem functionHelper = new JMenuItem(JMeterUtils.getResString("function_dialog_menu_item"), 'F'); //$NON-NLS-1$
functionHelper.addActionListener(ActionRouter.getInstance());
functionHelper.setActionCommand(ActionNames.FUNCTIONS);
functionHelper.setAccelerator(KeyStrokes.FUNCTIONS);
lafMenu = new JMenu(JMeterUtils.getResString("appearance")); //$NON-NLS-1$
UIManager.LookAndFeelInfo lafs[] = UIManager.getInstalledLookAndFeels();
for (int i = 0; i < lafs.length; ++i) {
JMenuItem laf = new JMenuItem(lafs[i].getName());
laf.addActionListener(ActionRouter.getInstance());
laf.setActionCommand(ActionNames.LAF_PREFIX + lafs[i].getClassName());
lafMenu.setMnemonic('L');
lafMenu.add(laf);
}
optionsMenu.setMnemonic('O');
optionsMenu.add(functionHelper);
optionsMenu.add(lafMenu);
if (SSLManager.isSSLSupported()) {
sslManager = new JMenuItem(JMeterUtils.getResString("sslmanager")); //$NON-NLS-1$
sslManager.addActionListener(ActionRouter.getInstance());
sslManager.setActionCommand(ActionNames.SSL_MANAGER);
sslManager.setMnemonic('S');
sslManager.setAccelerator(KeyStrokes.SSL_MANAGER);
optionsMenu.add(sslManager);
}
optionsMenu.add(makeLanguageMenu());
JMenuItem collapse = new JMenuItem(JMeterUtils.getResString("menu_collapse_all")); //$NON-NLS-1$
collapse.addActionListener(ActionRouter.getInstance());
collapse.setActionCommand(ActionNames.COLLAPSE_ALL);
collapse.setAccelerator(KeyStrokes.COLLAPSE_ALL);
optionsMenu.add(collapse);
JMenuItem expand = new JMenuItem(JMeterUtils.getResString("menu_expand_all")); //$NON-NLS-1$
expand.addActionListener(ActionRouter.getInstance());
expand.setActionCommand(ActionNames.EXPAND_ALL);
expand.setAccelerator(KeyStrokes.EXPAND_ALL);
optionsMenu.add(expand);
}
// TODO fetch list of languages from a file?
// N.B. Changes to language list need to be reflected in
// resources/PackageTest.java
private JMenu makeLanguageMenu() {
/*
* Note: the item name is used by ChangeLanguage to create a Locale for
* that language, so need to ensure that the language strings are valid
* If they exist, use the Locale language constants
*/
// TODO: do accelerator keys make sense? The key may not be present in
// translations
JMenu languageMenu = new JMenu(JMeterUtils.getResString("choose_language")); //$NON-NLS-1$
languageMenu.setMnemonic('C');
// add english
JMenuItem english = new JMenuItem(JMeterUtils.getResString("en"), 'E'); //$NON-NLS-1$
english.addActionListener(ActionRouter.getInstance());
english.setActionCommand(ActionNames.CHANGE_LANGUAGE);
english.setName(Locale.ENGLISH.getLanguage());
languageMenu.add(english);
// add Japanese
JMenuItem japanese = new JMenuItem(JMeterUtils.getResString("jp"), 'J'); //$NON-NLS-1$
japanese.addActionListener(ActionRouter.getInstance());
japanese.setActionCommand(ActionNames.CHANGE_LANGUAGE);
japanese.setName(Locale.JAPANESE.getLanguage());
languageMenu.add(japanese);
// add Norwegian
JMenuItem norway = new JMenuItem(JMeterUtils.getResString("no"), 'N'); //$NON-NLS-1$
norway.addActionListener(ActionRouter.getInstance());
norway.setActionCommand(ActionNames.CHANGE_LANGUAGE);
norway.setName("no"); // No default for Norwegian
languageMenu.add(norway);
// add German
JMenuItem german = new JMenuItem(JMeterUtils.getResString("de"), 'G'); //$NON-NLS-1$
german.addActionListener(ActionRouter.getInstance());
german.setActionCommand(ActionNames.CHANGE_LANGUAGE);
german.setName(Locale.GERMAN.getLanguage());
languageMenu.add(german);
// add French
JMenuItem french = new JMenuItem(JMeterUtils.getResString("fr"), 'F'); //$NON-NLS-1$
french.addActionListener(ActionRouter.getInstance());
french.setActionCommand(ActionNames.CHANGE_LANGUAGE);
french.setName(Locale.FRENCH.getLanguage());
languageMenu.add(french);
// add chinese (simple)
JMenuItem chineseSimple = new JMenuItem(JMeterUtils.getResString("zh_cn")); //$NON-NLS-1$
chineseSimple.addActionListener(ActionRouter.getInstance());
chineseSimple.setActionCommand(ActionNames.CHANGE_LANGUAGE);
chineseSimple.setName(Locale.SIMPLIFIED_CHINESE.toString());
languageMenu.add(chineseSimple);
// add chinese (traditional)
JMenuItem chineseTrad = new JMenuItem(JMeterUtils.getResString("zh_tw")); //$NON-NLS-1$
chineseTrad.addActionListener(ActionRouter.getInstance());
chineseTrad.setActionCommand(ActionNames.CHANGE_LANGUAGE);
chineseTrad.setName(Locale.TRADITIONAL_CHINESE.toString());
languageMenu.add(chineseTrad);
// add spanish
JMenuItem spanish = new JMenuItem(JMeterUtils.getResString("es")); //$NON-NLS-1$
spanish.addActionListener(ActionRouter.getInstance());
spanish.setActionCommand(ActionNames.CHANGE_LANGUAGE);
spanish.setName("es"); //$NON-NLS-1$
languageMenu.add(spanish);
// add turkish
JMenuItem turkish = new JMenuItem(JMeterUtils.getResString("tr")); //$NON-NLS-1$
turkish.addActionListener(ActionRouter.getInstance());
turkish.setActionCommand(ActionNames.CHANGE_LANGUAGE);
turkish.setName("tr"); //$NON-NLS-1$
languageMenu.add(turkish);
return languageMenu;
}
private void makeRunMenu() {
// RUN MENU
runMenu = new JMenu(JMeterUtils.getResString("run")); //$NON-NLS-1$
runMenu.setMnemonic('R');
run_start = new JMenuItem(JMeterUtils.getResString("start"), 'S'); //$NON-NLS-1$
run_start.setAccelerator(KeyStrokes.ACTION_START);
run_start.addActionListener(ActionRouter.getInstance());
run_start.setActionCommand(ActionNames.ACTION_START);
run_stop = new JMenuItem(JMeterUtils.getResString("stop"), 'T'); //$NON-NLS-1$
run_stop.setAccelerator(KeyStrokes.ACTION_STOP);
run_stop.setEnabled(false);
run_stop.addActionListener(ActionRouter.getInstance());
run_stop.setActionCommand(ActionNames.ACTION_STOP);
run_shut = new JMenuItem(JMeterUtils.getResString("shutdown"), 'Y'); //$NON-NLS-1$
run_shut.setAccelerator(KeyStrokes.ACTION_SHUTDOWN);
run_shut.setEnabled(false);
run_shut.addActionListener(ActionRouter.getInstance());
run_shut.setActionCommand(ActionNames.ACTION_SHUTDOWN);
run_clear = new JMenuItem(JMeterUtils.getResString("clear"), 'C'); //$NON-NLS-1$
run_clear.addActionListener(ActionRouter.getInstance());
run_clear.setActionCommand(ActionNames.CLEAR);
run_clear.setAccelerator(KeyStrokes.CLEAR);
run_clearAll = new JMenuItem(JMeterUtils.getResString("clear_all"), 'a'); //$NON-NLS-1$
run_clearAll.addActionListener(ActionRouter.getInstance());
run_clearAll.setActionCommand(ActionNames.CLEAR_ALL);
run_clearAll.setAccelerator(KeyStrokes.CLEAR_ALL);
runMenu.add(run_start);
if (remote_start != null) {
runMenu.add(remote_start);
}
remote_start_all = new JMenuItem(JMeterUtils.getResString("remote_start_all")); //$NON-NLS-1$
remote_start_all.setName("remote_start_all"); //$NON-NLS-1$
remote_start_all.setAccelerator(KeyStrokes.REMOTE_START_ALL);
remote_start_all.addActionListener(ActionRouter.getInstance());
remote_start_all.setActionCommand(ActionNames.REMOTE_START_ALL);
runMenu.add(remote_start_all);
runMenu.add(run_stop);
runMenu.add(run_shut);
if (remote_stop != null) {
runMenu.add(remote_stop);
}
remote_stop_all = new JMenuItem(JMeterUtils.getResString("remote_stop_all"), 'X'); //$NON-NLS-1$
remote_stop_all.setAccelerator(KeyStrokes.REMOTE_STOP_ALL);
remote_stop_all.addActionListener(ActionRouter.getInstance());
remote_stop_all.setActionCommand(ActionNames.REMOTE_STOP_ALL);
runMenu.add(remote_stop_all);
if (remote_exit != null) {
runMenu.add(remote_exit);
}
remote_exit_all = new JMenuItem(JMeterUtils.getResString("remote_exit_all")); //$NON-NLS-1$
remote_exit_all.addActionListener(ActionRouter.getInstance());
remote_exit_all.setActionCommand(ActionNames.REMOTE_EXIT_ALL);
runMenu.add(remote_exit_all);
runMenu.addSeparator();
runMenu.add(run_clear);
runMenu.add(run_clearAll);
}
private void makeEditMenu() {
// EDIT MENU
editMenu = new JMenu(JMeterUtils.getResString("edit")); //$NON-NLS-1$
editMenu.setMnemonic('E');
// From the Java Look and Feel Guidelines: If all items in a menu
// are disabled, then disable the menu. Makes sense.
editMenu.setEnabled(false);
}
private void makeFileMenu() {
// FILE MENU
fileMenu = new JMenu(JMeterUtils.getResString("file")); //$NON-NLS-1$
fileMenu.setMnemonic('F');
JMenuItem file_save = new JMenuItem(JMeterUtils.getResString("save"), 'S'); //$NON-NLS-1$
file_save.setAccelerator(KeyStrokes.SAVE);
file_save.setActionCommand(ActionNames.SAVE);
file_save.addActionListener(ActionRouter.getInstance());
file_save.setEnabled(true);
file_save_as = new JMenuItem(JMeterUtils.getResString("save_all_as"), 'A'); //$NON-NLS-1$
file_save_as.setAccelerator(KeyStrokes.SAVE_ALL_AS);
file_save_as.setActionCommand(ActionNames.SAVE_ALL_AS);
file_save_as.addActionListener(ActionRouter.getInstance());
file_save_as.setEnabled(true);
file_selection_as = new JMenuItem(JMeterUtils.getResString("save_as")); //$NON-NLS-1$
file_selection_as.setActionCommand(ActionNames.SAVE_AS);
file_selection_as.addActionListener(ActionRouter.getInstance());
file_selection_as.setEnabled(true);
file_revert = new JMenuItem(JMeterUtils.getResString("revert_project"), 'R'); //$NON-NLS-1$
file_revert.setActionCommand(ActionNames.REVERT_PROJECT);
file_revert.addActionListener(ActionRouter.getInstance());
file_revert.setEnabled(false);
file_load = new JMenuItem(JMeterUtils.getResString("menu_open"), 'O'); //$NON-NLS-1$
file_load.setAccelerator(KeyStrokes.OPEN);
file_load.addActionListener(ActionRouter.getInstance());
// Set default SAVE menu item to disabled since the default node that
// is selected is ROOT, which does not allow items to be inserted.
file_load.setEnabled(false);
file_load.setActionCommand(ActionNames.OPEN);
file_close = new JMenuItem(JMeterUtils.getResString("menu_close"), 'C'); //$NON-NLS-1$
file_close.setAccelerator(KeyStrokes.CLOSE);
file_close.setActionCommand(ActionNames.CLOSE);
file_close.addActionListener(ActionRouter.getInstance());
file_exit = new JMenuItem(JMeterUtils.getResString("exit"), 'X'); //$NON-NLS-1$
file_exit.setAccelerator(KeyStrokes.EXIT);
file_exit.setActionCommand(ActionNames.EXIT);
file_exit.addActionListener(ActionRouter.getInstance());
file_merge = new JMenuItem(JMeterUtils.getResString("menu_merge"), 'M'); //$NON-NLS-1$
// file_merge.setAccelerator(
// KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
file_merge.addActionListener(ActionRouter.getInstance());
// Set default SAVE menu item to disabled since the default node that
// is selected is ROOT, which does not allow items to be inserted.
file_merge.setEnabled(false);
file_merge.setActionCommand(ActionNames.MERGE);
fileMenu.add(file_close);
fileMenu.add(file_load);
fileMenu.add(file_merge);
fileMenu.addSeparator();
fileMenu.add(file_save);
fileMenu.add(file_save_as);
fileMenu.add(file_selection_as);
fileMenu.add(file_revert);
fileMenu.addSeparator();
// Add the recent files, which will also add a separator that is
// visible when needed
file_load_recent_files = LoadRecentProject.getRecentFileMenuItems();
for(Iterator i = file_load_recent_files.iterator(); i.hasNext();) {
fileMenu.add((JComponent)i.next());
}
fileMenu.add(file_exit);
}
public void setRunning(boolean running, String host) {
log.info("setRunning(" + running + "," + host + ")");
Iterator iter = remote_engine_start.iterator();
Iterator iter2 = remote_engine_stop.iterator();
Iterator iter3 = remote_engine_exit.iterator();
while (iter.hasNext() && iter2.hasNext() && iter3.hasNext()) {
JMenuItem start = (JMenuItem) iter.next();
JMenuItem stop = (JMenuItem) iter2.next();
JMenuItem exit = (JMenuItem) iter3.next();
if (start.getText().equals(host)) {
log.debug("Found start host: " + start.getText());
start.setEnabled(!running);
}
if (stop.getText().equals(host)) {
log.debug("Found stop host: " + stop.getText());
stop.setEnabled(running);
}
if (exit.getText().equals(host)) {
log.debug("Found exit host: " + exit.getText());
exit.setEnabled(true);
}
}
}
public void setEnabled(boolean enable) {
run_start.setEnabled(!enable);
run_stop.setEnabled(enable);
run_shut.setEnabled(enable);
}
private void getRemoteItems() {
if (remoteHosts.length > 0) {
remote_start = new JMenu(JMeterUtils.getResString("remote_start")); //$NON-NLS-1$
remote_stop = new JMenu(JMeterUtils.getResString("remote_stop")); //$NON-NLS-1$
remote_exit = new JMenu(JMeterUtils.getResString("remote_exit")); //$NON-NLS-1$
for (int i = 0; i < remoteHosts.length; i++) {
remoteHosts[i] = remoteHosts[i].trim();
JMenuItem item = new JMenuItem(remoteHosts[i]);
item.setActionCommand(ActionNames.REMOTE_START);
item.setName(remoteHosts[i]);
item.addActionListener(ActionRouter.getInstance());
remote_engine_start.add(item);
remote_start.add(item);
item = new JMenuItem(remoteHosts[i]);
item.setActionCommand(ActionNames.REMOTE_STOP);
item.setName(remoteHosts[i]);
item.addActionListener(ActionRouter.getInstance());
item.setEnabled(false);
remote_engine_stop.add(item);
remote_stop.add(item);
item = new JMenuItem(remoteHosts[i]);
item.setActionCommand(ActionNames.REMOTE_EXIT);
item.setName(remoteHosts[i]);
item.addActionListener(ActionRouter.getInstance());
item.setEnabled(false);
remote_engine_exit.add(item);
remote_exit.add(item);
}
}
}
/**
* Processes a locale change notification. Changes the texts in all menus to
* the new language.
*/
public void localeChanged(LocaleChangeEvent event) {
updateMenuElement(fileMenu);
updateMenuElement(editMenu);
updateMenuElement(runMenu);
updateMenuElement(optionsMenu);
updateMenuElement(helpMenu);
}
/**
* Refreshes all texts in the menu and all submenus to a new locale.
*/
private void updateMenuElement(MenuElement menu) {
Component component = menu.getComponent();
if (component.getName() != null) {
if (component instanceof JMenu) {
((JMenu) component).setText(JMeterUtils.getResString(component.getName()));
} else {
((JMenuItem) component).setText(JMeterUtils.getResString(component.getName()));
}
}
MenuElement[] subelements = menu.getSubElements();
for (int i = 0; i < subelements.length; i++) {
updateMenuElement(subelements[i]);
}
}
}
The table below shows all metrics for JMeterMenuBar.java.




