Hi Sergey,

Please review the webrev taking inputs as per the discussion before:
http://cr.openjdk.java.net/~aniyogi/8146321/webrev.01/ 
<http://cr.openjdk.java.net/~aniyogi/8146321/webrev.01/>

With Regards,
Avik Niyogi

> On 14-Jan-2016, at 12:55 pm, Avik Niyogi <avik.niy...@oracle.com> wrote:
> 
> Hi Sergey,
> I have verified it with the test case as well. If a test case overrides these 
> methods to imply a change with icons larger than 16x16 it will show that for 
> ImageIcon and Icon as before. The resize of ImageIcon is only in case it has 
> an image file that it will try to fit. I had a similar query myself and have 
> found out that getImage() exists for ImageIcon class only and not Icon class.
> Example:
> private static void createImageIconUI(final String lookAndFeelString)
>             throws Exception {
>         SwingUtilities.invokeAndWait(new Runnable() {
>             @Override
>             public void run() {
>                 desktopPane = new JDesktopPane();
>                 internalFrame = new JInternalFrame();
>                 frame = new JFrame();
>                 internalFrame.setTitle(lookAndFeelString);
>                 titleImageIcon = new ImageIcon() {
>                     @Override
>                     public int getIconWidth() {
>                         return 16;
>                     }
> 
>                     @Override
>                     public int getIconHeight() {
>                         return 16;
>                     }
> 
>                     @Override
>                     public void paintIcon(
>                             Component c, Graphics g, int x, int y) {
>                         g.setColor(java.awt.Color.black);
>                         g.fillRect(x, y, 50, 50);
>                     }
>                 };
>                 internalFrame.setFrameIcon(titleImageIcon);
>                 internalFrame.setSize(500, 200);
>                 internalFrame.setVisible(true);
>                 desktopPane.add(internalFrame);
> 
>                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>                 frame.getContentPane().setLayout(new BorderLayout());
>                 frame.getContentPane().add(desktopPane, "Center");
>                 frame.setSize(500, 500);
>                 frame.setLocationRelativeTo(null);
>                 frame.setVisible(true);
>                 frame.toFront();
>             }
>         });
>     }
> In this case the ImageIcon will NOT be resized to 16 x 16 even before my fix 
> was implemented. That resize as shown in code is only for Image files to fit 
> in default ImageIcon size as returned from the getIconHeight() and 
> getIconWidth() methods. If user changes the ImageIcon size as in the example, 
> that is upto to user to choose to do so and no control exists to prevent 
> that. So, with or without my fix, this behaviour will be same for ImageIcon 
> and Icon custom instances.
> Hope this clarifies the query. 
> 
> With Regards,
> Avik Niyogi
> 
>> On 14-Jan-2016, at 11:36 am, Sergey Bylokhov <sergey.bylok...@oracle.com 
>> <mailto:sergey.bylok...@oracle.com>> wrote:
>> 
>> Hi, Avik.
>> In the fix you update getIconWidth() and getIconHeight, so now we take the 
>> Icon into account. but it seems if the Icon is bigger that the maximum size 
>> it will not be resided to 16x16, right?
>> 
>> On 14/01/16 07:49, Avik Niyogi wrote:
>>> Hi All,
>>> 
>>> Kindly review the bug fix for JDK 9.
>>> 
>>> *Bug:*
>>> https://bugs.openjdk.java.net/browse/JDK-8146321 
>>> <https://bugs.openjdk.java.net/browse/JDK-8146321>
>>> 
>>> *Webrev:*
>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.00/
>>> 
>>> *Issue:*
>>> Under the Mac Look&Feel, if an icon type other than an ImageIcon is used
>>> in JInternalFrame.setFrameIcon(),
>>> the icon will show up in the wrong position.
>>> 
>>> *Cause:*
>>> the "instanceof Icon" was not checked for. Also, customs ImageIcon with
>>> color fill (and no image URL) which would
>>> have resulted in null value for resized ImageIcon image was not well
>>> handled.
>>> 
>>> *Fix:*
>>> All places in Aqua LAF where "instanceof Icon” (and not just ImageIcon
>>> class) is required,
>>> inputs were added after significant analyses.
>>> Check for null for getImage was done to remove a Null Pointer Exception.
>>> 
>>> With Regards,
>>> Avik Niyogi
>> 
>> 
>> -- 
>> Best regards, Sergey.
> 

Reply via email to