< prev index next >

src/java.desktop/macosx/classes/sun/lwawt/macosx/CTrayIcon.java

Print this page




 191         if (image != null) {
 192             updateNativeImage(image);
 193         }
 194     }
 195 
 196     void updateNativeImage(Image image) {
 197         MediaTracker tracker = new MediaTracker(new Button(""));
 198         tracker.addImage(image, 0);
 199         try {
 200             tracker.waitForAll();
 201         } catch (InterruptedException ignore) { }
 202 
 203         if (image.getWidth(null) <= 0 ||
 204             image.getHeight(null) <= 0)
 205         {
 206             return;
 207         }
 208 
 209         CImage cimage = CImage.getCreator().createFromImage(image, observer);
 210         boolean imageAutoSize = target.isImageAutoSize();

 211         cimage.execute(imagePtr -> {
 212             execute(ptr -> {
 213                 setNativeImage(ptr, imagePtr, imageAutoSize);
 214             });
 215         });
 216     }

 217 
 218     private native void setNativeImage(final long model, final long nsimage, final boolean autosize);
 219 
 220     private void postEvent(final AWTEvent event) {
 221         SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
 222             public void run() {
 223                 SunToolkit.postEvent(SunToolkit.targetToAppContext(target), event);
 224             }
 225         });
 226     }
 227 
 228     //invocation from the AWTTrayIcon.m
 229     private void handleMouseEvent(NSEvent nsEvent) {
 230         int buttonNumber = nsEvent.getButtonNumber();
 231         final SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
 232         if ((buttonNumber > 2 && !tk.areExtraMouseButtonsEnabled())
 233                 || buttonNumber > tk.getNumberOfButtons() - 1) {
 234             return;
 235         }
 236 


 340     }
 341 
 342 
 343     /**
 344      * Gets Aqua icon used in message dialog.
 345      */
 346     private static Icon getIconForMessageType(String messageType) {
 347         if (messageType.equals("ERROR")) {
 348             return UIManager.getIcon("OptionPane.errorIcon");
 349         } else if (messageType.equals("WARNING")) {
 350             return UIManager.getIcon("OptionPane.warningIcon");
 351         } else {
 352             // this is just an application icon
 353             return UIManager.getIcon("OptionPane.informationIcon");
 354         }
 355     }
 356 
 357     class IconObserver implements ImageObserver {
 358         @Override
 359         public boolean imageUpdate(Image image, int flags, int x, int y, int width, int height) {
 360             if (image != target.getImage()) // if the image has been changed
 361             {
 362                 return false;
 363             }
 364             if ((flags & (ImageObserver.FRAMEBITS | ImageObserver.ALLBITS |
 365                           ImageObserver.WIDTH | ImageObserver.HEIGHT)) != 0)
 366             {
 367                 SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
 368                             public void run() {
 369                                 updateNativeImage(image);
 370                             }
 371                         });
 372             }
 373             return (flags & ImageObserver.ALLBITS) == 0;
 374         }
 375     }
 376 }
 377 


 191         if (image != null) {
 192             updateNativeImage(image);
 193         }
 194     }
 195 
 196     void updateNativeImage(Image image) {
 197         MediaTracker tracker = new MediaTracker(new Button(""));
 198         tracker.addImage(image, 0);
 199         try {
 200             tracker.waitForAll();
 201         } catch (InterruptedException ignore) { }
 202 
 203         if (image.getWidth(null) <= 0 ||
 204             image.getHeight(null) <= 0)
 205         {
 206             return;
 207         }
 208 
 209         CImage cimage = CImage.getCreator().createFromImage(image, observer);
 210         boolean imageAutoSize = target.isImageAutoSize();
 211         if (cimage != null) {
 212             cimage.execute(imagePtr -> {
 213                 execute(ptr -> {
 214                     setNativeImage(ptr, imagePtr, imageAutoSize);
 215                 });
 216             });
 217         }
 218     }
 219 
 220     private native void setNativeImage(final long model, final long nsimage, final boolean autosize);
 221 
 222     private void postEvent(final AWTEvent event) {
 223         SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
 224             public void run() {
 225                 SunToolkit.postEvent(SunToolkit.targetToAppContext(target), event);
 226             }
 227         });
 228     }
 229 
 230     //invocation from the AWTTrayIcon.m
 231     private void handleMouseEvent(NSEvent nsEvent) {
 232         int buttonNumber = nsEvent.getButtonNumber();
 233         final SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
 234         if ((buttonNumber > 2 && !tk.areExtraMouseButtonsEnabled())
 235                 || buttonNumber > tk.getNumberOfButtons() - 1) {
 236             return;
 237         }
 238 


 342     }
 343 
 344 
 345     /**
 346      * Gets Aqua icon used in message dialog.
 347      */
 348     private static Icon getIconForMessageType(String messageType) {
 349         if (messageType.equals("ERROR")) {
 350             return UIManager.getIcon("OptionPane.errorIcon");
 351         } else if (messageType.equals("WARNING")) {
 352             return UIManager.getIcon("OptionPane.warningIcon");
 353         } else {
 354             // this is just an application icon
 355             return UIManager.getIcon("OptionPane.informationIcon");
 356         }
 357     }
 358 
 359     class IconObserver implements ImageObserver {
 360         @Override
 361         public boolean imageUpdate(Image image, int flags, int x, int y, int width, int height) {
 362             if (target == null || image != target.getImage()) //if the image has been changed
 363             {
 364                 return false;
 365             }
 366             if ((flags & (ImageObserver.FRAMEBITS | ImageObserver.ALLBITS |
 367                           ImageObserver.WIDTH | ImageObserver.HEIGHT)) != 0)
 368             {
 369                 SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
 370                             public void run() {
 371                                 updateNativeImage(image);
 372                             }
 373                         });
 374             }
 375             return (flags & ImageObserver.ALLBITS) == 0;
 376         }
 377     }
 378 }
 379 
< prev index next >