blob: 4e805a5e9a3c760e712005105c5d88166b6f28b1 [file] [log] [blame]
package aQute.bnd.service;
import java.util.*;
/**
* An interface to allow bnd to provide commands on elements. This interface can
* provide information about the implementer but it can also provide information
* about its elements. These elements are identified by a <i>target</i>. A
* target is one or more objects that uniquely identify a child in the
* container. The exact protocol for the target is left to the implementers,
* this interface is just a conduit between the bnd world (no Eclipse etc) and
* the GUI world, using only bnd and java interfaces.
*/
public interface Actionable {
/**
* Return a map with command names (potentially localized) and a Runnable.
* The caller can execute the caller at will.
*
* @param target
* the target object, null if commands for the encompassing
* entity is sought (e.g. the repo itself).
* @return A Map with the actions or null if no actions are available.
* @throws Exception
*/
Map<String,Runnable> actions(Object... target) throws Exception;
/**
* Return a tooltip for the given target or the encompassing entity if null
* is passed.
*
* @param target
* the target, any number of parameters to identify
* @return the tooltip or null
* @throws Exception
*/
String tooltip(Object... target) throws Exception;
/**
* Provide a title for an element.
*
* @param target
* the target, any number of parameters to identify
* @return the text for this element
* @throws Exception
*/
String title(Object... target) throws Exception;
}