home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicPopupMenuUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.7 KB  |  202 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Window;
  7. import java.awt.event.InputEvent;
  8. import java.awt.event.MouseEvent;
  9. import java.beans.PropertyChangeListener;
  10. import javax.swing.ActionMap;
  11. import javax.swing.InputMap;
  12. import javax.swing.JComponent;
  13. import javax.swing.JPopupMenu;
  14. import javax.swing.LookAndFeel;
  15. import javax.swing.MenuElement;
  16. import javax.swing.SwingUtilities;
  17. import javax.swing.UIManager;
  18. import javax.swing.plaf.ActionMapUIResource;
  19. import javax.swing.plaf.ComponentUI;
  20. import javax.swing.plaf.PopupMenuUI;
  21. import javax.swing.plaf.UIResource;
  22.  
  23. public class BasicPopupMenuUI extends PopupMenuUI {
  24.    protected JPopupMenu popupMenu = null;
  25.    private static PropertyChangeListener changeHandler;
  26.    private Component prevFocusOwner;
  27.    private InputMap windowInputMap;
  28.    private static transient MouseGrabber mouseGrabber = null;
  29.  
  30.    public static ComponentUI createUI(JComponent var0) {
  31.       return new BasicPopupMenuUI();
  32.    }
  33.  
  34.    public void installUI(JComponent var1) {
  35.       this.popupMenu = (JPopupMenu)var1;
  36.       this.installDefaults();
  37.       this.installListeners();
  38.       this.installKeyboardActions();
  39.    }
  40.  
  41.    public void installDefaults() {
  42.       if (this.popupMenu.getLayout() == null || this.popupMenu.getLayout() instanceof UIResource) {
  43.          this.popupMenu.setLayout(new DefaultMenuLayout(this.popupMenu, 1));
  44.       }
  45.  
  46.       this.popupMenu.setOpaque(true);
  47.       LookAndFeel.installBorder(this.popupMenu, "PopupMenu.border");
  48.       LookAndFeel.installColorsAndFont(this.popupMenu, "PopupMenu.background", "PopupMenu.foreground", "PopupMenu.font");
  49.    }
  50.  
  51.    protected void installListeners() {
  52.       if (mouseGrabber == null) {
  53.          mouseGrabber = new MouseGrabber();
  54.       }
  55.  
  56.       if (changeHandler == null) {
  57.          changeHandler = new PropertyChangeHandler((1)null);
  58.       }
  59.  
  60.       this.popupMenu.addPropertyChangeListener(changeHandler);
  61.    }
  62.  
  63.    protected void installKeyboardActions() {
  64.       ActionMap var1 = this.getActionMap();
  65.       SwingUtilities.replaceUIActionMap(this.popupMenu, var1);
  66.       Object[] var2 = UIManager.get("PopupMenu.selectedWindowInputMapBindings");
  67.       if (var2 != null) {
  68.          this.windowInputMap = LookAndFeel.makeComponentInputMap(this.popupMenu, var2);
  69.          SwingUtilities.replaceUIInputMap(this.popupMenu, 2, this.windowInputMap);
  70.       }
  71.  
  72.    }
  73.  
  74.    ActionMap getActionMap() {
  75.       ActionMap var1 = (ActionMap)UIManager.get("PopupMenu.actionMap");
  76.       if (var1 == null) {
  77.          var1 = this.createActionMap();
  78.          if (var1 != null) {
  79.             UIManager.getLookAndFeelDefaults().put("PopupMenu.actionMap", var1);
  80.          }
  81.       }
  82.  
  83.       return var1;
  84.    }
  85.  
  86.    ActionMap createActionMap() {
  87.       ActionMapUIResource var1 = new ActionMapUIResource();
  88.       ((ActionMap)var1).put("cancel", new CancelAction((1)null));
  89.       ((ActionMap)var1).put("selectNext", new SelectNextItemAction((1)null));
  90.       ((ActionMap)var1).put("selectPrevious", new SelectPreviousItemAction((1)null));
  91.       ((ActionMap)var1).put("selectParent", new SelectParentItemAction((1)null));
  92.       ((ActionMap)var1).put("selectChild", new SelectChildItemAction((1)null));
  93.       ((ActionMap)var1).put("return", new ReturnAction(this, (1)null));
  94.       return var1;
  95.    }
  96.  
  97.    public void uninstallUI(JComponent var1) {
  98.       this.uninstallDefaults();
  99.       this.uninstallListeners();
  100.       this.uninstallKeyboardActions();
  101.       this.popupMenu = null;
  102.    }
  103.  
  104.    protected void uninstallDefaults() {
  105.       LookAndFeel.uninstallBorder(this.popupMenu);
  106.    }
  107.  
  108.    protected void uninstallListeners() {
  109.       if (changeHandler != null) {
  110.          this.popupMenu.removePropertyChangeListener(changeHandler);
  111.       }
  112.  
  113.    }
  114.  
  115.    protected void uninstallKeyboardActions() {
  116.       SwingUtilities.replaceUIActionMap(this.popupMenu, (ActionMap)null);
  117.       SwingUtilities.replaceUIInputMap(this.popupMenu, 2, (InputMap)null);
  118.    }
  119.  
  120.    public Dimension getMinimumSize(JComponent var1) {
  121.       return this.getPreferredSize(var1);
  122.    }
  123.  
  124.    public Dimension getPreferredSize(JComponent var1) {
  125.       return null;
  126.    }
  127.  
  128.    public Dimension getMaximumSize(JComponent var1) {
  129.       return this.getPreferredSize(var1);
  130.    }
  131.  
  132.    private static Window getWindow(Component var0) {
  133.       Object var1;
  134.       for(var1 = var0; !(var1 instanceof Window) && var1 != null; var1 = ((Component)var1).getParent()) {
  135.       }
  136.  
  137.       return (Window)var1;
  138.    }
  139.  
  140.    public boolean isPopupTrigger(MouseEvent var1) {
  141.       return ((AWTEvent)var1).getID() == 502 && (((InputEvent)var1).getModifiers() & 4) != 0;
  142.    }
  143.  
  144.    private static MenuElement nextEnabledChild(MenuElement[] var0, int var1) {
  145.       int var2 = var1;
  146.  
  147.       for(int var3 = var0.length; var2 < var3; ++var2) {
  148.          if (var0[var2] != null) {
  149.             Component var4 = var0[var2].getComponent();
  150.             if (var4 != null && var4.isEnabled()) {
  151.                return var0[var2];
  152.             }
  153.          }
  154.       }
  155.  
  156.       return null;
  157.    }
  158.  
  159.    private static MenuElement previousEnabledChild(MenuElement[] var0, int var1) {
  160.       for(int var2 = var1; var2 >= 0; --var2) {
  161.          if (var0[var2] != null) {
  162.             Component var3 = var0[var2].getComponent();
  163.             if (var3 != null && var3.isEnabled()) {
  164.                return var0[var2];
  165.             }
  166.          }
  167.       }
  168.  
  169.       return null;
  170.    }
  171.  
  172.    // $FF: synthetic method
  173.    static InputMap access$700(BasicPopupMenuUI var0) {
  174.       return var0.windowInputMap;
  175.    }
  176.  
  177.    // $FF: synthetic method
  178.    static Component access$802(BasicPopupMenuUI var0, Component var1) {
  179.       return var0.prevFocusOwner = var1;
  180.    }
  181.  
  182.    // $FF: synthetic method
  183.    static Component access$800(BasicPopupMenuUI var0) {
  184.       return var0.prevFocusOwner;
  185.    }
  186.  
  187.    // $FF: synthetic method
  188.    static Window access$900(Component var0) {
  189.       return getWindow(var0);
  190.    }
  191.  
  192.    // $FF: synthetic method
  193.    static MenuElement access$1000(MenuElement[] var0, int var1) {
  194.       return nextEnabledChild(var0, var1);
  195.    }
  196.  
  197.    // $FF: synthetic method
  198.    static MenuElement access$1100(MenuElement[] var0, int var1) {
  199.       return previousEnabledChild(var0, var1);
  200.    }
  201. }
  202.