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.
+        }
+       }
 }


Reply via email to