1 /* 2 * The contents of this file are subject to the terms of the Common Development 3 * and Distribution License (the License). You may not use this file except in 4 * compliance with the License. 5 * 6 * You can obtain a copy of the License at http://www.netbeans.org/cddl.html 7 * or http://www.netbeans.org/cddl.txt. 8 * 9 * When distributing Covered Code, include this CDDL Header Notice in each file 10 * and include the License file at http://www.netbeans.org/cddl.txt. 11 * If applicable, add the following below the CDDL Header, with the fields 12 * enclosed by brackets [] replaced by your own identifying information: 13 * "Portions Copyrighted [year] [name of copyright owner]" 14 * 15 * The Original Software is NetBeans. The Initial Developer of the Original 16 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun 17 * Microsystems, Inc. All Rights Reserved. 18 */ 19 20 package org.openide.util; 21 22 import javax.swing.Action; 23 24 /** 25 * Interface to be implemented by an action whose behavior 26 * is dependent on some context. 27 * The action created by {@link #createContextAwareInstance} 28 * is bound to the provided context: {@link Action#isEnabled}, 29 * {@link Action#actionPerformed}, etc. may be specific to that context. 30 * <p class="nonnormative">For example, the action representing a context menu item will usually implement 31 * this interface. When the actual context menu is created, rather than making a 32 * presenter for the generic action, the menu will contain a presenter for the 33 * context-aware instance. The context will then be taken from the GUI 34 * environment where the context menu was shown; for example it may be a 35 * <a HREF="@org-openide-windows@/org/openide/windows/TopComponent.html#getLookup()">TopComponent's context</a>, 36 * often taken from an activated node selection. The context action might be 37 * enabled only if a certain "cookie" is present in that selection. When invoked, 38 * the action need not search for an object to act on, since it can use the context. 39 * 40 * @author Jaroslav Tulach, Peter Zavadsky 41 * 42 * @see org.openide.util.Utilities#actionsToPopup 43 * @since 3.29 44 */ 45 public interface ContextAwareAction extends Action { 46 47 /** 48 * Creates action instance for provided context. 49 * @param actionContext an arbitrary context (e.g. "cookies" from a node selection) 50 * @return a transient action whose behavior applies only to that context 51 */ 52 public Action createContextAwareInstance(Lookup actionContext); 53 54 } 55