/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.openide.util; import java.awt.event.*; import java.awt.*; import java.beans.*; import java.io.*; import javax.swing.*; import org.openide.explorer.*; import org.openide.nodes.*; /** ActionMap that is composed from all Components up to the ExplorerManager.Provider * * @author Jaroslav Tulach */ final class UtilitiesCompositeActionMap extends ActionMap { private Component component; public UtilitiesCompositeActionMap(Component c) { this.component = c; } public int size() { return keys ().length; } public Action get(Object key) { Component c = component; for (;;) { if (c instanceof JComponent) { javax.swing.ActionMap m = ((JComponent)c).getActionMap (); if (m != null) { Action a = m.get (key); if (a != null) { return a; } } } if (c instanceof Lookup.Provider) { break; } c = c.getParent(); if (c == null) { break; } } return null; } public Object[] allKeys() { return keys (true); } public Object[] keys() { return keys (false); } private Object[] keys(boolean all) { java.util.HashSet keys = new java.util.HashSet (); Component c = component; for (;;) { if (c instanceof JComponent) { javax.swing.ActionMap m = ((JComponent)c).getActionMap (); if (m != null) { java.util.List l; if (all) { l = java.util.Arrays.asList (m.allKeys ()); } else { l = java.util.Arrays.asList (m.keys ()); } keys.addAll (l); } } if (c instanceof Lookup.Provider) { break; } c = c.getParent(); if (c == null) { break; } } return keys.toArray (); } // // Not implemented // public void remove(Object key) { } public void setParent(ActionMap map) { } public void clear() { } public void put(Object key, Action action) { } public ActionMap getParent() { return null; } }