home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.AbstractAction;
- import com.sun.java.swing.JMenu;
- import com.sun.java.swing.JMenuBar;
- import com.sun.java.swing.MenuElement;
- import com.sun.java.swing.MenuSelectionManager;
- import java.awt.Container;
- import java.awt.event.ActionEvent;
-
- class BasicMenuUI$PostAction extends AbstractAction {
- JMenu menu;
- boolean force = false;
-
- BasicMenuUI$PostAction(JMenu menu, boolean shouldForce) {
- super("postAction");
- this.menu = menu;
- this.force = shouldForce;
- }
-
- public void actionPerformed(ActionEvent e) {
- MenuSelectionManager defaultManager = MenuSelectionManager.defaultManager();
- if (this.force) {
- Container cnt = this.menu.getParent();
- if (cnt != null && cnt instanceof JMenuBar) {
- MenuElement[] subElements = this.menu.getPopupMenu().getSubElements();
- if (subElements.length > 0) {
- MenuElement[] me = new MenuElement[]{(MenuElement)cnt, (MenuElement)this.menu, (MenuElement)this.menu.getPopupMenu(), subElements[0]};
- defaultManager.setSelectedPath(me);
- } else {
- MenuElement[] newPath = new MenuElement[]{(MenuElement)cnt, this.menu};
- defaultManager.setSelectedPath(newPath);
- }
- }
- } else {
- MenuElement[] path = defaultManager.getSelectedPath();
- if (path.length > 0 && path[path.length - 1] == this.menu) {
- MenuElement[] newPath = new MenuElement[path.length + 1];
- System.arraycopy(path, 0, newPath, 0, path.length);
- newPath[path.length] = this.menu.getPopupMenu();
- MenuSelectionManager.defaultManager().setSelectedPath(newPath);
- }
- }
-
- }
-
- public boolean isEnabled() {
- return this.menu.getModel().isEnabled();
- }
- }
-