On 4 December 2011 17:56, <[email protected]> wrote: > Author: pmouawad > Date: Sun Dec 4 17:56:17 2011 > New Revision: 1210159 > > URL: http://svn.apache.org/viewvc?rev=1210159&view=rev > Log: > Bug 52280 - The menu item Options / Choose Language does not change all the > displayed text to the new language > > Better fix after discussion on mailing list > > Modified: > jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java > > Modified: > jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java?rev=1210159&r1=1210158&r2=1210159&view=diff > ============================================================================== > --- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java > (original) > +++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java > Sun Dec 4 17:56:17 2011 > @@ -59,6 +59,8 @@ import org.apache.jmeter.testelement.pro > import org.apache.jmeter.timers.Timer; > import org.apache.jmeter.timers.gui.AbstractTimerGui; > import org.apache.jmeter.util.JMeterUtils; > +import org.apache.jmeter.util.LocaleChangeEvent; > +import org.apache.jmeter.util.LocaleChangeListener; > import org.apache.jmeter.visualizers.Visualizer; > import org.apache.jmeter.visualizers.gui.AbstractVisualizer; > import org.apache.jorphan.logging.LoggingManager; > @@ -84,14 +86,14 @@ import org.apache.log.Logger; > * customizers should implement SharedCustomizer. > * > */ > -public class TestBeanGUI extends AbstractJMeterGuiComponent implements > JMeterGUIComponent { > +public class TestBeanGUI extends AbstractJMeterGuiComponent implements > JMeterGUIComponent, LocaleChangeListener{ > private static final long serialVersionUID = 240L; > > private static final Logger log = LoggingManager.getLoggerForClass(); > > private final Class<?> testBeanClass; > > - private transient final BeanInfo beanInfo; > + private transient BeanInfo beanInfo; > > private final Class<?> customizerClass; > > @@ -177,6 +179,7 @@ public class TestBeanGUI extends Abstrac > // label, menu > // categories, etc! > initialized = false; > + JMeterUtils.addLocaleChangeListener(this); > } > > private Customizer createCustomizer() { > @@ -199,13 +202,7 @@ public class TestBeanGUI extends Abstrac > if (beanInfo == null){ > return "null";// $NON-NLS-1$ > } > - try { > - // We get new BeanInfo instead of cached one > - // TODO Find a better way to reinitialize the beanInfo > instance > - return > Introspector.getBeanInfo(testBeanClass).getBeanDescriptor().getDisplayName(); > - } catch (IntrospectionException e) { > - return beanInfo.getBeanDescriptor().getDisplayName(); > - } > + return beanInfo.getBeanDescriptor().getDisplayName(); > } > > /** > @@ -470,4 +467,18 @@ public class TestBeanGUI extends Abstrac > public boolean isExpert() { > return beanInfo.getBeanDescriptor().isExpert(); > } > + > + /** > + * Handle Locale Change by reloading BeanInfo > + * @param event {@link LocaleChangeEvent} > + */ > + public void localeChanged(LocaleChangeEvent event) { > + try { > + beanInfo = Introspector.getBeanInfo(testBeanClass); > + } catch (IntrospectionException e) { > + log.error("Can't get beanInfo for " + testBeanClass.getName(), > e); > + throw new Error(e.toString()); // Programming error. Don't > + // continue.
Is that the best solution? Won't that mess up the GUI thread? I think the LocaleChanged even only comes from the GUI, in which case, might be better to use JMeterUtils.reportErrorToUser ? > + } > + } > } > >
