You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2011/12/04 18:56:18 UTC
svn commit: r1210159 -
/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
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.
+ }
+ }
}
Re: svn commit: r1210159 - /jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
Posted by sebb <se...@gmail.com>.
On 4 December 2011 17:56, <pm...@apache.org> 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 ?
> + }
> + }
> }
>
>