< prev index next >

modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassSystemMenu.java

Print this page




  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.javafx.tk.quantum;
  27 
  28 import com.sun.javafx.menu.CheckMenuItemBase;
  29 import com.sun.javafx.menu.MenuBase;
  30 import com.sun.javafx.menu.MenuItemBase;
  31 import com.sun.javafx.menu.RadioMenuItemBase;
  32 import com.sun.javafx.menu.SeparatorMenuItemBase;
  33 import com.sun.javafx.PlatformUtil;
  34 import com.sun.javafx.tk.TKSystemMenu;
  35 import com.sun.glass.events.KeyEvent;
  36 import com.sun.glass.ui.Application;
  37 import com.sun.glass.ui.Menu;
  38 import com.sun.glass.ui.MenuBar;
  39 import com.sun.glass.ui.MenuItem;
  40 import com.sun.glass.ui.Pixels;

  41 
  42 import java.util.List;
  43 
  44 import javafx.collections.ListChangeListener;
  45 import javafx.collections.ObservableList;
  46 import javafx.beans.InvalidationListener;
  47 import javafx.scene.image.Image;
  48 import javafx.scene.image.ImageView;
  49 import javafx.scene.input.KeyCode;
  50 import javafx.scene.input.KeyCombination;
  51 import javafx.scene.input.KeyCharacterCombination;
  52 import javafx.scene.input.KeyCodeCombination;
  53 
  54 class GlassSystemMenu implements TKSystemMenu {
  55 
  56     private List<MenuBase>      systemMenus = null;
  57     private MenuBar             glassSystemMenuBar = null;
  58 
  59     private InvalidationListener visibilityListener = valueModel -> {
  60         if (systemMenus != null) {


 280             // don't pass null strings to Glass
 281             return "";
 282         } else if (!text.isEmpty() && menuItem.isMnemonicParsing()) {
 283             // \ufffc is a placeholder character
 284             //return text.replace("__", "\ufffc").replace("_", "").replace("\ufffc", "_");
 285             return text.replaceFirst("_([^_])", "$1");
 286         } else {
 287             return text;
 288         }
 289     }
 290 
 291     private Pixels getPixels(MenuItemBase menuItem) {
 292         if (menuItem.getGraphic() instanceof ImageView) {
 293             ImageView iv = (ImageView)menuItem.getGraphic();
 294             Image     im = iv.getImage();
 295             if (im == null) return null;
 296 
 297             String    url          = im.getUrl();
 298 
 299             if (url == null || PixelUtils.supportedFormatType(url)) {
 300                 com.sun.prism.Image pi = (com.sun.prism.Image)im.impl_getPlatformImage();
 301 
 302                 return pi == null ? null : PixelUtils.imageToPixels(pi);
 303             }
 304         }
 305         return (null);
 306     }
 307 
 308     private void setShortcut(MenuItem glassSubMenuItem, MenuItemBase menuItem) {
 309         final KeyCombination accelerator = menuItem.getAccelerator();
 310         if (accelerator == null) {
 311             glassSubMenuItem.setShortcut(0, 0);
 312         } else if (accelerator instanceof KeyCodeCombination) {
 313             KeyCodeCombination kcc  = (KeyCodeCombination)accelerator;
 314             KeyCode            code = kcc.getCode();
 315             assert PlatformUtil.isMac() || PlatformUtil.isLinux();
 316             int modifier = glassModifiers(kcc);
 317             if (PlatformUtil.isMac()) {
 318                 int finalCode = code.isLetterKey() ? code.getChar().toUpperCase().charAt(0)
 319                         : code.getCode();
 320                 glassSubMenuItem.setShortcut(finalCode, modifier);




  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.javafx.tk.quantum;
  27 
  28 import com.sun.javafx.menu.CheckMenuItemBase;
  29 import com.sun.javafx.menu.MenuBase;
  30 import com.sun.javafx.menu.MenuItemBase;
  31 import com.sun.javafx.menu.RadioMenuItemBase;
  32 import com.sun.javafx.menu.SeparatorMenuItemBase;
  33 import com.sun.javafx.PlatformUtil;
  34 import com.sun.javafx.tk.TKSystemMenu;
  35 import com.sun.glass.events.KeyEvent;
  36 import com.sun.glass.ui.Application;
  37 import com.sun.glass.ui.Menu;
  38 import com.sun.glass.ui.MenuBar;
  39 import com.sun.glass.ui.MenuItem;
  40 import com.sun.glass.ui.Pixels;
  41 import com.sun.javafx.tk.Toolkit;
  42 
  43 import java.util.List;
  44 
  45 import javafx.collections.ListChangeListener;
  46 import javafx.collections.ObservableList;
  47 import javafx.beans.InvalidationListener;
  48 import javafx.scene.image.Image;
  49 import javafx.scene.image.ImageView;
  50 import javafx.scene.input.KeyCode;
  51 import javafx.scene.input.KeyCombination;
  52 import javafx.scene.input.KeyCharacterCombination;
  53 import javafx.scene.input.KeyCodeCombination;
  54 
  55 class GlassSystemMenu implements TKSystemMenu {
  56 
  57     private List<MenuBase>      systemMenus = null;
  58     private MenuBar             glassSystemMenuBar = null;
  59 
  60     private InvalidationListener visibilityListener = valueModel -> {
  61         if (systemMenus != null) {


 281             // don't pass null strings to Glass
 282             return "";
 283         } else if (!text.isEmpty() && menuItem.isMnemonicParsing()) {
 284             // \ufffc is a placeholder character
 285             //return text.replace("__", "\ufffc").replace("_", "").replace("\ufffc", "_");
 286             return text.replaceFirst("_([^_])", "$1");
 287         } else {
 288             return text;
 289         }
 290     }
 291 
 292     private Pixels getPixels(MenuItemBase menuItem) {
 293         if (menuItem.getGraphic() instanceof ImageView) {
 294             ImageView iv = (ImageView)menuItem.getGraphic();
 295             Image     im = iv.getImage();
 296             if (im == null) return null;
 297 
 298             String    url          = im.getUrl();
 299 
 300             if (url == null || PixelUtils.supportedFormatType(url)) {
 301                 com.sun.prism.Image pi = (com.sun.prism.Image) Toolkit.getImageAccessor().getPlatformImage(im);
 302 
 303                 return pi == null ? null : PixelUtils.imageToPixels(pi);
 304             }
 305         }
 306         return (null);
 307     }
 308 
 309     private void setShortcut(MenuItem glassSubMenuItem, MenuItemBase menuItem) {
 310         final KeyCombination accelerator = menuItem.getAccelerator();
 311         if (accelerator == null) {
 312             glassSubMenuItem.setShortcut(0, 0);
 313         } else if (accelerator instanceof KeyCodeCombination) {
 314             KeyCodeCombination kcc  = (KeyCodeCombination)accelerator;
 315             KeyCode            code = kcc.getCode();
 316             assert PlatformUtil.isMac() || PlatformUtil.isLinux();
 317             int modifier = glassModifiers(kcc);
 318             if (PlatformUtil.isMac()) {
 319                 int finalCode = code.isLetterKey() ? code.getChar().toUpperCase().charAt(0)
 320                         : code.getCode();
 321                 glassSubMenuItem.setShortcut(finalCode, modifier);


< prev index next >