Java 类javax.swing.MenuElement 实例源码
项目:alevin-svn2
文件:MouseOverHintManager.java
public void enableHints(Component comp, boolean enabled) {
if (enabled)
comp.addMouseListener(this);
else
comp.removeMouseListener(this);
if (comp instanceof Container) {
Component[] components = ((Container) comp).getComponents();
for (int i = 0; i < components.length; i++)
enableHints(components[i], enabled);
}
if (comp instanceof MenuElement) {
MenuElement[] elements = ((MenuElement) comp).getSubElements();
for (int i = 0; i < elements.length; i++)
enableHints(elements[i].getComponent(), enabled);
}
}
项目:incubator-netbeans
文件:RADVisualComponent.java
static MenuType getMenuType(Class cl) {
if (MenuElement.class.isAssignableFrom(cl)) {
if (JMenu.class.isAssignableFrom(cl)) {
return MenuType.JMenu;
}
if (JMenuBar.class.isAssignableFrom(cl)) {
return MenuType.JMenuBar;
}
if (JCheckBoxMenuItem.class.isAssignableFrom(cl)) {
return MenuType.JCheckBoxMenuItem;
}
if (JRadioButtonMenuItem.class.isAssignableFrom(cl)) {
return MenuType.JRadioButtonMenuItem;
}
if (JMenuItem.class.isAssignableFrom(cl)) {
return MenuType.JMenuItem;
}
if (JPopupMenu.class.isAssignableFrom(cl)) {
return MenuType.JPopupMenu;
}
} else if (JSeparator.class.isAssignableFrom(cl)) {
return MenuType.JSeparator;
}
return null;
}
项目:incubator-netbeans
文件:MenuChecker.java
/** Get MenuBar and tranfer it to ArrayList.
* @param menu menu to be tranfered
* @return tranfered menubar */
private static List<NbMenu> getMenuBarArrayList(JMenuBar menu) {
visitMenuBar(menu);
MenuElement [] elements = menu.getSubElements();
List<NbMenu> list = new ArrayList<NbMenu>();
for(int k=0; k < elements.length; k++) {
// if(elements[k] instanceof JMenuItem) {
// list.add(new NbMenu((JMenuItem)elements[k], null));
JMenuBarOperator menuOp = new JMenuBarOperator(menu);
JMenu item = menuOp.getMenu(k);
list.add(new NbMenu(item, getMenuArrayList(item)));
// }
/*if(elements[k] instanceof JMenuBar) {
JMenuBarOperator menuOp = new JMenuBarOperator(menu);
list.add(getMenuArrayList(menuOp.getMenu(0)));
}
*/
}
return list;
}
项目:incubator-netbeans
文件:StayOpenPopupMenu.java
public void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager) {
if (isReturnAction(e)) { // Handle SPACE and ENTER
MenuElement[] p = manager.getSelectedPath();
MenuElement m = p != null && p.length > 0 ? p[p.length - 1] : null;
if (m instanceof StayOpen) {
e.consume();
if (e.getID() == KeyEvent.KEY_PRESSED)
performAction((StayOpen)m, e.getModifiers());
return;
}
} else for (Component component : getComponents()) { // Handle mnemonics and accelerators
if (component instanceof StayOpen) {
StayOpen item = (StayOpen)component;
JMenuItem i = item.getItem();
KeyStroke k = KeyStroke.getKeyStrokeForEvent(e);
if (k.equals(mnemonic(i)) || k.equals(i.getAccelerator())) {
e.consume();
manager.setSelectedPath(new MenuElement[] { this, i });
performAction(item, e.getModifiers());
return;
}
}
}
super.processKeyEvent(e, path, manager);
}
项目:incubator-netbeans
文件:MenuChecker.java
/** Open all menus in menubar
* @param menu to be visited */
public static void visitMenuBar(JMenuBar menu) {
MenuElement[] elements = menu.getSubElements();
JMenuBarOperator op = new JMenuBarOperator(menu);
for (int k = 0; k < elements.length; k++) {
if (elements[k] instanceof JMenuItem) {
op.pushMenu(((JMenuItem) elements[k]).getText(), "/", true, true);
try {
op.wait(200);
} catch (Exception e) {
}
}
}
}
项目:incubator-netbeans
文件:MenuChecker.java
/** Get MenuBar and tranfer it to ArrayList.
* @param menu menu to be tranfered
* @return tranfered menubar - !separator is ignored
*/
public static ArrayList<NbMenuItem> getMenuBarArrayList(JMenuBar menu) {
// System.out.println("getMenuBarArrayList " + menu.getName());
visitMenuBar(menu);
MenuElement[] elements = menu.getSubElements();
ArrayList<NbMenuItem> list = new ArrayList<NbMenuItem>();
for (int k = 0; k < elements.length; k++) {
if (elements[k] instanceof JPopupMenu.Separator) {
NbMenuItem separator = new NbMenuItem();
separator.setSeparator(true);
list.add(separator);
} else {
if (elements[k] instanceof JMenuItem) {
NbMenuItem item = new NbMenuItem((JMenuItem) elements[k]);
JMenuBarOperator menuOp = new JMenuBarOperator(menu);
item.setSubmenu(getMenuArrayList(menuOp.getMenu(k)));
list.add(item);
}
}
}
return list;
}
项目:incubator-netbeans
文件:MenuChecker.java
/** Open all menus in menubar
* @param menu to be visited */
public static void visitMenuBar(JMenuBar menu) {
MenuElement[] elements = menu.getSubElements();
JMenuBarOperator op = new JMenuBarOperator(menu);
for (int k = 0; k < elements.length; k++) {
if (elements[k] instanceof JMenuItem) {
op.pushMenu(((JMenuItem) elements[k]).getText(), "/", true, true);
try {
op.wait(200);
} catch (Exception e) {
}
}
}
}
项目:incubator-netbeans
文件:MenuChecker.java
/** Get MenuBar and tranfer it to ArrayList.
* @param menu menu to be tranfered
* @return tranfered menubar - !separator is ignored
*/
public static ArrayList<NbMenuItem> getMenuBarArrayList(JMenuBar menu) {
// System.out.println("getMenuBarArrayList " + menu.getName());
visitMenuBar(menu);
MenuElement[] elements = menu.getSubElements();
ArrayList<NbMenuItem> list = new ArrayList<NbMenuItem>();
for (int k = 0; k < elements.length; k++) {
if (elements[k] instanceof JPopupMenu.Separator) {
NbMenuItem separator = new NbMenuItem();
separator.setSeparator(true);
list.add(separator);
} else {
if (elements[k] instanceof JMenuItem) {
NbMenuItem item = new NbMenuItem((JMenuItem) elements[k]);
JMenuBarOperator menuOp = new JMenuBarOperator(menu);
item.setSubmenu(getMenuArrayList(menuOp.getMenu(k)));
list.add(item);
}
}
}
return list;
}
项目:openjdk-jdk10
文件:JPopupMenuEndlessLoopTest.java
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> {
JPopupMenu popup = new JPopupMenu("Popup Menu");
JMenu menu = new JMenu("Menu");
menu.add(new JMenuItem("Menu Item"));
popup.add(menu);
menu.doClick();
MenuElement[] elems = MenuSelectionManager
.defaultManager().getSelectedPath();
if (elems == null || elems.length == 0) {
throw new RuntimeException("Empty Selection");
}
if (elems[0] != popup || elems[1] != menu) {
throw new RuntimeException("Necessary menus are not selected!");
}
});
}
项目:openjdk-jdk10
文件:QueueJMenuDriver.java
@Override
public MenuElement launch() {
MenuElement element = getMenuElement();
if (element != null) {
MenuElement[] subElements = element.getSubElements();
for (MenuElement subElement : subElements) {
if (((Component) subElement).isShowing()
&& ((Component) subElement).isEnabled()
&& chooser.checkPathComponent(depth, subElement)) {
process(subElement);
return subElement;
}
if (stopped) {
return null;
}
}
}
return null;
}
项目:openjdk9
文件:JPopupMenuEndlessLoopTest.java
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> {
JPopupMenu popup = new JPopupMenu("Popup Menu");
JMenu menu = new JMenu("Menu");
menu.add(new JMenuItem("Menu Item"));
popup.add(menu);
menu.doClick();
MenuElement[] elems = MenuSelectionManager
.defaultManager().getSelectedPath();
if (elems == null || elems.length == 0) {
throw new RuntimeException("Empty Selection");
}
if (elems[0] != popup || elems[1] != menu) {
throw new RuntimeException("Necessary menus are not selected!");
}
});
}
项目:openjdk9
文件:QueueJMenuDriver.java
@Override
public MenuElement launch() {
MenuElement element = getMenuElement();
if (element != null) {
MenuElement[] subElements = element.getSubElements();
for (MenuElement subElement : subElements) {
if (((Component) subElement).isShowing()
&& ((Component) subElement).isEnabled()
&& chooser.checkPathComponent(depth, subElement)) {
process(subElement);
return subElement;
}
if (stopped) {
return null;
}
}
}
return null;
}
项目:javify
文件:BasicMenuBarUI.java
/**
* Performs the action.
*/
public void actionPerformed(ActionEvent event)
{
// In the JDK this action seems to pop up the first menu of the
// menu bar.
JMenuBar menuBar = (JMenuBar) event.getSource();
MenuSelectionManager defaultManager =
MenuSelectionManager.defaultManager();
MenuElement me[];
MenuElement subElements[];
JMenu menu = menuBar.getMenu(0);
if (menu != null)
{
me = new MenuElement[3];
me[0] = (MenuElement) menuBar;
me[1] = (MenuElement) menu;
me[2] = (MenuElement) menu.getPopupMenu();
defaultManager.setSelectedPath(me);
}
}
项目:javify
文件:BasicMenuItemUI.java
/**
* Returns path to this menu item.
*
* @return $MenuElement[]$ Returns array of menu elements that constitute a
* path to this menu item.
*/
public MenuElement[] getPath()
{
ArrayList path = new ArrayList();
Component c = menuItem;
while (c instanceof MenuElement)
{
path.add(0, c);
if (c instanceof JPopupMenu)
c = ((JPopupMenu) c).getInvoker();
else
c = c.getParent();
}
MenuElement[] pathArray = new MenuElement[path.size()];
path.toArray(pathArray);
return pathArray;
}
项目:javify
文件:BasicPopupMenuUI.java
/**
* Searches the next or previous enabled child menu element.
*
* @param children the children to search through
* @param start the index at which to start
* @param dir the direction (true == forward, false == backward)
*
* @return the found element or null
*/
private MenuElement findEnabledChild(MenuElement[] children,
int start, boolean dir)
{
MenuElement result = null;
if (dir)
{
result = findNextEnabledChild(children, start + 1, children.length-1);
if (result == null)
result = findNextEnabledChild(children, 0, start - 1);
}
else
{
result = findPreviousEnabledChild(children, start - 1, 0);
if (result == null)
result = findPreviousEnabledChild(children, children.length-1,
start + 1);
}
return result;
}
项目:javify
文件:BasicPopupMenuUI.java
/**
* Finds the next child element that is enabled and visible.
*
* @param children the children to search through
* @param start the start index
* @param end the end index
*
* @return the found child, or null
*/
private MenuElement findNextEnabledChild(MenuElement[] children, int start,
int end)
{
MenuElement found = null;
for (int i = start; i <= end && found == null; i++)
{
if (children[i] != null)
{
Component comp = children[i].getComponent();
if (comp != null && comp.isEnabled() && comp.isVisible())
{
found = children[i];
}
}
}
return found;
}
项目:javify
文件:BasicPopupMenuUI.java
/**
* Finds the previous child element that is enabled and visible.
*
* @param children the children to search through
* @param start the start index
* @param end the end index
*
* @return the found child, or null
*/
private MenuElement findPreviousEnabledChild(MenuElement[] children,
int start, int end)
{
MenuElement found = null;
for (int i = start; i >= end && found == null; i--)
{
if (children[i] != null)
{
Component comp = children[i].getComponent();
if (comp != null && comp.isEnabled() && comp.isVisible())
{
found = children[i];
}
}
}
return found;
}
项目:JglTF
文件:GltfBrowserApplication.java
/**
* Recursively attach the given action listener to all items in the
* given menu that have a non-<code>null</code> action command
*
* @param menuElement The menu element
* @param actionListener The action listener
*/
private static void attachActionListener(
MenuElement menuElement, ActionListener actionListener)
{
if (menuElement instanceof JMenuItem)
{
JMenuItem menuItem = (JMenuItem)menuElement;
if (menuItem.getActionCommand() != null)
{
menuItem.addActionListener(actionListener);
}
}
MenuElement[] subElements = menuElement.getSubElements();
for (MenuElement subElement : subElements)
{
attachActionListener(subElement, actionListener);
}
}
项目:PasswordSafe
文件:UI.java
/** conditionally adds a separator to a menu that already contains one or more item */
public static void separator(JPopupMenu m)
{
if(m != null)
{
boolean populated = false;
int sz = m.getComponentCount();
for(int i = 0; i < sz; i++)
{
Component c = m.getComponent(i);
if(c instanceof MenuElement)
{
populated = true;
break;
}
}
if(populated)
{
m.addSeparator();
}
}
}
项目:jvm-stm
文件:BasicMenuBarUI.java
/**
* Performs the action.
*/
public void actionPerformed(ActionEvent event)
{
// In the JDK this action seems to pop up the first menu of the
// menu bar.
JMenuBar menuBar = (JMenuBar) event.getSource();
MenuSelectionManager defaultManager =
MenuSelectionManager.defaultManager();
MenuElement me[];
MenuElement subElements[];
JMenu menu = menuBar.getMenu(0);
if (menu != null)
{
me = new MenuElement[3];
me[0] = (MenuElement) menuBar;
me[1] = (MenuElement) menu;
me[2] = (MenuElement) menu.getPopupMenu();
defaultManager.setSelectedPath(me);
}
}
项目:jvm-stm
文件:BasicMenuItemUI.java
/**
* Returns path to this menu item.
*
* @return $MenuElement[]$ Returns array of menu elements that constitute a
* path to this menu item.
*/
public MenuElement[] getPath()
{
ArrayList path = new ArrayList();
Component c = menuItem;
while (c instanceof MenuElement)
{
path.add(0, c);
if (c instanceof JPopupMenu)
c = ((JPopupMenu) c).getInvoker();
else
c = c.getParent();
}
MenuElement[] pathArray = new MenuElement[path.size()];
path.toArray(pathArray);
return pathArray;
}
项目:jvm-stm
文件:BasicPopupMenuUI.java
/**
* Searches the next or previous enabled child menu element.
*
* @param children the children to search through
* @param start the index at which to start
* @param dir the direction (true == forward, false == backward)
*
* @return the found element or null
*/
private MenuElement findEnabledChild(MenuElement[] children,
int start, boolean dir)
{
MenuElement result = null;
if (dir)
{
result = findNextEnabledChild(children, start + 1, children.length-1);
if (result == null)
result = findNextEnabledChild(children, 0, start - 1);
}
else
{
result = findPreviousEnabledChild(children, start - 1, 0);
if (result == null)
result = findPreviousEnabledChild(children, children.length-1,
start + 1);
}
return result;
}
项目:jvm-stm
文件:BasicPopupMenuUI.java
/**
* Finds the next child element that is enabled and visible.
*
* @param children the children to search through
* @param start the start index
* @param end the end index
*
* @return the found child, or null
*/
private MenuElement findNextEnabledChild(MenuElement[] children, int start,
int end)
{
MenuElement found = null;
for (int i = start; i <= end && found == null; i++)
{
if (children[i] != null)
{
Component comp = children[i].getComponent();
if (comp != null && comp.isEnabled() && comp.isVisible())
{
found = children[i];
}
}
}
return found;
}
项目:jvm-stm
文件:BasicPopupMenuUI.java
/**
* Finds the previous child element that is enabled and visible.
*
* @param children the children to search through
* @param start the start index
* @param end the end index
*
* @return the found child, or null
*/
private MenuElement findPreviousEnabledChild(MenuElement[] children,
int start, int end)
{
MenuElement found = null;
for (int i = start; i >= end && found == null; i--)
{
if (children[i] != null)
{
Component comp = children[i].getComponent();
if (comp != null && comp.isEnabled() && comp.isVisible())
{
found = children[i];
}
}
}
return found;
}
项目:swingx
文件:SwingXUtilities.java
private static Component[] getChildren(Component c) {
Component[] children = null;
if (c instanceof MenuElement) {
MenuElement[] elements = ((MenuElement) c).getSubElements();
children = new Component[elements.length];
for (int i = 0; i < elements.length; i++) {
children[i] = elements[i].getComponent();
}
} else if (c instanceof Container) {
children = ((Container) c).getComponents();
}
return children;
}
项目:jMovieManager
文件:MyBasicCheckBoxMenuItemUI.java
public void processMouseEvent(JMenuItem item,MouseEvent e,MenuElement path[],MenuSelectionManager manager) {
Point p = e.getPoint();
if(p.x >= 0 && p.x < item.getWidth() &&
p.y >= 0 && p.y < item.getHeight()) {
if(e.getID() == MouseEvent.MOUSE_RELEASED) {
manager.clearSelectedPath();
item.doClick(0);
} else{
manager.setSelectedPath(path);
}
} else if(item.getModel().isArmed()) {
MenuElement newPath[] = new MenuElement[path.length-1];
int i,c;
for(i=0,c=path.length-1;i<c;i++){
newPath[i] = path[i];
}
manager.setSelectedPath(newPath);
}
}
项目:metasfresh
文件:EditorContextPopupMenu.java
private boolean createUI(final MenuElement parent, final IContextMenuAction action)
{
if (!action.isAvailable())
{
return false;
}
// Action implements IEditorContextPopupMenuComposer, so let it compose by itself
if (action instanceof IEditorContextPopupMenuComposer)
{
if (!(parent instanceof Container))
{
logger.warn("No Container found for " + parent);
return false;
}
final Container parentContainer = (Container)parent;
IEditorContextPopupMenuComposer actionComposer = (IEditorContextPopupMenuComposer)action;
return actionComposer.createUI(parentContainer);
}
// Generic Composer
else
{
return createUIGeneric(parent, action);
}
}
项目:metasfresh
文件:AnnotatedTablePopupMenu.java
private final List<AnnotatedTableAction> getTableActions()
{
final List<AnnotatedTableAction> tableActions = new ArrayList<>();
for (final MenuElement me : getSubElements())
{
if (!(me instanceof AbstractButton))
{
continue;
}
final AbstractButton button = (AbstractButton)me;
final Action action = button.getAction();
if (action instanceof AnnotatedTableAction)
{
final AnnotatedTableAction tableAction = (AnnotatedTableAction)action;
tableActions.add(tableAction);
}
}
return tableActions;
}
项目:seaglass
文件:SeaGlassRadioButtonMenuItemUI.java
public void processMouseEvent(JMenuItem item, MouseEvent e, MenuElement path[], MenuSelectionManager manager) {
Point p = e.getPoint();
if (p.x >= 0 && p.x < item.getWidth() && p.y >= 0 && p.y < item.getHeight()) {
if (e.getID() == MouseEvent.MOUSE_RELEASED) {
manager.clearSelectedPath();
item.doClick(0);
item.setArmed(false);
} else
manager.setSelectedPath(path);
} else if (item.getModel().isArmed()) {
MenuElement newPath[] = new MenuElement[path.length - 1];
int i, c;
for (i = 0, c = path.length - 1; i < c; i++)
newPath[i] = path[i];
manager.setSelectedPath(newPath);
}
}
项目:seaglass
文件:SeaGlassCheckBoxMenuItemUI.java
public void processMouseEvent(JMenuItem item, MouseEvent e, MenuElement path[], MenuSelectionManager manager) {
Point p = e.getPoint();
if (p.x >= 0 && p.x < item.getWidth() && p.y >= 0 && p.y < item.getHeight()) {
if (e.getID() == MouseEvent.MOUSE_RELEASED) {
manager.clearSelectedPath();
item.doClick(0);
} else {
manager.setSelectedPath(path);
}
} else if (item.getModel().isArmed()) {
int c = path.length - 1;
MenuElement newPath[] = new MenuElement[c];
for (int i = 0; i < c; i++) {
newPath[i] = path[i];
}
manager.setSelectedPath(newPath);
}
}
项目:windowlicker
文件:RecursiveComponentFinder.java
private void searchWithin(Component component) {
if (componentType.isInstance(component) && criteria.matches(component)) {
found.add(componentType.cast(component));
} else {
if (component instanceof Container) {
searchWithin(componentsInside((Container) component));
}
if (component instanceof Window) {
searchWithin(windowsOwnedBy((Window) component));
}
if (component instanceof MenuElement) {
searchWithin(componentsInMenu((MenuElement) component));
}
}
}
项目:aibench-project
文件:SwingXUtilities.java
private static Component[] getChildren(Component c) {
Component[] children = null;
if (c instanceof MenuElement) {
MenuElement[] elements = ((MenuElement) c).getSubElements();
children = new Component[elements.length];
for (int i = 0; i < elements.length; i++) {
children[i] = elements[i].getComponent();
}
} else if (c instanceof Container) {
children = ((Container) c).getComponents();
}
return children;
}
项目:ib-controller
文件:SwingUtils.java
private static void appendMenuItem(Component menuItem, StringBuilder builder, String indent) {
if (menuItem instanceof JMenuBar) {
appendMenuSubElements((MenuElement)menuItem, builder, indent);
} else if (menuItem instanceof JPopupMenu) {
appendMenuSubElements((MenuElement)menuItem, builder, indent);
} else if (menuItem instanceof JMenuItem) {
builder.append(NEWLINE);
builder.append(indent);
builder.append(((JMenuItem)menuItem).getText());
builder.append(((JMenuItem)menuItem).isEnabled() ? "" : "[Disabled]");
appendMenuSubElements((JMenuItem)menuItem, builder, "| " + indent);
} else if (menuItem instanceof JSeparator) {
builder.append(NEWLINE);
builder.append(indent);
builder.append("--------");
}
}
项目:jpexs-decompiler
文件:MainFrameClassicMenu.java
@Override
public void clearMenu(String path) {
path = mapping(path);
if (path.equals("_") || path.startsWith("_/")) {
return;
}
MenuElement menu = menuElements.get(path);
if (menu == null) {
throw new IllegalArgumentException("Menu " + path + " does not exist");
}
if (menu instanceof JMenuBar) {
((JMenuBar) menu).removeAll();
} else if (menu instanceof JMenu) {
((JMenu) menu).removeAll();
} else {
throw new IllegalArgumentException(path + " is not a menu");
}
}
项目:jpexs-decompiler
文件:MainFrameClassicMenu.java
@Override
public void setMenuEnabled(String path, boolean enabled) {
path = mapping(path);
if (path.equals("_") || path.startsWith("_/")) {
return;
}
MenuElement menu = menuElements.get(path);
if (menu == null) {
throw new IllegalArgumentException("Menu " + path + " does not exist");
}
if (menu instanceof JMenuBar) {
((JMenuBar) menu).setEnabled(enabled);
} else if (menu instanceof JMenu) {
((JMenu) menu).setEnabled(enabled);
} else if (menu instanceof JMenuItem) {
((JMenuItem) menu).setEnabled(enabled);
} else {
throw new IllegalArgumentException(path + " is not a menu");
}
}
项目:jpexs-decompiler
文件:MainFrameClassicMenu.java
@Override
public void addSeparator(String parentPath) {
parentPath = mapping(parentPath);
if (parentPath.equals("_") || parentPath.startsWith("_/")) {
return;
}
if (!menuElements.containsKey(parentPath)) {
throw new IllegalArgumentException("Menu does not exist: " + parentPath);
}
MenuElement parent = menuElements.get(parentPath);
if (parent instanceof JMenu) {
((JMenu) parent).addSeparator();
} else {
throw new IllegalArgumentException("Not a menu: " + parentPath);
}
}
项目:cn1
文件:Utilities.java
/**
* Returns menu path of given menuElement up to the <code>JMenuBar</code>.
*
* @param element MenuElement which path is requested
* @return MenuElement[] representing menu path for the specified element
*/
public static MenuElement[] getMenuElementPath(final MenuElement element) {
if (!(element instanceof Container)) {
return new MenuElement[0];
}
final ArrayList<MenuElement> hierarchy = new ArrayList<MenuElement>();
Container c = (Container)element;
do {
hierarchy.add(0, (MenuElement)c);
if (c instanceof JMenuBar) {
break;
}
if (c instanceof JPopupMenu) {
c = (Container)((JPopupMenu)c).getInvoker();
} else {
c = c.getParent();
}
} while (c != null && c instanceof MenuElement);
return hierarchy.toArray(new MenuElement[hierarchy.size()]);
}
项目:cn1
文件:Utilities.java
/**
* Gets first visible and enabled item from the list of MenuElements.
*
* @param children the list of elements to select from
* @return visible and enabled element if any, null otherwise
*/
public static MenuElement getFirstSelectableItem(final MenuElement[] children) {
if (isEmptyArray(children)) {
return null;
}
for (int i = 0; i < children.length; i++) {
Component component = children[i].getComponent();
if (component == null && children[i] instanceof Component) {
component = (Component)children[i];
}
if (component != null && component.isVisible() && component.isEnabled()) {
return children[i];
}
}
return null;
}
项目:studio
文件:NbPopupMenuUI.java
public void actionPerformed(ActionEvent e) {
MenuElement path[] = MenuSelectionManager.defaultManager().getSelectedPath();
MenuElement lastElement;
if (path.length > 0) {
lastElement = path[path.length - 1];
if ((lastElement instanceof JMenuItem) &&
(!(lastElement instanceof JMenu)
// XXX #11048: The Actions.SubMenu acts as pure JMenuItem
// for cases it has one (or zero) sub-item.
|| (lastElement instanceof Actions.SubMenu
&& ((Actions.SubMenu)lastElement).getMenuComponentCount() <= 1))) {
MenuSelectionManager.defaultManager().clearSelectedPath();
((JMenuItem) lastElement).doClick(0);
((JMenuItem) lastElement).setArmed(false);
}
}
}
项目:cn1
文件:RootPaneFocusHandler.java
private void grabFocus(final MenuElement[] path) {
for (int i = 0; i < path.length; i++) {
final MenuElement item = path[i];
if (i > 0 && !(item instanceof Component)) {
continue;
}
final JRootPane pane = SwingUtilities.getRootPane(getRootPaneChild(item));
if (pane != null) {
Component focusOwner = getFocusManager().getFocusOwner();
if (pane.requestFocus(true)) {
previousFocusOwner = focusOwner;
focusedRootPane = pane;
MenuKeyBindingProcessor.attach();
if (pane.getJMenuBar() == null) {
pane.addKeyListener(createRootPaneKeyListener());
}
}
break;
}
}
}