KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jmeter > gui > util > JMeterMenuBar


1 // $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java,v 1.22.2.1 2004/10/30 10:25:01 sebb Exp $
2
/*
3  * Copyright 2001-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 package org.apache.jmeter.gui.util;
20 import java.awt.Component JavaDoc;
21 import java.awt.event.KeyEvent JavaDoc;
22 import java.util.Collection JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.LinkedList JavaDoc;
25
26 import javax.swing.JMenu JavaDoc;
27 import javax.swing.JMenuBar JavaDoc;
28 import javax.swing.JMenuItem JavaDoc;
29 import javax.swing.JPopupMenu JavaDoc;
30 import javax.swing.KeyStroke JavaDoc;
31 import javax.swing.MenuElement JavaDoc;
32 import javax.swing.UIManager JavaDoc;
33
34 import org.apache.jmeter.gui.action.ActionRouter;
35 import org.apache.jmeter.gui.action.ChangeLanguage;
36 import org.apache.jmeter.util.JMeterUtils;
37 import org.apache.jmeter.util.LocaleChangeEvent;
38 import org.apache.jmeter.util.LocaleChangeListener;
39 import org.apache.jmeter.util.SSLManager;
40 import org.apache.jorphan.util.JOrphanUtils;
41 import org.apache.jorphan.logging.LoggingManager;
42 import org.apache.log.Logger;
43
44 /**
45  * @author Michael Stover
46  * @author <a HREF="mailto:klancast@swbell.net">Keith Lancaster</a>
47  * @version $Revision: 1.22.2.1 $ updated on $Date: 2004/10/30 10:25:01 $
48  */

49 public class JMeterMenuBar extends JMenuBar JavaDoc implements LocaleChangeListener
50 {
51     transient private static Logger log = LoggingManager.getLoggerForClass();
52     JMenu JavaDoc fileMenu;
53     JMenuItem JavaDoc file_save_as;
54     JMenuItem JavaDoc file_load;
55     JMenuItem JavaDoc file_merge;
56     JMenuItem JavaDoc file_exit;
57     JMenuItem JavaDoc file_close;
58     JMenu JavaDoc editMenu;
59     JMenu JavaDoc edit_add;
60     //JMenu edit_add_submenu;
61
JMenuItem JavaDoc edit_remove;
62     JMenu JavaDoc runMenu;
63     JMenuItem JavaDoc run_start;
64     JMenu JavaDoc remote_start;
65     JMenuItem JavaDoc remote_start_all;
66     Collection JavaDoc remote_engine_start;
67     JMenuItem JavaDoc run_stop;
68     private JMenuItem JavaDoc run_shut; // all the others could be private too?
69
JMenu JavaDoc remote_stop;
70     JMenuItem JavaDoc remote_stop_all;
71     Collection JavaDoc remote_engine_stop;
72     JMenuItem JavaDoc run_clear;
73     JMenuItem JavaDoc run_clearAll;
74     //JMenu reportMenu;
75
//JMenuItem analyze;
76
JMenu JavaDoc optionsMenu;
77     JMenu JavaDoc lafMenu;
78     JMenuItem JavaDoc sslManager;
79     JMenu JavaDoc helpMenu;
80     JMenuItem JavaDoc help_about;
81     String JavaDoc[] remoteHosts;
82
83     private JMenu JavaDoc remote_exit;
84     private JMenuItem JavaDoc remote_exit_all;
85     private Collection JavaDoc remote_engine_exit;
86
87     public JMeterMenuBar()
88     {
89         remote_engine_start = new LinkedList JavaDoc();
90         remote_engine_stop = new LinkedList JavaDoc();
91         remote_engine_exit = new LinkedList JavaDoc();
92         remoteHosts =
93             JOrphanUtils.split(
94                 JMeterUtils.getPropDefault("remote_hosts", ""),
95                 ",");
96         if (remoteHosts.length == 1 && remoteHosts[0].equals(""))
97         {
98             remoteHosts = new String JavaDoc[0];
99         }
100         this.getRemoteItems();
101         createMenuBar();
102     }
103
104     public void setFileSaveEnabled(boolean enabled)
105     {
106         file_save_as.setEnabled(enabled);
107     }
108
109     public void setFileLoadEnabled(boolean enabled)
110     {
111         if (file_load != null)
112         {
113             file_load.setEnabled(enabled);
114         }
115         if (file_merge != null)
116         {
117             file_merge.setEnabled(enabled);
118         }
119     }
120
121     public void setEditEnabled(boolean enabled)
122     {
123         if (editMenu != null)
124         {
125             editMenu.setEnabled(enabled);
126         }
127     }
128
129     public void setEditAddMenu(JMenu JavaDoc menu)
130     {
131         // If the Add menu already exists, remove it.
132
if (edit_add != null)
133         {
134             editMenu.remove(edit_add);
135         }
136         // Insert the Add menu as the first menu item in the Edit menu.
137
edit_add = menu;
138         editMenu.insert(edit_add, 0);
139     }
140
141     public void setEditMenu(JPopupMenu JavaDoc menu)
142     {
143         if (menu != null)
144         {
145             editMenu.removeAll();
146             Component JavaDoc[] comps = menu.getComponents();
147             for (int i = 0; i < comps.length; i++)
148             {
149                 editMenu.add(comps[i]);
150             }
151             editMenu.setEnabled(true);
152         }
153         else
154         {
155             editMenu.setEnabled(false);
156         }
157     }
158
159     public void setEditAddEnabled(boolean enabled)
160     {
161         // There was a NPE being thrown without the null check here.. JKB
162
if (edit_add != null)
163         {
164             edit_add.setEnabled(enabled);
165         }
166         // If we are enabling the Edit-->Add menu item, then we also need to
167
// enable the Edit menu. The Edit menu may already be enabled, but
168
// there's no harm it trying to enable it again.
169
if (enabled)
170         {
171             setEditEnabled(true);
172         }
173         else
174         {
175             // If we are disabling the Edit-->Add menu item and the
176
// Edit-->Remove menu item is disabled, then we also need to
177
// disable the Edit menu.
178
// The Java Look and Feel Guidelines say to disable a menu if all
179
// menu items are disabled.
180
if (!edit_remove.isEnabled())
181             {
182                 editMenu.setEnabled(false);
183             }
184         }
185     }
186
187     public void setEditRemoveEnabled(boolean enabled)
188     {
189         edit_remove.setEnabled(enabled);
190         // If we are enabling the Edit-->Remove menu item, then we also need to
191
// enable the Edit menu. The Edit menu may already be enabled, but
192
// there's no harm it trying to enable it again.
193
if (enabled)
194         {
195             setEditEnabled(true);
196         }
197         else
198         {
199             // If we are disabling the Edit-->Remove menu item and the
200
// Edit-->Add menu item is disabled, then we also need to disable
201
// the Edit menu.
202
// The Java Look and Feel Guidelines say to disable a menu if all
203
// menu items are disabled.
204
if (!edit_add.isEnabled())
205             {
206                 editMenu.setEnabled(false);
207             }
208         }
209     }
210
211     /**
212      * Creates the MenuBar for this application. I believe in my heart that
213      * this should be defined in a file somewhere, but that is for later.
214      */

215     public void createMenuBar()
216     {
217         makeFileMenu();
218         makeEditMenu();
219         makeRunMenu();
220         makeOptionsMenu();
221         makeHelpMenu();
222         this.add(fileMenu);
223         this.add(editMenu);
224         this.add(runMenu);
225         this.add(optionsMenu);
226         this.add(helpMenu);
227     }
228     
229     private void makeHelpMenu()
230     {
231         // HELP MENU
232
helpMenu = new JMenu JavaDoc(JMeterUtils.getResString("help"));
233         helpMenu.setMnemonic('H');
234         JMenuItem JavaDoc contextHelp =
235             new JMenuItem JavaDoc(JMeterUtils.getResString("help"), 'H');
236         contextHelp.setActionCommand("help");
237         contextHelp.setAccelerator(
238             KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK));
239         contextHelp.addActionListener(ActionRouter.getInstance());
240         help_about = new JMenuItem JavaDoc(JMeterUtils.getResString("about"), 'A');
241         help_about.setActionCommand("about");
242         help_about.addActionListener(ActionRouter.getInstance());
243         helpMenu.add(contextHelp);
244         helpMenu.add(help_about);
245     }
246     
247     private void makeOptionsMenu()
248     {
249         // OPTIONS MENU
250
optionsMenu = new JMenu JavaDoc(JMeterUtils.getResString("option"));
251         JMenuItem JavaDoc functionHelper =
252             new JMenuItem JavaDoc(
253                 JMeterUtils.getResString("function_dialog_menu_item"),
254                 'F');
255         functionHelper.addActionListener(ActionRouter.getInstance());
256         functionHelper.setActionCommand("functions");
257         functionHelper.setAccelerator(
258             KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
259         lafMenu = new JMenu JavaDoc(JMeterUtils.getResString("appearance"));
260         UIManager.LookAndFeelInfo JavaDoc lafs[] = UIManager.getInstalledLookAndFeels();
261         for (int i = 0; i < lafs.length; ++i)
262         {
263             JMenuItem JavaDoc laf = new JMenuItem JavaDoc(lafs[i].getName());
264             laf.addActionListener(ActionRouter.getInstance());
265             laf.setActionCommand("laf:" + lafs[i].getClassName());
266             lafMenu.setMnemonic('L');
267             lafMenu.add(laf);
268         }
269         optionsMenu.setMnemonic('O');
270         optionsMenu.add(functionHelper);
271         optionsMenu.add(lafMenu);
272         if (SSLManager.isSSLSupported())
273         {
274             sslManager = new JMenuItem JavaDoc(JMeterUtils.getResString("sslManager"));
275             sslManager.addActionListener(ActionRouter.getInstance());
276             sslManager.setActionCommand("sslManager");
277             sslManager.setMnemonic('S');
278             sslManager.setAccelerator(
279                 KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_MASK));
280             optionsMenu.add(sslManager);
281         }
282         optionsMenu.add(makeLanguageMenu());
283     }
284     
285     private JMenu JavaDoc makeLanguageMenu()
286     {
287         JMenu JavaDoc languageMenu =
288             new JMenu JavaDoc(JMeterUtils.getResString("choose_language"));
289         languageMenu.setMnemonic('C');
290         //add english
291
JMenuItem JavaDoc english = new JMenuItem JavaDoc(JMeterUtils.getResString("en"), 'E');
292         english.addActionListener(ActionRouter.getInstance());
293         english.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
294         english.setName("en");
295         languageMenu.add(english);
296         //add Japanese
297
JMenuItem JavaDoc japanese = new JMenuItem JavaDoc(JMeterUtils.getResString("jp"), 'J');
298         japanese.addActionListener(ActionRouter.getInstance());
299         japanese.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
300         japanese.setName("ja");
301         languageMenu.add(japanese);
302         //add Norwegian
303
JMenuItem JavaDoc norway = new JMenuItem JavaDoc(JMeterUtils.getResString("no"), 'N');
304         norway.addActionListener(ActionRouter.getInstance());
305         norway.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
306         norway.setName("no");
307         languageMenu.add(norway);
308         //add German
309
JMenuItem JavaDoc german = new JMenuItem JavaDoc(JMeterUtils.getResString("de"), 'G');
310         german.addActionListener(ActionRouter.getInstance());
311         german.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
312         german.setName("de");
313         languageMenu.add(german);
314         //add French
315
JMenuItem JavaDoc french = new JMenuItem JavaDoc(JMeterUtils.getResString("fr"), 'F');
316         french.addActionListener(ActionRouter.getInstance());
317         french.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
318         french.setName("fr");
319         languageMenu.add(french);
320         //add chinese
321
JMenuItem JavaDoc chinese = new JMenuItem JavaDoc(JMeterUtils.getResString("cn"), 'C');
322         chinese.addActionListener(ActionRouter.getInstance());
323         chinese.setActionCommand(ChangeLanguage.CHANGE_LANGUAGE);
324         chinese.setName("cn");
325         languageMenu.add(chinese);
326         return languageMenu;
327     }
328
329     /*
330      * Strings used to set up and process actions in this menu
331      * The strings need to agree with the those in the Action routines
332     */

333     public static final String JavaDoc ACTION_SHUTDOWN = "shutdown";
334     public static final String JavaDoc ACTION_STOP = "stop";
335     public static final String JavaDoc ACTION_START = "start";
336
337
338     private void makeRunMenu()
339     {
340         // RUN MENU
341
runMenu = new JMenu JavaDoc(JMeterUtils.getResString("run"));
342         runMenu.setMnemonic('R');
343         run_start = new JMenuItem JavaDoc(JMeterUtils.getResString("start"), 'S');
344         run_start.setAccelerator(
345             KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_MASK));
346         run_start.addActionListener(ActionRouter.getInstance());
347         run_start.setActionCommand(ACTION_START);
348         run_stop = new JMenuItem JavaDoc(JMeterUtils.getResString("stop"), 'T');
349         run_stop.setAccelerator(
350             KeyStroke.getKeyStroke(KeyEvent.VK_PERIOD, KeyEvent.CTRL_MASK));
351         run_stop.setEnabled(false);
352         run_stop.addActionListener(ActionRouter.getInstance());
353         run_stop.setActionCommand(ACTION_STOP);
354
355         run_shut = new JMenuItem JavaDoc(JMeterUtils.getResString("shutdown"), 'Y');
356         run_shut.setAccelerator(
357             KeyStroke.getKeyStroke(KeyEvent.VK_COMMA, KeyEvent.CTRL_MASK));
358         run_shut.setEnabled(false);
359         run_shut.addActionListener(ActionRouter.getInstance());
360         run_shut.setActionCommand(ACTION_SHUTDOWN);
361
362         run_clear = new JMenuItem JavaDoc(JMeterUtils.getResString("clear"), 'C');
363         run_clear.addActionListener(ActionRouter.getInstance());
364         run_clear.setActionCommand(org.apache.jmeter.gui.action.Clear.CLEAR);
365         run_clearAll =
366             new JMenuItem JavaDoc(JMeterUtils.getResString("clear_all"), 'a');
367         run_clearAll.addActionListener(ActionRouter.getInstance());
368         run_clearAll.setActionCommand(
369             org.apache.jmeter.gui.action.Clear.CLEAR_ALL);
370         run_clearAll.setAccelerator(
371             KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_MASK));
372         runMenu.add(run_start);
373         if (remote_start != null)
374         {
375             runMenu.add(remote_start);
376         }
377         remote_start_all =
378             new JMenuItem JavaDoc(JMeterUtils.getResString("remote_start_all"), 'Z');
379         remote_start_all.setName("remote_start_all");
380         remote_start_all.setAccelerator(
381             KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK));
382         remote_start_all.addActionListener(ActionRouter.getInstance());
383         remote_start_all.setActionCommand("remote_start_all");
384         runMenu.add(remote_start_all);
385         runMenu.add(run_stop);
386         runMenu.add(run_shut);
387         if (remote_stop != null)
388         {
389             runMenu.add(remote_stop);
390         }
391         remote_stop_all =
392             new JMenuItem JavaDoc(JMeterUtils.getResString("remote_stop_all"), 'X');
393         remote_stop_all.setAccelerator(
394             KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.ALT_MASK));
395         remote_stop_all.addActionListener(ActionRouter.getInstance());
396         remote_stop_all.setActionCommand("remote_stop_all");
397         runMenu.add(remote_stop_all);
398         
399         if (remote_exit != null)
400         {
401             runMenu.add(remote_exit);
402         }
403         remote_exit_all =
404             new JMenuItem JavaDoc(JMeterUtils.getResString("remote_exit_all"));
405         remote_exit_all.addActionListener(ActionRouter.getInstance());
406         remote_exit_all.setActionCommand("remote_exit_all");
407         runMenu.add(remote_exit_all);
408
409
410         runMenu.addSeparator();
411         runMenu.add(run_clear);
412         runMenu.add(run_clearAll);
413     }
414     
415     private void makeEditMenu()
416     {
417         // EDIT MENU
418
editMenu = new JMenu JavaDoc(JMeterUtils.getResString("edit"));
419         // From the Java Look and Feel Guidelines: If all items in a menu
420
// are disabled, then disable the menu. Makes sense.
421
editMenu.setEnabled(false);
422     }
423     
424     private void makeFileMenu()
425     {
426         // FILE MENU
427
fileMenu = new JMenu JavaDoc(JMeterUtils.getResString("file"));
428         fileMenu.setMnemonic('F');
429         JMenuItem JavaDoc file_save =
430             new JMenuItem JavaDoc(JMeterUtils.getResString("save"), 'S');
431         file_save.setAccelerator(
432             KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
433         file_save.setActionCommand("save");
434         file_save.addActionListener(ActionRouter.getInstance());
435         file_save.setEnabled(true);
436
437         file_save_as =
438             new JMenuItem JavaDoc(JMeterUtils.getResString("save_all_as"), 'A');
439         file_save_as.setAccelerator(
440             KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
441         file_save_as.setActionCommand("save_all_as");
442         file_save_as.addActionListener(ActionRouter.getInstance());
443         file_save_as.setEnabled(true);
444         
445         file_load = new JMenuItem JavaDoc(JMeterUtils.getResString("menu_open"), 'O');
446         file_load.setAccelerator(
447             KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
448         file_load.addActionListener(ActionRouter.getInstance());
449         // Set default SAVE menu item to disabled since the default node that
450
// is selected is ROOT, which does not allow items to be inserted.
451
file_load.setEnabled(false);
452         file_load.setActionCommand("open");
453         
454         file_close = new JMenuItem JavaDoc(JMeterUtils.getResString("menu_close"), 'C');
455         file_close.setAccelerator(
456             KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK));
457         file_close.setActionCommand("close");
458         file_close.addActionListener(ActionRouter.getInstance());
459
460         file_exit = new JMenuItem JavaDoc(JMeterUtils.getResString("exit"), 'X');
461         file_exit.setAccelerator(
462             KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK));
463         file_exit.setActionCommand("exit");
464         file_exit.addActionListener(ActionRouter.getInstance());
465
466         file_merge = new JMenuItem JavaDoc(JMeterUtils.getResString("menu_merge"), 'M');
467         //file_merge.setAccelerator(
468
// KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
469
file_merge.addActionListener(ActionRouter.getInstance());
470         // Set default SAVE menu item to disabled since the default node that
471
// is selected is ROOT, which does not allow items to be inserted.
472
file_merge.setEnabled(false);
473         file_merge.setActionCommand("merge");
474
475         fileMenu.add(file_close);
476         fileMenu.add(file_load);
477         fileMenu.add(file_merge);
478         fileMenu.add(file_save);
479         fileMenu.add(file_save_as);
480         fileMenu.addSeparator();
481         fileMenu.add(file_exit);
482     }
483
484     public void setRunning(boolean running, String JavaDoc host)
485     {
486         log.info("setRunning("+ running +","+ host + ")");
487
488         Iterator JavaDoc iter = remote_engine_start.iterator();
489         Iterator JavaDoc iter2 = remote_engine_stop.iterator();
490         Iterator JavaDoc iter3 = remote_engine_exit.iterator();
491         while (iter.hasNext() && iter2.hasNext() && iter3.hasNext())
492         {
493             JMenuItem JavaDoc start = (JMenuItem JavaDoc) iter.next();
494             JMenuItem JavaDoc stop = (JMenuItem JavaDoc) iter2.next();
495             JMenuItem JavaDoc exit = (JMenuItem JavaDoc) iter3.next();
496             if (start.getText().equals(host))
497             {
498                 log.info("Found start host: " + start.getText());
499                 start.setEnabled(!running);
500             }
501             if (stop.getText().equals(host))
502             {
503                 log.info("Found stop host: " + stop.getText());
504                 stop.setEnabled(running);
505             }
506             if (exit.getText().equals(host))
507             {
508                 log.info("Found exit host: " + exit.getText());
509                 exit.setEnabled(true);
510             }
511         }
512     }
513
514     public void setEnabled(boolean enable)
515     {
516         run_start.setEnabled(!enable);
517         run_stop.setEnabled(enable);
518         run_shut.setEnabled(enable);
519     }
520
521     private void getRemoteItems()
522     {
523         if (remoteHosts.length > 0)
524         {
525             remote_start = new JMenu JavaDoc(JMeterUtils.getResString("remote_start"));
526             remote_stop = new JMenu JavaDoc(JMeterUtils.getResString("remote_stop"));
527             remote_exit = new JMenu JavaDoc(JMeterUtils.getResString("remote_exit"));
528
529             for (int i = 0; i < remoteHosts.length; i++)
530             {
531                 remoteHosts[i] = remoteHosts[i].trim();
532                 JMenuItem JavaDoc item = new JMenuItem JavaDoc(remoteHosts[i]);
533                 item.setActionCommand("remote_start");
534                 item.setName(remoteHosts[i]);
535                 item.addActionListener(ActionRouter.getInstance());
536                 remote_engine_start.add(item);
537                 remote_start.add(item);
538                 item = new JMenuItem JavaDoc(remoteHosts[i]);
539                 item.setActionCommand("remote_stop");
540                 item.setName(remoteHosts[i]);
541                 item.addActionListener(ActionRouter.getInstance());
542                 item.setEnabled(false);
543                 remote_engine_stop.add(item);
544                 remote_stop.add(item);
545                 item = new JMenuItem JavaDoc(remoteHosts[i]);
546                 item.setActionCommand("remote_exit");
547                 item.setName(remoteHosts[i]);
548                 item.addActionListener(ActionRouter.getInstance());
549                 item.setEnabled(false);
550                 remote_engine_exit.add(item);
551                 remote_exit.add(item);
552             }
553         }
554     }
555
556     /**
557      * Processes a locale change notification. Changes the texts in all
558      * menus to the new language.
559      */

560     public void localeChanged(LocaleChangeEvent event)
561     {
562         updateMenuElement(fileMenu);
563         updateMenuElement(editMenu);
564         updateMenuElement(runMenu);
565         updateMenuElement(optionsMenu);
566         updateMenuElement(helpMenu);
567     }
568
569     /**
570      * Refreshes all texts in the menu and all submenus to a new locale.
571      */

572     private void updateMenuElement(MenuElement JavaDoc menu)
573     {
574         Component JavaDoc component = menu.getComponent();
575
576         if (component.getName() != null)
577         {
578             if (component instanceof JMenu JavaDoc)
579             {
580                 ((JMenu JavaDoc) component).setText(
581                     JMeterUtils.getResString(component.getName()));
582             }
583             else
584             {
585                 ((JMenuItem JavaDoc) component).setText(
586                     JMeterUtils.getResString(component.getName()));
587             }
588         }
589
590         MenuElement JavaDoc[] subelements = menu.getSubElements();
591
592         for (int i = 0; i < subelements.length; i++)
593         {
594             updateMenuElement(subelements[i]);
595         }
596     }
597 }
598
Popular Tags