home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Window;
- import java.awt.event.InputEvent;
- import java.awt.event.MouseEvent;
- import java.beans.PropertyChangeListener;
- import javax.swing.ActionMap;
- import javax.swing.InputMap;
- import javax.swing.JComponent;
- import javax.swing.JPopupMenu;
- import javax.swing.LookAndFeel;
- import javax.swing.MenuElement;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.plaf.ActionMapUIResource;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.PopupMenuUI;
- import javax.swing.plaf.UIResource;
-
- public class BasicPopupMenuUI extends PopupMenuUI {
- protected JPopupMenu popupMenu = null;
- private static PropertyChangeListener changeHandler;
- private Component prevFocusOwner;
- private InputMap windowInputMap;
- private static transient MouseGrabber mouseGrabber = null;
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicPopupMenuUI();
- }
-
- public void installUI(JComponent var1) {
- this.popupMenu = (JPopupMenu)var1;
- this.installDefaults();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- public void installDefaults() {
- if (this.popupMenu.getLayout() == null || this.popupMenu.getLayout() instanceof UIResource) {
- this.popupMenu.setLayout(new DefaultMenuLayout(this.popupMenu, 1));
- }
-
- this.popupMenu.setOpaque(true);
- LookAndFeel.installBorder(this.popupMenu, "PopupMenu.border");
- LookAndFeel.installColorsAndFont(this.popupMenu, "PopupMenu.background", "PopupMenu.foreground", "PopupMenu.font");
- }
-
- protected void installListeners() {
- if (mouseGrabber == null) {
- mouseGrabber = new MouseGrabber();
- }
-
- if (changeHandler == null) {
- changeHandler = new PropertyChangeHandler((1)null);
- }
-
- this.popupMenu.addPropertyChangeListener(changeHandler);
- }
-
- protected void installKeyboardActions() {
- ActionMap var1 = this.getActionMap();
- SwingUtilities.replaceUIActionMap(this.popupMenu, var1);
- Object[] var2 = UIManager.get("PopupMenu.selectedWindowInputMapBindings");
- if (var2 != null) {
- this.windowInputMap = LookAndFeel.makeComponentInputMap(this.popupMenu, var2);
- SwingUtilities.replaceUIInputMap(this.popupMenu, 2, this.windowInputMap);
- }
-
- }
-
- ActionMap getActionMap() {
- ActionMap var1 = (ActionMap)UIManager.get("PopupMenu.actionMap");
- if (var1 == null) {
- var1 = this.createActionMap();
- if (var1 != null) {
- UIManager.getLookAndFeelDefaults().put("PopupMenu.actionMap", var1);
- }
- }
-
- return var1;
- }
-
- ActionMap createActionMap() {
- ActionMapUIResource var1 = new ActionMapUIResource();
- ((ActionMap)var1).put("cancel", new CancelAction((1)null));
- ((ActionMap)var1).put("selectNext", new SelectNextItemAction((1)null));
- ((ActionMap)var1).put("selectPrevious", new SelectPreviousItemAction((1)null));
- ((ActionMap)var1).put("selectParent", new SelectParentItemAction((1)null));
- ((ActionMap)var1).put("selectChild", new SelectChildItemAction((1)null));
- ((ActionMap)var1).put("return", new ReturnAction(this, (1)null));
- return var1;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.popupMenu = null;
- }
-
- protected void uninstallDefaults() {
- LookAndFeel.uninstallBorder(this.popupMenu);
- }
-
- protected void uninstallListeners() {
- if (changeHandler != null) {
- this.popupMenu.removePropertyChangeListener(changeHandler);
- }
-
- }
-
- protected void uninstallKeyboardActions() {
- SwingUtilities.replaceUIActionMap(this.popupMenu, (ActionMap)null);
- SwingUtilities.replaceUIInputMap(this.popupMenu, 2, (InputMap)null);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return null;
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- private static Window getWindow(Component var0) {
- Object var1;
- for(var1 = var0; !(var1 instanceof Window) && var1 != null; var1 = ((Component)var1).getParent()) {
- }
-
- return (Window)var1;
- }
-
- public boolean isPopupTrigger(MouseEvent var1) {
- return ((AWTEvent)var1).getID() == 502 && (((InputEvent)var1).getModifiers() & 4) != 0;
- }
-
- private static MenuElement nextEnabledChild(MenuElement[] var0, int var1) {
- int var2 = var1;
-
- for(int var3 = var0.length; var2 < var3; ++var2) {
- if (var0[var2] != null) {
- Component var4 = var0[var2].getComponent();
- if (var4 != null && var4.isEnabled()) {
- return var0[var2];
- }
- }
- }
-
- return null;
- }
-
- private static MenuElement previousEnabledChild(MenuElement[] var0, int var1) {
- for(int var2 = var1; var2 >= 0; --var2) {
- if (var0[var2] != null) {
- Component var3 = var0[var2].getComponent();
- if (var3 != null && var3.isEnabled()) {
- return var0[var2];
- }
- }
- }
-
- return null;
- }
-
- // $FF: synthetic method
- static InputMap access$700(BasicPopupMenuUI var0) {
- return var0.windowInputMap;
- }
-
- // $FF: synthetic method
- static Component access$802(BasicPopupMenuUI var0, Component var1) {
- return var0.prevFocusOwner = var1;
- }
-
- // $FF: synthetic method
- static Component access$800(BasicPopupMenuUI var0) {
- return var0.prevFocusOwner;
- }
-
- // $FF: synthetic method
- static Window access$900(Component var0) {
- return getWindow(var0);
- }
-
- // $FF: synthetic method
- static MenuElement access$1000(MenuElement[] var0, int var1) {
- return nextEnabledChild(var0, var1);
- }
-
- // $FF: synthetic method
- static MenuElement access$1100(MenuElement[] var0, int var1) {
- return previousEnabledChild(var0, var1);
- }
- }
-