<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Eclipse Repository Search Dialog</title>

<link rel="stylesheet" href="book.css">

<noscript></noscript>
<script type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Eclipse Repository Search";
    }
}
</script>
</head>
<body bgcolor="white" onload="windowTitle();">

<h1>Eclipse Repository Search Dialog</h1>

<p>
Oomph indexes all p2 update sites hosted by download.eclipse.org.
Each installable unit (IU) in each p2 update site provides so-called capabilities each of which consists of a namespace, name, and version.
Each requirement in a p2 Director task or in a Targlet is ultimately resolved against such an IU capability.
Similarly each <code>Require-Bundle</code> or <code>Import-Package</code> in a <code>MANIFEST.MF</code>,
is resolved against such a capability in PDE's active target platform.
</p>
<p>
The dialog's upper capabilities viewer shows a hierarchical tree of all capabilities of all p2 update sites.
Each root element represents a capability namespace.
The name of a capability is typically a dot separated name.
As such, each child of each root element, i.e., each capability element, is displayed as hierarchical tree based on qualified names.
A concrete capability, 
i.e., one for which there exists a p2 update site containing an IU that provides that capability,
is decorated with a small box in the lower right of the image.
Double clicking an item in the tree will expand or collapse that item;
when expanding, the tree will be expanded until the first concrete capability nested under that element is visible.
</p>

<p>
The capabilities viewer supports filtering.
E.g., entering <code>org.eclipse.emf.ecore</code> will filter to show only capabilities containing that qualified name.
This includes both package capabilities, as resolved by <code>Import-Package</code> in a <code>MANIFEST.MF</code>,
and IU capabilities, as resolved by <code>Require-Bundle</code> in a <code>MANIFEST.MF</code>.
Enter <code>package/org.eclipse.emf.ecore</code> to show only package capabilities containing that qualified name,
or enter <code>iu/org.eclipse.emf.ecore</code> to show only IU capabilities containing that qualified name.
Note that if you have a Requirement instance available in some editor, you can drag it and drop it onto the filter to search for matching capabilities.
</p>

<p>
Selecting a concrete capability will populate the lower details viewer with information about which p2 update sites contain IUs with various versions of the selected capability.
The root element of the details viewer shows the fully qualified name of the capability.
Each child element (a version element) of a root element represents an available version of that capability.
Each child element (a repository element) of each version element represents a p2 update site containing that version of the selected capability.
If the repository element represents a composite repository,
it will show children representing the child repositories of that composite repository.
In this way, you can quickly find any Eclipse p2 repository that will be able to resolve any requirement.
</p>

<p>
The dialog is non-modal and dockable.
To dock the dialog, drag its title area and hover the mouse position over the tab of an editor or view.
The mouse cursor will change and releasing the mouse at this point will dock the dialog to the area occupied by the editor or viewer.
The dialog will remain docked as the workbench window is moved or resized.
To undock, simply drag the title area elsewhere.
</p>

<p>
The "Apply" and the "Apply and Close" buttons are sensitive to the containing workbench window's active part and to its selection.
For example, if the Repository Explorer view is active and a repository element is selected, "Apply" will open the selected repository in the Repository Explorer.
If a p2 Director task is selected in a Setup Editor and a repository element is selected in the details, 
"Apply" will create an Repository instance with the selected repository URL as its URL and add it to the task.
</p>

<p>
Both the capabilities viewer and the details viewer support drag and drop, as well as "Copy" via the context menu.
This can be used to create Requirement or Repository instances in your Oomph models.
</p>

</body>
</html>
