Using AbstractHelpScope to filter an information center

An information center can be used to serve information for more than one product. Using the AbstractHelpScope class it is possible to define documentation subsets called help scopes which allow for users to see only the information which applies to one or more specific products.

A help scope consists of an id and a class which subclasses AbstractHelpScope and is defined in the extension point org.eclipse.ua.tests.help.scope. The AbstractHelpScope class contains methods for determining whether a table of contents, topic or index entry should be included in the scope. Once a help scope with an id of myId has been declared it can be applied by opening an infocenter with a url of this form:

http://<host>:<port>/help/index.jsp?scope=myId
This will present an infocenter which shows only those topics which fall within the scope myId.

Scopes can be joined together to retrieve the intersection or union of multiple scopes. A basic query language can be used to perform these multi-scope operations.

Examples:
Filter help info to include anything in A,B, or C:
scope=A|B|C
scope=(A|B|C)
Filter help info to include anything in A,B, and C:
scope=A^B^C
scope=(A^B^C)
scope=A&scope=B&scope=C
Filter help to include A or B, and C:
scope=(A|B)^C
scope=A|B&scope=C
Note: (A|B^C) will not be recognized by the parser, and will only use the last operation, so it will look like (A^B^C)
Filter help to include A and B, or, A and C:
scope=(A^B)|(A^C)
The URL character for 'and' (intersection) is '^', and 'or' (union) is '|'.