jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Milamber <milam...@apache.org>
Subject Re: svn commit: r1366644 - /jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
Date Sat, 28 Jul 2012 15:09:30 GMT


Le 28/07/2012 12:57, sebb a ecrit :
> On 28 July 2012 12:29,<milamber@apache.org>  wrote:
>> Author: milamber
>> Date: Sat Jul 28 11:29:23 2012
>> New Revision: 1366644
>>
>> URL: http://svn.apache.org/viewvc?rev=1366644&view=rev
>> Log:
>> Display 'Apache JMeter' title in app title bar in Gnome 3
>> Bugzilla Id: 53616
>>
>> Modified:
>>      jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
>>
>> Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
>> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java?rev=1366644&r1=1366643&r2=1366644&view=diff
>> ==============================================================================
>> --- jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java (original)
>> +++ jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java Sat Jul 28 11:29:23
2012
>> @@ -23,6 +23,7 @@ import java.awt.Component;
>>   import java.awt.Dimension;
>>   import java.awt.Font;
>>   import java.awt.Insets;
>> +import java.awt.Toolkit;
>>   import java.awt.datatransfer.DataFlavor;
>>   import java.awt.datatransfer.Transferable;
>>   import java.awt.datatransfer.UnsupportedFlavorException;
>> @@ -39,6 +40,7 @@ import java.awt.event.WindowAdapter;
>>   import java.awt.event.WindowEvent;
>>   import java.io.File;
>>   import java.io.IOException;
>> +import java.lang.reflect.Field;
>>   import java.util.HashSet;
>>   import java.util.List;
>>   import java.util.Set;
>> @@ -101,9 +103,12 @@ public class MainFrame extends JFrame im
>>       // The name is chosen to be an unlikely host-name
>>       private static final String LOCAL = "*local*"; // $NON-NLS-1$
>>
>> +    // The application name
>> +    private static final String DEFAULT_APP_NAME = "Apache JMeter"; // $NON-NLS-1$
>> +
>>       // The default title for the Menu bar
>> -    private static final String DEFAULT_TITLE =
>> -        "Apache JMeter ("+JMeterUtils.getJMeterVersion()+")"; // $NON-NLS-1$ $NON-NLS-2$
>> +    private static final String DEFAULT_TITLE = DEFAULT_APP_NAME +
>> +            " (" + JMeterUtils.getJMeterVersion() + ")"; // $NON-NLS-1$ $NON-NLS-2$
>>
>>       // Allow display/hide toolbar
>>       private static final boolean DISPLAY_TOOLBAR =
>> @@ -491,6 +496,7 @@ public class MainFrame extends JFrame im
>>
>>           setTitle(DEFAULT_TITLE);
>>           setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());// $NON-NLS-1$
>> +        setWindowTitle(); // define AWT WM_CLASS string
>>       }
>>
>>
>> @@ -776,4 +782,22 @@ public class MainFrame extends JFrame im
>>               ActionRouter.getInstance().doActionNow(new ActionEvent(event.getSource(),
event.getID(), ActionNames.LOGGER_PANEL_ENABLE_DISABLE));
>>           }
>>       }
>> +
>> +    /**
>> +     * Define AWT window title (WM_CLASS string) (useful on Gnome 3 / Linux)
>> +     */
>> +    private void setWindowTitle() {
>> +        Class<?>  xtoolkit = Toolkit.getDefaultToolkit().getClass();
>> +        if (xtoolkit.getName().equals("sun.awt.X11.XToolkit")) { // $NON-NLS-1$
>> +            try {
>> +                final Field awtAppClassName = xtoolkit.getDeclaredField("awtAppClassName");
// $NON-NLS-1$
>> +                awtAppClassName.setAccessible(true);
>> +                awtAppClassName.set(null, DEFAULT_APP_NAME);
> Do we need to call
>
> awtAppClassName.setAccessible(false);
>
> to reset the state?

Yes to permit to set the app name (not work without)

>
> Or perhaps fetch isAccessible() and use that to decide whether to call
> setAccessible twice or not at all.

On my computer (Debian testing), isAccessible is always false.
I thinks that is not necessary to add a if statement on isAccessible 
condition.

>
>> +            } catch (NoSuchFieldException nsfe) {
>> +                log.warn("Error awt title: " + nsfe); // $NON-NLS-1$
>> +            } catch (IllegalAccessException iae) {
>> +                log.warn("Error awt title: " + iae); // $NON-NLS-1$
>> +            }
> Are there any other possible errors that can occur?
> e.g. SecurityException ?

The conditions to raise a SecurityException seems not meet in this case
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)
But, I can modify the catch blocks with a unique catch block "Exception" 
(or add a new block "SecurityException")

>
> If this fix is only needed on some hosts, perhaps check the host type?
> Or is the toolkit class name a sufficient indicator?

Yes I think.
On my Windows 7, JMeter don't enter in the If getName statement/

> i.e. do all installations with that classname need the patch?

Yes, I suppose for all Linux/Unix with X11 and a window manager like 
Gnome 3 or Unity (Ubuntu)

Milamber


>
>> +       }
>> +    }
>>   }
>> \ No newline at end of file
>>
>>


Mime
View raw message