Developer Guide; patch for Cam.
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/contributing_el_variables.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/contributing_el_variables.html
index 821164d..8175233 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/contributing_el_variables.html
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/contributing_el_variables.html
@@ -5,26 +5,26 @@
 <meta http-equiv="Content-Style-Type" content="text/css">
 <meta http-equiv="Content-Script-Type" content="text/javascript">
 <link rel="stylesheet" href="../../book.css" type="text/css"></head>
-
 <body>
 <table summary="" cellpadding="0" cellspacing="0" width="100%">
 <tbody><tr valign="bottom">
 <td align="left" width="86%">
-<h1>Contributing EL Variables</h1>
+      <h1>Contributing EL Variables</h1>
+
 </td>
 </tr>
 </tbody></table>
 <hr>
 <h3>Overview</h3>
-The JSF tooling&nbsp; provides three ways to contribute EL variables to the framework depending on the goal of the contribution.<br>
+The JSF tooling&nbsp; provides three ways to contribute EL variables to the framework depending on your goal.<br>
 <br>
 If you are a component developer and want to add support for EL
 variables that are declared by your component tags, you can use the
 symbol factory extension and meta-data.<br>
 <br>
 If you are a tooling developer and you wish to add new sources of
-variables without changing the behaviour of other sources (beans, tag
-contributed variables), then you can use the symbolProvider extension.<br>
+variables without changing the behavior of other sources (beans, tag
+contributed variables), you can use the symbolProvider extension.<br>
 <br>
 If you are a tooling developer and you wish to modify the way all
 variables are resolved, you can use the variableResolver extension.<br>
@@ -37,8 +37,7 @@
 org.eclipse.jst.jsf.context.symbol.contextSymbolFactory extension
 point.&nbsp; In the extension, you need to provide a unique
 factoryId.&nbsp; This factoryId is used to identify your factory and
-can then be used in your symbol factory meta-data TODO: link to
-designtimeappmanager section.<br>
+can then be used in your symbol factory meta-data section.&nbsp; See also the <a href="the_design_time_application_manager.html">Design Time Application Manager</a> for information.<br>
 <br>
 Your factory implementation will implement the following method:<br>
 <br>
@@ -50,7 +49,7 @@
 variable will be named at runtime.&nbsp; The scope argument is one of
 ISymbolConstants.SYMBOL_SCOPE_*.&nbsp; The system value is passed in
 based on meta-data settings if present.&nbsp; Your factory is not
-obligated to use this scope variable.&nbsp;&nbsp; The IAdapable context
+obligated to use this scope variable.&nbsp;&nbsp; The IAdaptable context
 object provides context information about the source of the variable
 declaration.&nbsp; This is usually an IModelContext object.&nbsp; You
 can implement the supports() abstract method in such a way to tell the
@@ -73,7 +72,7 @@
 Note that your symbol provider may not called if:<br>
 <br>
 - the default variable resolver has been replaced by one that does not call the default external context.<br>
-- the default external context has been replaced by one that does not call query the symbol providers.<br>
+- the default external context has been replaced by one that does not query the symbol providers.<br>
 <br>
 <h3>VariableResolver Extension<br>
 </h3>
@@ -91,12 +90,9 @@
 id defined in your extension as the argument.<br>
 <br>
 Once your variable resolver is registered and active for a project, all
-variable resolution requests to the framework will query your
+variable resolution requests to the framework will call your
 implementation.&nbsp; This gives you complete control over how all EL
 variable symbols are discovered and instantiated by the design time
 framework.<br>
 
-<p>
-	<span style="font-style: italic;">Complete information will be available in a future build.</span>
-</p>
 </body></html>
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/jsf_expression_language_tooling.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/jsf_expression_language_tooling.html
index 46d9499..8a210d3 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/jsf_expression_language_tooling.html
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/jsf_expression_language_tooling.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-  <title>JSF Expression Language Tooling</title>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>JSF Expression Language Tooling</title>
+  
 
   
 
@@ -18,9 +18,7 @@
 
 
   
-  <link rel="stylesheet" href="../../book.css" type="text/css">
-</head>
-
+  <link rel="stylesheet" href="../../book.css" type="text/css"></head>
 <body>
 <table summary="" cellpadding="0" cellspacing="0" width="100%">
 
@@ -52,8 +50,7 @@
 </p>
 
 
-In order to support design time evaluation of expressions, the tooling has the following basic capabilities:<br>
-<br>
+In order to support design-time evaluation of expressions, the tooling has the following basic capabilities:<br>
 <ul>
   <li>syntax parsing <br>
   </li>
@@ -64,15 +61,15 @@
 <h3>Syntax Parsing<br>
 </h3>
 The WTP JSP tooling provides an EL parser that the JSF EL tooling
-leverage because of syntactic commonality between JSP and JSF EL.&nbsp;
+leverage because of the syntactic commonality between JSP and JSF EL.&nbsp;
 The parser is based on JavaCC and constructs an abstract syntax tree
-(AST) that can be further processed by the framework.&nbsp; The parser
+(AST) that is further processed by the framework.&nbsp; The parser
 reports syntax errors in expressions.<br>
 <h3>Design-time variable, property and method resolution</h3>
 JSF EL expressions may contain variable and method bindings that
 reference external objects.&nbsp; At runtime, this is accomplished
-through a several mechanisms, which can convert different types of
-identifier symbols into objects and methods.&nbsp; At designtime the
+through several mechanisms that convert different types of
+identifier symbols into objects and methods.&nbsp; At design-time the
 JSF tooling tries to parallel these as closely as possible.&nbsp; These
 mechanisms are:<br>
 <br>
@@ -80,49 +77,16 @@
   <li>VariableResolver</li>
   <li>PropertyResolver</li>
   <li>MethodBinding</li>
-</ul>
-<h4>VariableResolver</h4>
-All identifier symbol resolution in EL starts with the
-VariableResolver.&nbsp; An expression like "myBean.property" is
-resolved by first extracting the symbol "myBean" and requesting the
-VariableResolver to return a matching runtime object.&nbsp; At design
-time, we parallel this exactly but running a design time description of
-the object rather than its actual value (since the actual value cannot
-be fully computed until runtime in most cases).&nbsp; The concept of a
-"DTVariableResolver" is introduced.&nbsp; A default implementation is
-automatically provided which closely mirrors the default runtime
-resolver.&nbsp; New variable resolvers can be contributed through the
-Eclipse extension point mechanism to support custom runtime
-counterparts.<br>
-<h4>PropertyResolver</h4>
-Once a variable is resolved, the next step in resolving a value binding
-is to resolve its properties.&nbsp; To return to our simple example,
-"myBean.property", the JSF runtime will pass the object returned for
-'myBean' to the property resolver along with the name 'property' and
-ask it to resolve it to an object.&nbsp; At design time, we parallel
-this by introducing the "DTPropertyResolver".<br>
-<br>
-<h4>MethodBinding</h4>
-The method binding mechanism implemented by the JSF runtime, differs
-from the way variables and properties are resolved.&nbsp; At design
-time however, we support them in the same way by providing a
-"DTMethodResolver".&nbsp; The main reason for this divergence is that
-at runtime, the method binding need know only enough to invoke a
-method.&nbsp; However at design time, we want to be able resolve a
-method binding in such a way that we can provide the same kinds of
-features we provide for properties such as signature validation and
-content assist.<br>
-<br>
+</ul>For more information on pluggable resolvers, see <a href="the_design_time_application_manager.html">The Design Time Application Manager</a>.<br>
 <span style="font-weight: bold;"></span><span style="font-weight: bold;"></span>
 <h3>Semantic type analysis</h3>
 Type analysis of literals is performed for all expressions.&nbsp;
 Analysis is done on all variables, properties and methods that can be
-resolved.&nbsp; Type analysis can verify:<br>
-<br>
+resolved.&nbsp; Type analysis can verify that:<br>
 <ul>
-  <li>that operator arguments are of a valid type or can be coerced to one.</li>
-  <li>that EL attribute values resolve to a type that is expected by its tag attribute</li>
-  <li>that the result&nbsp; of an EL expression supports that assignment properties expected by its tag attribute&nbsp;<br>
+  <li>operator arguments are of a valid type or can be coerced to one.</li>
+  <li>EL attribute values resolve to a type that is expected by its tag attribute</li>
+  <li>the result of an EL expression supports the assignment properties expected by its tag attribute&nbsp;<br>
   </li>
 </ul>
 <h4>Argument Coercability</h4>
@@ -166,13 +130,12 @@
   </tbody>
 </table>
 <br>
-<h4>Attribute value compatability</h4>
+<h4>Attribute value compatibility</h4>
 For those tag attributes that are annotated with JSF tooling meta-data
 providing type information, EL type information can be compared to what
 is expected by the attribute.&nbsp; Below are some examples of
 attribute values being assigned EL expressions that have incompatible
-types.&nbsp; The tag prefixes "f" and "h" represent the built-in JSF
-"core" and "html" tag libraries respectively.<br>
+types.&nbsp; The tag prefix "h" represents the built-in JSF "html" tag library.<br>
 <br>
 <table style="text-align: left; width: 1241px; height: 59px;" border="1" cellpadding="2" cellspacing="2">
   <tbody>
@@ -189,9 +152,11 @@
       </td>
     </tr>
     <tr>
-      <td style="vertical-align: top;">TODO: more examples<br>
+      <td style="vertical-align: top;">&lt;h:dataTable binding="#{myBeanSubClass.booleanProperty}"/&gt;<br>
       </td>
-      <td style="vertical-align: top;"><br>
+      <td style="vertical-align: top;">The
+binding attribute expects a binding to a UIComponent object.&nbsp; The
+boolean property can be neither converted or coerced to a valid type.<br>
       </td>
     </tr>
   </tbody>
@@ -203,7 +168,7 @@
 e.g. &lt;h:inputText value=#{bean.readOnlyProperty}/&gt;<br>
 <br>
 For tags that are annotated with JSF tooling meta-data, the framework
-can check if the property is writable if expected.&nbsp; In the example
+can check if the property is writable as expected.&nbsp; In the example
 above, the inputText will write back the value entered by the user to
 bean.readOnlyProperty.&nbsp; However, if the bean doesn't implement a
 setter for this property, the user will be issued a warning that the
@@ -254,7 +219,7 @@
       </td>
       <td style="vertical-align: top; text-align: center;">false<br>
       </td>
-      <td style="vertical-align: top;">Empty operator always returns false for non-null, non-empty strings<br>
+      <td style="vertical-align: top;">Empty operator always returns false for non-null, non-empty strings.<br>
       </td>
     </tr>
     <tr>
@@ -262,7 +227,7 @@
       </td>
       <td style="vertical-align: top; text-align: center;">false<br>
       </td>
-      <td style="vertical-align: top;">The empty operator always returns false if the argument is not a string, collection, array or map<br>
+      <td style="vertical-align: top;">The empty operator always returns false if the argument is not a string, collection, array or map.<br>
       </td>
     </tr>
     <tr>
@@ -280,9 +245,9 @@
 
 <h4>Logical short-circuit analysis<br>
 </h4>
-
-JSF EL supports short-circuit evaluation of boolean expressions.&nbsp; This
-cause entire sub-expressions to not be evaluated and those important
+JSF EL supports short-circuit evaluation of boolean expressions.&nbsp;
+Short-circuit evaluation can cause entire sub-expressions to not be
+evaluated and important
 side-effects may not occur.&nbsp; The following are examples of EL
 expressions that will be short-circuited:<br>
 
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/the_design_time_application_manager.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/the_design_time_application_manager.html
index c831888..607cbd2 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/the_design_time_application_manager.html
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/the_design_time_application_manager.html
@@ -5,7 +5,6 @@
 <meta http-equiv="Content-Style-Type" content="text/css">
 <meta http-equiv="Content-Script-Type" content="text/javascript">
 <link rel="stylesheet" href="../../book.css" type="text/css"></head>
-
 <body>
 <table summary="" cellpadding="0" cellspacing="0" width="100%">
 <tbody><tr valign="bottom">
@@ -25,10 +24,9 @@
 assist for EL expressions.<br>
 <br>
 The DTAppMgr is comprised of the following main components:<br>
-<br>
 <ul>
   <li>a simulated FacesContext, called DTFacesContext, used to simulates part of this key runtime context object.</li>
-  <li>a pluggable ExternalContext, called DTExternalContext to support different behaviours in different containers (i.e. JSP).</li>
+  <li>a pluggable ExternalContext, called DTExternalContext to support different behaviors in different containers (i.e. JSP).</li>
   <li>pluggable resolvers for EL variables, properties and methods including default implementations.</li>
   <li>a JSP processor that can update simulated design time state based on a JSP page and tag-based meta-data.</li>
 </ul>
@@ -36,15 +34,68 @@
 The simulated FacesContext, called DTFacesContext, currently supports a
 very limited subset of the runtime FacesContext object.&nbsp; Its main
 function is to allow for a pluggable external context.&nbsp; At
-designtime, one FacesContext is created per IFile.<br>
+design-time, one FacesContext is created per IFile.<br>
 <h3>Pluggable ExternalContext</h3>
 The ExternalContext is used to separate container-dependent context
 information from the rest of the FacesContext.&nbsp; At design time, we
 support a DTExternalContext with much the same function.&nbsp; This
 external context can be configured by adopters by implementing a
-factory extension point TODO<br>
+factory extension point.&nbsp; The extension point is
+org.eclipse.jst.jsf.designtime.externalcontext.&nbsp; You extension
+will define an id and class.&nbsp; The id uniquely identifies you
+factory class, which must extend
+org.eclipse.jst.jsf.designtime.internal.provisional.context.AbstractDTExternalContextFactory.&nbsp;
+To set your external context factory as the current one, use
+DesignTimeApplicationManager.setExternalContextProvider(String).&nbsp;
+Note that by changing the current ExternalContextProvider on a project,
+you will significantly change the behavior of how variables are
+resolved in EL expressions.<br>
 <h3>Pluggable resolvers</h3>
-TODO<br>
+JSF EL expressions may contain variable and method bindings that
+reference external objects.&nbsp; At runtime, this is accomplished
+through several mechanisms that convert different types of
+identifier symbols into objects and methods.&nbsp; At design-time the
+JSF tooling tries to parallel these as closely as possible.&nbsp; These
+mechanisms are:<br>
+
+<ul>
+<li>VariableResolver</li><li>PropertyResolver</li><li>MethodBinding<br>
+</li>
+</ul>
+<h4>VariableResolver</h4>
+
+All identifier symbol resolution in EL starts with the
+VariableResolver.&nbsp; An expression like "myBean.property" is
+resolved by first extracting the symbol "myBean" and requesting the
+VariableResolver to return a matching runtime object.&nbsp; At design
+time, we parallel this exactly but constructing a design-time description of
+the object rather than its actual value (since the actual value cannot
+be fully computed until runtime in most cases).&nbsp; The concept of a
+"DTVariableResolver" is introduced.&nbsp; A default implementation is
+automatically provided which closely mirrors the default runtime
+resolver.&nbsp; New variable resolvers can be contributed through the
+Eclipse extension point mechanism to support custom runtime
+counterparts.&nbsp; To learn more about contributing new variables, see <a href="contributing_el_variables.html">Contributing EL Variables</a>.
+<h4>PropertyResolver</h4>
+
+Once a variable is resolved, the next step in resolving a value binding
+is to resolve its properties.&nbsp; To return to our simple example,
+"myBean.property", the JSF runtime will pass the object returned for
+'myBean' to the property resolver along with the name 'property' and
+ask it to resolve it to an object.&nbsp; At design time, we parallel
+this by introducing the "DTPropertyResolver".<br>
+
+<h4>MethodBinding</h4>
+
+The method binding mechanism implemented by the JSF runtime, differs
+from the way variables and properties are resolved.&nbsp; At design
+time however, we support them in the same way by providing a
+"DTMethodResolver".&nbsp; The main reason for this divergence is that
+at runtime, the method binding need know only enough to invoke a
+method.&nbsp; However at design time, we want to be able resolve a
+method binding in such a way that we can provide the same kinds of
+features we provide for properties such as signature validation and
+content assist.
 <h3>JSP document processor<br>
 </h3>
 The JSP document processor parses JSP document models looking for
@@ -70,12 +121,15 @@
       </td>
       <td style="vertical-align: top;">true or false<br>
       </td>
-      <td style="vertical-align: top;">This property alerts the model
+      <td style="vertical-align: top;">This
+property alerts the model
 processor that this attribute contributes a variable to the EL name
 space at runtime.&nbsp; If no further meta-data is provided, this will
 cause a default variable using the text of the attribute as the name to
 be added to the name space for this document at 'request' scope.&nbsp;
-The variable will have&nbsp; no properties or methods.&nbsp; More information about the variable can be provided using the extra meta-data defined below.<br>
+The variable will have&nbsp; no properties or methods.&nbsp; More
+information about the variable can be provided using the extra
+meta-data defined below.<br>
       </td>
     </tr>
     <tr>
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/using_context_resolvers.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/using_context_resolvers.html
index 6e7c5dd..c930759 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/using_context_resolvers.html
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/using_context_resolvers.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-  <title>Using Context Resolvers</title>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>Using Context Resolvers</title>
+  
 
 
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -9,9 +9,7 @@
 
   <meta http-equiv="Content-Script-Type" content="text/javascript">
 
-  <link rel="stylesheet" href="../../book.css" type="text/css">
-</head>
-
+  <link rel="stylesheet" href="../../book.css" type="text/css"></head>
 <body>
 <table summary="" cellpadding="0" cellspacing="0" width="100%">
 
@@ -139,7 +137,18 @@
   </tbody>
 </table>
 <br>
-<h3>Adding Factory Delegates</h3>
-TODO:<br>
+<h3>Adding Factory Delegates</h3>The existing factories can be extended
+using factory delegates.&nbsp; A delegate for
+IStructuredDocumentContextFactory allows you to extend the existing
+factory to create IStructuredDocumentContext's for document contexts
+other than an IStructuredDocumentContext and offset.&nbsp; Similarly,
+adding factory delegates to IStructuredDocumentContextResolverFactory
+allows you to create context resolvers for structured documents other
+than those already supported.<br>
+<br>
+Factory delegates are added programmatically be calling
+addFactoryDelegate on the appropriate factory.&nbsp; See the JavaDoc
+for IDelegatingFactory for more details.<br>
+
 
 </body></html>