DevFaqLookupWhere

What uses Lookup?

There are a number of places Lookup is commonly found/used in NetBeans. Generally, if you have found some class and you are wondering where on earth you get an actual instance of one of those, the answer is probably "from something-or-other's Lookup".

Common cases:

Lookup.getDefault()() - you want to find some global singleton or all instances of a particular object registered in the system

Project.getLookup() - provides objects specific to a project. The typical pattern is, you have used FileOwnerQuery to get the Project that owns some file, and now you want to find something like the classpath (from the Project's ClassPathProvider, which lives in its Lookup)

Node.getLookup() - this is how you get things like syntax trees, open and save interfaces and other miscellaneous stuff from Nodes representing files or other things

TopComponent.getLookup() - if you are writing a UI component, and want to affect the global selection, but your component doesn't display nodes and you don't have any use for Nodes, you probably want to provide your own Lookup here with whatever you want to include in it (things like OpenCookie, SaveCookie, objects your other UI code may want to track if you're doing a master-detail view, etc.)

Utilities.actionsGlobalContext() returns a Lookup which represents the global "selection context" in NetBeans. It is a ProxyLookup which proxies the lookup of whichever TopComponent currently has focus. So if you listen for changes in the presence or absence of a particular type in this lookup, you will receive appropriate changes whenever the backing Lookup being proxied changes.