Hi Sergey, Please review webrev with changes as per the inputs provided: cr.openjdk.java.net/~aniyogi/8146321/webrev.06/ <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.06/>
With Regards, Avik Niyogi > On 08-Feb-2016, at 2:29 am, Sergey Bylokhov <sergey.bylok...@oracle.com> > wrote: > > Both updated methods have a typo, 0 will be returned if > frame.getFrameIcon()==null: > > protected int getIconWidth(final JInternalFrame frame) { > int width = 0; > > Icon icon = frame.getFrameIcon(); > if (icon == null) { > icon = UIManager.getIcon("InternalFrame.icon"); > } > else { > width = Math.min(icon.getIconWidth(), sMaxIconWidth); > } > > return width; > } > > protected int getIconHeight(final JInternalFrame frame) { > int height = 0; > > Icon icon = frame.getFrameIcon(); > if (icon == null) { > icon = UIManager.getIcon("InternalFrame.icon"); > } > else{ > height = Math.min(icon.getIconHeight(), sMaxIconHeight); > } > > return height; > } > > Note that getIconWidth/getIconHeight should return width/height of the icon, > but this is not true anymore, because paintTitleIcon() now use the aspect > ratio, which can produce the different Width/Height for the same icon. > > > On 04.02.16 12:26, Alexandr Scherbatiy wrote: >> >> The fix looks good to me. >> >> Thanks, >> Alexandr. >> >> On 2/3/2016 8:51 PM, Avik Niyogi wrote: >>> Hi All, >>> Please review the code changes made as per the inputs provided: >>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.05/ >>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.05/> >>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.05/ >>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.05/>> >>> >>> With Regards, >>> Avik Niyogi >>> >>>> On 03-Feb-2016, at 7:38 pm, Alexandr Scherbatiy >>>> <alexandr.scherba...@oracle.com <mailto:alexandr.scherba...@oracle.com> >>>> <mailto:alexandr.scherba...@oracle.com >>>> <mailto:alexandr.scherba...@oracle.com>>> wrote: >>>> >>>> On 2/3/2016 12:47 AM, Avik Niyogi wrote: >>>>> Hi All, >>>>> Please review the code changes made as per the inputs provided: >>>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.04 >>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.04> >>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.04 >>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.04>> >>>> 326 g2.translate(0, 0); >>>> The translation to the zero vector leaves the coordinate system the >>>> same. >>>> >>>> 327 float xScaleFactor = (float) sMaxIconWidth / >>>> icon.getIconWidth(); >>>> It is better to use double values because the graphics transform >>>> methods use them. >>>> >>>> 332 g2.scale(scaleFactorAspectRatio, >>>> scaleFactorAspectRatio); >>>> 333 g2.translate(x / scaleFactorAspectRatio, y / >>>> scaleFactorAspectRatio); >>>> Is it possible to use the translation first and the scale the >>>> second? I this case where no need to re-scale translation coordinates. >>>> >>>> Thanks, >>>> Alexandr. >>>> >>>>> >>>>> With Regards, >>>>> Avik Niyogi >>>>>> On 02-Feb-2016, at 5:55 pm, Alexandr Scherbatiy >>>>>> <<mailto:alexandr.scherba...@oracle.com >>>>>> <mailto:alexandr.scherba...@oracle.com>>alexandr.scherba...@oracle.com >>>>>> <mailto:alexandr.scherba...@oracle.com>> >>>>>> wrote: >>>>>> >>>>>> On 2/2/2016 3:41 AM, Avik Niyogi wrote: >>>>>>> Hi Alexander, >>>>>>> >>>>>>>> On 02-Feb-2016, at 3:44 pm, Alexandr Scherbatiy >>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>>>>> >>>>>>>> On 2/2/2016 1:50 AM, Avik Niyogi wrote: >>>>>>>>> Hi All, >>>>>>>>> Please review the code changes made as per the inputs provided: >>>>>>>>> cr.openjdk.java.net/~aniyogi/8146321/webrev.03 >>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.03> >>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.03 >>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.03>> >>>>>>>> >>>>>>>> - Will it work with custom implementation of the Icon interface >>>>>>>> which just draws an image? >>>>>>>> For example: >>>>>>>> ---------------------- >>>>>>>> public class DukeIcon implements Icon { >>>>>>>> >>>>>>>> private BufferedImage dukeImage; >>>>>>>> >>>>>>>> public DukeIcon() throws IOException { >>>>>>>> dukeImage = ImageIO.read(new File("<path to the duke >>>>>>>> image>")); >>>>>>>> } >>>>>>>> >>>>>>>> @Override >>>>>>>> public void paintIcon(Component c, Graphics g, int x, int y) { >>>>>>>> g.drawImage(dukeImage, x, y, c); >>>>>>>> } >>>>>>>> >>>>>>>> @Override >>>>>>>> public int getIconWidth() { >>>>>>>> return dukeImage.getWidth(); >>>>>>>> } >>>>>>>> >>>>>>>> @Override >>>>>>>> public int getIconHeight() { >>>>>>>> return dukeImage.getHeight(); >>>>>>>> } >>>>>>>> } >>>>>>> >>>>>>> This is a limitation for custom Icons because they will need to >>>>>>> use toe drawImage with appropriate implementation. >>>>>>> To fix that will be a major change and may need change in the >>>>>>> implementation of drawImage method. >>>>>> >>>>>> It looks like the code below from the fix doesn't work for the >>>>>> ImageIcon because x and y are now scaled. Is it possible to apply >>>>>> some other transformations (may be some translations) to the >>>>>> graphics to draw the image at the right position? >>>>>> --------------- >>>>>> 334 g2.scale((float) sMaxIconWidth / >>>>>> icon.getIconWidth(), >>>>>> 335 (float) sMaxIconWidth / >>>>>> icon.getIconHeight()); >>>>>> 336 icon.paintIcon(frame, g2, x, y); >>>>>> --------------- >>>>>>>> ---------------------- >>>>>>>> >>>>>>>> - "(icon != null && (icon instanceof Icon))" >>>>>>>> Could the check to null also be omitted here? >>>>>>>> In other words, are the "(icon != null && (icon instanceof >>>>>>>> Icon))" and "(icon instanceof Icon)" checks return the same result? >>>>>>>> >>>>>>> If we remove the check, the cases where custom ImageIcon have no >>>>>>> images will fail. >>>>>> >>>>>> The provided example should work with the check: "(icon >>>>>> instanceof Icon)" in the same way as with the check "(icon != null >>>>>> && (icon instanceof Icon))" because the used icon is not null and >>>>>> it implements Icon interface, should not it? >>>>>> >>>>>> Thanks, >>>>>> Alexandr. >>>>>> >>>>>>> Example: >>>>>>> >>>>>>> >>>>>>> import java.awt.*; >>>>>>> import javax.swing.*; >>>>>>> >>>>>>> public class JInternalFrameBug { >>>>>>> >>>>>>> public static void main(String[] args) { >>>>>>> SwingUtilities.invokeLater( >>>>>>> new Runnable() { >>>>>>> public void run() { >>>>>>> try { >>>>>>> UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel"); } >>>>>>> catch(Exception e) { >>>>>>> System.out.println("This is not a Mac."); >>>>>>> return; >>>>>>> } >>>>>>> JFrame f = new JFrame(); >>>>>>> f.setSize(500, 500); >>>>>>> JDesktopPane dtp = new JDesktopPane(); >>>>>>> JInternalFrame jif = new JInternalFrame(); >>>>>>> jif.setTitle("Test"); >>>>>>> jif.setFrameIcon( >>>>>>> new ImageIcon() { >>>>>>> public int getIconWidth() { >>>>>>> return 16; >>>>>>> } >>>>>>> public int getIconHeight() { >>>>>>> return 16; >>>>>>> } >>>>>>> public void paintIcon(Component c, Graphics g, int x, int y) { >>>>>>> g.setColor(java.awt.Color.green); >>>>>>> g.fillRect(x, y, 16, 16); >>>>>>> } >>>>>>> }); >>>>>>> jif.setSize(400, 400); >>>>>>> jif.setVisible(true); >>>>>>> dtp.add(jif); >>>>>>> >>>>>>> f.getContentPane().setLayout(new BorderLayout()); >>>>>>> f.getContentPane().add(dtp, "Center"); >>>>>>> f.setVisible(true); >>>>>>> } >>>>>>> }); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>>> Thanks, >>>>>>>> Alexandr. >>>>>>>> >>>>>>>>> >>>>>>>>> With Regards, >>>>>>>>> Avik Niyogi >>>>>>>>>> On 02-Feb-2016, at 3:02 pm, Alexandr Scherbatiy >>>>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>>>>>>> >>>>>>>>>> On 2/1/2016 11:25 PM, Avik Niyogi wrote: >>>>>>>>>>> Hi All, >>>>>>>>>>> Please review the code changes made as per inputs provided: >>>>>>>>>>> cr.openjdk.java.net/~aniyogi/8146321/webrev.02 >>>>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.02> >>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.02 >>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.02>> >>>>>>>>>> >>>>>>>>>> - is it possible to skip the ImageIcon parsing and handle it >>>>>>>>>> as others icons (may be applying some translation to the graphics)? >>>>>>>>>> - "(icon instanceof ImageIcon || icon instanceof Icon): >>>>>>>>>> ImageIcons is also Icon so the whole condition should be >>>>>>>>>> the same as just (icon instanceof Icon) >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Alexandr. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> With Regards, >>>>>>>>>>> Avik Niyogi >>>>>>>>>>>> On 20-Jan-2016, at 10:35 pm, Sergey Bylokhov >>>>>>>>>>>> <sergey.bylok...@oracle.com <mailto:sergey.bylok...@oracle.com>> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> On 20/01/16 18:43, Avik Niyogi wrote: >>>>>>>>>>>>> if ((icon.getIconWidth() > sMaxIconWidth >>>>>>>>>>>>> || icon.getIconHeight() > sMaxIconHeight)) { >>>>>>>>>>>>> final Graphics2D g2 = (Graphics2D) g; >>>>>>>>>>>>> final AffineTransform savedAT = g2.getTransform(); >>>>>>>>>>>>> g2.scale((float)sMaxIconWidth/icon.getIconWidth(), >>>>>>>>>>>>> (float)sMaxIconWidth/icon.getIconHeight()); >>>>>>>>>>>>> icon.paintIcon(frame, g2, x, y); >>>>>>>>>>>>> g2.setTransform(savedAT); >>>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> This code does not take into account that x,y whcih are >>>>>>>>>>>> passed to the paintIcon should be adjusted, because after the >>>>>>>>>>>> scale they contain incorrect starting points. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> then for a test code with the following: >>>>>>>>>>>>> >>>>>>>>>>>>> import java.awt.*; >>>>>>>>>>>>> import javax.swing.*; >>>>>>>>>>>>> >>>>>>>>>>>>> public class JInternalFrameBug { >>>>>>>>>>>>> >>>>>>>>>>>>> public static void main(String[] args) { >>>>>>>>>>>>> SwingUtilities.invokeLater( >>>>>>>>>>>>> new Runnable() { >>>>>>>>>>>>> public void run() { >>>>>>>>>>>>> try { >>>>>>>>>>>>> >>>>>>>>>>>>> UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel"); } >>>>>>>>>>>>> catch(Exception e) { >>>>>>>>>>>>> System.out.println("This is not a Mac."); >>>>>>>>>>>>> return; >>>>>>>>>>>>> } >>>>>>>>>>>>> JFrame f = new JFrame(); >>>>>>>>>>>>> f.setSize(400, 400); >>>>>>>>>>>>> JDesktopPane dtp = new JDesktopPane(); >>>>>>>>>>>>> JInternalFrame jif = new JInternalFrame(); >>>>>>>>>>>>> jif.setTitle("Test"); >>>>>>>>>>>>> jif.setFrameIcon(new >>>>>>>>>>>>> ImageIcon("/Users/avniyogi/Downloads/FeedbinNotifier-master/FeedbinNotifier/Images.xcassets/AppIcon.appiconset/icon_128x...@2x.png")); >>>>>>>>>>>>> jif.setSize(200, 200); >>>>>>>>>>>>> jif.setVisible(true); >>>>>>>>>>>>> dtp.add(jif); >>>>>>>>>>>>> >>>>>>>>>>>>> f.getContentPane().setLayout(new >>>>>>>>>>>>> BorderLayout()); >>>>>>>>>>>>> f.getContentPane().add(dtp, "Center"); >>>>>>>>>>>>> f.setVisible(true); >>>>>>>>>>>>> } >>>>>>>>>>>>> }); >>>>>>>>>>>>> } >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> results in this: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> On 20-Jan-2016, at 4:42 pm, Alexander Scherbatiy >>>>>>>>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com> >>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com >>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 1/20/2016 7:59 AM, Avik Niyogi wrote: >>>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>>> A gentle reminder, please review my code changes as in the >>>>>>>>>>>>>>> webrev >>>>>>>>>>>>>>> below in the mail trail. >>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>> On 18-Jan-2016, at 3:01 pm, Avik Niyogi >>>>>>>>>>>>>>>> <avik.niy...@oracle.com <mailto:avik.niy...@oracle.com> >>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com <mailto:avik.niy...@oracle.com>> >>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 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/> >>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.01/ >>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.01/>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> The idea was to scale the graphics that the drawn icon >>>>>>>>>>>>>> fits to the >>>>>>>>>>>>>> target sizes. >>>>>>>>>>>>>> Something like: >>>>>>>>>>>>>> -------- >>>>>>>>>>>>>> g2d.scale(targetIconWidth/icon.getWidth(), >>>>>>>>>>>>>> targetIconHeight/icon.getHeight()); >>>>>>>>>>>>>> icon.paintIcon(frame, g2d, x, y); >>>>>>>>>>>>>> --------- >>>>>>>>>>>>>> >>>>>>>>>>>>>> This should work not only for ImageIcon but for any type >>>>>>>>>>>>>> of icons. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Alexandr. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On 14-Jan-2016, at 12:55 pm, Avik Niyogi >>>>>>>>>>>>>>>>> <avik.niy...@oracle.com <mailto:avik.niy...@oracle.com> >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>> >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>> <mailto: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> >>>>>>>>>>>>>>>>>> <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 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> *Webrev:* >>>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.00/ >>>>>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/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. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Best regards, Sergey. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > > > -- > Best regards, Sergey.