This commit was manufactured by cvs2svn to create tag 'R3_4_0'.
diff --git a/bundles/org.eclipse.jst.jsp.core/.project b/bundles/org.eclipse.jst.jsp.core/.project
index 0f10b7a..cd5c0da 100644
--- a/bundles/org.eclipse.jst.jsp.core/.project
+++ b/bundles/org.eclipse.jst.jsp.core/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
index 937cd0b..09b1434 100644
--- a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
@@ -44,20 +44,21 @@
  org.eclipse.jst.jsp.css.core.internal.parserz;x-internal:=true
 Import-Package: com.ibm.icu.text;version="3.8",
  com.ibm.icu.util;version="3.8",
- javax.servlet.jsp.tagext;version="[2.0.0,2.2.0)"
+ javax.servlet.jsp.tagext;version="[2.0.0,3.0.0)"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.jobs;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.sse.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.wst.css.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.html.core;bundle-version="[1.1.400,1.2.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)",
+ org.eclipse.core.filesystem;bundle-version="1.3.0",
+ org.eclipse.osgi.services;bundle-version="3.2.0",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.0,2.0.0)";resolution:=optional,
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.300,2.0.0)";resolution:=optional,
- org.eclipse.osgi.services;bundle-version="3.2.0"
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.300,2.0.0)";resolution:=optional
 Bundle-ActivationPolicy: lazy; exclude:="org.eclipse.jst.jsp.core.internal.contenttype,org.eclipse.jst.jsp.css.core.internal.contenttype,org.eclipse.jst.jsp.core.internal.provisional.contenttype"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java
index efe6126..2d09e6a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java
@@ -781,8 +781,10 @@
 	}
 	
 	void loadTagXFile(final CMElementDeclarationImpl ed, IFile tagxFile, boolean allowIncludes, InputStream inputStream) {
-		ed.setPath(tagxFile.getFullPath().toString());
-		ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
+		if (allowIncludes) {
+			ed.setPath(tagxFile.getFullPath().toString());
+			ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
+		}
 		try {
 			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
 			InputSource inputSource = new InputSource(tagxFile.getFullPath().toString());
@@ -822,7 +824,7 @@
 							ed.setIsELIgnored(attributes.getValue(JSP20TLDNames.IS_EL_IGNORED));
 					}
 					else if (qName.equals(JSP20Namespace.ElementName.DIRECTIVE_ATTRIBUTE)) {
-						CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument());
+						CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument(), JSP11Namespace.ATTR_VALUE_TRUE);
 						String nameValue = attributes.getValue(JSP12TLDNames.NAME);
 						attribute.setNodeName(nameValue);
 						if (attributes.getIndex(JSP20TLDNames.FRAGMENT) >= 0)
@@ -895,9 +897,11 @@
 	
 	private void loadTagFile(CMElementDeclarationImpl ed, IFile tagFile, boolean allowIncludes, InputStream inputStream) {
 		try {
-			ed.setPath(tagFile.getFullPath().toString());
-			ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
-			ed.setLocationString(tagFile.getFullPath().toString());
+			if (allowIncludes) {
+				ed.setPath(tagFile.getFullPath().toString());
+				ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
+				ed.setLocationString(tagFile.getFullPath().toString());
+			}
 			IStructuredDocument document = null;
 			if(inputStream != null) {
 				document = (IStructuredDocument)new ModelHandlerForJSP().getDocumentLoader().createNewStructuredDocument(tagFile.getName(), inputStream);
@@ -962,7 +966,7 @@
 							}
 						}
 						else if (JSP12TLDNames.ATTRIBUTE.equals(directiveName)) {
-							CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument());
+							CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument(), JSP11Namespace.ATTR_VALUE_TRUE);
 							// 8.5.2
 							String attrName = null;
 							for (int i = 2; i < documentRegion.getNumberOfRegions(); i++) {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
index 97688fd..6edf76c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
@@ -540,7 +540,6 @@
 		if (cu != null) {
 			try {
 				synchronized(cu) {
-					cu.makeConsistent(getProgressMonitor());
 					cu.reconcile(ICompilationUnit.NO_AST, false, getWorkingCopyOwner(), getProgressMonitor());
 				}
 			}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
index 747fd36..800cc85 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -154,7 +154,7 @@
 	private static final String FOOTER = "}}"; //$NON-NLS-1$
 	
 	/** exception declaration */
-	private static final String EXCEPTION = "Throwable exception = null;"; //$NON-NLS-1$
+	private static final String EXCEPTION = "Throwable exception = new Throwable();"; //$NON-NLS-1$
 	
 	/** expression prefix */
 	public static final String EXPRESSION_PREFIX = "out.print("; //$NON-NLS-1$
@@ -1898,7 +1898,8 @@
 		ITextRegion content = null;
 		String type = null;
 		String quotetype = null;
-		for (int i = 0; i < embeddedRegions.size(); i++) {
+		final int length = embeddedRegions.size();
+		for (int i = 0; i < length; i++) {
 
 			// possible delimiter, check later
 			delim = embeddedRegions.get(i);
@@ -1950,9 +1951,18 @@
 					// fCurrentNode, contentStart, content.getLength());
 					translateDeclarationString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength(), false);
 				}
-				else if (type == DOMJSPRegionContexts.JSP_EL_OPEN) {
+				else if (type == DOMJSPRegionContexts.JSP_EL_OPEN || type == DOMJSPRegionContexts.JSP_VBL_OPEN) {
 					fLastJSPType = EXPRESSION;
-					translateEL(embeddedContainer.getText(content), embeddedContainer.getText(delim), fCurrentNode, contentStart, content.getLength());
+					ITextRegion region = null;
+					
+					int start = delim.getEnd();
+					while (++i < length) {
+						region = embeddedRegions.get(i);
+						if (region == null || !isELType(region.getType()))
+							break;
+					}
+					final String elText = embeddedContainer.getFullText().substring(start, (region != null ? region.getStart() : embeddedContainer.getLength() - 1));
+					translateEL(elText, embeddedContainer.getText(delim), fCurrentNode, embeddedContainer.getEndOffset(delim), elText.length());
 				}
 
 				// calculate relative offset in buffer
@@ -2349,7 +2359,7 @@
 				//-- Escaped value. Add the run, then unescape
 				int runLength = i-runStart;
 				if (runLength > 0) {
-					appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, true, true);
+					appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, false, true);
 					jspPositionStart += runLength + 1;
 					jspPositionLength -= runLength + 1;
 				}
@@ -2364,7 +2374,7 @@
 		//-- Copy last-run
 		int runLength = i - runStart;
 		if (runLength > 0)
-			appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, true, false);
+			appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, false, false);
 		appendToBuffer(EXPRESSION_SUFFIX, fUserCode, false, embeddedContainer);
 	}
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj
index 499e8c6..6a087f8 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj
@@ -546,7 +546,7 @@
 {/*@bgen(jjtree) ValuePrefix */

     try {

 /*@egen*/

-    Literal() | (<LPAREN> (Expression())? <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER>/*@bgen(jjtree)*/

+    Literal() | (<LPAREN> (Expression())? <RPAREN>) | LOOKAHEAD(4) FunctionInvocation() | <IDENTIFIER>/*@bgen(jjtree)*/

     } catch (Throwable jjte000) {

       if (jjtc000) {

         jjtree.clearNodeScope(jjtn000);

@@ -626,13 +626,13 @@
     try {

 /*@egen*/

     (prefix = <IDENTIFIER> <COLON>) { jjtn000.setFullFunctionName(prefix.image + ":"); }

-        (name = <IDENTIFIER>)? {

+        (name = <IDENTIFIER>) {

             if(null != prefix && null != name)

                     jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));

             else if(null != name)

                     jjtn000.setFullFunctionName(name.image);

         }

-        (<LPAREN> (Expression())? (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?/*@bgen(jjtree)*/

+        (<LPAREN> (Expression())? (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )/*@bgen(jjtree)*/

     } catch (Throwable jjte000) {

       if (jjtc000) {

         jjtree.clearNodeScope(jjtn000);

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt
index 66d2c79..53f7692 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt
@@ -249,7 +249,7 @@
 

 void ValuePrefix() : {}

 {

-    Literal() | (<LPAREN> (Expression())? <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER> 

+    Literal() | (<LPAREN> (Expression())? <RPAREN>) | LOOKAHEAD(4) FunctionInvocation() | <IDENTIFIER> 

 }

 

 void ValueSuffix() : 

@@ -267,13 +267,13 @@
 }

 {

     (prefix = <IDENTIFIER> <COLON>) { jjtThis.setFullFunctionName(prefix.image + ":"); }

-        (name = <IDENTIFIER>)? {

+        (name = <IDENTIFIER>) {

             if(null != prefix && null != name)

                     jjtThis.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));

             else if(null != name)

                     jjtThis.setFullFunctionName(name.image);

         }

-        (<LPAREN> (Expression())? (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?

+        (<LPAREN> (Expression())? (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )

 }

 

 void Literal() : {}

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java
index 9e3c2e7..f06ac5a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 BEA Systems and others.
+ * Copyright (c) 2005, 2011 BEA Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
  * Contributors:
  *     BEA Systems - initial implementation
  *     IBM Corporation - Bug 318281 - EL validation error for quote escaping
+ *     IBM Corporation - Bug 351996 - JSP validator shows false errors for EL conditional operator
  *
  *******************************************************************************/
 /* Generated By:JJTree&JavaCC: Do not edit this line. JSPELParser.java */
@@ -652,7 +653,7 @@
         break;
       default:
         jj_la1[17] = jj_gen;
-        if (jj_2_2(3)) {
+        if (jj_2_2(4)) {
           FunctionInvocation();
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -752,58 +753,46 @@
       prefix = jj_consume_token(IDENTIFIER);
       jj_consume_token(COLON);
                                       jjtn000.setFullFunctionName(prefix.image + ":");
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case IDENTIFIER:
-        name = jj_consume_token(IDENTIFIER);
-        break;
-      default:
-        jj_la1[21] = jj_gen;
-      }
+      name = jj_consume_token(IDENTIFIER);
             if(null != prefix && null != name)
                     jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
             else if(null != name)
                     jjtn000.setFullFunctionName(name.image);
+      jj_consume_token(LPAREN);
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case STRING_LITERAL:
+      case TRUE:
+      case FALSE:
+      case NULL:
       case LPAREN:
-        jj_consume_token(LPAREN);
+      case MINUS:
+      case NOT1:
+      case NOT2:
+      case EMPTY:
+      case IDENTIFIER:
+        Expression();
+        break;
+      default:
+        jj_la1[21] = jj_gen;
+      }
+      label_8:
+      while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case INTEGER_LITERAL:
-        case FLOATING_POINT_LITERAL:
-        case STRING_LITERAL:
-        case TRUE:
-        case FALSE:
-        case NULL:
-        case LPAREN:
-        case MINUS:
-        case NOT1:
-        case NOT2:
-        case EMPTY:
-        case IDENTIFIER:
-          Expression();
+        case COMMA:
           break;
         default:
           jj_la1[22] = jj_gen;
+          break label_8;
         }
-        label_8:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
-            break;
-          default:
-            jj_la1[23] = jj_gen;
-            break label_8;
-          }
-          jj_consume_token(COMMA);
-          Expression();
-        }
-        try {
-          jj_consume_token(RPAREN);
-        } catch (Exception e) {
+        jj_consume_token(COMMA);
+        Expression();
+      }
+      try {
+        jj_consume_token(RPAREN);
+      } catch (Exception e) {
 
-        }
-        break;
-      default:
-        jj_la1[24] = jj_gen;
       }
     } catch (Throwable jjte000) {
       if (jjtc000) {
@@ -854,7 +843,7 @@
         jj_consume_token(NULL);
         break;
       default:
-        jj_la1[25] = jj_gen;
+        jj_la1[23] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -880,37 +869,37 @@
     finally { jj_save(1, xla); }
   }
 
-  final private boolean jj_3_1() {
-    if (jj_3R_9()) return true;
-    return false;
-  }
-
   final private boolean jj_3R_11() {
-    if (jj_3R_13()) return true;
+    if (jj_3R_12()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_14()) { jj_scanpos = xsp; break; }
+      if (jj_3R_13()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3R_34() {
-    if (jj_3R_37()) return true;
+  final private boolean jj_3R_33() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  final private boolean jj_3R_38() {
+  final private boolean jj_3R_40() {
+    if (jj_3R_11()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_39() {
     if (jj_3R_9()) return true;
     return false;
   }
 
-  final private boolean jj_3R_37() {
+  final private boolean jj_3R_18() {
+    if (jj_3R_20()) return true;
     Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_38()) {
-    jj_scanpos = xsp;
-    if (jj_3R_39()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_21()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
@@ -918,182 +907,37 @@
   final private boolean jj_3R_10() {
     if (jj_scan_token(IDENTIFIER)) return true;
     if (jj_scan_token(COLON)) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(47)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_12()) jj_scanpos = xsp;
-    return false;
-  }
-
-  final private boolean jj_3R_36() {
-    if (jj_scan_token(LBRACKET)) return true;
-    if (jj_3R_37()) return true;
-    if (jj_scan_token(RBRACKET)) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_29() {
-    if (jj_3R_32()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_31() {
+    if (jj_scan_token(IDENTIFIER)) return true;
     if (jj_scan_token(LPAREN)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_34()) jj_scanpos = xsp;
+    if (jj_3R_37()) jj_scanpos = xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_38()) { jj_scanpos = xsp; break; }
+    }
     if (jj_scan_token(RPAREN)) return true;
     return false;
   }
 
-  final private boolean jj_3R_32() {
+  final private boolean jj_3R_36() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_35()) {
+    if (jj_3R_39()) {
     jj_scanpos = xsp;
-    if (jj_3R_36()) return true;
+    if (jj_3R_40()) return true;
     }
     return false;
   }
 
   final private boolean jj_3R_35() {
-    if (jj_scan_token(DOT)) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(47)) jj_scanpos = xsp;
-    return false;
-  }
-
-  final private boolean jj_3R_28() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_30()) {
-    jj_scanpos = xsp;
-    if (jj_3R_31()) {
-    jj_scanpos = xsp;
-    if (jj_3_2()) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(47)) return true;
-    }
-    }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_30() {
-    if (jj_3R_33()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_27() {
-    if (jj_3R_28()) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_29()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_26() {
-    if (jj_3R_27()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_23() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_25()) {
-    jj_scanpos = xsp;
-    if (jj_3R_26()) return true;
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_22() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(32)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(33)) return true;
-    }
-    if (jj_3R_21()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_25() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(39)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(40)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(33)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(45)) return true;
-    }
-    }
-    }
-    if (jj_3R_23()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_24() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(34)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(35)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(36)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(37)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(38)) return true;
-    }
-    }
-    }
-    }
-    if (jj_3R_23()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_9() {
-    if (jj_3R_11()) return true;
-    if (jj_scan_token(COND)) return true;
-    if (jj_3R_11()) return true;
-    if (jj_scan_token(COLON)) return true;
-    if (jj_3R_11()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_21() {
-    if (jj_3R_23()) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_24()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_39() {
-    if (jj_3R_11()) return true;
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_3R_36()) return true;
+    if (jj_scan_token(RBRACKET)) return true;
     return false;
   }
 
   final private boolean jj_3R_19() {
-    if (jj_3R_21()) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_22()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_20() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(16)) {
@@ -1118,33 +962,65 @@
     }
     }
     }
-    if (jj_3R_19()) return true;
+    if (jj_3R_18()) return true;
     return false;
   }
 
-  final private boolean jj_3R_16() {
+  final private boolean jj_3R_28() {
+    if (jj_3R_31()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_34() {
+    if (jj_scan_token(DOT)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(47)) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_31() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_34()) {
+    jj_scanpos = xsp;
+    if (jj_3R_35()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_30() {
+    if (jj_scan_token(LPAREN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_33()) jj_scanpos = xsp;
+    if (jj_scan_token(RPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_38() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_36()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_15() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(41)) {
     jj_scanpos = xsp;
     if (jj_scan_token(42)) return true;
     }
-    if (jj_3R_15()) return true;
+    if (jj_3R_14()) return true;
     return false;
   }
 
-  final private boolean jj_3R_41() {
-    if (jj_scan_token(COMMA)) return true;
-    if (jj_3R_37()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_17() {
-    if (jj_3R_19()) return true;
+  final private boolean jj_3R_16() {
+    if (jj_3R_18()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_20()) { jj_scanpos = xsp; break; }
+      if (jj_3R_19()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
@@ -1154,7 +1030,38 @@
     return false;
   }
 
-  final private boolean jj_3R_18() {
+  final private boolean jj_3R_29() {
+    if (jj_3R_32()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_27() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_29()) {
+    jj_scanpos = xsp;
+    if (jj_3R_30()) {
+    jj_scanpos = xsp;
+    if (jj_3_2()) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_26() {
+    if (jj_3R_27()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_28()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_17() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(18)) {
@@ -1167,47 +1074,109 @@
     }
     }
     }
-    if (jj_3R_17()) return true;
+    if (jj_3R_16()) return true;
     return false;
   }
 
-  final private boolean jj_3R_15() {
-    if (jj_3R_17()) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_18()) { jj_scanpos = xsp; break; }
-    }
+  final private boolean jj_3R_25() {
+    if (jj_3R_26()) return true;
     return false;
   }
 
   final private boolean jj_3R_14() {
+    if (jj_3R_16()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_17()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_13() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(43)) {
     jj_scanpos = xsp;
     if (jj_scan_token(44)) return true;
     }
-    if (jj_3R_13()) return true;
+    if (jj_3R_12()) return true;
     return false;
   }
 
-  final private boolean jj_3R_40() {
-    if (jj_3R_37()) return true;
+  final private boolean jj_3R_37() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  final private boolean jj_3R_13() {
-    if (jj_3R_15()) return true;
+  final private boolean jj_3R_24() {
     Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_16()) { jj_scanpos = xsp; break; }
+    xsp = jj_scanpos;
+    if (jj_scan_token(39)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(40)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(33)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) return true;
+    }
+    }
+    }
+    if (jj_3R_22()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_21() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(32)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(33)) return true;
+    }
+    if (jj_3R_20()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_22() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_24()) {
+    jj_scanpos = xsp;
+    if (jj_3R_25()) return true;
     }
     return false;
   }
 
-  final private boolean jj_3R_33() {
+  final private boolean jj_3R_23() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(34)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(35)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(36)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(37)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(38)) return true;
+    }
+    }
+    }
+    }
+    if (jj_3R_22()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_9() {
+    if (jj_3R_11()) return true;
+    if (jj_scan_token(COND)) return true;
+    if (jj_3R_11()) return true;
+    if (jj_scan_token(COLON)) return true;
+    if (jj_3R_11()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_32() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(10)) {
@@ -1230,89 +1199,86 @@
   }
 
   final private boolean jj_3R_12() {
-    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_14()) return true;
     Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_40()) jj_scanpos = xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_41()) { jj_scanpos = xsp; break; }
+      if (jj_3R_15()) { jj_scanpos = xsp; break; }
     }
-    if (jj_scan_token(RPAREN)) return true;
     return false;
   }
 
-  /** Generated Token Manager. */
+  final private boolean jj_3_1() {
+    if (jj_3R_9()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_20() {
+    if (jj_3R_22()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_23()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
   public JSPELParserTokenManager token_source;
   SimpleCharStream jj_input_stream;
-  /** Current token. */
-  public Token token;
-  /** Next token. */
-  public Token jj_nt;
+  public Token token, jj_nt;
   private int jj_ntk;
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
+  public boolean lookingAhead = false;
   private int jj_gen;
-  final private int[] jj_la1 = new int[26];
+  final private int[] jj_la1 = new int[24];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static {
-      jj_la1_init_0();
-      jj_la1_init_1();
+      jj_la1_0();
+      jj_la1_1();
    }
-   private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x4001d60,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0xf3c000,0xf3c000,0x0,0x0,0x0,0x0,0x0,0x4001d60,0x40002000,0x4001d60,0x4001d60,0x0,0x0,0x40002000,0x0,0x4001d60,0x10000000,0x4000000,0x1d60,};
+   private static void jj_la1_0() {
+      jj_la1_0 = new int[] {0x4001d60,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0xf3c000,0xf3c000,0x0,0x0,0x0,0x0,0x0,0x4001d60,0x40002000,0x4001d60,0x4001d60,0x0,0x0,0x40002000,0x4001d60,0x10000000,0x1d60,};
    }
-   private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0xa182,0x1800,0x1800,0x600,0x600,0x0,0x0,0x0,0x0,0x3,0x3,0x7c,0x7c,0x2182,0xa182,0x0,0xa182,0x0,0x8000,0x8000,0x0,0x8000,0xa182,0x0,0x0,0x0,};
+   private static void jj_la1_1() {
+      jj_la1_1 = new int[] {0xa182,0x1800,0x1800,0x600,0x600,0x0,0x0,0x0,0x0,0x3,0x3,0x7c,0x7c,0x2182,0xa182,0x0,0xa182,0x0,0x8000,0x8000,0x0,0xa182,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[2];
   private boolean jj_rescan = false;
   private int jj_gc = 0;
 
-  /** Constructor with InputStream. */
   public JSPELParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  /** Constructor with InputStream and supplied encoding */
-  public JSPELParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    jj_input_stream = new SimpleCharStream(stream, 1, 1);
     token_source = new JSPELParserTokenManager(jj_input_stream);
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
-  /** Reinitialise. */
   public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  /** Reinitialise. */
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    jj_input_stream.ReInit(stream, 1, 1);
     token_source.ReInit(jj_input_stream);
     token = new Token();
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
-  /** Constructor. */
   public JSPELParser(java.io.Reader stream) {
     jj_input_stream = new SimpleCharStream(stream, 1, 1);
     token_source = new JSPELParserTokenManager(jj_input_stream);
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
-  /** Reinitialise. */
   public void ReInit(java.io.Reader stream) {
     jj_input_stream.ReInit(stream, 1, 1);
     token_source.ReInit(jj_input_stream);
@@ -1320,28 +1286,26 @@
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
-  /** Constructor with generated Token Manager. */
   public JSPELParser(JSPELParserTokenManager tm) {
     token_source = tm;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
-  /** Reinitialise. */
   public void ReInit(JSPELParserTokenManager tm) {
     token_source = tm;
     token = new Token();
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 26; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -1369,9 +1333,7 @@
     throw generateParseException();
   }
 
-  static private final class LookaheadSuccess extends java.lang.Error { 
-    private static final long serialVersionUID = 1L; 
-  }
+  static private final class LookaheadSuccess extends java.lang.Error { private static final long serialVersionUID = 1L; }
   final private LookaheadSuccess jj_ls = new LookaheadSuccess();
   final private boolean jj_scan_token(int kind) {
     if (jj_scanpos == jj_lastpos) {
@@ -1394,8 +1356,6 @@
     return false;
   }
 
-
-/** Get the next Token. */
   final public Token getNextToken() {
     if (token.next != null) token = token.next;
     else token = token.next = token_source.getNextToken();
@@ -1404,9 +1364,8 @@
     return token;
   }
 
-/** Get the specific Token. */
   final public Token getToken(int index) {
-    Token t = token;
+    Token t = lookingAhead ? jj_scanpos : token;
     for (int i = 0; i < index; i++) {
       if (t.next != null) t = t.next;
       else t = t.next = token_source.getNextToken();
@@ -1421,7 +1380,7 @@
       return (jj_ntk = jj_nt.kind);
   }
 
-  private java.util.List jj_expentries = new java.util.ArrayList();
+  private java.util.Vector jj_expentries = new java.util.Vector();
   private int[] jj_expentry;
   private int jj_kind = -1;
   private int[] jj_lasttokens = new int[100];
@@ -1436,31 +1395,36 @@
       for (int i = 0; i < jj_endpos; i++) {
         jj_expentry[i] = jj_lasttokens[i];
       }
-      jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) {
-        int[] oldentry = (int[])(it.next());
+      boolean exists = false;
+      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
+        int[] oldentry = (int[])(e.nextElement());
         if (oldentry.length == jj_expentry.length) {
+          exists = true;
           for (int i = 0; i < jj_expentry.length; i++) {
             if (oldentry[i] != jj_expentry[i]) {
-              continue jj_entries_loop;
+              exists = false;
+              break;
             }
           }
-          jj_expentries.add(jj_expentry);
-          break jj_entries_loop;
+          if (exists) break;
         }
       }
+      if (!exists) jj_expentries.addElement(jj_expentry);
       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
     }
   }
 
-  /** Generate ParseException. */
   public ParseException generateParseException() {
-    jj_expentries.clear();
+    jj_expentries.removeAllElements();
     boolean[] la1tokens = new boolean[51];
+    for (int i = 0; i < 51; i++) {
+      la1tokens[i] = false;
+    }
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 26; i++) {
+    for (int i = 0; i < 24; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -1476,7 +1440,7 @@
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;
-        jj_expentries.add(jj_expentry);
+        jj_expentries.addElement(jj_expentry);
       }
     }
     jj_endpos = 0;
@@ -1484,23 +1448,20 @@
     jj_add_error_token(0, 0);
     int[][] exptokseq = new int[jj_expentries.size()][];
     for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = (int[])jj_expentries.get(i);
+      exptokseq[i] = (int[])jj_expentries.elementAt(i);
     }
     return new ParseException(token, exptokseq, tokenImage);
   }
 
-  /** Enable tracing. */
   final public void enable_tracing() {
   }
 
-  /** Disable tracing. */
   final public void disable_tracing() {
   }
 
   final private void jj_rescan_token() {
     jj_rescan = true;
     for (int i = 0; i < 2; i++) {
-    try {
       JJCalls p = jj_2_rtns[i];
       do {
         if (p.gen > jj_gen) {
@@ -1512,7 +1473,6 @@
         }
         p = p.next;
       } while (p != null);
-      } catch(LookaheadSuccess ls) { }
     }
     jj_rescan = false;
   }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
index 4c727ea..b2172f7 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 BEA Systems and others.
+ * Copyright (c) 2005, 2011 BEA Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,18 +8,15 @@
  * Contributors:
  *     BEA Systems - initial implementation
  *     IBM Corporation - Bug 318281 - EL validation error for quote escaping
+ *     IBM Corporation - Bug 351996 - JSP validator shows false errors for EL conditional operator
  *
  *******************************************************************************/
 /* Generated By:JJTree&JavaCC: Do not edit this line. JSPELParserTokenManager.java */
 package org.eclipse.jst.jsp.core.internal.java.jspel;
 
-/** Token Manager. */
 public class JSPELParserTokenManager implements JSPELParserConstants
 {
-
-  /** Debug output. */
   public  java.io.PrintStream debugStream = System.out;
-  /** Set debug output. */
   public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
 private final int jjStopStringLiteralDfa_0(int pos, long active0)
 {
@@ -72,13 +69,21 @@
 {
    return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
 }
-private int jjStopAtPos(int pos, int kind)
+private final int jjStopAtPos(int pos, int kind)
 {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    return pos + 1;
 }
-private int jjMoveStringLiteralDfa0_0()
+private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) { return pos + 1; }
+   return jjMoveNfa_0(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_0()
 {
    switch(curChar)
    {
@@ -147,7 +152,7 @@
          return jjMoveNfa_0(0, 0);
    }
 }
-private int jjMoveStringLiteralDfa1_0(long active0)
+private final int jjMoveStringLiteralDfa1_0(long active0)
 {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
@@ -213,10 +218,10 @@
    }
    return jjStartNfa_0(0, active0);
 }
-private int jjMoveStringLiteralDfa2_0(long old0, long active0)
+private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(0, old0);
+      return jjStartNfa_0(0, old0); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_0(1, active0);
@@ -249,10 +254,10 @@
    }
    return jjStartNfa_0(1, active0);
 }
-private int jjMoveStringLiteralDfa3_0(long old0, long active0)
+private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(1, old0);
+      return jjStartNfa_0(1, old0); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_0(2, active0);
@@ -277,10 +282,10 @@
    }
    return jjStartNfa_0(2, active0);
 }
-private int jjMoveStringLiteralDfa4_0(long old0, long active0)
+private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(2, old0);
+      return jjStartNfa_0(2, old0); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_0(3, active0);
@@ -301,13 +306,30 @@
    }
    return jjStartNfa_0(3, active0);
 }
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
+private final void jjCheckNAdd(int state)
 {
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
+   if (jjrounds[state] != jjround)
+   {
+      jjstateSet[jjnewStateCnt++] = state;
+      jjrounds[state] = jjround;
+   }
+}
+private final void jjAddStates(int start, int end)
+{
+   do {
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+   } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+   jjCheckNAdd(state1);
+   jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+   do {
+      jjCheckNAdd(jjnextStates[start]);
+   } while (start++ != end);
 }
 static final long[] jjbitVec0 = {
    0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
@@ -333,7 +355,7 @@
 static final long[] jjbitVec8 = {
    0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
 };
-private int jjMoveNfa_0(int startState, int curPos)
+private final int jjMoveNfa_0(int startState, int curPos)
 {
    int startsAt = 0;
    jjnewStateCnt = 35;
@@ -664,7 +686,7 @@
          return ((jjbitVec5[i2] & l2) != 0L);
       case 61:
          return ((jjbitVec6[i2] & l2) != 0L);
-      default :
+      default : 
          if ((jjbitVec0[i1] & l1) != 0L)
             return true;
          return false;
@@ -676,14 +698,12 @@
    {
       case 0:
          return ((jjbitVec8[i2] & l2) != 0L);
-      default :
+      default : 
          if ((jjbitVec7[i1] & l1) != 0L)
             return true;
          return false;
    }
 }
-
-/** Token literal values. */
 public static final String[] jjstrLiteralImages = {
 "", null, null, null, null, null, null, null, null, null, "\164\162\165\145", 
 "\146\141\154\163\145", "\156\165\154\154", "\56", "\76", "\147\164", "\74", "\154\164", "\75\75", 
@@ -691,10 +711,8 @@
 "\51", "\54", "\72", "\133", "\135", "\53", "\55", "\52", "\57", "\144\151\166", 
 "\45", "\155\157\144", "\156\157\164", "\41", "\141\156\144", "\46\46", "\157\162", 
 "\174\174", "\145\155\160\164\171", "\77", null, null, null, null, };
-
-/** Lexer state names. */
 public static final String[] lexStateNames = {
-   "DEFAULT",
+   "DEFAULT", 
 };
 static final long[] jjtoToken = {
    0xffffffffff61L, 
@@ -706,20 +724,17 @@
 private final int[] jjrounds = new int[35];
 private final int[] jjstateSet = new int[70];
 protected char curChar;
-/** Constructor. */
-public JSPELParserTokenManager(SimpleCharStream stream){
+public JSPELParserTokenManager(SimpleCharStream stream)
+{
    if (SimpleCharStream.staticFlag)
       throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
    input_stream = stream;
 }
-
-/** Constructor. */
-public JSPELParserTokenManager(SimpleCharStream stream, int lexState){
+public JSPELParserTokenManager(SimpleCharStream stream, int lexState)
+{
    this(stream);
    SwitchTo(lexState);
 }
-
-/** Reinitialise parser. */
 public void ReInit(SimpleCharStream stream)
 {
    jjmatchedPos = jjnewStateCnt = 0;
@@ -727,22 +742,18 @@
    input_stream = stream;
    ReInitRounds();
 }
-private void ReInitRounds()
+private final void ReInitRounds()
 {
    int i;
    jjround = 0x80000001;
    for (i = 35; i-- > 0;)
       jjrounds[i] = 0x80000000;
 }
-
-/** Reinitialise parser. */
 public void ReInit(SimpleCharStream stream, int lexState)
 {
    ReInit(stream);
    SwitchTo(lexState);
 }
-
-/** Switch to specified lex state. */
 public void SwitchTo(int lexState)
 {
    if (lexState >= 1 || lexState < 0)
@@ -753,25 +764,14 @@
 
 protected Token jjFillToken()
 {
-   final Token t;
-   final String curTokenImage;
-   final int beginLine;
-   final int endLine;
-   final int beginColumn;
-   final int endColumn;
+   Token t = Token.newToken(jjmatchedKind);
+   t.kind = jjmatchedKind;
    String im = jjstrLiteralImages[jjmatchedKind];
-   curTokenImage = (im == null) ? input_stream.GetImage() : im;
-   beginLine = input_stream.getBeginLine();
-   beginColumn = input_stream.getBeginColumn();
-   endLine = input_stream.getEndLine();
-   endColumn = input_stream.getEndColumn();
-   t = Token.newToken(jjmatchedKind, curTokenImage);
-
-   t.beginLine = beginLine;
-   t.endLine = endLine;
-   t.beginColumn = beginColumn;
-   t.endColumn = endColumn;
-
+   t.image = (im == null) ? input_stream.GetImage() : im;
+   t.beginLine = input_stream.getBeginLine();
+   t.beginColumn = input_stream.getBeginColumn();
+   t.endLine = input_stream.getEndLine();
+   t.endColumn = input_stream.getEndColumn();
    return t;
 }
 
@@ -782,7 +782,6 @@
 int jjmatchedPos;
 int jjmatchedKind;
 
-/** Get the next Token. */
 public Token getNextToken() 
 {
   Token matchedToken;
@@ -790,13 +789,13 @@
 
   EOFLoop :
   for (;;)
-  {
-   try
-   {
+  {   
+   try   
+   {     
       curChar = input_stream.BeginToken();
-   }
+   }     
    catch(java.io.IOException e)
-   {
+   {        
       jjmatchedKind = 0;
       matchedToken = jjFillToken();
       return matchedToken;
@@ -847,31 +846,4 @@
   }
 }
 
-private void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-
-private void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
index 836557c..f40997a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
@@ -346,7 +346,7 @@
 			}
 			
 			//if is a JSP custom tag but not a JSP_EL region
-			if (fEnableJSPActionPartitions && !isELRegion(containedChildRegion) && isAction(sdRegion, offset) && !(containedChildRegion instanceof ITextRegionContainer) ) {
+			if (fEnableJSPActionPartitions && !isELRegion(containedChildRegion) && !isScriptletRegion(containedChildRegion) && isAction(sdRegion, offset) && !(containedChildRegion instanceof ITextRegionContainer) ) {
 				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitions.JSP_DIRECTIVE);
 				return true;
 			}
@@ -440,6 +440,11 @@
 			type == DOMJSPRegionContexts.JSP_VBL_SQUOTE;
 	}
 
+	private boolean isScriptletRegion(ITextRegion region) {
+		final String type = region.getType();
+		return type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || type == DOMJSPRegionContexts.JSP_CLOSE || type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || type == DOMJSPRegionContexts.JSP_CONTENT;
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.sse.core.internal.text.rules.StructuredTextPartitioner#doParserSpecificCheck(int, boolean, org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion, org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion, org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion, org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion)
 	 */
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java
index e20455b..89ee497 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java
@@ -101,6 +101,25 @@
 	}
 
 	/**
+	 * @param project
+	 * @return the IPaths to acceptable "roots" in a project
+	 */
+	public static IPath[] getAcceptableRootPaths(IProject project) {
+		if (project == null)
+			return null;
+		IPath[] paths = null;
+		try {
+			paths = FacetModuleCoreSupportDelegate.getAcceptableRootPaths(project);
+		}
+		catch (NoClassDefFoundError e) {
+			if (_dump_NCDFE)
+				e.printStackTrace();
+			return new IPath[]{project.getFullPath()};
+		}
+		return paths;
+	}
+
+	/**
 	 * @param path
 	 *            - the full path to a resource within the workspace
 	 * @return - the runtime path of the resource if one exists, an
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java
index 8061317..7c2087c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java
@@ -204,4 +204,24 @@
 		}
 		return null;
 	}
+
+	static IPath[] getAcceptableRootPaths(IProject project) {
+		if (!ModuleCoreNature.isFlexibleProject(project)) {
+			return new IPath[]{project.getFullPath()};
+		}
+
+		IPath[] paths = null;
+		IVirtualFolder componentFolder = ComponentCore.createFolder(project, Path.ROOT);
+		if (componentFolder != null && componentFolder.exists()) {
+			IContainer[] workspaceFolders = componentFolder.getUnderlyingFolders();
+			paths = new IPath[workspaceFolders.length];
+			for (int i = 0; i < workspaceFolders.length; i++) {
+				paths[i] = workspaceFolders[i].getFullPath();
+			}
+		}
+		else {
+			paths = new IPath[]{project.getFullPath()};
+		}
+		return paths;
+	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java
index 08855f8..9f9a319 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java
@@ -428,12 +428,6 @@
 	 * @param reporter
 	 */
 	void validateFile(IFile f, IReporter reporter) {
-		try {
-			f.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
 		IStructuredModel model = null;
 		try {
 			// get JSP model on behalf of all JSP validators
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
index 7c20c1f..b0ab049 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
@@ -16,6 +16,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -1026,6 +1027,42 @@
 		return record;
 	}
 
+	/**
+	 * Creates a TLDRecord from a File.
+	 * 
+	 * @param tld the tld File
+	 * @return
+	 */
+	private TLDRecord createTLDRecord(File tld) {
+		TLDRecord record = new TLDRecord();
+		record.path = new Path(tld.getAbsolutePath());
+		InputStream contents = null;
+		try {
+			if (tld.exists()) {
+				contents = new FileInputStream(tld);
+				String basePath = tld.getAbsolutePath();
+				TaglibInfo info = extractInfo(basePath, contents);
+				if (info != null) {
+					record.info = info;
+				}
+			}
+		}
+		catch (FileNotFoundException e) {
+		}
+		finally {
+			try {
+				if (contents != null) {
+					contents.close();
+				}
+			}
+			catch (IOException e) {
+				// ignore
+				Logger.log(Logger.ERROR_DEBUG, null, e);
+			}
+		}
+		return record;
+	}
+
 	private void ensureUpTodate() {
 		IClasspathEntry[] entries = null;
 			try {
@@ -1487,6 +1524,27 @@
 	}
 
 	/**
+	 * Index a directory looking for TLDs. 
+	 * @param file
+	 * @param isExported
+	 */
+	private void indexDirectory(File file, boolean isExported) {
+		if (file.exists()) {
+			if (file.isDirectory()) {
+				final File[] files = file.listFiles();
+				for (int i = 0; i < files.length; i++) {
+					indexDirectory(files[i], isExported);
+				}
+			}
+			else {
+				if (file.getName().endsWith(".tld")) { //$NON-NLS-1$
+					updateTLD(file.getAbsolutePath(), createTLDRecord(file), ITaglibIndexDelta.ADDED);
+				}
+			}
+		}
+	}
+
+	/**
 	 * @param entry
 	 */
 	private void indexClasspath(IClasspathEntry entry) {
@@ -1505,8 +1563,14 @@
 				 */
 				IPath libPath = entry.getPath();
 				if (!fClasspathJars.containsKey(libPath.toString())) {
-					if (libPath.toFile().exists()) {
-						updateClasspathLibrary(libPath.toString(), ITaglibIndexDelta.ADDED, entry.isExported());
+					final File file = libPath.toFile();
+					if (file.exists()) {
+						if (file.isDirectory()) {
+							indexDirectory(file, entry.isExported());
+						}
+						else {
+							updateClasspathLibrary(libPath.toString(), ITaglibIndexDelta.ADDED, entry.isExported());
+						}
 					}
 					else {
 						/*
@@ -2464,20 +2528,23 @@
 		}
 	}
 
+	void updateTLD(String fullpath, TLDRecord record, int deltaKind) {
+		if (_debugIndexCreation)
+			Logger.log(Logger.INFO, "creating record for " + fullpath); //$NON-NLS-1$
+		fTLDReferences.put(fullpath, record);
+		if (record.getURI() != null && record.getURI().length() > 0) {
+			getImplicitReferences(fullpath).put(record.getURI(), record);
+		}
+		TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, deltaKind));
+	}
+
 	/**
 	 * 
 	 * @param tld
 	 * @param deltaKind
 	 */
 	void updateTLD(IResource tld, int deltaKind) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "creating record for " + tld.getFullPath()); //$NON-NLS-1$
-		TLDRecord record = createTLDRecord(tld);
-		fTLDReferences.put(tld.getFullPath().toString(), record);
-		if (record.getURI() != null && record.getURI().length() > 0) {
-			getImplicitReferences(tld.getFullPath().toString()).put(record.getURI(), record);
-		}
-		TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, deltaKind));
+		updateTLD(tld.getFullPath().toString(), createTLDRecord(tld), deltaKind);
 	}
 
 	void updateWebXML(IResource webxml, int deltaKind) {
diff --git a/bundles/org.eclipse.jst.jsp.ui/.project b/bundles/org.eclipse.jst.jsp.ui/.project
index 2d42e46..34bc2e6 100644
--- a/bundles/org.eclipse.jst.jsp.ui/.project
+++ b/bundles/org.eclipse.jst.jsp.ui/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
index 91b8878..cce65fc 100644
--- a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
@@ -46,7 +46,7 @@
  org.eclipse.wst.html.ui;bundle-version="[1.0.500,1.1.0)",
  org.eclipse.wst.css.ui;bundle-version="[1.0.500,1.1.0)",
  org.eclipse.wst.xml.ui;bundle-version="[1.1.100,1.2.0)",
- org.eclipse.jst.jsp.core;bundle-version="[1.2.300,1.3.0)",
+ org.eclipse.jst.jsp.core;bundle-version="[1.2.401,1.3.0)",
  org.eclipse.wst.html.core;bundle-version="[1.1.400,1.2.0)",
  org.eclipse.wst.css.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
@@ -58,7 +58,7 @@
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.search;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)",
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
index e739cd6..02d25e1 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,7 +23,9 @@
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.IAutoEditStrategy;
 import org.eclipse.jface.text.ITextDoubleClickStrategy;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
 import org.eclipse.jface.text.formatter.IContentFormatter;
 import org.eclipse.jface.text.formatter.MultiPassContentFormatter;
 import org.eclipse.jface.text.source.ISourceViewer;
@@ -31,11 +33,13 @@
 import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
 import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
 import org.eclipse.jst.jsp.core.text.IJSPPartitions;
+import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
 import org.eclipse.jst.jsp.ui.internal.autoedit.AutoEditStrategyForTabs;
 import org.eclipse.jst.jsp.ui.internal.autoedit.StructuredAutoEditStrategyJSP;
 import org.eclipse.jst.jsp.ui.internal.autoedit.StructuredAutoEditStrategyJSPJava;
 import org.eclipse.jst.jsp.ui.internal.contentassist.JSPStructuredContentAssistProcessor;
 import org.eclipse.jst.jsp.ui.internal.format.FormattingStrategyJSPJava;
+import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames;
 import org.eclipse.jst.jsp.ui.internal.style.LineStyleProviderForJSP;
 import org.eclipse.jst.jsp.ui.internal.style.java.LineStyleProviderForJava;
 import org.eclipse.jst.jsp.ui.internal.style.jspel.LineStyleProviderForJSPEL;
@@ -179,6 +183,14 @@
 		return fConfiguredContentTypes;
 	}
 	
+	public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
+		final IContentAssistant assistant = super.getContentAssistant(sourceViewer);
+		if (assistant instanceof ContentAssistant) {
+			((ContentAssistant) assistant).enableAutoInsert(JSPUIPlugin.getInstance().getPreferenceStore().getBoolean(JSPUIPreferenceNames.INSERT_SINGLE_SUGGESTION));
+		}
+		return assistant;
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration#getContentAssistProcessors(
 	 * 	org.eclipse.jface.text.source.ISourceViewer, java.lang.String)
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
index aae9149..3b5034e 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -118,6 +118,7 @@
 	public static String JSPFContentSettingsPropertyPage_4;
 	public static String ProjectJSPFContentSettingsPropertyPage_0;
 	public static String TagPropertyPage_desc;
+	public static String Template_Taglib_URI;
 	public static String Title_InvalidValue;
 	public static String Message_InvalidValue;
 	public static String SyntaxColoringPage_0;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
index 30a19cf..23c103c 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2004, 2011 IBM Corporation and others.
+# Copyright (c) 2004, 2012 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -168,6 +168,7 @@
 CustomTagHyperlink_hyperlinkText=Open Declaration
 TLDContentOutlineConfiguration_0=Show Content Values
 TagPropertyPage_desc=Specify the surrounding language used in this tag file:
+Template_Taglib_URI=Tag Library URI
 
 JSPFilesPreferencePage_Search_group=Search
 JSPFilesPreferencePage_Supply_JSP_search_to_Java_search=&Include JSP matches in Java searches
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
index b748a2a..53f29d4 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -196,6 +196,10 @@
 							String prevText = region.getText(prevTextRegion);
 							inUnclosedAttValueRegion = (prevText.startsWith("'") && ((prevText.length() == 1) || !prevText.endsWith("'"))) ||
 								(prevText.startsWith("\"") && ((prevText.length() == 1) || !prevText.endsWith("\"")));
+							if (!inUnclosedAttValueRegion) {
+								// Check if action is taking place within the paired quotes. This means quotes are actually mismatched and attribute is not properly closed
+								inUnclosedAttValueRegion = prevTextRegion == region.getRegionAtCharacterOffset(command.offset);
+							}
 						} 
 					
 						//if command offset is in an unclosed attribute value region then done remove the end tag
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
index 912121e..98b3b2a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
 package org.eclipse.jst.jsp.ui.internal.contentassist;
 
 import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension4;
 import org.eclipse.jface.text.templates.Template;
 import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.jface.text.templates.TemplateProposal;
@@ -25,7 +26,7 @@
  * 
  * @plannedfor 1.0
  */
-class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal {
+class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal, ICompletionProposalExtension4 {
 	// copies of this class exist in:
 	// org.eclipse.jst.jsp.ui.internal.contentassist
 	// org.eclipse.wst.html.ui.internal.contentassist
@@ -39,4 +40,8 @@
 		String additionalInfo = super.getAdditionalProposalInfo();
 		return StringUtils.convertToHTMLContent(additionalInfo);
 	}
+
+	public boolean isAutoInsertable() {
+		return false;
+	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
index f1e4dc4..e73d465 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,11 +19,11 @@
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IImportContainer;
 import org.eclipse.jdt.core.Signature;
-import org.eclipse.jdt.internal.ui.text.java.ProposalContextInformation;
 import org.eclipse.jdt.ui.text.java.CompletionProposalCollector;
 import org.eclipse.jdt.ui.text.java.CompletionProposalComparator;
 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.contentassist.IContextInformationExtension;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
 import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames;
@@ -187,10 +187,8 @@
 		/* the context information is calculated with respect to the java document
 		 * thus it needs to be updated in respect of the JSP document.
 		 */
-		if(contextInformation instanceof ProposalContextInformation) {
-			ProposalContextInformation proposalInfo = (ProposalContextInformation)contextInformation;
-			int contextInfoJSPOffset = fTranslation.getJspOffset(proposalInfo.getContextInformationPosition());
-			proposalInfo.setContextInformationPosition(contextInfoJSPOffset);
+		if(contextInformation instanceof IContextInformationExtension) {
+			contextInformation = new JavaContextInformationWrapper(contextInformation);
 		}
 		
 		int relevance = javaProposal.getRelevance();
@@ -206,6 +204,31 @@
 		return jspProposal;
 	}
 
+	private class JavaContextInformationWrapper implements IContextInformation, IContextInformationExtension {
+		private IContextInformation contextInformation;
+
+		public JavaContextInformationWrapper(IContextInformation contextInformation) {
+			this.contextInformation = contextInformation;
+		}
+
+		public String getContextDisplayString() {
+			return contextInformation.getContextDisplayString();
+		}
+
+		public Image getImage() {
+			return contextInformation.getImage();
+		}
+
+		public String getInformationDisplayString() {
+			return contextInformation.getInformationDisplayString();
+		}
+
+		public int getContextInformationPosition() {
+			return fTranslation.getJspOffset(((IContextInformationExtension) contextInformation).getContextInformationPosition());
+		}
+		
+	}
+
 	private JSPCompletionProposal createMethodProposal(CompletionProposal proposal) {
 		
 		JSPCompletionProposal jspProposal;
@@ -231,10 +254,8 @@
 		/* the context information is calculated with respect to the java document
 		 * thus it needs to be updated in respect of the JSP document.
 		 */
-		if(contextInformation instanceof ProposalContextInformation) {
-			ProposalContextInformation proposalInfo = (ProposalContextInformation)contextInformation;
-			int contextInfoJSPOffset = fTranslation.getJspOffset(proposalInfo.getContextInformationPosition());
-			proposalInfo.setContextInformationPosition(contextInfoJSPOffset);
+		if(contextInformation instanceof IContextInformationExtension) {
+			contextInformation = new JavaContextInformationWrapper(contextInformation);
 		}
 		
 		int relevance = javaProposal.getRelevance();
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/LibraryTagsCompletionProposalComputer.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/LibraryTagsCompletionProposalComputer.java
index 99abe9b..612ff3b 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/LibraryTagsCompletionProposalComputer.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/LibraryTagsCompletionProposalComputer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,8 @@
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
 import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
+import org.eclipse.jst.jsp.core.internal.modelquery.JSPModelQueryExtension;
+import org.eclipse.jst.jsp.core.internal.modelquery.TaglibModelQueryExtension;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP20Namespace;
 import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
@@ -51,6 +53,7 @@
 import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
 import org.eclipse.wst.xml.ui.internal.contentassist.AbstractXMLModelQueryCompletionProposalComputer;
 import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest;
+import org.eclipse.wst.xml.ui.internal.contentassist.MarkupCompletionProposal;
 import org.eclipse.wst.xml.ui.internal.contentassist.XMLContentModelGenerator;
 import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants;
 import org.eclipse.wst.xml.ui.internal.editor.CMImageUtil;
@@ -329,7 +332,7 @@
 					String proposedText = getRequiredText(document, ed);
 					final IDOMNode targetNode = (IDOMNode) contentAssistRequest.getNode();
 					if (targetNode != null) {
-						final IStructuredDocumentRegion region = targetNode.getFirstStructuredDocumentRegion();
+						final IStructuredDocumentRegion region = targetNode.getLastStructuredDocumentRegion();
 						if (region != null && region.getFirstRegion() != null && region.getFirstRegion().getType().equals(DOMRegionContext.XML_TAG_OPEN) && proposedText.length() > 0) {
 							//in order to differentiate between content assist on 
 							//completely empty document and the one with xml open tag
@@ -343,7 +346,7 @@
 					// account for the &lt; and &gt;
 					int markupAdjustment = getCursorPositionForProposedText(proposedText);
 					String proposedInfo = getAdditionalInfo(null, ed);
-					CustomCompletionProposal proposal = new CustomCompletionProposal(
+					MarkupCompletionProposal proposal = new MarkupCompletionProposal(
 							proposedText, contentAssistRequest.getReplacementBeginPosition(),
 							contentAssistRequest.getReplacementLength(), markupAdjustment, image,
 							tagname, null, proposedInfo, XMLRelevanceConstants.R_TAG_INSERTION);
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java
index 309b910..251b185 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -51,7 +51,6 @@
 	 */
 	public void format() {
 		super.format();
-
 		final IDocument document = (IDocument) fDocuments.removeFirst();
 		final TypedPosition partition = (TypedPosition) fPartitions.removeFirst();
 
@@ -62,7 +61,12 @@
 				ICompilationUnit cu = translationUtil.getCompilationUnit();
 				if (cu != null) {
 					String cuSource = cu.getSource();
-					TextEdit textEdit = formatString(CodeFormatter.K_COMPILATION_UNIT, cuSource, 0, TextUtilities.getDefaultLineDelimiter(document), getPreferences());
+					/*
+					 * Format the entire compilation unit, but only create
+					 * edits for the requested JSP partition's range in the
+					 * Java source
+					 */
+					TextEdit textEdit = formatString(CodeFormatter.K_COMPILATION_UNIT, cuSource, translationUtil.getTranslation().getJavaOffset(partition.getOffset()), partition.getLength(), TextUtilities.getDefaultLineDelimiter(document), getPreferences());
 
 					TextEdit jspEdit = translationUtil.getTranslation().getJspEdit(textEdit);
 					if (jspEdit != null && jspEdit.hasChildren())
@@ -84,6 +88,10 @@
 		}
 	}
 
+	private TextEdit formatString(int kind, String cuSource, int javaOffset, int length, String defaultLineDelimiter, Map preferences) {
+		return ToolFactory.createCodeFormatter(preferences).format(kind, cuSource, javaOffset, length, 0, defaultLineDelimiter);
+	}
+
 	/*
 	 * @see org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy#formatterStarts(org.eclipse.jface.text.formatter.IFormattingContext)
 	 */
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameChange.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameChange.java
index 7032c21..bdbbb45 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameChange.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -227,15 +227,17 @@
 				for (int j = 0; j < references.length; j++) {
 
 					editor = references[j].getEditor(false);
-					// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3764
-					// use adapter to get ITextEditor (for things like
-					// page designer)
-					o = editor.getAdapter(ITextEditor.class);
-					if (o != null && o instanceof ITextEditor) {
-
-						doc = ((ITextEditor) o).getDocumentProvider().getDocument(editor.getEditorInput());
-						if (doc != null && doc.equals(jspDoc)) {
-							return (ITextEditor) o;
+					if (editor != null) { // editor might not be instantiated
+						// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3764
+						// use adapter to get ITextEditor (for things like
+						// page designer)
+						o = editor.getAdapter(ITextEditor.class);
+						if (o != null && o instanceof ITextEditor) {
+	
+							doc = ((ITextEditor) o).getDocumentProvider().getDocument(editor.getEditorInput());
+							if (doc != null && doc.equals(jspDoc)) {
+								return (ITextEditor) o;
+							}
 						}
 					}
 				}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java
index 8ae90cc..286616a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -111,6 +111,7 @@
 				"org.eclipse.jst.jsp.ui.proposalCategory.jspJava\0" +
 				"org.eclipse.wst.css.ui.proposalCategory.css");
 		store.setDefault(JSPUIPreferenceNames.AUTO_IMPORT_INSERT, true);
+		store.setDefault(JSPUIPreferenceNames.INSERT_SINGLE_SUGGESTION, true);
 	}
 
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java
index e6176c2..6586d4e 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -176,4 +176,12 @@
 	 * </p>
 	 */
 	public static final String AUTO_IMPORT_INSERT = "autoImportinsertion"; //$NON-NLS-1$
+
+	/**
+	 * <p>preference key to store the option for auto insertion of single suggestions</p>
+	 * <p>
+	 * Value is of type <code>boolean</code>
+	 * </p>
+	 */
+	public static final String INSERT_SINGLE_SUGGESTION = "insertSingleSuggestion"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPContentAssistPreferencePage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPContentAssistPreferencePage.java
index 66c2de9..3022a0a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPContentAssistPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,6 +25,7 @@
 import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
 import org.eclipse.wst.sse.ui.preferences.CodeAssistCyclingConfigurationBlock;
 import org.eclipse.wst.sse.ui.preferences.ICompletionProposalCategoriesConfigurationWriter;
+import org.eclipse.wst.xml.ui.internal.XMLUIMessages;
 
 /**
  * <p>Defines the preference page for allowing the user to change the content
@@ -40,6 +41,8 @@
 	
 	/** configuration block for changing preference having to do with the content assist categories */
 	private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
+
+	private Button fInsertSingleProposals;
 	
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -104,7 +107,8 @@
 		fAutoImport = createCheckBox(group, JSPUIMessages.JSPCodeAssist_Auto_Import);
 		((GridData) fAutoImport.getLayoutData()).horizontalSpan = 2;
 		
-	
+		fInsertSingleProposals = createCheckBox(group, XMLUIMessages.Insert_single_proposals);
+		((GridData) fInsertSingleProposals.getLayoutData()).horizontalSpan = 2;
 	}
 	
 	/**
@@ -130,6 +134,7 @@
 	 */
 	private void storeValuesForAutoInsertionGroup() {
 		getPreferenceStore().setValue(JSPUIPreferenceNames.AUTO_IMPORT_INSERT, (fAutoImport != null) ? fAutoImport.getSelection() : false);
+		getPreferenceStore().setValue(JSPUIPreferenceNames.INSERT_SINGLE_SUGGESTION, (fInsertSingleProposals != null) ? fInsertSingleProposals.getSelection() : false);
 	}
 	
 	/**
@@ -146,6 +151,7 @@
 	 */
 	private void initializeValuesForAutoInsertionGroup() {
 		initCheckbox(fAutoImport, JSPUIPreferenceNames.AUTO_IMPORT_INSERT);
+		initCheckbox(fInsertSingleProposals, JSPUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
 	}
 	
 	/**
@@ -162,6 +168,7 @@
 	 */
 	private void performDefaultsForAutoInsertionGroup() {
 		defaultCheckbox(fAutoImport, JSPUIPreferenceNames.AUTO_IMPORT_INSERT);
+		defaultCheckbox(fInsertSingleProposals, JSPUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
 	}
 	
 	/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java
index 60e19e7..baf57d2 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,8 +10,31 @@
  *******************************************************************************/
 package org.eclipse.jst.jsp.ui.internal.templates;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.templates.DocumentTemplateContext;
 import org.eclipse.jface.text.templates.GlobalTemplateVariables;
+import org.eclipse.jface.text.templates.SimpleTemplateVariableResolver;
+import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.jface.text.templates.TemplateContextType;
+import org.eclipse.jface.text.templates.TemplateVariable;
+import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
+import org.eclipse.jst.jsp.core.taglib.IJarRecord;
+import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
+import org.eclipse.jst.jsp.core.taglib.ITaglibDescriptor;
+import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
+import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
+import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 
 /**
  * Base class for JSP template context types. Templates of this context type
@@ -29,5 +52,107 @@
 		addResolver(new GlobalTemplateVariables.WordSelection());
 		addResolver(new GlobalTemplateVariables.Year());
 		addResolver(new EncodingTemplateVariableResolverJSP());
+		addResolver(new URITemplateResolver());
+		
+	}
+
+	/**
+	 * Resolves the ${uri} Template Variable for a taglib directive providing
+	 * URIs from the taglib index
+	 *
+	 */
+	class URITemplateResolver extends SimpleTemplateVariableResolver {
+
+		protected URITemplateResolver() {
+			super("uri", JSPUIMessages.Template_Taglib_URI); //$NON-NLS-1$
+		}
+		
+		public void resolve(TemplateVariable variable, TemplateContext context) {
+			if (context instanceof DocumentTemplateContext) {
+				DocumentTemplateContext docContext = (DocumentTemplateContext) context;
+				final IPath path = getPath(docContext.getDocument());
+				if (path != null) {
+					String[] uris = getURIs(TaglibIndex.getAvailableTaglibRecords(path), path);
+					if (uris != null && uris.length > 0) {
+						variable.setValues(uris);
+					}
+				}
+				
+			}
+		}
+
+		private String[] getURIs(ITaglibRecord[] records, IPath basePath) {
+			if (records != null) {
+				Set uris = new HashSet(records.length);
+				for (int i = 0; i < records.length; i++) {
+					final ITaglibRecord record = records[i];
+					final ITaglibDescriptor descriptor = record.getDescriptor();
+					String uri = null;
+					switch (record.getRecordType()) {
+						case ITaglibRecord.URL:
+							uris.add(descriptor.getURI());
+							break;
+						case ITaglibRecord.JAR: {
+							IPath location = ((IJarRecord) record).getLocation();
+							IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(location);
+							IPath localContextRoot = FacetModuleCoreSupport.computeWebContentRootPath(basePath);
+							for (int fileNumber = 0; fileNumber < files.length; fileNumber++) {
+								if (localContextRoot.isPrefixOf(files[fileNumber].getFullPath())) {
+									uri = IPath.SEPARATOR +
+											files[fileNumber].getFullPath().removeFirstSegments(localContextRoot.segmentCount()).toString();
+								}
+								else {
+									uri = FacetModuleCoreSupport.getRuntimePath(files[fileNumber].getFullPath()).toString();
+								}
+								uris.add(uri);
+							}
+							break;
+						}
+						case ITaglibRecord.TLD: {
+							uri = descriptor.getURI();
+							if (uri == null || uri.trim().length() == 0) {
+								IPath path = ((ITLDRecord) record).getPath();
+								IPath localContextRoot = FacetModuleCoreSupport.computeWebContentRootPath(basePath);
+								if (localContextRoot.isPrefixOf(path)) {
+									uri = IPath.SEPARATOR + path.removeFirstSegments(localContextRoot.segmentCount()).toString();
+								}
+								else {
+									uri = FacetModuleCoreSupport.getRuntimePath(path).toString();
+								}
+							}
+							uris.add(uri);
+							break;
+						}
+						
+					}
+				}
+				String[] urisArray = (String[]) uris.toArray(new String[uris.size()]);
+				Arrays.sort(urisArray);
+				return urisArray;
+			}
+			return null;
+		}
+
+		private IPath getPath(IDocument iDoc) {
+			IPath path = null;
+			if (iDoc instanceof IStructuredDocument) {
+				IStructuredDocument document = (IStructuredDocument) iDoc;
+				IStructuredModel model = null;
+				try {
+					model = StructuredModelManager.getModelManager().getModelForRead(document);
+					if (model != null) {
+						String location = model.getBaseLocation();
+						if (location != null) {
+							path = new Path(location);
+						}
+					}
+				}
+				finally {
+					if (model != null)
+						model.releaseFromRead();
+				}
+			}
+			return path;
+		}
 	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPFileWizardPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPFileWizardPage.java
index 14f85d4..f660996 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPFileWizardPage.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPFileWizardPage.java
@@ -35,6 +35,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.wst.html.ui.internal.HTMLUIMessages;
 
 class NewJSPFileWizardPage extends WizardNewFileCreationPage {
 
@@ -71,19 +72,22 @@
 		}
 		return fileName;
 	}
+
 	/**
-	 * This method is overriden to set the selected folder to web contents
-	 * folder if the current selection is outside the web contents folder.
+	 * This method is overridden to set the selected folder to web contents 
+	 * folder if the current selection is outside the web contents folder. 
 	 */
 	protected void initialPopulateContainerNameField() {
 		super.initialPopulateContainerNameField();
 
 		IPath fullPath = getContainerFullPath();
 		IProject project = getProjectFromPath(fullPath);
-		IPath webContentPath = getWebContentPath(project);
-
-		if (webContentPath != null && !webContentPath.isPrefixOf(fullPath)) {
-			setContainerFullPath(webContentPath);
+		IPath[] webContentPaths = FacetModuleCoreSupport.getAcceptableRootPaths(project);
+		for (int i = 0; webContentPaths != null && i < webContentPaths.length; i++) {
+			if (!webContentPaths[i].isPrefixOf(fullPath)) {
+				setContainerFullPath(webContentPaths[i]);
+				break;
+			}
 		}
 	}
 
@@ -129,16 +133,20 @@
 
 			// get the IProject for the selection path
 			IProject project = getProjectFromPath(fullPath);
+			// if inside web project, check if inside webContent folder
 			if (project != null) {
 				if (!isJavaProject(project)) {
 					setMessage(JSPUIMessages._WARNING_FILE_MUST_BE_INSIDE_JAVA_PROJECT, WARNING);
 				}
-				// if inside web project, check if inside webContent folder
 				if (isDynamicWebProject(project)) {
 					// check that the path is inside the webContent folder
-					IPath webContentPath = getWebContentPath(project);
-					if (!webContentPath.isPrefixOf(fullPath)) {
-						setMessage(JSPUIMessages._WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT, WARNING);
+					IPath[] webContentPaths = FacetModuleCoreSupport.getAcceptableRootPaths(project);
+					boolean isPrefix = false;
+					for (int i = 0; !isPrefix && i < webContentPaths.length; i++) {
+						isPrefix |= webContentPaths[i].isPrefixOf(fullPath);
+					}
+					if (!isPrefix) {
+						setMessage(HTMLUIMessages._WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT, WARNING);
 					}
 				}
 			}
@@ -269,16 +277,4 @@
 
 		return isJava;
 	}
-
-	/**
-	 * Returns the web contents folder of the specified project
-	 * 
-	 * @param project
-	 *            the project which web contents path is needed
-	 * @return IPath of the web contents folder
-	 */
-	private IPath getWebContentPath(IProject project) {
-		IPath path = FacetModuleCoreSupport.getWebContentRootPath(project);
-		return path;
-	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/templates/jspdefault-templates.properties b/bundles/org.eclipse.jst.jsp.ui/templates/jspdefault-templates.properties
index 58d9de8..187c4c5 100644
--- a/bundles/org.eclipse.jst.jsp.ui/templates/jspdefault-templates.properties
+++ b/bundles/org.eclipse.jst.jsp.ui/templates/jspdefault-templates.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2004, 2008 IBM Corporation and others.
+# Copyright (c) 2004, 2012 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -28,7 +28,7 @@
 Templates.jsppagedirective.content=<%@ page contentType="text/html; charset=${encoding}" %>
 Templates.jsptaglibdirective.name=JSP taglib directive
 Templates.jsptaglibdirective.desc=JSP taglib directive
-Templates.jsptaglibdirective.content=<%@ taglib uri="${cursor}" prefix="" %>
+Templates.jsptaglibdirective.content=<%@ taglib uri="${uri}" prefix="${cursor}" %>
 Templates.jsphtml.name=New JSP File (html)
 Templates.jsphtml.desc=JSP with html markup
 Templates.jsphtml.content=<%@ page language="java" contentType="text/html; charset=${encoding}"\n    pageEncoding="${encoding}"%>\n<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=${encoding}">\n<title>Insert title here</title>\n</head>\n<body>\n${cursor}\n</body>\n</html>
diff --git a/bundles/org.eclipse.wst.css.core/.project b/bundles/org.eclipse.wst.css.core/.project
index bb046e9..f9621ea 100644
--- a/bundles/org.eclipse.wst.css.core/.project
+++ b/bundles/org.eclipse.wst.css.core/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.css.core/component.xml b/bundles/org.eclipse.wst.css.core/component.xml
deleted file mode 100644
index 476033a..0000000
--- a/bundles/org.eclipse.wst.css.core/component.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.css">
-	<description url="http://eclipse.org/webtools/wst/components/css/overview.html"></description>
-	<component-depends unrestricted="true"></component-depends>
-	<plugin id="org.eclipse.wst.css.core" fragment="false" />
-	<plugin id="org.eclipse.wst.css.ui" fragment="false" />
-	<package name="org.eclipse.wst.css.ui.views.properties" api="false">
-		<type name="CSSPropertySheetConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.css.ui" api="false">
-		<type name="StructuredTextViewerConfigurationCSS" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.css.ui.views.contentoutline" api="false">
-		<type name="CSSContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-</component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/FormatProcessorCSS.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/FormatProcessorCSS.java
index ba8fb15..5e9ff3a 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/FormatProcessorCSS.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/FormatProcessorCSS.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -63,11 +63,13 @@
 					structuredModel.getStructuredDocument().getRegionAtCharacterOffset(start);
 				IStructuredDocumentRegion endRegion = 
 					structuredModel.getStructuredDocument().getRegionAtCharacterOffset(start + length);
-				start = startRegion.getStart();
-				CSSSourceFormatter formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter((INodeNotifier) doc);
-				StringBuffer buf = formatter.format(doc, new Region(start, (endRegion.getEnd() - start)));
-				if (buf != null) {
-					formatUtil.replaceSource(doc.getModel(), start, endRegion.getEnd() - start, buf.toString());
+				if (startRegion != null && endRegion != null) {
+					start = startRegion.getStart();
+					CSSSourceFormatter formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter((INodeNotifier) doc);
+					StringBuffer buf = formatter.format(doc, new Region(start, (endRegion.getEnd() - start)));
+					if (buf != null) {
+						formatUtil.replaceSource(doc.getModel(), start, endRegion.getEnd() - start, buf.toString());
+					}
 				}
 			}
 			finally {
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/formatter/StyleDeclItemFormatter.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/formatter/StyleDeclItemFormatter.java
index 74e1781..28eb99b 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/formatter/StyleDeclItemFormatter.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/formatter/StyleDeclItemFormatter.java
@@ -291,7 +291,7 @@
 				source.append(" ");//$NON-NLS-1$
 			source.append(":");//$NON-NLS-1$
 		}
-		if (!isCleanup() || getCleanupStrategy(node).isFormatSource()) {
+		if (node.getFirstChild() != null && (!isCleanup() || getCleanupStrategy(node).isFormatSource())) {
 			appendAfterColonSpace(node, source);
 		}
 	}
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/CSSProfileRegistry.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/CSSProfileRegistry.java
index 4f261cb..7ded2af 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/CSSProfileRegistry.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/CSSProfileRegistry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -62,7 +62,7 @@
 			return fDefault;
 		}
 
-		String id = Platform.getProduct().getProperty(IProductConstants.DEFAULT_PROFILE);
+		String id = Platform.getProduct() != null ? Platform.getProduct().getProperty(IProductConstants.DEFAULT_PROFILE) : null;
 
 		Iterator i = getProfiles();
 		CSSProfile firstDefault = null;
diff --git a/bundles/org.eclipse.wst.css.ui/.project b/bundles/org.eclipse.wst.css.ui/.project
index d42035f..2dae7fb 100644
--- a/bundles/org.eclipse.wst.css.ui/.project
+++ b/bundles/org.eclipse.wst.css.ui/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
index eb172cb..5b9835a 100644
--- a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
@@ -26,6 +26,7 @@
  org.eclipse.wst.css.ui.internal.style;x-internal:=true,
  org.eclipse.wst.css.ui.internal.templates;x-internal:=true,
  org.eclipse.wst.css.ui.internal.text;x-internal:=true,
+ org.eclipse.wst.css.ui.internal.text.hover;x-internal:=true,
  org.eclipse.wst.css.ui.internal.wizard;x-internal:=true,
  org.eclipse.wst.css.ui.views.contentoutline,
  org.eclipse.wst.css.ui.views.properties
diff --git a/bundles/org.eclipse.wst.css.ui/build.properties b/bundles/org.eclipse.wst.css.ui/build.properties
index 73f9b41..e825517 100644
--- a/bundles/org.eclipse.wst.css.ui/build.properties
+++ b/bundles/org.eclipse.wst.css.ui/build.properties
@@ -15,7 +15,8 @@
                .,\
                .options,\
                templates/,\
-               about.html
+               about.html,\
+               csscolors/
 bin.excludes = bin/**,\
                @dot/**,\
                temp.folder/**
diff --git a/bundles/org.eclipse.wst.css.ui/csscolors/extended-color-mapping.xml b/bundles/org.eclipse.wst.css.ui/csscolors/extended-color-mapping.xml
new file mode 100644
index 0000000..007de0a
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/csscolors/extended-color-mapping.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<color-mapping>
+	<color name="aliceblue" rgb="240,248,255" />
+	<color name="antiquewhite" rgb="250,235,215" />
+	<color name="aqua" rgb="0,255,255" />
+	<color name="aquamarine" rgb="127,255,212" />
+	<color name="azure" rgb="240,255,255" />
+	<color name="beige" rgb="245,245,220" />
+	<color name="bisque" rgb="255,228,196" />
+	<color name="black" rgb="0,0,0" />
+	<color name="blanchedalmond" rgb="255,235,205" />
+	<color name="blue" rgb="0,0,255" />
+	<color name="blueviolet" rgb="138,43,226" />
+	<color name="brown" rgb="165,42,42" />
+	<color name="burlywood" rgb="222,184,135" />
+	<color name="cadetblue" rgb="95,158,160" />
+	<color name="chartreuse" rgb="127,255,0" />
+	<color name="chocolate" rgb="210,105,30" />
+	<color name="coral" rgb="255,127,80" />
+	<color name="cornflowerblue" rgb="100,149,237" />
+	<color name="cornsilk" rgb="255,248,220" />
+	<color name="crimson" rgb="220,20,60" />
+	<color name="cyan" rgb="0,255,255" />
+	<color name="darkblue" rgb="0,0,139" />
+	<color name="darkcyan" rgb="0,139,139" />
+	<color name="darkgoldenrod" rgb="184,134,11" />
+	<color name="darkgray" rgb="169,169,169" />
+	<color name="darkgreen" rgb="0,100,0" />
+	<color name="darkgrey" rgb="169,169,169" />
+	<color name="darkkhaki" rgb="189,183,107" />
+	<color name="darkmagenta" rgb="139,0,139" />
+	<color name="darkolivegreen" rgb="85,107,47" />
+	<color name="darkorange" rgb="255,140,0" />
+	<color name="darkorchid" rgb="153,50,204" />
+	<color name="darkred" rgb="139,0,0" />
+	<color name="darksalmon" rgb="233,150,122" />
+	<color name="darkseagreen" rgb="143,188,143" />
+	<color name="darkslateblue" rgb="72,61,139" />
+	<color name="darkslategray" rgb="47,79,79" />
+	<color name="darkslategrey" rgb="47,79,79" />
+	<color name="darkturquoise" rgb="0,206,209" />
+	<color name="darkviolet" rgb="148,0,211" />
+	<color name="deeppink" rgb="255,20,147" />
+	<color name="deepskyblue" rgb="0,191,255" />
+	<color name="dimgray" rgb="105,105,105" />
+	<color name="dimgrey" rgb="105,105,105" />
+	<color name="dodgerblue" rgb="30,144,255" />
+	<color name="firebrick" rgb="178,34,34" />
+	<color name="floralwhite" rgb="255,250,240" />
+	<color name="forestgreen" rgb="34,139,34" />
+	<color name="fuchsia" rgb="255,0,255" />
+	<color name="gainsboro" rgb="220,220,220" />
+	<color name="ghostwhite" rgb="248,248,255" />
+	<color name="gold" rgb="255,215,0" />
+	<color name="goldenrod" rgb="218,165,32" />
+	<color name="gray" rgb="128,128,128" />
+	<color name="green" rgb="0,128,0" />
+	<color name="greenyellow" rgb="173,255,47" />
+	<color name="grey" rgb="128,128,128" />
+	<color name="honeydew" rgb="240,255,240" />
+	<color name="hotpink" rgb="255,105,180" />
+	<color name="indianred" rgb="205,92,92" />
+	<color name="indigo" rgb="75,0,130" />
+	<color name="ivory" rgb="255,255,240" />
+	<color name="khaki" rgb="240,230,140" />
+	<color name="lavender" rgb="230,230,250" />
+	<color name="lavenderblush" rgb="255,240,245" />
+	<color name="lawngreen" rgb="124,252,0" />
+	<color name="lemonchiffon" rgb="255,250,205" />
+	<color name="lightblue" rgb="173,216,230" />
+	<color name="lightcoral" rgb="240,128,128" />
+	<color name="lightcyan" rgb="224,255,255" />
+	<color name="lightgoldenrodyellow" rgb="250,250,210" />
+	<color name="lightgray" rgb="211,211,211" />
+	<color name="lightgreen" rgb="144,238,144" />
+	<color name="lightgrey" rgb="211,211,211" />
+	<color name="lightpink" rgb="255,182,193" />
+	<color name="lightsalmon" rgb="255,160,122" />
+	<color name="lightseagreen" rgb="32,178,170" />
+	<color name="lightskyblue" rgb="135,206,250" />
+	<color name="lightslategray" rgb="119,136,153" />
+	<color name="lightslategrey" rgb="119,136,153" />
+	<color name="lightsteelblue" rgb="176,196,222" />
+	<color name="lightyellow" rgb="255,255,224" />
+	<color name="lime" rgb="0,255,0" />
+	<color name="limegreen" rgb="50,205,50" />
+	<color name="linen" rgb="250,240,230" />
+	<color name="magenta" rgb="255,0,255" />
+	<color name="maroon" rgb="128,0,0" />
+	<color name="mediumaquamarine" rgb="102,205,170" />
+	<color name="mediumblue" rgb="0,0,205" />
+	<color name="mediumorchid" rgb="186,85,211" />
+	<color name="mediumpurple" rgb="147,112,219" />
+	<color name="mediumseagreen" rgb="60,179,113" />
+	<color name="mediumslateblue" rgb="123,104,238" />
+	<color name="mediumspringgreen" rgb="0,250,154" />
+	<color name="mediumturquoise" rgb="72,209,204" />
+	<color name="mediumvioletred" rgb="199,21,133" />
+	<color name="midnightblue" rgb="25,25,112" />
+	<color name="mintcream" rgb="245,255,250" />
+	<color name="mistyrose" rgb="255,228,225" />
+	<color name="moccasin" rgb="255,228,181" />
+	<color name="navajowhite" rgb="255,222,173" />
+	<color name="navy" rgb="0,0,128" />
+	<color name="oldlace" rgb="253,245,230" />
+	<color name="olive" rgb="128,128,0" />
+	<color name="olivedrab" rgb="107,142,35" />
+	<color name="orange" rgb="255,165,0" />
+	<color name="orangered" rgb="255,69,0" />
+	<color name="orchid" rgb="218,112,214" />
+	<color name="palegoldenrod" rgb="238,232,170" />
+	<color name="palegreen" rgb="152,251,152" />
+	<color name="paleturquoise" rgb="175,238,238" />
+	<color name="palevioletred" rgb="219,112,147" />
+	<color name="papayawhip" rgb="255,239,213" />
+	<color name="peachpuff" rgb="255,218,185" />
+	<color name="peru" rgb="205,133,63" />
+	<color name="pink" rgb="255,192,203" />
+	<color name="plum" rgb="221,160,221" />
+	<color name="powderblue" rgb="176,224,230" />
+	<color name="purple" rgb="128,0,128" />
+	<color name="red" rgb="255,0,0" />
+	<color name="rosybrown" rgb="188,143,143" />
+	<color name="royalblue" rgb="65,105,225" />
+	<color name="saddlebrown" rgb="139,69,19" />
+	<color name="salmon" rgb="250,128,114" />
+	<color name="sandybrown" rgb="244,164,96" />
+	<color name="seagreen" rgb="46,139,87" />
+	<color name="seashell" rgb="255,245,238" />
+	<color name="sienna" rgb="160,82,45" />
+	<color name="silver" rgb="192,192,192" />
+	<color name="skyblue" rgb="135,206,235" />
+	<color name="slateblue" rgb="106,90,205" />
+	<color name="slategray" rgb="112,128,144" />
+	<color name="slategrey" rgb="112,128,144" />
+	<color name="snow" rgb="255,250,250" />
+	<color name="springgreen" rgb="0,255,127" />
+	<color name="steelblue" rgb="70,130,180" />
+	<color name="tan" rgb="210,180,140" />
+	<color name="teal" rgb="0,128,128" />
+	<color name="thistle" rgb="216,191,216" />
+	<color name="tomato" rgb="255,99,71" />
+	<color name="turquoise" rgb="64,224,208" />
+	<color name="violet" rgb="238,130,238" />
+	<color name="wheat" rgb="245,222,179" />
+	<color name="white" rgb="255,255,255" />
+	<color name="whitesmoke" rgb="245,245,245" />
+	<color name="yellow" rgb="255,255,0" />
+	<color name="yellowgreen" rgb="154,205,50" />
+</color-mapping>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.ui/plugin.xml b/bundles/org.eclipse.wst.css.ui/plugin.xml
index 2254c3c..8207631 100644
--- a/bundles/org.eclipse.wst.css.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.css.ui/plugin.xml
@@ -30,6 +30,9 @@
 		<propertySheetConfiguration
 			class="org.eclipse.wst.css.ui.views.properties.CSSPropertySheetConfiguration"
 			target="org.eclipse.wst.css.core.csssource" />
+		<documentationTextHover
+        	class="org.eclipse.wst.css.ui.internal.text.hover.CSSColorHover"
+        	target="org.eclipse.wst.css.STYLE" />
 		<provisionalConfiguration
 			type="characterpairmatcher"
 			class="org.eclipse.wst.css.ui.internal.text.CSSDocumentRegionEdgeMatcher"
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
index 764be1e..f59020d 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,7 +17,9 @@
 
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.text.IAutoEditStrategy;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
 import org.eclipse.jface.text.formatter.IContentFormatter;
 import org.eclipse.jface.text.formatter.MultiPassContentFormatter;
 import org.eclipse.jface.text.source.ISourceViewer;
@@ -26,7 +28,9 @@
 import org.eclipse.wst.css.core.internal.preferences.CSSCorePreferenceNames;
 import org.eclipse.wst.css.core.internal.provisional.contenttype.ContentTypeIdForCSS;
 import org.eclipse.wst.css.core.text.ICSSPartitions;
+import org.eclipse.wst.css.ui.internal.CSSUIPlugin;
 import org.eclipse.wst.css.ui.internal.contentassist.CSSStructuredContentAssistProcessor;
+import org.eclipse.wst.css.ui.internal.preferences.CSSUIPreferenceNames;
 import org.eclipse.wst.css.ui.internal.style.LineStyleProviderForCSS;
 import org.eclipse.wst.sse.core.text.IStructuredPartitions;
 import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration;
@@ -79,7 +83,15 @@
 		}
 		return fConfiguredContentTypes;
 	}
-	
+
+	public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
+		final IContentAssistant assistant = super.getContentAssistant(sourceViewer);
+		if (assistant instanceof ContentAssistant) {
+			((ContentAssistant) assistant).enableAutoInsert(CSSUIPlugin.getDefault().getPreferenceStore().getBoolean(CSSUIPreferenceNames.INSERT_SINGLE_SUGGESTION));
+		}
+		return assistant;
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration#getContentAssistProcessors(
 	 * 	org.eclipse.jface.text.source.ISourceViewer, java.lang.String)
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceInitializer.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceInitializer.java
index b5ab212..f31a271 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceInitializer.java
@@ -93,6 +93,8 @@
 		store.setDefault(CSSUIPreferenceNames.CONTENT_ASSIST_OWN_PAGE_SORT_ORDER,
 				"org.eclipse.wst.css.ui.proposalCategory.cssTemplates\0"+ 
 				"org.eclipse.wst.css.ui.proposalCategory.css");
+
+		store.setDefault(CSSUIPreferenceNames.INSERT_SINGLE_SUGGESTION, true);
 	}
 
 }
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceNames.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceNames.java
index 1dc5129..def2767 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceNames.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/CSSUIPreferenceNames.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -76,4 +76,12 @@
 	 * character (<tt>\0</tt>) in the desired sort order.</p>
 	 */
 	public static final String CONTENT_ASSIST_DEFAULT_PAGE_SORT_ORDER= "css_content_assist_default_page_sort_order"; //$NON-NLS-1$
+
+	/**
+	 * <p>preference key to store the option for auto insertion of single suggestions</p>
+	 * <p>
+	 * Value is of type <code>boolean</code>
+	 * </p>
+	 */
+	public static final String INSERT_SINGLE_SUGGESTION = "insertSingleSuggestion"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSContentAssistPreferencePage.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSContentAssistPreferencePage.java
index 0bf18af..6c7a1a4 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSContentAssistPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,15 +11,20 @@
 package org.eclipse.wst.css.ui.internal.preferences.ui;
 
 import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.wst.css.ui.internal.CSSUIPlugin;
+import org.eclipse.wst.css.ui.internal.preferences.CSSUIPreferenceNames;
 import org.eclipse.wst.sse.ui.internal.Logger;
 import org.eclipse.wst.sse.ui.internal.contentassist.CompletionProposoalCatigoriesConfigurationRegistry;
 import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
 import org.eclipse.wst.sse.ui.preferences.CodeAssistCyclingConfigurationBlock;
 import org.eclipse.wst.sse.ui.preferences.ICompletionProposalCategoriesConfigurationWriter;
+import org.eclipse.wst.xml.ui.internal.XMLUIMessages;
 
 /**
  * <p>Defines the preference page for allowing the user to change the content
@@ -32,6 +37,8 @@
 	
 	/** configuration block for changing preference having to do with the content assist categories */
 	private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
+
+	private Button fInsertSingleProposals;
 	
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -39,6 +46,7 @@
 	protected Control createContents(Composite parent) {
 		final Composite composite = super.createComposite(parent, 1);
 		
+		createContentsForInsertionGroup(composite);
 		createContentsForCyclingGroup(composite);
 		
 		setSize(composite);
@@ -52,6 +60,7 @@
 	 */
 	protected void performDefaults() {
 		performDefaultsForCyclingGroup();
+		performDefaultsForInsertionGroup();
 
 		validateValues();
 		enableValues();
@@ -64,6 +73,7 @@
 	 */
 	protected void initializeValues() {
 		initializeValuesForCyclingGroup();
+		initializeValuesForInsertionGroup();
 	}
 	
 	/**
@@ -71,6 +81,7 @@
 	 */
 	protected void storeValues() {
 		storeValuesForCyclingGroup();
+		storeValuesForInsertionGroup();
 	}
 	
 	/**
@@ -79,7 +90,16 @@
 	protected IPreferenceStore doGetPreferenceStore() {
 		return CSSUIPlugin.getDefault().getPreferenceStore();
 	}
-	
+
+	private void createContentsForInsertionGroup(Composite composite) {
+		Group group = createGroup(composite, 2);
+		
+		group.setText(XMLUIMessages.Group_label_Insertion);
+		
+		fInsertSingleProposals = createCheckBox(group, XMLUIMessages.Insert_single_proposals);
+		((GridData) fInsertSingleProposals.getLayoutData()).horizontalSpan = 2;
+	}
+
 	/**
 	 * <p>Create the contents for the content assist cycling preference group</p>
 	 * @param parent {@link Composite} parent of the group
@@ -89,7 +109,7 @@
 		
 		if(configurationWriter != null) {
 			fConfigurationBlock = new CodeAssistCyclingConfigurationBlock(CSS_CONTENT_TYPE_ID, configurationWriter);
-			fConfigurationBlock.createContents(parent, null); //$NON-NLS-1$
+			fConfigurationBlock.createContents(parent, XMLUIMessages.XMLContentAssistPreferencePage_Cycling_UI_); //$NON-NLS-1$
 		} else {
 			Logger.log(Logger.ERROR, "There should be an ICompletionProposalCategoriesConfigurationWriter" + //$NON-NLS-1$
 					" specified for the CSS content type, but can't fine it, thus can't create user" + //$NON-NLS-1$
@@ -105,7 +125,11 @@
 			fConfigurationBlock.storeValues();
 		}
 	}
-	
+
+	private void storeValuesForInsertionGroup() {
+		getPreferenceStore().setValue(CSSUIPreferenceNames.INSERT_SINGLE_SUGGESTION, (fInsertSingleProposals != null) ? fInsertSingleProposals.getSelection() : false);
+	}
+
 	/**
 	 * <p>Initialize the values for the cycling group</p>
 	 */
@@ -114,7 +138,11 @@
 			fConfigurationBlock.initializeValues();
 		}
 	}
-	
+
+	private void initializeValuesForInsertionGroup() {
+		initCheckbox(fInsertSingleProposals, CSSUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
+	}
+
 	/**
 	 * <p>Load the defaults of the cycling group</p>
 	 */
@@ -123,4 +151,8 @@
 			fConfigurationBlock.performDefaults();
 		}
 	}
+
+	private void performDefaultsForInsertionGroup() {
+		defaultCheckbox(fInsertSingleProposals, CSSUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
+	}
 }
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/CSSDocumentRegionEdgeMatcher.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/CSSDocumentRegionEdgeMatcher.java
index aa1037d..725bf42 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/CSSDocumentRegionEdgeMatcher.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/CSSDocumentRegionEdgeMatcher.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -63,8 +63,7 @@
 					r = r.getPrevious();
 				}
 				if (r.getType().equals(CSSRegionContexts.CSS_RBRACE)) {
-					while (r != null && (braceCount != 0)) {
-						r = r.getPrevious();
+					while ((r = r.getPrevious()) != null && (braceCount != 0)) {
 						if (r.getType().equals(CSSRegionContexts.CSS_RBRACE)) {
 						       braceCount++;
 							}
@@ -76,8 +75,7 @@
 						return new Region(r.getStartOffset(), 1);
 					}
 				} else if (r.getType().equals(CSSRegionContexts.CSS_LBRACE)) {
-					while (r != null && (braceCount != 0)) {
-						r = r.getNext();
+					while ((r = r.getNext()) != null && (braceCount != 0)) {
 						if (r.getType().equals(CSSRegionContexts.CSS_LBRACE)) {
 					       braceCount++;
 						}
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorHover.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorHover.java
new file mode 100644
index 0000000..21b1222
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorHover.java
@@ -0,0 +1,248 @@
+/*******************************************************************************

+ * Copyright (c) 2011 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.wst.css.ui.internal.text.hover;

+

+import org.eclipse.jface.text.AbstractInformationControl;

+import org.eclipse.jface.text.AbstractReusableInformationControlCreator;

+import org.eclipse.jface.text.IDocument;

+import org.eclipse.jface.text.IInformationControl;

+import org.eclipse.jface.text.IInformationControlCreator;

+import org.eclipse.jface.text.IInformationControlExtension2;

+import org.eclipse.jface.text.IRegion;

+import org.eclipse.jface.text.ITextHover;

+import org.eclipse.jface.text.ITextHoverExtension;

+import org.eclipse.jface.text.ITextHoverExtension2;

+import org.eclipse.jface.text.ITextViewer;

+import org.eclipse.jface.text.Region;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.Point;

+import org.eclipse.swt.graphics.RGB;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue;

+import org.eclipse.wst.sse.core.StructuredModelManager;

+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;

+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;

+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;

+import org.w3c.dom.css.CSSPrimitiveValue;

+import org.w3c.dom.css.RGBColor;

+

+public class CSSColorHover implements ITextHover, ITextHoverExtension, ITextHoverExtension2 {

+

+	private IInformationControlCreator fInformationControlCreator;

+

+	public CSSColorHover() {

+		

+	}

+

+	public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {

+		final IDocument document = textViewer.getDocument();

+		if (document instanceof IStructuredDocument) {

+			IStructuredModel model = StructuredModelManager.getModelManager().getModelForRead((IStructuredDocument) document);

+			try {

+				final IndexedRegion region = model.getIndexedRegion(hoverRegion.getOffset());

+				if (region instanceof ICSSPrimitiveValue) {

+					return getColorValue((ICSSPrimitiveValue) region);

+				}

+			}

+			finally {

+				if (model != null)

+					model.releaseFromRead();

+			}

+		}

+		return null;

+	}

+

+	public IInformationControlCreator getHoverControlCreator() {

+		if (fInformationControlCreator == null) {

+			fInformationControlCreator = new CSSColorInformationControlCreator();

+		}

+		return fInformationControlCreator;

+	}

+

+	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {

+		Object result = getHoverInfo2(textViewer, hoverRegion);

+		return result != null ? result.toString() : null;

+	}

+

+	/**

+	 * Gets an {@link RGB} color value from the primitive value

+	 * 

+	 * @param value the primitive CSS value

+	 * @return an RGB value if it can be extracted from the primitive

+	 */

+	private RGB getColorValue(ICSSPrimitiveValue value) {

+		if (value.getParentNode() instanceof RGBColor) {

+			value = (ICSSPrimitiveValue) value.getParentNode();

+		}

+		RGB rgb = null;

+		switch (value.getPrimitiveType()) {

+			case CSSPrimitiveValue.CSS_RGBCOLOR:

+				rgb = getRGB((RGBColor) value);

+				break;

+			case ICSSPrimitiveValue.CSS_HASH:

+				rgb = getRGBFromHex(value.getStringValue());

+				break;

+			case CSSPrimitiveValue.CSS_IDENT:

+				rgb = CSSColorNames.getInstance().getRGB(value.getStringValue());

+				break;

+		}

+		return rgb;

+	}

+

+	/**

+	 * Converts a hex string (either 3-digit or 6-digit notation) into an {@link RGB}. Any

+	 * invalid hex color will result in a null RGB value.

+	 * @param hex rgb value in hexadecimal notation (3- or 6-digit)

+	 * @return an {@link RGB} based on the hexadecimal value. <code>null</code> if the

+	 * rgb value is invalid 

+	 */

+	private RGB getRGBFromHex(String hex) {

+		try {

+			final int length = hex.length();

+			if (length == 4) { // convert 3-digit notation

+				final int r = Integer.parseInt(hex.substring(1, 2), 16);

+				final int g = Integer.parseInt(hex.substring(2, 3), 16);

+				final int b = Integer.parseInt(hex.substring(3, 4), 16);

+				return new RGB((r << 4) | r, (g << 4) | g, (b << 4) | b);

+			}

+			else if (length == 7) { // convert 6-digit notation

+				return new RGB(Integer.parseInt(hex.substring(1, 3), 16), Integer.parseInt(hex.substring(3, 5), 16), Integer.parseInt(hex.substring(5, 7), 16));

+			}

+		}

+		catch (NumberFormatException e) {} // Invalid hexcode used

+		return null;

+	}

+

+	/**

+	 * Provides an {@link RGB} based on an {@link RGBColor}

+	 * @param color The {@link RGBColor} to extra RGB information from

+	 * @return an {@link RGB} based on an {@link RGBColor}

+	 */

+	private RGB getRGB(RGBColor color) {

+		final int red = getColorInt(color.getRed());

+		final int green = getColorInt(color.getGreen());

+		final int blue = getColorInt(color.getBlue());

+		if (red >= 0 && green >= 0 && blue >= 0)

+			return new RGB(red, green, blue);

+		return null;

+	}

+

+	private int getColorInt(CSSPrimitiveValue value) {

+		if (value.getPrimitiveType() == CSSPrimitiveValue.CSS_PERCENTAGE) { // Percentage of 255

+			final float percentage = value.getFloatValue(CSSPrimitiveValue.CSS_NUMBER);

+			return capIntValue((int) (percentage / 100 * 255));

+		}

+		else if (value.getPrimitiveType() == ICSSPrimitiveValue.CSS_INTEGER) {

+			return capIntValue((int) value.getFloatValue(CSSPrimitiveValue.CSS_NUMBER));

+		}

+		return -1;

+	}

+

+	/**

+	 * Caps the integer value between the ranges of 0 and 255, inclusive.

+	 * @param value integer value to cap

+	 * @return a value between 0 and 255, inclusive

+	 */

+	private int capIntValue(int value) {

+		if (value > 255) value = 255;

+		else if (value < 0) value = 0;

+		return value;

+	}

+

+	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {

+		final IDocument document = textViewer.getDocument();

+		if (document instanceof IStructuredDocument) {

+			IStructuredModel model = StructuredModelManager.getModelManager().getModelForRead((IStructuredDocument) document);

+			try {

+				IndexedRegion region = model.getIndexedRegion(offset);

+				if (region instanceof ICSSPrimitiveValue) {

+					// Shift the hover region to the rgb() function instead of the individual numbers

+					if (((ICSSPrimitiveValue) region).getParentNode() instanceof RGBColor) {

+						region = (IndexedRegion) ((ICSSPrimitiveValue) region).getParentNode();

+					}

+				}

+				if (region != null) {

+					return new Region(region.getStartOffset(), region.getLength());

+				}

+			}

+			finally {

+				if (model != null)

+					model.releaseFromRead();

+			}

+		}

+		return null;

+	}

+

+	private class CSSColorInformationControlCreator extends AbstractReusableInformationControlCreator {

+

+		protected IInformationControl doCreateInformationControl(Shell parent) {

+			return new CSSColorInformationControl(parent);

+		}

+		

+	}

+

+	/**

+	 * An information control that simply displays color information.

+	 * The control takes an {@link RGB} input value and sets its background

+	 * to the corresponding color.

+	 *

+	 */

+	private class CSSColorInformationControl extends AbstractInformationControl implements IInformationControlExtension2 {

+

+		private Color fColor;

+

+		CSSColorInformationControl(Shell shell) {

+			super(shell, false);

+			create();

+		}

+

+		public Point computeSizeConstraints(int widthInChars, int heightInChars) {

+			return new Point(50, 50);

+		}

+

+		public boolean hasContents() {

+			return fColor != null;

+		}

+

+		protected void createContent(Composite parent) {

+		}

+

+		public void setInformation(String information) {

+		}

+

+		public void dispose() {

+			if (fColor != null) {

+				fColor.dispose();

+				fColor = null;

+			}

+			super.dispose();

+		}

+

+		public void setInput(Object input) {

+			if (input instanceof RGB) {

+				RGB rgb = (RGB) input;

+				if (fColor == null || !rgb.equals(fColor.getRGB())) {

+					if (fColor != null) { // Cleanup any old color

+						fColor.dispose();

+					}

+					fColor = new Color(getShell().getDisplay(), rgb);

+					setBackgroundColor(fColor);

+				}

+			}

+		}

+

+		public IInformationControlCreator getInformationPresenterControlCreator() {

+			return new CSSColorInformationControlCreator();

+		}

+

+	}

+}

diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorNames.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorNames.java
new file mode 100644
index 0000000..32cb5d7
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/text/hover/CSSColorNames.java
@@ -0,0 +1,121 @@
+/*******************************************************************************

+ * Copyright (c) 2011 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.wst.css.ui.internal.text.hover;

+

+import java.io.IOException;

+import java.net.URL;

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.parsers.SAXParserFactory;

+

+import org.eclipse.core.runtime.FileLocator;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.swt.graphics.RGB;

+import org.eclipse.wst.css.ui.internal.CSSUIPlugin;

+import org.eclipse.wst.css.ui.internal.Logger;

+import org.xml.sax.Attributes;

+import org.xml.sax.InputSource;

+import org.xml.sax.SAXException;

+import org.xml.sax.XMLReader;

+import org.xml.sax.helpers.DefaultHandler;

+

+import com.ibm.icu.util.StringTokenizer;

+

+/**

+ * Associates css color names to the appropriate {@link RGB} values.

+ * These associations are defined in org.eclipse.wst.css.ui/csscolors/extended-color-mapping.xml

+ *

+ */

+class CSSColorNames {

+

+	private static CSSColorNames instance;

+	private static final Map colors = new HashMap();

+

+	private CSSColorNames() {

+		try {

+			URL url = FileLocator.find(CSSUIPlugin.getDefault().getBundle(), new Path("csscolors/extended-color-mapping.xml"), null); //$NON-NLS-1$

+			final XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();

+			xmlReader.setContentHandler(new ColorMappingHandler());

+			xmlReader.parse(new InputSource(url.openStream()));

+		}

+		catch (IOException e) {

+			Logger.logException(e);

+		}

+		catch (SAXException e) {

+			Logger.logException(e);

+		}

+		catch (ParserConfigurationException e) {

+			Logger.logException(e);

+		}

+	}

+

+	public static synchronized CSSColorNames getInstance() {

+		if (instance == null) {

+			instance = new CSSColorNames();

+		}

+		return instance;

+	}

+

+	/**

+	 * Returns the {@link RGB} value associated with this color name.

+	 * @param name the color name

+	 * @return {@link RGB} associated with <code>name</code>, null if it is an unknown name or invalid RGB value

+	 */

+	public RGB getRGB(String name) {

+		return (RGB) colors.get(name);

+	}

+

+	class ColorMappingHandler extends DefaultHandler {

+		private final String COLOR_ELEM = "color"; //$NON-NLS-1$

+		private final String NAME_ATTR = "name"; //$NON-NLS-1$

+		private final String RGB_ATTR = "rgb"; //$NON-NLS-1$

+

+		public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

+			if (COLOR_ELEM.equals(qName)) {

+				final String name = attributes.getValue(NAME_ATTR);

+				final String rgb = attributes.getValue(RGB_ATTR);

+				if (name != null && rgb != null) {

+					final RGB rgbValue = getRGB(rgb);

+					if (rgbValue != null) {

+						colors.put(name, rgbValue);

+					}

+				}

+			}

+		}

+

+		/**

+		 * Converts an rgb string into an {@link RGB}

+		 * @param rgb the color string

+		 * @return an {@link RGB} if one can be created from the string; otherwise, null

+		 */

+		private RGB getRGB(String rgb) {

+			final StringTokenizer tokenizer = new StringTokenizer(rgb, ","); //$NON-NLS-1$

+			int[] weights = new int[3];

+			for (int i = 0; tokenizer.hasMoreTokens(); i++) {

+				if (i > 2)

+					return null;

+				try {

+					weights[i] = Integer.parseInt(tokenizer.nextToken().trim());

+				}

+				catch (NumberFormatException e) {

+					return null;

+				}

+				if (weights[i] > 255 || weights[i] < 0)

+					return null;

+			}

+			return new RGB(weights[0], weights[1], weights[2]);

+		}

+	}

+	

+	

+}

diff --git a/bundles/org.eclipse.wst.dtd.core/.project b/bundles/org.eclipse.wst.dtd.core/.project
index 76249e5..00c2f4b 100644
--- a/bundles/org.eclipse.wst.dtd.core/.project
+++ b/bundles/org.eclipse.wst.dtd.core/.project
@@ -2,6 +2,8 @@
 <projectDescription>
 	<name>org.eclipse.wst.dtd.core</name>
 	<comment></comment>
+	<projects>
+	</projects>
 	<buildSpec>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
@@ -18,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
index feb122c..98d2a9b 100644
--- a/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
@@ -34,7 +34,7 @@
 Require-Bundle: org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.sse.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,1.3.0)"
diff --git a/bundles/org.eclipse.wst.dtd.core/component.xml b/bundles/org.eclipse.wst.dtd.core/component.xml
deleted file mode 100644
index e4dc12c..0000000
--- a/bundles/org.eclipse.wst.dtd.core/component.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.dtd">
-	<component-depends unrestricted="true" />
-	<plugin id="org.eclipse.wst.dtdeditor.doc.user" fragment="false" />
-	<plugin id="org.eclipse.wst.dtd.core" fragment="false" />
-	<plugin id="org.eclipse.wst.dtd.ui" fragment="false" />
-	<description url="http://eclipse.org/webtools/wst/components/dtd/overview.html" />
-	<package name="org.eclipse.wst.dtd.ui" api="false">
-		<type name="StructuredTextViewerConfigurationDTD" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.dtd.ui.views.contentoutline" api="false">
-		<type name="DTDContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<plugin id="org.eclipse.wst.dtd.ui.infopop" fragment="false" />
-</component>
diff --git a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDAttributeImpl.java b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDAttributeImpl.java
index 89de883..ca9c409 100644
--- a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDAttributeImpl.java
+++ b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDAttributeImpl.java
@@ -765,6 +765,12 @@
 				return basicGetAttributeTypeReferencedEntity();
 			case DTDPackage.DTD_ATTRIBUTE__DTD_ELEMENT :
 				return getDTDElement();
+			case EcorePackage.ETYPED_ELEMENT__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case EcorePackage.EATTRIBUTE__DERIVED:
+				return isDerived() ? Boolean.TRUE : Boolean.FALSE;
+			case EcorePackage.ETYPED_ELEMENT__EGENERIC_TYPE:
+				return getEGenericType();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -953,6 +959,10 @@
 				return attributeTypeReferencedEntity != null;
 			case DTDPackage.DTD_ATTRIBUTE__DTD_ELEMENT :
 				return getDTDElement() != null;
+			case EcorePackage.ETYPED_ELEMENT__ORDERED:
+				return isOrdered();
+			case EcorePackage.EATTRIBUTE__DERIVED:
+				return isDerived();
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDElementImpl.java b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDElementImpl.java
index adf0b93..6554d1d 100644
--- a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDElementImpl.java
+++ b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDElementImpl.java
@@ -405,6 +405,14 @@
 				return getContent();
 			case DTDPackage.DTD_ELEMENT__DTD_ATTRIBUTE :
 				return getDTDAttribute();
+			case EcorePackage.ECLASS__EALL_GENERIC_SUPER_TYPES:
+				return getEAllGenericSuperTypes();
+			case EcorePackage.ECLASS__ETYPE_PARAMETERS:
+				return getETypeParameters();
+			case EcorePackage.ECLASS__ESTRUCTURAL_FEATURES:
+				return getEStructuralFeatures();
+			case EcorePackage.ECLASS__EGENERIC_SUPER_TYPES:
+				return getEGenericSuperTypes();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -460,6 +468,8 @@
 				return content != null;
 			case DTDPackage.DTD_ELEMENT__DTD_ATTRIBUTE :
 				return dtdAttribute != null && !getDTDAttribute().isEmpty();
+			case EcorePackage.ECLASSIFIER__INSTANCE_TYPE_NAME:
+				return instanceTypeName != null;
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDEnumerationTypeImpl.java b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDEnumerationTypeImpl.java
index 8e604b9..d1e67c6 100644
--- a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDEnumerationTypeImpl.java
+++ b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDEnumerationTypeImpl.java
@@ -244,6 +244,8 @@
 				return getKind();
 			case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
 				return getDTDFile();
+			case EcorePackage.ECLASS__ETYPE_PARAMETERS:
+				return getETypeParameters();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -273,6 +275,8 @@
 				return kind != KIND_EDEFAULT;
 			case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
 				return getDTDFile() != null;
+			case EcorePackage.ECLASSIFIER__INSTANCE_TYPE_NAME:
+				return instanceTypeName != null;
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/bundles/org.eclipse.wst.dtd.core/saxparser/org/eclipse/wst/dtd/core/internal/saxparser/DTDParser.java b/bundles/org.eclipse.wst.dtd.core/saxparser/org/eclipse/wst/dtd/core/internal/saxparser/DTDParser.java
index 35bb54f..3666dad 100644
--- a/bundles/org.eclipse.wst.dtd.core/saxparser/org/eclipse/wst/dtd/core/internal/saxparser/DTDParser.java
+++ b/bundles/org.eclipse.wst.dtd.core/saxparser/org/eclipse/wst/dtd/core/internal/saxparser/DTDParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -116,7 +116,7 @@
 			// CS ensure that the physical URI is considered where streams are required
 			// and the logicalURI is used as the DTD's baseLocation
 			String physicalURI = URIResolverPlugin.createResolver().resolvePhysicalLocation("", "", logicalURI); //$NON-NLS-1$ //$NON-NLS-2$
-			boolean isReadable = URIHelper.isReadableURI(physicalURI, true);
+			boolean isReadable = URIHelper.isReadableURI(physicalURI, false);
 			if (!isReadable) {
 				throw new Exception("DTD parse error. Can not read the specified URI : " + logicalURI); //$NON-NLS-1$
 			}			
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
index 8b7fafe..28e3ee0 100644
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@
  */
 public class DTDValidationMessages extends NLS {
 	public static String _ERROR_REF_ELEMENT_UNDEFINED;
+	public static String _ERROR_DUPLICATE_ELEMENT_DECLARATION;
 
 	private static final String BUNDLE_NAME = "org.eclipse.wst.dtd.core.internal.validation.DTDValidationResources";//$NON-NLS-1$
 
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
index 131e64c..d2a251b 100644
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
+# Copyright (c) 2005, 2011 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -12,4 +12,5 @@
 !
 ! Referenced Element Validation
 !
-_ERROR_REF_ELEMENT_UNDEFINED = The element {0} has not been declared.
\ No newline at end of file
+_ERROR_REF_ELEMENT_UNDEFINED = The element {0} has not been declared.
+_ERROR_DUPLICATE_ELEMENT_DECLARATION=The name {0} is used for multiple element declarations.
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java
index c2ab0c1..4330ac7 100644
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,9 +15,11 @@
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.List;
-import com.ibm.icu.util.StringTokenizer;
+import java.util.Map;
 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
@@ -41,6 +43,8 @@
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
 
+import com.ibm.icu.util.StringTokenizer;
+
 /**
  * DTD validation.
  */
@@ -179,7 +183,7 @@
 
 		private static final String MODEL_DELIMITERS = ",()| "; //$NON-NLS-1$
 
-		private List fElemDecls = new ArrayList();
+		private Map fElemDecls = new HashMap();
 
 		private Hashtable fElemRefs = new Hashtable();
 
@@ -222,8 +226,17 @@
 		 *      java.lang.String)
 		 */
 		public void elementDecl(String name, String model) throws SAXException {
+			// Add each referenced element to the list of referenced elements
+			int line = fLocator.getLineNumber();
+			int column = fLocator.getColumnNumber();
+			String uri = fLocator.getSystemId();			
 			// Add this element to the list of declared elements.
-			fElemDecls.add(name);
+			List locations = (List) fElemDecls.get(name);
+			if (locations == null) {
+				locations = new ArrayList();
+				fElemDecls.put(name, locations);
+			}
+			locations.add(new ElementLocation(column, line, uri));
 
 			// Return if the element model should be ignored. The model should
 			// be
@@ -231,10 +244,6 @@
 			if (fIgnoreElemModel.contains(model)) {
 				return;
 			}
-			// Add each referenced element to the list of referenced elements
-			int line = fLocator.getLineNumber();
-			int column = fLocator.getColumnNumber();
-			String uri = fLocator.getSystemId();
 
 			StringTokenizer strtok = new StringTokenizer(model, MODEL_DELIMITERS);
 			while (strtok.hasMoreTokens()) {
@@ -300,7 +309,7 @@
 		 * 
 		 * @return The list of element declarations.
 		 */
-		public List getElementDeclarations() {
+		public Map getElementDeclarations() {
 			return fElemDecls;
 		}
 
@@ -362,7 +371,20 @@
 		}
 	}
 
-	
+	/**
+	 * Keeps track of element location information
+	 *
+	 */
+	class ElementLocation {
+		int column = -1;
+		int line = -1;
+		String uri;
+		ElementLocation(int column, int line, String uri) {
+			this.column = column;
+			this.line = line;
+			this.uri = uri;
+		}
+	}
 
 	private URIResolver fResolver = null;
 
@@ -403,9 +425,11 @@
 
 			reader.parse(new InputSource(new StringReader(document)));
 
-			List elemDecls = dtdHandler.getElementDeclarations();
+			Map elemDecls = dtdHandler.getElementDeclarations();
 			Hashtable elemRefs = dtdHandler.getElementReferences();
 			validateElementReferences(elemDecls, elemRefs, valinfo);
+
+			validateDuplicateElementDecls(elemDecls, valinfo);
 		}
 		catch (ParserConfigurationException e) {
 
@@ -419,6 +443,21 @@
 		return valinfo;
 	}
 
+	private void validateDuplicateElementDecls(Map elemDecls, ValidationInfo valinfo) {
+		final Iterator it = elemDecls.entrySet().iterator();
+		while (it.hasNext()) {
+			Map.Entry elem = (Map.Entry) it.next();
+			List locations = (List) elem.getValue();
+			if (locations.size() > 1) {
+				final Iterator locationIterator = locations.iterator();
+				while (locationIterator.hasNext()) {
+					ElementLocation elemLoc = (ElementLocation) locationIterator.next();
+					valinfo.addError(NLS.bind(DTDValidationMessages._ERROR_DUPLICATE_ELEMENT_DECLARATION, "'" + elem.getKey() + "'"), elemLoc.line, elemLoc.column, elemLoc.uri); //$NON-NLS-1$ //$NON-NLS-2$
+				}
+			}
+		}
+	}
+
 	/**
 	 * Validate the element references in the DTD. An element reference is
 	 * <!ELEMENT elem (elementReference)>
@@ -431,12 +470,12 @@
 	 * @param valinfo
 	 *            The validation info object to store validation information.
 	 */
-	private void validateElementReferences(List elemDecls, Hashtable elemRefs, ValidationInfo valinfo) {
+	private void validateElementReferences(Map elemDecls, Hashtable elemRefs, ValidationInfo valinfo) {
 		Enumeration keys = elemRefs.keys();
 		while (keys.hasMoreElements()) {
 			String elemRef = (String) keys.nextElement();
 			// If the element hasn't been declared create an error.
-			if (!elemDecls.contains(elemRef)) {
+			if (!elemDecls.containsKey(elemRef)) {
 				ElementRefLocation elemLoc = (ElementRefLocation) elemRefs.get(elemRef);
 				do {
 					valinfo.addError(NLS.bind(DTDValidationMessages._ERROR_REF_ELEMENT_UNDEFINED, "'" + elemRef + "'"), elemLoc.getLine(), elemLoc.getColumn(), elemLoc.getURI()); //$NON-NLS-1$ //$NON-NLS-2$
@@ -446,4 +485,5 @@
 			}
 		}
 	}
+
 }
diff --git a/bundles/org.eclipse.wst.dtd.ui/.project b/bundles/org.eclipse.wst.dtd.ui/.project
index 16b209c..7d75f4d 100644
--- a/bundles/org.eclipse.wst.dtd.ui/.project
+++ b/bundles/org.eclipse.wst.dtd.ui/.project
@@ -2,6 +2,8 @@
 <projectDescription>
 	<name>org.eclipse.wst.dtd.ui</name>
 	<comment></comment>
+	<projects>
+	</projects>
 	<buildSpec>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
@@ -18,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.dtd.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.dtd.ui/META-INF/MANIFEST.MF
index f0c9217..af5a01f 100644
--- a/bundles/org.eclipse.wst.dtd.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.dtd.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.dtd.ui; singleton:=true
-Bundle-Version: 1.0.600.qualifier
+Bundle-Version: 1.0.700.qualifier
 Bundle-Activator: org.eclipse.wst.dtd.ui.internal.DTDUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -34,7 +34,7 @@
  org.eclipse.wst.sse.ui;bundle-version="[1.2.0,1.4.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.xml.ui;bundle-version="[1.0.400,1.2.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.ui.views.properties.tabbed;bundle-version="[3.4.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.wst.html.core/.project b/bundles/org.eclipse.wst.html.core/.project
index 13a9fac..f92e052 100644
--- a/bundles/org.eclipse.wst.html.core/.project
+++ b/bundles/org.eclipse.wst.html.core/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
index 2756bfc..efde67d 100644
--- a/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
@@ -26,15 +26,17 @@
  org.eclipse.wst.html.core.internal.provisional.text;x-internal:=true,
  org.eclipse.wst.html.core.internal.text;x-internal:=true,
  org.eclipse.wst.html.core.internal.validate;x-internal:=true,
+ org.eclipse.wst.html.core.internal.validation;x-internal:=true,
  org.eclipse.wst.html.core.text
 Import-Package: com.ibm.icu.util; version="3.8"
 Require-Bundle: org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,2.0.0)",
  org.eclipse.wst.sse.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.wst.css.core;bundle-version="[1.1.400,1.2.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.modulecore;bundle-version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.wst.common.modulecore;bundle-version="[1.2.0,2.0.0)";resolution:=optional,
+ org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)"
 Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.html.core.internal.contenttype,org.eclipse.wst.html.core.internal.provisional.contenttype"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.wst.html.core/component.xml b/bundles/org.eclipse.wst.html.core/component.xml
deleted file mode 100644
index 8565aec..0000000
--- a/bundles/org.eclipse.wst.html.core/component.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.html">
-	<component-depends unrestricted="true"></component-depends>
-	<plugin id="org.eclipse.wst.html.core" fragment="false" />
-	<plugin id="org.eclipse.wst.html.standard.dtds" fragment="false" />
-	<plugin id="org.eclipse.wst.html.ui" fragment="false" />
-	<description url="http://eclipse.org/webtools/wst/components/html/overview.html" />
-	<package name="org.eclipse.wst.html.ui" api="false">
-		<type name="StructuredTextViewerConfigurationHTML" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.html.ui.views.contentoutline" api="false">
-		<type name="HTMLContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<plugin id="org.eclipse.wst.html.ui.infopop" fragment="false" />
-</component>
diff --git a/bundles/org.eclipse.wst.html.core/plugin.properties b/bundles/org.eclipse.wst.html.core/plugin.properties
index 14b6fdc..02144aa 100644
--- a/bundles/org.eclipse.wst.html.core/plugin.properties
+++ b/bundles/org.eclipse.wst.html.core/plugin.properties
@@ -14,3 +14,4 @@
 HTML_Content_Type_Extension_Element.name=HTML
 _taskMarker.name=HTML Task
 _validationMarker.name=HTML Problem
+HTML_Syntax_Validator.name=HTML Syntax Validator
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.core/plugin.xml b/bundles/org.eclipse.wst.html.core/plugin.xml
index 36c08f8..d5f3fca 100644
--- a/bundles/org.eclipse.wst.html.core/plugin.xml
+++ b/bundles/org.eclipse.wst.html.core/plugin.xml
@@ -210,4 +210,28 @@
 			class="org.eclipse.wst.html.core.internal.preferences.HTMLCorePreferenceInitializer" />
 	</extension>
 
+	<!--======================================================================================-->
+	<!-- Workbench validation                                       						  -->
+	<!--======================================================================================-->
+   <extension id="HTMLValidator" name="%HTML_Syntax_Validator.name" point="org.eclipse.wst.validation.validatorV2">
+      <validator
+            build="true"
+            class="org.eclipse.wst.html.core.internal.validation.HTMLValidator"
+            manual="true"
+            sourceid="org.eclipse.wst.html.ui.internal.validation.htmlsyntaxvalidator"
+            version="1"
+            markerId="org.eclipse.wst.html.core.validationMarker">
+         <include>
+            <rules>
+               <contentType id="org.eclipse.wst.html.core.htmlsource"></contentType>
+               <fileext caseSensitive="false" ext="html"/>
+               <fileext caseSensitive="false" ext="xhtml"/>
+               <fileext caseSensitive="false" ext="htm"/>
+               <fileext caseSensitive="false" ext="htpl"/>
+               <fileext caseSensitive="false" ext="wml"/>
+            </rules>
+         </include>
+         <group id="org.eclipse.wst.sse.core.structuredModelGroup"/>
+      </validator>
+   </extension>
 </plugin>
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePlugin.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePlugin.java
index d1a486b..ef06745 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePlugin.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +20,9 @@
  * The main plugin class to be used in the desktop.
  */
 public class HTMLCorePlugin extends Plugin {
+
+	public final static String ID = "org.eclipse.wst.html.core"; //$NON-NLS-1$
+
 	// The shared instance.
 	private static HTMLCorePlugin plugin;
 
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java
index 1d7aa67..d65e17a 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java
@@ -1267,9 +1267,10 @@
 			attributes.putNamedItem(ATTR_NAME_WIDTH, attr);
 			
 			// (border %Pixels; #IMPLIED)
-			atype = new HTMLCMDataTypeImpl(HTMLCMDataType.PIXELS);
+			atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
 			attr = new HTMLAttrDeclImpl(ATTR_NAME_BORDER, atype, CMAttributeDeclaration.OPTIONAL);
-			attr.obsolete(true);
+			atype.setEnumValues(new String[] {"", "1"});
+			//attr.obsolete(true);
 			attributes.putNamedItem(ATTR_NAME_BORDER, attr);
 			
 			// (frame %TFrame; #IMPLIED)
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
index 0186a71..6eb852a 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -81,7 +81,7 @@
 		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_DUPLICATE, ValidationMessage.WARNING);
 		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_MISMATCH, ValidationMessage.ERROR);
 		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_UNCLOSED, ValidationMessage.WARNING);
-		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, ValidationMessage.IGNORE);
+		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, ValidationMessage.WARNING);
 		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_OBSOLETE_NAME, ValidationMessage.WARNING);
 		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_EQUALS_MISSING, ValidationMessage.WARNING);
 		
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
index 272a45b..c8863cb 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.html.core.internal.validate;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 
@@ -41,6 +42,7 @@
 
 public class HTMLAttributeValidator extends PrimeValidator {
 
+	private static final String JAVASCRIPT_PREFIX = "javascript:"; //$NON-NLS-1$
 	private static final int REGION_NAME = 1;
 	private static final int REGION_VALUE = 2;
 	// <<D210422
@@ -210,17 +212,24 @@
 						}
 					}
 					else if (CMDataType.URI.equals(attrType.getDataTypeName())) {
-						// TODO: URI validation?
-						if (false && actualValue.indexOf('#') < 0 && actualValue.indexOf(":/") == -1 && CMUtil.isHTML(edec)) { //$NON-NLS-1$ //$NON-NLS-2$
+						if (actualValue.indexOf('#') < 0 && actualValue.indexOf(":/") < 0 && !actualValue.toLowerCase(Locale.ENGLISH).startsWith(JAVASCRIPT_PREFIX) && CMUtil.isHTML(edec)) { //$NON-NLS-1$ //$NON-NLS-2$
 							IStructuredDocumentRegion start = ((IDOMNode) node).getStartStructuredDocumentRegion();
+							// roundabout start tag check
 							if (start != null && start.getFirstRegion().getTextLength() == 1) {
-								IPath basePath = new Path(((IDOMNode) node).getModel().getBaseLocation());
-								if (basePath.segmentCount() > 1) {
-									IPath path = ModuleCoreSupport.resolve(basePath, actualValue);
-									IResource found = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
-									if (found == null || !found.isAccessible()) {
-										rgnType = REGION_VALUE;
-										state = ErrorState.RESOURCE_NOT_FOUND;
+								// only check when we have a way to set dependencies
+								Collection dependencies = (Collection) ((IDOMNode) ((IDOMNode) node).getOwnerDocument()).getUserData(HTMLValidationAdapterFactory.DEPENDENCIES);
+								if (dependencies != null) {
+									IPath basePath = new Path(((IDOMNode) node).getModel().getBaseLocation());
+									if (basePath.segmentCount() > 1) {
+										IPath path = ModuleCoreSupport.resolve(basePath, actualValue);
+										IResource found = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
+										if (found == null) {
+											rgnType = REGION_VALUE;
+											state = ErrorState.RESOURCE_NOT_FOUND;
+										}
+										else {
+											dependencies.add(found);
+										}
 									}
 								}
 							}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLValidationAdapterFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLValidationAdapterFactory.java
index 1010e04..061574d 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLValidationAdapterFactory.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLValidationAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,8 @@
 
 	private static HTMLValidationAdapterFactory instance = null;
 
+	public static final String DEPENDENCIES = "org.eclipse.wst.html.validator.dependencies"; //$NON-NLS-1$
+
 	/**
 	 * HTMLValidationAdapterFactory constructor comment.
 	 */
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ModuleCoreSupportDelegate.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ModuleCoreSupportDelegate.java
index 818d340..1339508 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ModuleCoreSupportDelegate.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ModuleCoreSupportDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -24,6 +25,7 @@
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
 
 /**
@@ -136,6 +138,18 @@
 
 						}
 					}
+					else {
+						// http://bugs.eclipse.org/338751 
+						IVirtualFolder virtualFolder = ComponentCore.createFolder(project, referenceRuntimePath);
+						if (virtualFolder != null && virtualFolder.exists()) {
+							IContainer[] underlyingFolders = virtualFolder.getUnderlyingFolders();
+							for (int j = 0; j < underlyingFolders.length; j++) {
+								if (underlyingFolders[j].getProject().equals(project) && underlyingFolders[j].isAccessible()) {
+									return underlyingFolders[j].getFullPath();
+								}
+							}
+						}
+					}
 				}
 			}
 			return resolved;
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationReporter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationReporter.java
similarity index 95%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationReporter.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationReporter.java
index 4d1068c..f54c036 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationReporter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationReporter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2008 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,12 +8,13 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.wst.html.core.internal.validate.MessageFactory;
+import org.eclipse.wst.html.core.internal.validation.HTMLValidator;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.validate.ErrorInfo;
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationResult.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationResult.java
similarity index 90%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationResult.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationResult.java
index 26c5f08..a96a82d 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidationResult.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidationResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 public class HTMLValidationResult {
 	private int errors = 0;
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidator.java
similarity index 64%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidator.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidator.java
index 77df2fe..e219350 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/HTMLValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2011 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,14 +8,15 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 
-import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
@@ -24,7 +25,6 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -36,47 +36,38 @@
 import org.eclipse.core.runtime.content.IContentType;
 import org.eclipse.core.runtime.content.IContentTypeManager;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
+import org.eclipse.wst.html.core.internal.Logger;
 import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeConstants;
 import org.eclipse.wst.html.core.internal.validate.HTMLValidationAdapterFactory;
-import org.eclipse.wst.html.ui.internal.Logger;
 import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.FileBufferModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.util.URIResolver;
 import org.eclipse.wst.sse.core.internal.validate.ValidationAdapter;
 import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator;
 import org.eclipse.wst.validation.AbstractValidator;
 import org.eclipse.wst.validation.ValidationResult;
 import org.eclipse.wst.validation.ValidationState;
 import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.core.ValidationException;
 import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
-import org.eclipse.wst.validation.internal.operations.WorkbenchReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
 import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
 import org.eclipse.wst.xml.core.internal.document.DocumentTypeAdapter;
+import org.eclipse.wst.xml.core.internal.document.NodeImpl;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.w3c.dom.Text;
 
-public class HTMLValidator extends AbstractValidator implements IValidatorJob, ISourceValidator, IExecutableExtension {
+public class HTMLValidator extends AbstractValidator implements IValidatorJob, IExecutableExtension {
 	private static final String ORG_ECLIPSE_WST_HTML_CORE_HTMLSOURCE = "org.eclipse.wst.html.core.htmlsource"; //$NON-NLS-1$
 
 	static boolean shouldValidate(IFile file) {
 		IResource resource = file;
 		do {
-			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || (resource.getName().charAt(0) == '.' && resource.getType() == IResource.FOLDER)) {
+			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible()
+					|| (resource.getName().charAt(0) == '.' && resource.getType() == IResource.FOLDER)) {
 				return false;
 			}
 			resource = resource.getParent();
@@ -85,7 +76,6 @@
 		return true;
 	}
 
-	private IDocument fDocument;
 	private IContentTypeManager fContentTypeManager;
 	private IContentType[] fOtherSupportedContentTypes = null;
 	private String[] fAdditionalContentTypesIDs = null;
@@ -124,7 +114,6 @@
 		return fOtherSupportedContentTypes;
 	}
 
-
 	/**
 	 */
 	protected IDOMModel getModel(IProject project, IFile file) {
@@ -247,173 +236,6 @@
 	}
 
 	/**
-	 * This validate call is for the ISourceValidator partial document
-	 * validation approach
-	 * 
-	 * @param dirtyRegion
-	 * @param helper
-	 * @param reporter
-	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
-	 */
-	public void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
-
-		if (helper == null || fDocument == null)
-			return;
-
-		if ((reporter != null) && (reporter.isCancelled() == true)) {
-			throw new OperationCanceledException();
-		}
-
-		IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument);
-		if (model == null)
-			return; // error
-
-		try {
-
-			IDOMDocument document = null;
-			if (model instanceof IDOMModel) {
-				document = ((IDOMModel) model).getDocument();
-			}
-
-			if (document == null || !hasHTMLFeature(document)) {
-				// handled in finally clause
-				// model.releaseFromRead();
-				return; //ignore
-			}
-			
-			IPath filePath = null;
-			IFile file = null;
-
-			ITextFileBuffer fb = FileBufferModelManager.getInstance().getBuffer(fDocument);
-			if (fb != null) {
-				filePath = fb.getLocation();
-
-				if (filePath.segmentCount() > 1) {
-					file = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-					if (!file.isAccessible()) {
-						file = null;
-					}
-				}
-			}
-			else {
-				filePath = new Path(model.getId());
-			}
-
-			// this will be the wrong region if it's Text (instead of Element)
-			// we don't know how to validate Text
-			IndexedRegion ir = getCoveringNode(dirtyRegion); //  model.getIndexedRegion(dirtyRegion.getOffset());
-			if (ir instanceof Text) {
-				while (ir != null && ir instanceof Text) {
-					// it's assumed that this gets the IndexedRegion to
-					// the right of the end offset
-					ir = model.getIndexedRegion(ir.getEndOffset());
-				}
-			}
-			
-			if (ir instanceof INodeNotifier) {
-
-				INodeAdapterFactory factory = HTMLValidationAdapterFactory.getInstance();
-				ValidationAdapter adapter = (ValidationAdapter) factory.adapt((INodeNotifier) ir);
-				if (adapter == null)
-					return; // error
-
-				if (reporter != null) {
-					HTMLValidationReporter rep = null;
-					rep = getReporter(reporter, file, (IDOMModel) model);
-					rep.clear();
-					adapter.setReporter(rep);
-
-					Message mess = new LocalizedMessage(IMessage.LOW_SEVERITY, filePath.toString().substring(1));
-					reporter.displaySubtask(this, mess);
-				}
-				adapter.validate(ir);
-			}
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-	}
-
-	private IndexedRegion getCoveringNode(IRegion dirtyRegion) {
-		
-		IndexedRegion largestRegion = null;
-		if(fDocument instanceof IStructuredDocument) {
-			IStructuredDocumentRegion[] regions = ((IStructuredDocument) fDocument).getStructuredDocumentRegions(dirtyRegion.getOffset(), dirtyRegion.getLength());
-			largestRegion = getLargest(regions);
-		}
-		return largestRegion;
-	}
-	protected IndexedRegion getLargest(IStructuredDocumentRegion[] sdRegions) {
-		
-		if(sdRegions == null || sdRegions.length == 0)
-			return null;
-		 
-		IndexedRegion currentLargest = getCorrespondingNode(sdRegions[0]);
-		for (int i = 0; i < sdRegions.length; i++) {
-		    if(!sdRegions[i].isDeleted()) {
-    			IndexedRegion corresponding = getCorrespondingNode(sdRegions[i]);
-    			
-    			if(currentLargest instanceof Text)
-    				currentLargest = corresponding;
-    			
-                if(corresponding != null) {
-                	if(!(corresponding instanceof Text)) {
-	        			if (corresponding.getStartOffset() <= currentLargest.getStartOffset()  
-	        						&&  corresponding.getEndOffset() >= currentLargest.getEndOffset() )
-	        				currentLargest = corresponding;
-                	}
-                }
-                
-            }
-		}
-		return currentLargest;
-	}
-	protected IndexedRegion getCorrespondingNode(IStructuredDocumentRegion sdRegion) {
-		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument);
-        IndexedRegion indexedRegion = null;
-        try {
-            if (sModel != null) 
-                indexedRegion = sModel.getIndexedRegion(sdRegion.getStart());    
-        } finally {
-            if (sModel != null)
-                sModel.releaseFromRead();
-        }
-        return indexedRegion;
-    }
-
-	/**
-	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
-	 */
-	public void connect(IDocument document) {
-		fDocument = document;
-	}
-
-	/**
-	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
-	 */
-	public void disconnect(IDocument document) {
-		fDocument = null;
-	}
-
-	/**
-	 */
-	protected HTMLValidationResult validate(IDOMModel model, IFile file) {
-		IProject prj = null;
-		if (file != null) {
-			prj = file.getProject();
-		}
-		if ((prj == null) && (model != null)) {
-			URIResolver res = model.getResolver();
-			if (res != null) {
-				prj = res.getProject();
-			}
-		}
-		final WorkbenchReporter reporter = new WorkbenchReporter(prj, new NullProgressMonitor());
-		return validate(reporter, file, model);
-	}
-
-	/**
 	 */
 	private HTMLValidationResult validate(IReporter reporter, IFile file, IDOMModel model) {
 		if (file == null || model == null)
@@ -446,9 +268,10 @@
 				if (resource == null || reporter.isCancelled())
 					continue;
 				if (resource instanceof IFile) {
-					Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, resource.getFullPath().toString().substring(1));
+					Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, resource.getFullPath().toString()
+							.substring(1));
 					reporter.displaySubtask(this, message);
-					validateFile(helper, reporter, (IFile) resource);
+					validateFile(helper, reporter, (IFile) resource, null);
 				}
 				else if (resource instanceof IContainer) {
 					validateContainer(helper, reporter, (IContainer) resource);
@@ -476,13 +299,14 @@
 			IResource resource = getResource(delta);
 			if (resource == null || !(resource instanceof IFile))
 				continue;
-			validateFile(helper, reporter, (IFile) resource);
+			validateFile(helper, reporter, (IFile) resource, null);
 		}
 	}
 
 	/**
+	 * @param result 
 	 */
-	private void validateFile(IValidationContext helper, IReporter reporter, IFile file) {
+	private void validateFile(IValidationContext helper, IReporter reporter, IFile file, ValidationResult result) {
 		if ((reporter != null) && (reporter.isCancelled() == true)) {
 			throw new OperationCanceledException();
 		}
@@ -494,7 +318,20 @@
 			return;
 
 		try {
+			Collection dependencies = null;
+			NodeImpl document = null;
+			if (model.getDocument() instanceof NodeImpl) {
+				document = (NodeImpl) model.getDocument();
+			}
+			if (result != null && document != null) {
+				dependencies = new HashSet();
+				document.setUserData(HTMLValidationAdapterFactory.DEPENDENCIES, dependencies, null);
+			}
 			validate(reporter, file, model);
+			if (result != null && document != null) {
+				document.setUserData(HTMLValidationAdapterFactory.DEPENDENCIES, null, null);
+				result.setDependsOn((IResource[]) dependencies.toArray(new IResource[dependencies.size()]));
+			}
 		}
 		finally {
 			releaseModel(model);
@@ -510,7 +347,7 @@
 			IWorkbenchContext wbHelper = (IWorkbenchContext) helper;
 			project = wbHelper.getProject();
 		}
-		else if(fileDelta.length > 0){
+		else if (fileDelta.length > 0) {
 			// won't work for project validation (b/c nothing in file delta)
 			project = getResource(fileDelta[0]).getProject();
 		}
@@ -521,7 +358,6 @@
 
 	/*
 	 * added to get rid or dependency on IWorkbenchHelper
-	 * 
 	 */
 	public IResource getResource(String delta) {
 		Path path = new Path(delta);
@@ -543,12 +379,13 @@
 		validate(helper, reporter);
 		return status;
 	}
-	
+
 	/**
 	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
 	 *      java.lang.String, java.lang.Object)
 	 */
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
+	public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
+			throws CoreException {
 		fAdditionalContentTypesIDs = new String[0];
 		if (data != null) {
 			if (data instanceof String && data.toString().length() > 0) {
@@ -562,7 +399,7 @@
 			return null;
 		ValidationResult result = new ValidationResult();
 		IReporter reporter = result.getReporter(monitor);
-		validateFile(null, reporter, (IFile) resource);
+		validateFile(null, reporter, (IFile) resource, result);
 		return result;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/LocalizedMessage.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/LocalizedMessage.java
similarity index 94%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/LocalizedMessage.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/LocalizedMessage.java
index 1e38729..0fe9f0a 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/LocalizedMessage.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/LocalizedMessage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 import java.util.Locale;
 
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListHelper.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListHelper.java
similarity index 92%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListHelper.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListHelper.java
index 71ede2d..fce45f4 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListHelper.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListUtility.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListUtility.java
similarity index 98%
rename from bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListUtility.java
rename to bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListUtility.java
index 3de0a92..bf202d9 100644
--- a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/TaskListUtility.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validation/TaskListUtility.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2007 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.html.internal.validation;
+package org.eclipse.wst.html.core.internal.validation;
 
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
@@ -16,7 +16,7 @@
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.html.ui.internal.HTMLUIPlugin;
+import org.eclipse.wst.html.core.internal.HTMLCorePlugin;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 
 /**
@@ -33,7 +33,7 @@
  */
 public class TaskListUtility {
 	// private static final String PLUGIN_ID = ValidationPlugin.PLUGIN_ID;
-	private static final String PLUGIN_ID = HTMLUIPlugin.ID;
+	private static final String PLUGIN_ID = HTMLCorePlugin.ID;
 	private static final String VALIDATION_MARKER = PLUGIN_ID + ".problemmarker"; //$NON-NLS-1$ // The extension which is used to add validation markers to the task list
 	private static final String VALIDATION_MARKER_OWNER = "owner"; //$NON-NLS-1$ // The IValidator who owns the IMarker on the task list
 	private static final String VALIDATION_MARKER_SEVERITY = "validationSeverity"; //$NON-NLS-1$ // one of the IMessage values
diff --git a/bundles/org.eclipse.wst.html.ui/.project b/bundles/org.eclipse.wst.html.ui/.project
index 38bee73..f833b6a 100644
--- a/bundles/org.eclipse.wst.html.ui/.project
+++ b/bundles/org.eclipse.wst.html.ui/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.html.ui/plugin.properties b/bundles/org.eclipse.wst.html.ui/plugin.properties
index 5d09597..ccc1967 100644
--- a/bundles/org.eclipse.wst.html.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.html.ui/plugin.properties
@@ -28,7 +28,6 @@
 HTML_Tag_context_type_Extension_Element.name=HTML Tag
 HTML_Attribute_context_type_Extension_Element.name=HTML Attribute
 HTML_Attribute_value_context_type_Extension_Element.name=HTML Attribute value
-HTML_Syntax_Validator.name=HTML Syntax Validator
 ###############################################################################
 #org.eclipse.ui.newWizards extension point
 _UI_WIZARD_NAME = HTML File
diff --git a/bundles/org.eclipse.wst.html.ui/plugin.xml b/bundles/org.eclipse.wst.html.ui/plugin.xml
index fcca90e..65a6b04 100644
--- a/bundles/org.eclipse.wst.html.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.html.ui/plugin.xml
@@ -310,38 +310,13 @@
 	</extension>
 
 	<!--======================================================================================-->
-	<!-- Workbench validation                                       						  -->
-	<!--======================================================================================-->
-   <extension id="HTMLValidator" name="%HTML_Syntax_Validator.name" point="org.eclipse.wst.validation.validatorV2">
-      <validator
-            build="true"
-            class="org.eclipse.wst.html.internal.validation.HTMLValidator"
-            manual="true"
-            sourceid="org.eclipse.wst.html.ui.internal.validation.htmlsyntaxvalidator"
-            version="1"
-            markerId="org.eclipse.wst.html.core.validationMarker">
-         <include>
-            <rules>
-               <contentType id="org.eclipse.wst.html.core.htmlsource"></contentType>
-               <fileext caseSensitive="false" ext="html"/>
-               <fileext caseSensitive="false" ext="xhtml"/>
-               <fileext caseSensitive="false" ext="htm"/>
-               <fileext caseSensitive="false" ext="htpl"/>
-               <fileext caseSensitive="false" ext="wml"/>
-            </rules>
-         </include>
-         <group id="org.eclipse.wst.sse.core.structuredModelGroup"/>
-      </validator>
-   </extension>
-
-	<!--======================================================================================-->
 	<!-- As you type validation                                      						  -->
 	<!--======================================================================================-->
 
 	<extension point="org.eclipse.wst.sse.ui.sourcevalidation">
 		<validator
 			scope="total"
-			class="org.eclipse.wst.html.internal.validation.HTMLValidator"
+			class="org.eclipse.wst.html.internal.validation.HTMLSourceValidator"
 			id="org.eclipse.wst.html.ui.internal.validation.htmlsyntaxvalidator">
 			<contentTypeIdentifier
 				id="org.eclipse.wst.html.core.htmlsource">
diff --git a/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLSourceValidator.java b/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLSourceValidator.java
new file mode 100644
index 0000000..bf11f03
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.ui/src-html-validation/org/eclipse/wst/html/internal/validation/HTMLSourceValidator.java
@@ -0,0 +1,213 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.internal.validation;
+
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeConstants;
+import org.eclipse.wst.html.core.internal.validate.HTMLValidationAdapterFactory;
+import org.eclipse.wst.html.core.internal.validation.HTMLValidationReporter;
+import org.eclipse.wst.html.core.internal.validation.HTMLValidator;
+import org.eclipse.wst.html.core.internal.validation.LocalizedMessage;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.FileBufferModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.internal.validate.ValidationAdapter;
+import org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator;
+import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
+import org.eclipse.wst.xml.core.internal.document.DocumentTypeAdapter;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Text;
+
+public class HTMLSourceValidator extends HTMLValidator implements ISourceValidator {
+
+	private IDocument fDocument;
+
+	public HTMLSourceValidator() {
+
+		super();
+	}
+
+	/**
+	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
+	 */
+	public void connect(IDocument document) {
+		fDocument = document;
+	}
+
+	/**
+	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
+	 */
+	public void disconnect(IDocument document) {
+		fDocument = null;
+	}
+
+	/**
+	 * This validate call is for the ISourceValidator partial document validation approach
+	 * 
+	 * @param dirtyRegion
+	 * @param helper
+	 * @param reporter
+	 * @see org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator
+	 */
+	public void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
+
+		if (helper == null || fDocument == null)
+			return;
+
+		if ((reporter != null) && (reporter.isCancelled() == true)) {
+			throw new OperationCanceledException();
+		}
+
+		IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument);
+		if (model == null)
+			return; // error
+
+		try {
+
+			IDOMDocument document = null;
+			if (model instanceof IDOMModel) {
+				document = ((IDOMModel) model).getDocument();
+			}
+
+			if (document == null || !hasHTMLFeature(document)) {
+				// handled in finally clause
+				// model.releaseFromRead();
+				return; // ignore
+			}
+
+			IPath filePath = null;
+			IFile file = null;
+
+			ITextFileBuffer fb = FileBufferModelManager.getInstance().getBuffer(fDocument);
+			if (fb != null) {
+				filePath = fb.getLocation();
+
+				if (filePath.segmentCount() > 1) {
+					file = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
+					if (!file.isAccessible()) {
+						file = null;
+					}
+				}
+			}
+			else {
+				filePath = new Path(model.getId());
+			}
+
+			// this will be the wrong region if it's Text (instead of Element)
+			// we don't know how to validate Text
+			IndexedRegion ir = getCoveringNode(dirtyRegion); // model.getIndexedRegion(dirtyRegion.getOffset());
+			if (ir instanceof Text) {
+				while (ir != null && ir instanceof Text) {
+					// it's assumed that this gets the IndexedRegion to
+					// the right of the end offset
+					ir = model.getIndexedRegion(ir.getEndOffset());
+				}
+			}
+
+			if (ir instanceof INodeNotifier) {
+				INodeAdapterFactory factory = HTMLValidationAdapterFactory.getInstance();
+				ValidationAdapter adapter = (ValidationAdapter) factory.adapt((INodeNotifier) ir);
+				if (adapter == null)
+					return; // error
+
+				if (reporter != null) {
+					HTMLValidationReporter rep = null;
+					rep = getReporter(reporter, file, (IDOMModel) model);
+					rep.clear();
+					adapter.setReporter(rep);
+
+					Message mess = new LocalizedMessage(IMessage.LOW_SEVERITY, filePath.toString().substring(1));
+					reporter.displaySubtask(this, mess);
+				}
+				adapter.validate(ir);
+			}
+		}
+		finally {
+			releaseModel(model);
+		}
+	}
+
+	private IndexedRegion getCoveringNode(IRegion dirtyRegion) {
+
+		IndexedRegion largestRegion = null;
+		if (fDocument instanceof IStructuredDocument) {
+			IStructuredDocumentRegion[] regions = ((IStructuredDocument) fDocument).getStructuredDocumentRegions(
+					dirtyRegion.getOffset(), dirtyRegion.getLength());
+			largestRegion = getLargest(regions);
+		}
+		return largestRegion;
+	}
+
+	/**
+	 */
+	private boolean hasHTMLFeature(IDOMDocument document) {
+		DocumentTypeAdapter adapter = (DocumentTypeAdapter) document.getAdapterFor(DocumentTypeAdapter.class);
+		if (adapter == null)
+			return false;
+		return adapter.hasFeature(HTMLDocumentTypeConstants.HTML);
+	}
+
+	protected IndexedRegion getLargest(IStructuredDocumentRegion[] sdRegions) {
+
+		if (sdRegions == null || sdRegions.length == 0)
+			return null;
+
+		IndexedRegion currentLargest = getCorrespondingNode(sdRegions[0]);
+		for (int i = 0; i < sdRegions.length; i++) {
+			if (!sdRegions[i].isDeleted()) {
+				IndexedRegion corresponding = getCorrespondingNode(sdRegions[i]);
+
+				if (currentLargest instanceof Text)
+					currentLargest = corresponding;
+
+				if (corresponding != null) {
+					if (!(corresponding instanceof Text)) {
+						if (corresponding.getStartOffset() <= currentLargest.getStartOffset()
+								&& corresponding.getEndOffset() >= currentLargest.getEndOffset())
+							currentLargest = corresponding;
+					}
+				}
+
+			}
+		}
+		return currentLargest;
+	}
+
+	protected IndexedRegion getCorrespondingNode(IStructuredDocumentRegion sdRegion) {
+		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument);
+		IndexedRegion indexedRegion = null;
+		try {
+			if (sModel != null)
+				indexedRegion = sModel.getIndexedRegion(sdRegion.getStart());
+		}
+		finally {
+			if (sModel != null)
+				sModel.releaseFromRead();
+		}
+		return indexedRegion;
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/StructuredTextViewerConfigurationHTML.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/StructuredTextViewerConfigurationHTML.java
index a38409f..59fc466 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/StructuredTextViewerConfigurationHTML.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/StructuredTextViewerConfigurationHTML.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,7 +19,9 @@
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.text.IAutoEditStrategy;
 import org.eclipse.jface.text.ITextDoubleClickStrategy;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
 import org.eclipse.jface.text.formatter.IContentFormatter;
 import org.eclipse.jface.text.formatter.MultiPassContentFormatter;
 import org.eclipse.jface.text.source.ISourceViewer;
@@ -32,8 +34,10 @@
 import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeIdForHTML;
 import org.eclipse.wst.html.core.internal.text.StructuredTextPartitionerForHTML;
 import org.eclipse.wst.html.core.text.IHTMLPartitions;
+import org.eclipse.wst.html.ui.internal.HTMLUIPlugin;
 import org.eclipse.wst.html.ui.internal.autoedit.AutoEditStrategyForTabs;
 import org.eclipse.wst.html.ui.internal.contentassist.HTMLStructuredContentAssistProcessor;
+import org.eclipse.wst.html.ui.internal.preferences.HTMLUIPreferenceNames;
 import org.eclipse.wst.html.ui.internal.style.LineStyleProviderForHTML;
 import org.eclipse.wst.sse.core.text.IStructuredPartitions;
 import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration;
@@ -118,6 +122,14 @@
 		return fConfiguredContentTypes;
 	}
 
+	public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
+		final IContentAssistant assistant = super.getContentAssistant(sourceViewer);
+		if (assistant instanceof ContentAssistant) {
+			((ContentAssistant) assistant).enableAutoInsert(HTMLUIPlugin.getInstance().getPreferenceStore().getBoolean(HTMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION));
+		}
+		return assistant;
+	}
+
 	protected IContentAssistProcessor[] getContentAssistProcessors(
 			ISourceViewer sourceViewer, String partitionType) {
 		
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
index d148dd8f9..8c5e5ea 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
@@ -20,7 +20,7 @@
 _UI_WIZARD_NEW_HEADING = HTML
 _UI_WIZARD_NEW_DESCRIPTION = Create a new HTML file.
 _ERROR_FILENAME_MUST_END_HTML = The file name must end in one of the following extensions {0}.
-_WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT = Files created outside of the Web Content folder will not be included in your deployed Web application. 
+_WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT = Files created outside of a web content folder will not be included in your deployed Web application. 
 ResourceGroup_nameExists = The same name already exists.
 NewHTMLTemplatesWizardPage_0=Select HTML Template
 NewHTMLTemplatesWizardPage_1=Select a template as initial content in the HTML page.
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/autoedit/StructuredAutoEditStrategyHTML.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/autoedit/StructuredAutoEditStrategyHTML.java
index af18a5b..40a009a 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/autoedit/StructuredAutoEditStrategyHTML.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/autoedit/StructuredAutoEditStrategyHTML.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -115,9 +115,13 @@
 							String prevText = region.getText(prevTextRegion);
 							inUnclosedAttValueRegion = (prevText.startsWith("'") && ((prevText.length() == 1) || !prevText.endsWith("'"))) ||
 								(prevText.startsWith("\"") && ((prevText.length() == 1) || !prevText.endsWith("\"")));
+							if (!inUnclosedAttValueRegion) {
+								// Check if action is taking place within the paired quotes. This means quotes are actually mismatched and attribute is not properly closed
+								inUnclosedAttValueRegion = prevTextRegion == region.getRegionAtCharacterOffset(command.offset);
+							}
 						} 
 					
-						//if command offset is in an unclosed attribute value region then done remove the end tag
+						//if command offset is in an unclosed attribute value region then don't remove the end tag
 						if(!inUnclosedAttValueRegion) {
 							region = node.getEndStructuredDocumentRegion();
 							if (region != null && region.isEnded()) {
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/CustomTemplateProposal.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/CustomTemplateProposal.java
index 6bb0f20..57bb697 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/CustomTemplateProposal.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/CustomTemplateProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
 package org.eclipse.wst.html.ui.internal.contentassist;
 
 import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension4;
 import org.eclipse.jface.text.templates.Template;
 import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.jface.text.templates.TemplateProposal;
@@ -23,7 +24,7 @@
  * Purpose of this class is to make the additional proposal info into content
  * fit for an HTML viewer (by escaping characters)
  */
-class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal {
+class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal, ICompletionProposalExtension4 {
 	// copies of this class exist in:
 	// org.eclipse.jst.jsp.ui.internal.contentassist
 	// org.eclipse.wst.html.ui.internal.contentassist
@@ -37,4 +38,8 @@
 		String additionalInfo = super.getAdditionalProposalInfo();
 		return StringUtils.convertToHTMLContent(additionalInfo);
 	}
+
+	public boolean isAutoInsertable() {
+		return false;
+	}
 }
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLMinimalContentModelGenerator.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLMinimalContentModelGenerator.java
index 0bdd85f..5614468 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLMinimalContentModelGenerator.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLMinimalContentModelGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * Copyright (c) 2004, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.wst.html.ui.internal.contentassist;
 
+import java.util.Locale;
+
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.wst.html.core.internal.HTMLCorePlugin;
 import org.eclipse.wst.html.core.internal.contentmodel.HTMLElementDeclaration;
@@ -79,12 +81,12 @@
 			switch (caseVal) {
 				case HTMLCorePreferenceNames.LOWER :
 					{
-						name = name.toLowerCase();
+						name = name.toLowerCase(Locale.US);
 					}
 					break;
 				case HTMLCorePreferenceNames.UPPER :
 					{
-						name = name.toUpperCase();
+						name = name.toUpperCase(Locale.US);
 					}
 					break;
 			}
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceInitializer.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceInitializer.java
index bc91ec6..7ce90da 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -38,6 +38,7 @@
 		store.setDefault(HTMLUIPreferenceNames.AUTO_PROPOSE, true);
 		store.setDefault(HTMLUIPreferenceNames.AUTO_PROPOSE_CODE, "<=");//$NON-NLS-1$
 		store.setDefault(HTMLUIPreferenceNames.AUTO_PROPOSE_DELAY, 500);
+		store.setDefault(HTMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION, true);
 		// HTML Style Preferences
 		String NOBACKGROUNDBOLD = " | null | false"; //$NON-NLS-1$
 		String JUSTITALIC = " | null | false | true"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceNames.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceNames.java
index 5a06096..4d18ca6 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceNames.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/HTMLUIPreferenceNames.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -167,4 +167,12 @@
 	 * character (<tt>\0</tt>) in the desired sort order.</p>
 	 */
 	public static final String CONTENT_ASSIST_DEFAULT_PAGE_SORT_ORDER= "html_content_assist_default_page_sort_order"; //$NON-NLS-1$
+
+	/**
+	 * <p>preference key to store the option for auto insertion of single suggestions</p>
+	 * <p>
+	 * Value is of type <code>boolean</code>
+	 * </p>
+	 */
+	public static final String INSERT_SINGLE_SUGGESTION = "insertSingleSuggestion"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
index bd2c0c5..57d5d37 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -50,13 +50,16 @@
 	
 	/** configuration block for changing preference having to do with the content assist categories */
 	private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
+
+	private Button fInsertSingleProposals;
 	
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#createContents(org.eclipse.swt.widgets.Composite)
 	 */
 	protected Control createContents(Composite parent) {
 		final Composite composite = super.createComposite(parent, 1);
-		
+
+		createContentsForInsertionGroup(composite);
 		createContentsForAutoActivationGroup(composite);
 		createContentsForCyclingGroup(composite);
 		
@@ -66,12 +69,22 @@
 		return composite;
 	}
 	
+	private void createContentsForInsertionGroup(Composite composite) {
+		Group group = createGroup(composite, 2);
+		
+		group.setText(XMLUIMessages.Group_label_Insertion);
+		
+		fInsertSingleProposals = createCheckBox(group, "Insert single proposals automatically");
+		((GridData) fInsertSingleProposals.getLayoutData()).horizontalSpan = 2;
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#performDefaults()
 	 */
 	protected void performDefaults() {
 		performDefaultsForAutoActivationGroup();
 		performDefaultsForCyclingGroup();
+		performDefaultsForInsertionGroup();
 
 		validateValues();
 		enableValues();
@@ -79,12 +92,21 @@
 		super.performDefaults();
 	}
 	
+	private void performDefaultsForInsertionGroup() {
+		defaultCheckbox(fInsertSingleProposals, HTMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#initializeValues()
 	 */
 	protected void initializeValues() {
 		initializeValuesForAutoActivationGroup();
 		initializeValuesForCyclingGroup();
+		initializeValuesForInsertionGroup();
+	}
+
+	private void initializeValuesForInsertionGroup() {
+		initCheckbox(fInsertSingleProposals, HTMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
 	}
 
 	/**
@@ -93,8 +115,13 @@
 	protected void storeValues() {
 		storeValuesForAutoActivationGroup();
 		storeValuesForCyclingGroup();
+		storeValuesForInsertionGroup();
 	}
 	
+	private void storeValuesForInsertionGroup() {
+		getPreferenceStore().setValue(HTMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION, (fInsertSingleProposals != null) ? fInsertSingleProposals.getSelection() : false);
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#enableValues()
 	 */
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
index 9186cce..e3db43c 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2011 IBM Corporation and others.
+ * Copyright (c) 2008, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -174,8 +174,7 @@
 		addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_EQUALS_MISSING, SEVERITIES, errorWarningIgnoreLabel, 0);
 		
 		label = HTMLUIMessages.HTMLValidationPreferencePage_35;
-		// TODO: validate resources?
-		// addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, SEVERITIES, errorWarningIgnoreLabel, 0);
+		 addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, SEVERITIES, errorWarningIgnoreLabel, 0);
 
 		// End Attribute section
 		
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupport.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupport.java
index fa1ab95..b02801a 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupport.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -45,6 +45,25 @@
 
 	/**
 	 * @param project
+	 * @return the IPaths to acceptable "roots" in a project
+	 */
+	public static IPath[] getAcceptableRootPaths(IProject project) {
+		if (project == null)
+			return null;
+		IPath[] paths = null;
+		try {
+			paths = FacetModuleCoreSupportDelegate.getAcceptableRootPaths(project);
+		}
+		catch (NoClassDefFoundError e) {
+			if (_dump_NCDFE)
+				e.printStackTrace();
+			return new IPath[]{project.getFullPath()};
+		}
+		return paths;
+	}
+
+	/**
+	 * @param project
 	 * @return
 	 * @throws org.eclipse.core.runtime.CoreException
 	 */
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupportDelegate.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupportDelegate.java
index ab5484e..2698791 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupportDelegate.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/FacetModuleCoreSupportDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse License v1.0
  * which accompanies this distribution, and is available at
@@ -10,12 +10,15 @@
  *******************************************************************************/
 package org.eclipse.wst.html.ui.internal.wizard;
 
+import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
@@ -81,4 +84,24 @@
 		}
 		return is;
 	}
+
+	static IPath[] getAcceptableRootPaths(IProject project) {
+		if (!ModuleCoreNature.isFlexibleProject(project)) {
+			return new IPath[]{project.getFullPath()};
+		}
+
+		IPath[] paths = null;
+		IVirtualFolder componentFolder = ComponentCore.createFolder(project, Path.ROOT);
+		if (componentFolder != null && componentFolder.exists()) {
+			IContainer[] workspaceFolders = componentFolder.getUnderlyingFolders();
+			paths = new IPath[workspaceFolders.length];
+			for (int i = 0; i < workspaceFolders.length; i++) {
+				paths[i] = workspaceFolders[i].getFullPath();
+			}
+		}
+		else {
+			paths = new IPath[]{project.getFullPath()};
+		}
+		return paths;
+	}
 }
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/NewHTMLFileWizardPage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/NewHTMLFileWizardPage.java
index 80e542d..44e414e 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/NewHTMLFileWizardPage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/wizard/NewHTMLFileWizardPage.java
@@ -70,23 +70,25 @@
 	}
 	
 	/**
-	 * This method is overriden to set the selected folder to web contents 
+	 * This method is overridden to set the selected folder to web contents 
 	 * folder if the current selection is outside the web contents folder. 
 	 */
 	protected void initialPopulateContainerNameField() {
 		super.initialPopulateContainerNameField();
-		
+
 		IPath fullPath = getContainerFullPath();
 		IProject project = getProjectFromPath(fullPath);
-		IPath webContentPath = getWebContentPath(project);
-		
-		if (webContentPath != null && !webContentPath.isPrefixOf(fullPath)) {
-			setContainerFullPath(webContentPath);
+		IPath[] webContentPaths = FacetModuleCoreSupport.getAcceptableRootPaths(project);
+		for (int i = 0; webContentPaths != null && i < webContentPaths.length; i++) {
+			if (!webContentPaths[i].isPrefixOf(fullPath)) {
+				setContainerFullPath(webContentPaths[i]);
+				break;
+			}
 		}
 	}
-	
+
 	/**
-	 * This method is overriden to set additional validation specific to 
+	 * This method is overridden to set additional validation specific to 
 	 * html files. 
 	 */
 	protected boolean validatePage() {
@@ -130,8 +132,12 @@
 			// if inside web project, check if inside webContent folder
 			if (project != null && isWebProject(project)) {
 				// check that the path is inside the webContent folder
-				IPath webContentPath = getWebContentPath(project);
-				if (!webContentPath.isPrefixOf(fullPath)) {
+				IPath[] webContentPaths = FacetModuleCoreSupport.getAcceptableRootPaths(project);
+				boolean isPrefix = false;
+				for (int i = 0; !isPrefix && i < webContentPaths.length; i++) {
+					isPrefix |= webContentPaths[i].isPrefixOf(fullPath);
+				}
+				if (!isPrefix) {
 					setMessage(HTMLUIMessages._WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT, WARNING);
 				}
 			}
@@ -239,14 +245,4 @@
 	private boolean isWebProject(IProject project) {
 		return FacetModuleCoreSupport.isWebProject(project);
 	}
-	
-	/**
-	 * Returns the web contents folder of the specified project
-	 * 
-	 * @param project the project which web contents path is needed
-	 * @return IPath of the web contents folder
-	 */
-	private IPath getWebContentPath(IProject project) {
-		return FacetModuleCoreSupport.getWebContentRootPath(project);
-	}
 }
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/.project b/bundles/org.eclipse.wst.jsdt.web.core/.project
index 22cb875..9e05b12 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/.project
+++ b/bundles/org.eclipse.wst.jsdt.web.core/.project
@@ -20,9 +20,14 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments/>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/.settings/.api_filters b/bundles/org.eclipse.wst.jsdt.web.core/.settings/.api_filters
new file mode 100644
index 0000000..69ddd39
--- /dev/null
+++ b/bundles/org.eclipse.wst.jsdt.web.core/.settings/.api_filters
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.wst.jsdt.web.core" version="2">
+    <resource path="META-INF/MANIFEST.MF">
+        <filter id="924844039">
+            <message_arguments>
+                <message_argument value="1.0.500"/>
+                <message_argument value="1.0.401"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java" type="org.eclipse.wst.jsdt.web.core.javascript.JsTranslation">
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="getElementsFromWebRange(int, int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="getJavaScriptOffset(int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="getWebPageOffset(int)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java" type="org.eclipse.wst.jsdt.web.core.javascript.JsTranslator">
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="appendAndTrack(String, int)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.web.core/META-INF/MANIFEST.MF
index c8bea09..d2f6de5 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.jsdt.web.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.wst.jsdt.web.core;singleton:=true
-Bundle-Version: 1.0.401.qualifier
+Bundle-Version: 1.0.500.qualifier
 Bundle-Activator: org.eclipse.wst.jsdt.web.core.internal.JsCorePlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
@@ -23,12 +23,12 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.sse.core;bundle-version="[1.1.504,1.2.0)",
- org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
- org.eclipse.wst.html.core;bundle-version="[1.1.400,1.2.0)",
- org.eclipse.wst.validation;bundle-version="[1.2.100,2.0.0)",
- org.eclipse.wst.jsdt.core;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.0,2.0.0)";resolution:=optional,
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,2.0.0)";resolution:=optional
+ org.eclipse.wst.sse.core;bundle-version="[1.1.700,1.2.0)",
+ org.eclipse.wst.xml.core;bundle-version="[1.1.700,1.2.0)",
+ org.eclipse.wst.html.core;bundle-version="[1.1.600,1.2.0)",
+ org.eclipse.wst.validation;bundle-version="[1.2.400,2.0.0)",
+ org.eclipse.wst.jsdt.core;bundle-version="[1.1.201,2.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.300,2.0.0)";resolution:=optional,
+ org.eclipse.wst.common.modulecore;bundle-version="[1.2.200,2.0.0)";resolution:=optional
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.jsdt.web.core.internal.project"
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/JSWebResourceEventManager.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/JSWebResourceEventManager.java
index c762a74..0b13d84 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/JSWebResourceEventManager.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/JSWebResourceEventManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.jsdt.core.IIncludePathAttribute;
 import org.eclipse.wst.jsdt.core.IIncludePathEntry;
 import org.eclipse.wst.jsdt.core.JavaScriptCore;
@@ -137,7 +137,7 @@
 			 * if a JS project with Module Core nature, check if include path
 			 * needs to be updated
 			 */
-			if (project.hasNature(JavaScriptCore.NATURE_ID) && ModuleCoreNature.isFlexibleProject(project)) {
+			if (project.isAccessible() && project.hasNature(JavaScriptCore.NATURE_ID) && ModuleCoreNature.isFlexibleProject(project)) {
 				JavaProject jsProject = (JavaProject) JavaScriptCore.create(project);
 
 				IIncludePathEntry[] oldEntries = jsProject.getRawIncludepath();
@@ -246,7 +246,7 @@
 	 * @return the module core roots for the given {@link IProject
 	 */
 	private static IResource[] getRoots(IProject project) {
-		IVirtualFile root = ComponentCore.createFile(project, Path.ROOT);
+		IVirtualFolder root = ComponentCore.createFolder(project, Path.ROOT);
 		IResource[] underlyingResources = root.getUnderlyingResources();
 		if (underlyingResources == null || underlyingResources.length == 0) {
 			underlyingResources = new IResource[]{root.getUnderlyingResource()};
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleCoreSupportDelegate.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleCoreSupportDelegate.java
index e8b6112..a11f012 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleCoreSupportDelegate.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleCoreSupportDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -24,6 +25,7 @@
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
 
 /**
@@ -136,6 +138,18 @@
 
 						}
 					}
+					else {
+						// http://bugs.eclipse.org/338751 
+						IVirtualFolder virtualFolder = ComponentCore.createFolder(project, referenceRuntimePath);
+						if (virtualFolder != null && virtualFolder.exists()) {
+							IContainer[] underlyingFolders = virtualFolder.getUnderlyingFolders();
+							for (int j = 0; j < underlyingFolders.length; j++) {
+								if (underlyingFolders[j].getProject().equals(project) && underlyingFolders[j].isAccessible()) {
+									return underlyingFolders[j].getFullPath();
+								}
+							}
+						}
+					}
 				}
 			}
 			return resolved;
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleSourcePathProvider.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleSourcePathProvider.java
index 1183854..576f2d7 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleSourcePathProvider.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/ModuleSourcePathProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2010, 2011 IBM Corporation and others.

+ * Copyright (c) 2010, 2012 IBM Corporation and others.

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

  * which accompanies this distribution, and is available at

@@ -16,7 +16,7 @@
 import org.eclipse.core.runtime.Path;

 import org.eclipse.wst.common.componentcore.ComponentCore;

 import org.eclipse.wst.common.componentcore.ModuleCoreNature;

-import org.eclipse.wst.common.componentcore.resources.IVirtualFile;

+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;

 import org.eclipse.wst.jsdt.core.IIncludePathAttribute;

 import org.eclipse.wst.jsdt.core.IIncludePathEntry;

 import org.eclipse.wst.jsdt.core.JavaScriptCore;

@@ -33,7 +33,7 @@
 

 	public IIncludePathEntry[] getDefaultSourcePaths(IProject p) {

 		if (ModuleCoreNature.isFlexibleProject(p)) {

-			IVirtualFile root = ComponentCore.createFile(p, Path.ROOT);

+			IVirtualFolder root = ComponentCore.createFolder(p, Path.ROOT);

 			IResource[] underlyingResources = root.getUnderlyingResources();

 			if (underlyingResources == null || underlyingResources.length == 0) {

 				underlyingResources = new IResource[]{root.getUnderlyingResource()};

diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/validation/JsValidator.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/validation/JsValidator.java
index 9a24fd5..19d6341 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/validation/JsValidator.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/validation/JsValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * Copyright (c) 2006, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@
 import java.util.Set;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceProxy;
@@ -36,6 +37,7 @@
 import org.eclipse.wst.jsdt.core.compiler.IProblem;
 import org.eclipse.wst.jsdt.web.core.internal.Logger;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapterFactory;
 import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -63,6 +65,7 @@
 	private Set fValidFileExts = new HashSet();
 	
 	private static final String[] METADATA_FILES = new String[]{".settings/.jsdtscope",".settings/org.eclipse.wst.jsdt.ui.superType.container",".settings/org.eclipse.wst.jsdt.ui.superType.name"};
+	private static final String JAVASCRIPT_TASK_MARKER_TYPE = "org.eclipse.wst.jsdt.core.task"; //$NON-NLS-1$
 	
 //	private static String [] jsdtValidator = {"org.eclipse.wst.jsdt.web.core.internal.validation.JsBatchValidator"}; //$NON-NLS-1$
 
@@ -132,7 +135,8 @@
 		if (sourceStart == -1) {
 			return null;
 		}
-		
+		sourceStart = ((JsTranslation)translation).getWebPageOffset(sourceStart);
+		sourceEnd = ((JsTranslation)translation).getWebPageOffset(sourceEnd);
 		/*
 		 * Bug 241794 - Validation shows errors when using JSP Expressions
 		 * inside JavaScript code
@@ -168,7 +172,7 @@
 	void performValidation(IFile f, IReporter reporter, IStructuredModel model, boolean inBatch) {
 		if (model instanceof IDOMModel) {
 			IDOMModel domModel = (IDOMModel) model;
-			setupAdapterFactory(domModel);
+			JsTranslationAdapterFactory.setupAdapterFactory(domModel);
 			IDOMDocument xmlDoc = domModel.getDocument();
 			JsTranslationAdapter translationAdapter = (JsTranslationAdapter) xmlDoc.getAdapterFor(IJsTranslation.class);
 			//translationAdapter.resourceChanged();
@@ -177,12 +181,63 @@
 				translation.setProblemCollectingActive(true);
 				translation.reconcileCompilationUnit();
 				List problems = translation.getProblems();
+				// only update task markers if the model is the same as what's on disk
+				boolean updateTasks = !domModel.isDirty() && f != null && f.isAccessible();
+				if (updateTasks) {
+					// remove old JavaScript task markers
+					try {
+						IMarker[] foundMarkers = f.findMarkers(JAVASCRIPT_TASK_MARKER_TYPE, true, IResource.DEPTH_ONE);
+						for (int i = 0; i < foundMarkers.length; i++) {
+							foundMarkers[i].delete();
+						}
+					}
+					catch (CoreException e) {
+						Logger.logException(e);
+					}
+				}
+
 //				if(!inBatch) reporter.removeAllMessages(this, f);
 				// add new messages
 				for (int i = 0; i < problems.size() && !reporter.isCancelled(); i++) {
-					IMessage m = createMessageFromProblem((IProblem) problems.get(i), f, translation, domModel.getStructuredDocument());
+					IProblem problem = (IProblem) problems.get(i);
+					IMessage m = createMessageFromProblem(problem, f, translation, domModel.getStructuredDocument());
 					if (m != null) {
-						reporter.addMessage(fMessageOriginator, m);
+						if (problem.getID() == IProblem.Task) {
+							if (updateTasks) {
+								// add new JavaScript task marker
+								try {
+									IMarker task = f.createMarker(JAVASCRIPT_TASK_MARKER_TYPE);
+									task.setAttribute(IMarker.LINE_NUMBER, new Integer(m.getLineNumber()));
+									task.setAttribute(IMarker.CHAR_START, new Integer(m.getOffset()));
+									task.setAttribute(IMarker.CHAR_END, new Integer(m.getOffset() + m.getLength()));
+									task.setAttribute(IMarker.MESSAGE, m.getText());
+									task.setAttribute(IMarker.USER_EDITABLE, Boolean.FALSE);
+
+									switch (m.getSeverity()) {
+										case IMessage.HIGH_SEVERITY: {
+											task.setAttribute(IMarker.PRIORITY, new Integer(IMarker.PRIORITY_HIGH));
+											task.setAttribute(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+										}
+											break;
+										case IMessage.LOW_SEVERITY : {
+											task.setAttribute(IMarker.PRIORITY, new Integer(IMarker.PRIORITY_LOW));
+											task.setAttribute(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+										}
+											break;
+										default : {
+											task.setAttribute(IMarker.PRIORITY, new Integer(IMarker.PRIORITY_NORMAL));
+											task.setAttribute(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+										}
+									}
+								}
+								catch (CoreException e) {
+									Logger.logException(e);
+								}
+							}
+						}
+						else {
+							reporter.addMessage(fMessageOriginator, m);
+						}
 					}
 				}
 			}
@@ -205,18 +260,6 @@
 		}
 	}
 	
-	/**
-	 * Ensures that our translation adapter is present before we try to use it
-	 * 
-	 * @param sm
-	 */
-	private void setupAdapterFactory(IStructuredModel sm) {
-		if (sm.getFactoryRegistry().getFactoryFor(IJsTranslation.class) == null) {
-			JsTranslationAdapterFactory factory = new JsTranslationAdapterFactory();
-			sm.getFactoryRegistry().addFactory(factory);
-		}
-	}
-	
 	boolean shouldValidate(IFile file) {
 		IResource resource = file;
 		do {
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsDataTypes.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsDataTypes.java
index 8bd2ae1..8563dc8 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsDataTypes.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsDataTypes.java
@@ -31,7 +31,7 @@
 			HTML40Namespace.ATTR_NAME_ONMOUSEUP, HTML40Namespace.ATTR_NAME_ONMOUSEOVER, HTML40Namespace.ATTR_NAME_ONMOUSEMOVE,
 			HTML40Namespace.ATTR_NAME_ONMOUSEOUT, HTML40Namespace.ATTR_NAME_ONKEYPRESS, HTML40Namespace.ATTR_NAME_ONKEYDOWN, HTML40Namespace.ATTR_NAME_ONKEYUP,
 			HTML40Namespace.ATTR_NAME_ONHELP };
-	public static final String[] HTMLATREVENTS = { "onload ", "onunload", "onclick", "onmousedown", "onmouseup", "onmouseover", "onmousemove", "onmouseout", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
+	public static final String[] HTMLATREVENTS = { "onload", "onunload", "onclick", "onmousedown", "onmouseup", "onmouseover", "onmousemove", "onmouseout", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
 			"onfocus", "onblur", "onkeypress", "onkeydown", "onkeyup", "onsubmit", "onreset", "onselect", "onchange", }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$
 	public static final String[] JSVALIDDATATYPES = { "JAVASCRIPT", "TEXT/JAVASCRIPT" }; //$NON-NLS-1$ //$NON-NLS-2$
 	public static String[] KEYWORDS = { "abstract", "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java
index 060769e..9021f94 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * Copyright (c) 2008, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,18 +8,9 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     bug:244839 - eugene@genuitec.com
- *     
- * Provisional API: This class/interface is part of an interim API that is still under development and expected to 
- * change significantly before reaching stability. It is being made available at this early stage to solicit feedback 
- * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken 
- * (repeatedly) as the API evolves.
- *     
- *     
  *******************************************************************************/
 
-
 package org.eclipse.wst.jsdt.web.core.javascript;
-
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.List;
@@ -51,9 +42,11 @@
 import org.eclipse.wst.jsdt.web.core.internal.Logger;
 import org.eclipse.wst.jsdt.web.core.internal.project.JsWebNature;
 import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
+
 /**
 *
 
@@ -141,11 +134,14 @@
 	private void setBaseLocation() {
 		IDOMModel xmlModel = null;
 		try {
-			xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(fHtmlDocument);
+			IModelManager modelManager = StructuredModelManager.getModelManager();
+			xmlModel = (IDOMModel) modelManager.getExistingModelForRead(fHtmlDocument);
 			if (xmlModel == null) {
-				xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(fHtmlDocument);
+				xmlModel = (IDOMModel) modelManager.getModelForRead(fHtmlDocument);
 			}
-			fModelBaseLocation = xmlModel.getBaseLocation();
+			if(xmlModel != null) {
+				fModelBaseLocation = xmlModel.getBaseLocation();
+			}
 		}
 		finally {
 			if (xmlModel != null)
@@ -173,13 +169,21 @@
 		return getTranslator().getMissingEndTagRegionStart();
 	}
 
-	private IPath getWebRoot() {
-		return WebRootFinder.getWebContentFolder(fJavaProject.getProject());
+	 public int getJavaScriptOffset(int indexOf) {
+		 return ((JsTranslator)getTranslator()).getJavaScriptOffset(indexOf);
+	 }
+	 
+	 public int getWebPageOffset(int indexOf) {
+		 return ((JsTranslator)getTranslator()).getWebOffset(indexOf);
+	 }
+	 
+	 private String getWebRoot() {
+		return WebRootFinder.getWebContentFolder(fJavaProject.getProject()).toString();
 	}
 
 
 	public String getDirectoryUnderRoot() {
-		IPath webRoot = getWebRoot();
+		String webRoot = getWebRoot();
 		IPath projectWebRootPath = getJavaProject().getPath().append(webRoot);
 		IPath filePath = new Path(fModelBaseLocation).removeLastSegments(1);
 		return filePath.removeFirstSegments(projectWebRootPath.matchingFirstSegments(filePath)).toString();
@@ -308,6 +312,12 @@
 		}
 		return result;
 	}
+	
+	public IJavaScriptElement[] getElementsFromWebRange(int webPositionStart, int webPositionEnd) {
+		int javaPositionStart = getJavaScriptOffset(webPositionStart);
+		int javaPositionEnd = getJavaScriptOffset(webPositionEnd);
+		return getElementsFromJsRange(javaPositionStart, javaPositionEnd);
+	}
 
 	private String getHtmlPageName() {
 		IPath path = new Path(fModelBaseLocation);
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
index 18896cf..ea30a85 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2011 IBM Corporation and others.
+ * Copyright (c) 2008, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,12 +7,6 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
- *     
- * Provisional API: This class/interface is part of an interim API that is still under development and expected to 
- * change significantly before reaching stability. It is being made available at this early stage to solicit feedback 
- * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken 
- * (repeatedly) as the API evolves.
- *     
  *******************************************************************************/
 
 
@@ -20,7 +14,10 @@
 
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -73,6 +70,10 @@
 	private static final String CDATA_END = "]]>"; //$NON-NLS-1$
 	private static final String CDATA_END_PAD = new String(Util.getPad(CDATA_END.length()));
 	
+	private static final String EVENT_HANDLER_PRE  = "(function(){"; //$NON-NLS-1$
+	private static final int EVENT_HANDLER_PRE_LENGTH = EVENT_HANDLER_PRE.length();
+	private static final String EVENT_HANDLER_POST = "})();"; //$NON-NLS-1$
+	private static final int EVENT_HANDLER_POST_LENGTH = EVENT_HANDLER_POST.length();
 	
 	//TODO: should be an inclusive rule rather than exclusive
 	private static final Pattern fClientSideTagPattern = Pattern.compile("<[^<%?)!>]+/?>"); //$NON-NLS-1$
@@ -106,7 +107,12 @@
 	/* use java script by default */
 	protected boolean fIsGlobalJs = true;
 	protected ArrayList rawImports = new ArrayList(); // translated
+	/**
+	 * deprecated
+	 */
 	protected ArrayList scriptLocationInHtml = new ArrayList();
+	// order matters in this map
+	private Map fPositionMap = new LinkedHashMap();
 	protected int scriptOffset = 0;
 	
 	protected byte[] fLock = new byte[0];
@@ -179,8 +185,10 @@
 			/* if mid re-write session doc changes have been ignored,
 			 * but if jsText is specifically request we should re-translate
 			 * to pick up any changes thus far
+			 * 
+			 * Same goes for if the job has been scheduled to run but has not yet run
 			 */
-			if(this.fIsInRewriteSession) {
+			if(this.fIsInRewriteSession || this.getState() != Job.NONE) {
 				this.reset();
 			}
 			
@@ -202,7 +210,7 @@
 	public void setBuffer(IBuffer buffer) {
 		fCompUnitBuff = buffer;
 		synchronized(finished) {
-			fCompUnitBuff.setContents(fScriptText.toString());
+			fCompUnitBuff.setContents(getJsText());
 		}
 	}
 
@@ -265,6 +273,7 @@
 				fCurrentNode = fStructuredDocument.getFirstStructuredDocumentRegion();
 				rawImports.clear();
 				importLocationsInHtml.clear();
+				fPositionMap.clear();
 				scriptLocationInHtml.clear();
 				missingEndTagRegionStart = -1;
 				cancelParse = false;
@@ -337,7 +346,15 @@
 		}
 	}
 	
-	protected void finishedTranslation() {}
+	protected void finishedTranslation() {
+	}
+	
+	protected void appendAndTrack(String javaScript, int webPageScriptStart) {
+		int length = javaScript.length();
+		Position inHtml = new Position(webPageScriptStart, length);
+		fPositionMap.put(inHtml, new Position(fScriptText.length(), length));
+		fScriptText.append(javaScript);
+	}
 	
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.jsdt.web.core.javascript.IJsTranslator#translateInlineJSNode(org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion)
@@ -359,7 +376,7 @@
 				if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
 					int start = r.getStart();
 					int offset = r.getTextEnd();
-					String tagAttrname = container.getText().substring(start, offset).trim();
+					String tagAttrname = container.getText(r);
 					/*
 					 * Attribute values aren't case sensative, also make sure next
 					 * region is attrib value
@@ -374,9 +391,9 @@
 						if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
 							int valStartOffset = container.getStartOffset(r);
 							// int valEndOffset = r.getTextEnd();
-							String rawText = container.getText().substring(r.getStart(), r.getTextEnd());
+							String rawText = container.getText(r);
 							if (rawText == null || rawText.length() == 0) {
-								return;
+								continue;
 							}
 							/* Strip quotes */
 							switch (rawText.charAt(0)) {
@@ -386,7 +403,7 @@
 									valStartOffset++;
 							}
 							if (rawText == null || rawText.length() == 0) {
-								return;
+								continue;
 							}
 							switch (rawText.charAt(rawText.length() - 1)) {
 								case '\'':
@@ -396,14 +413,32 @@
 							// Position inScript = new Position(scriptOffset,
 							// rawText.length());
 							/* Quoted text starts +1 and ends -1 char */
-							if(ADD_SEMICOLON_AT_INLINE) rawText = rawText + ";"; //$NON-NLS-1$
 							Position inHtml = new Position(valStartOffset, rawText.length());
-							scriptLocationInHtml.add(inHtml);
 							/* need to pad the script text with spaces */
-							char[] spaces = Util.getPad(valStartOffset - scriptOffset);
+							char[] spaces = Util.getPad(Math.max(0, valStartOffset - scriptOffset - EVENT_HANDLER_PRE_LENGTH));
+							for (int i = 0; i < spaces.length; i++) {
+								try {
+									char c = fStructuredDocument.getChar(scriptOffset + i);
+									if (c == '\n')
+										spaces[i] = '\n';
+									else if (c == '\r')
+										spaces[i] = '\r';
+									else if (c == '\t')
+										spaces[i] = '\t';
+								}
+								catch (BadLocationException e) {
+								}
+							}
 							fScriptText.append(spaces);
-							fScriptText.append(rawText);
-							scriptOffset = fScriptText.length();
+							fScriptText.append(EVENT_HANDLER_PRE);
+							appendAndTrack(rawText, valStartOffset);
+							if(ADD_SEMICOLON_AT_INLINE) fScriptText.append(";"); //$NON-NLS-1$
+							if(r.getLength() > rawText.length()) {
+								fScriptText.append(EVENT_HANDLER_POST);
+								spaces = Util.getPad(Math.max(0, r.getLength() - rawText.length() - EVENT_HANDLER_POST_LENGTH));
+								fScriptText.append(spaces);
+							}
+							scriptOffset = container.getEndOffset(r);
 						}
 					}
 				}
@@ -415,17 +450,33 @@
 	 * @see org.eclipse.wst.jsdt.web.core.javascript.IJsTranslator#translateJSNode(org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion)
 	 */
 	public void translateJSNode(IStructuredDocumentRegion container) {
+		if(container==null) return;
+		
 		ITextRegionCollection containerRegion = container;
 		Iterator regions = containerRegion.getRegions().iterator();
 		ITextRegion region = null;
 		
-		if(container==null) return;
-		
 		char[] spaces = Util.getPad(container.getStartOffset() - scriptOffset);
+		for (int i = 0; i < spaces.length; i++) {
+			try {
+				char c = fStructuredDocument.getChar(scriptOffset + i);
+				if (c == '\n')
+					spaces[i] = '\n';
+				else if (c == '\r')
+					spaces[i] = '\r';
+				else if (c == '\t')
+					spaces[i] = '\t';
+			}
+			catch (BadLocationException e) {
+				Logger.logException(e);
+			}
+		}
 		fScriptText.append(spaces);
 		scriptOffset = container.getStartOffset();
 	
 		if(container.getType()!=DOMRegionContext.BLOCK_TEXT && container.getType()!= DOMRegionContext.XML_CDATA_TEXT) {
+			// add place holder in position map (for formatting)
+			appendAndTrack("", scriptOffset);
 			return;
 		}
 		
@@ -439,14 +490,28 @@
 			boolean isContainerRegion = region instanceof ITextRegionContainer;
 			/* make sure its not a sub container region, probably JSP */
 			if (type == DOMRegionContext.BLOCK_TEXT ) {
-				int scriptStart = container.getStartOffset();
+				int scriptStartOffset = container.getStartOffset(region);
 				int scriptTextLength = container.getLength();
 				String regionText = container.getFullText(region);
 				regionText = StringUtils.replace(regionText, CDATA_START, CDATA_START_PAD);
 				regionText = StringUtils.replace(regionText, CDATA_END, CDATA_END_PAD);
 				int regionLength = region.getLength();
 				
-				spaces = Util.getPad(scriptStart - scriptOffset);
+				spaces = Util.getPad(scriptStartOffset - scriptOffset);
+				for (int i = 0; i < spaces.length; i++) {
+					try {
+						char c = fStructuredDocument.getChar(scriptOffset + i);
+						if (c == '\n')
+							spaces[i] = '\n';
+						else if (c == '\r')
+							spaces[i] = '\r';
+						else if (c == '\t')
+							spaces[i] = '\t';
+					}
+					catch (BadLocationException e) {
+						Logger.logException(e);
+					}
+				}
 				fScriptText.append(spaces); 	
 				// skip over XML/HTML comment starts
 				if (regionText.indexOf(XML_COMMENT_START) >= 0) {
@@ -466,14 +531,18 @@
 						int end;
 						int length;
 						try {
-							line = container.getParentDocument().getLineInformationOfOffset(index + scriptStart);
-							end = line.getOffset() + line.getLength() - scriptStart;
+							/*
+							 * try to find where the line with the comment
+							 * ends (it is the end of what we'll replace)
+							 */
+							line = container.getParentDocument().getLineInformationOfOffset(index + scriptStartOffset);
+							end = line.getOffset() + line.getLength() - scriptStartOffset;
 							if(end > regionText.length()) {
-								end = regionText.length()-1;
+								end = regionText.length();
 							}
 							length = end - index;
 						} catch (BadLocationException e) {
-							Logger.logException("Could not get HTML style comment line information", e); //$NON-NLS-1$
+							Logger.logException("Could not get HTML comment line information", e); //$NON-NLS-1$
 							
 							end = index + XML_COMMENT_START.length();
 							length = XML_COMMENT_START.length();
@@ -481,162 +550,175 @@
 						
 						StringBuffer newRegionText = new StringBuffer(regionText.substring(0, index));
 						spaces = Util.getPad(length);
+						for (int i = 0; i < spaces.length; i++) {
+							try {
+								char c = fStructuredDocument.getChar(scriptStartOffset + i);
+								if (c == '\n')
+									spaces[i] = '\n';
+								else if (c == '\r')
+									spaces[i] = '\r';
+								else if (c == '\t')
+									spaces[i] = '\t';
+							}
+							catch (BadLocationException e) {
+								Logger.logException(e);
+							}
+						}
 						newRegionText.append(spaces);
 						newRegionText.append(regionText.substring(end));
 						regionText = newRegionText.toString();
 					}
 				}
-				// server-side code
-//				else {
-					/*
-					 * Fix for
-					 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=284774
-					 * end of last valid JS source, start of next content to
-					 * skip
-					 */
-					// last offset of valid JS source, after which there's server-side stuff
-					int validJSend = 0;
-					// start of next valid JS source, last offset of content that was skipped
-					int validJSstart = 0;
+				/*
+				 * Fix for
+				 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=284774
+				 * end of last valid JS source, start of next content to
+				 * skip
+				 */
+				// last offset of valid JS source, after which there's server-side stuff
+				int validJSend = 0;
+				// start of next valid JS source, last offset of content that was skipped
+				int validJSstart = 0;
 
-					Matcher matcher = fClientSideTagPattern.matcher(regionText);
-					// note the start of a HTML tag if one's present
-					int clientMatchStart = matcher.find() ? matcher.start() : -1;
+				Matcher matcher = fClientSideTagPattern.matcher(regionText);
+				// note the start of a HTML tag if one's present
+				int clientMatchStart = matcher.find() ? matcher.start() : -1;
 
-					StringBuffer contents = new StringBuffer();
-					
-					int serverSideStart = -1;
-					int serverSideDelimiter = 0;
+				StringBuffer generatedContent = new StringBuffer();
+				
+				int serverSideStart = -1;
+				int serverSideDelimiter = 0;
 
-					// find any instance of server code blocks in the region text
-					for (int i = 0; i < fServerSideDelimiters.length; i++) {
-						int index = regionText.indexOf(fServerSideDelimiters[i][0]);
-						if (serverSideStart < 0) {
-							serverSideStart = index;
+				// find any instance of server code blocks in the region text
+				for (int i = 0; i < fServerSideDelimiters.length; i++) {
+					int index = regionText.indexOf(fServerSideDelimiters[i][0]);
+					if (serverSideStart < 0) {
+						serverSideStart = index;
+						serverSideDelimiter = i;
+					}
+					else if (index >= 0) {
+						serverSideStart = Math.min(serverSideStart, index);
+						if (serverSideStart == index) {
 							serverSideDelimiter = i;
 						}
-						else if (index >= 0) {
-							serverSideStart = Math.min(serverSideStart, index);
-							if (serverSideStart == index) {
+					}
+				}
+				// contains something other than pure JavaScript
+				while (serverSideStart > -1 || clientMatchStart > -1) { //$NON-NLS-1$
+					validJSend = validJSstart;
+					boolean biasClient = false;
+					boolean biasServer = false;
+					// update the start of content to skip
+					if (clientMatchStart > -1 && serverSideStart > -1) {
+						validJSend = Math.min(clientMatchStart, serverSideStart);
+						biasClient = validJSend == clientMatchStart;
+						biasServer = validJSend == serverSideStart;
+					}
+					else if (clientMatchStart > -1 && serverSideStart < 0) {
+						validJSend = clientMatchStart;
+						biasClient = true;
+					}
+					else if (clientMatchStart < 0 && serverSideStart > -1) {
+						validJSend = serverSideStart;
+						biasServer = true;
+					}
+					
+					// append if there's something we want to include
+					if (-1 < validJSstart && -1 < validJSend) {
+						// append what we want to include
+						appendAndTrack(regionText.substring(validJSstart, validJSend), scriptStartOffset + validJSstart);
+						
+						// change the skipped content to a valid variable name and append it as a placeholder
+						int startOffset = scriptStartOffset + validJSend;
+
+						String serverEnd = fServerSideDelimiters[serverSideDelimiter][1];
+						int serverSideEnd = (regionLength > validJSend + serverEnd.length()) ? regionText.indexOf(serverEnd, validJSend + fServerSideDelimiters[serverSideDelimiter][1].length()) : -1;
+						if (serverSideEnd > -1)
+							serverSideEnd += serverEnd.length();
+						int clientMatchEnd = matcher.find(validJSend) ? matcher.end() : -1;
+						// update end of what we skipped
+						validJSstart = -1;
+						if (clientMatchEnd > validJSend && serverSideEnd > validJSend) {
+							if (biasClient)
+								validJSstart = clientMatchEnd;
+							else if (biasServer)
+								validJSstart = serverSideEnd;
+							else
+								validJSstart = Math.min(clientMatchEnd, serverSideEnd);
+						}
+						if (clientMatchEnd >= validJSend && serverSideEnd < 0)
+							validJSstart = matcher.end();
+						if (clientMatchEnd < 0 && serverSideEnd >= validJSend)
+							validJSstart = serverSideEnd;
+
+						// substituted text length much match original length exactly, find text of the right length
+						int start = validJSend + scriptStartOffset;
+						int end = scriptStartOffset + validJSstart;
+						generatedContent.append('_');
+						for (int i = validJSend + 1; i < validJSstart; i++) {
+							switch (i - validJSend) {
+								case 1 :
+									generatedContent.append('$');
+									break;
+								case 2 :
+									generatedContent.append('t');
+									break;
+								case 3 :
+									generatedContent.append('a');
+									break;
+								case 4 :
+									generatedContent.append('g');
+									break;
+								default :
+									generatedContent.append('_');
+							}
+						}
+						/*
+						 * Remember this source range, it may be needed to
+						 * find the original contents for which we're
+						 * placeholding
+						 */
+						fGeneratedRanges.add(new Region(start, end - start));
+						appendAndTrack(generatedContent.toString(), start);
+					}
+					// set up to end while if no end for valid
+					if (validJSstart > 0) {
+						int serverSideStartGuess = -1;
+						for (int i = 0; i < fServerSideDelimiters.length; i++) {
+							int index = regionText.indexOf(fServerSideDelimiters[i][0], validJSstart);
+							if (serverSideStartGuess < 0) {
+								serverSideStartGuess = index;
 								serverSideDelimiter = i;
 							}
-						}
-					}
-					// contains something other than pure JavaScript
-					while (serverSideStart > -1 || clientMatchStart > -1) { //$NON-NLS-1$
-						validJSend = validJSstart;
-						boolean biasClient = false;
-						boolean biasServer = false;
-						// update the start of content to skip
-						if (clientMatchStart > -1 && serverSideStart > -1) {
-							validJSend = Math.min(clientMatchStart, serverSideStart);
-							biasClient = validJSend == clientMatchStart;
-							biasServer = validJSend == serverSideStart;
-						}
-						else if (clientMatchStart > -1 && serverSideStart < 0) {
-							validJSend = clientMatchStart;
-							biasClient = true;
-						}
-						else if (clientMatchStart < 0 && serverSideStart > -1) {
-							validJSend = serverSideStart;
-							biasServer = true;
-						}
-						
-						// append if there's something we want to include
-						if (-1 < validJSstart && -1 < validJSend) {
-							// append what we want to include
-							contents.append(regionText.substring(validJSstart, validJSend));
-							
-							// change the skipped content to a valid variable name and append it as a placeholder
-							int startOffset = container.getStartOffset(region) + validJSend;
-
-							String serverEnd = fServerSideDelimiters[serverSideDelimiter][1];
-							int serverSideEnd = (regionLength > validJSend + serverEnd.length()) ? regionText.indexOf(serverEnd, validJSend + fServerSideDelimiters[serverSideDelimiter][1].length()) : -1;
-							if (serverSideEnd > -1)
-								serverSideEnd += serverEnd.length();
-							int clientMatchEnd = matcher.find(validJSend) ? matcher.end() : -1;
-							// update end of what we skipped
-							validJSstart = -1;
-							if (clientMatchEnd > validJSend && serverSideEnd > validJSend) {
-								if (biasClient)
-									validJSstart = clientMatchEnd;
-								else if (biasServer)
-									validJSstart = serverSideEnd;
-								else
-									validJSstart = Math.min(clientMatchEnd, serverSideEnd);
-							}
-							if (clientMatchEnd >= validJSend && serverSideEnd < 0)
-								validJSstart = matcher.end();
-							if (clientMatchEnd < 0 && serverSideEnd >= validJSend)
-								validJSstart = serverSideEnd;
-							int line = container.getParentDocument().getLineOfOffset(startOffset);
-							int column;
-							try {
-								column = startOffset - container.getParentDocument().getLineOffset(line);
-							}
-							catch (BadLocationException e) {
-								column = -1;
-							}
-							// substituted text length much match original length exactly, find text of the right length
-							int start = validJSend + container.getStartOffset(region);
-							contents.append('_');
-							for (int i = validJSend + 1; i < validJSstart; i++) {
-								switch (i - validJSend) {
-									case 1 :
-										contents.append('$');
-										break;
-									case 2 :
-										contents.append('t');
-										break;
-									case 3 :
-										contents.append('a');
-										break;
-									case 4 :
-										contents.append('g');
-										break;
-									default :
-										contents.append('_');
-								}
-							}
-							int end = validJSstart + container.getStartOffset(region);
-							// remember that this source range w
-							fGeneratedRanges.add(new Region(start, end - start));
-						}
-						// set up to end while if no end for valid
-						if (validJSstart > 0) {
-							int serverSideStartGuess = -1;
-							for (int i = 0; i < fServerSideDelimiters.length; i++) {
-								int index = regionText.indexOf(fServerSideDelimiters[i][0], validJSstart);
-								if (serverSideStartGuess < 0) {
-									serverSideStartGuess = index;
+							else if (index >= 0) {
+								serverSideStartGuess = Math.min(serverSideStartGuess, index);
+								if (serverSideStartGuess == index) {
 									serverSideDelimiter = i;
 								}
-								else if (index >= 0) {
-									serverSideStartGuess = Math.min(serverSideStartGuess, index);
-									if (serverSideStartGuess == index) {
-										serverSideDelimiter = i;
-									}
-								}
 							}
-							serverSideStart = validJSstart < regionLength - fShortestServerSideDelimiterPairLength ? serverSideStartGuess : -1;
-							clientMatchStart = validJSstart < regionLength ? (matcher.find(validJSstart) ? matcher.start() : -1) : -1;
 						}
-						else {
-							serverSideStart = clientMatchStart = -1;
-						}
-					}
-					if (validJSstart >= 0) {
-						contents.append(regionText.substring(validJSstart));
-					}
-					if (contents.length() != 0) {
-						fScriptText.append(contents.toString());
+						serverSideStart = validJSstart < regionLength - fShortestServerSideDelimiterPairLength ? serverSideStartGuess : -1;
+						clientMatchStart = validJSstart < regionLength ? (matcher.find(validJSstart) ? matcher.start() : -1) : -1;
 					}
 					else {
-						fScriptText.append(regionText);
+						serverSideStart = clientMatchStart = -1;
 					}
-					Position inHtml = new Position(scriptStart, scriptTextLength);
+				}
+				if (validJSstart >= 0) {
+					appendAndTrack(regionText.substring(validJSstart), scriptStartOffset + validJSstart);
+					Position inHtml = new Position(scriptStartOffset + validJSstart, regionText.length() - validJSstart);
 					scriptLocationInHtml.add(inHtml);
+				}
+//				if (generatedContent.length() != 0) {
+//					fScriptText.append(generatedContent.toString());
+//					Position inHtml = new Position(scriptStartOffset, generatedContent.length());
+//					scriptLocationInHtml.add(inHtml);
 //				}
+				else {
+					appendAndTrack(regionText, scriptStartOffset);
+					Position inHtml = new Position(scriptStartOffset, regionText.length());
+					scriptLocationInHtml.add(inHtml);
+				}
 								
 				scriptOffset = fScriptText.length();
 			}
@@ -709,6 +791,7 @@
 	 * @see org.eclipse.wst.jsdt.web.core.javascript.IJsTranslator#release()
 	 */
 	public void release() {
+		cancel();
 		fStructuredDocument.removeDocumentListener(this);
 		if (fStructuredDocument instanceof IDocumentExtension4) {
 			((IDocumentExtension4) fStructuredDocument).removeDocumentRewriteSessionListener(fDocumentRewriteSessionListener);
@@ -721,4 +804,45 @@
 	public Region[] getGeneratedRanges() {
 		return (Region[]) fGeneratedRanges.toArray(new Region[fGeneratedRanges.size()]);
 	}
+
+	/**
+	 * @param offset
+	 *            web page offset
+	 * @return the corresponding JavaScript offset, or -1 if one can not be
+	 *         calculated
+	 */
+	int getJavaScriptOffset(int offset) {
+		synchronized (finished) {
+			Iterator entries = fPositionMap.entrySet().iterator();
+			while (entries.hasNext()) {
+				Entry entry = (Entry) entries.next();
+				Position position = (Position) entry.getKey();
+				if (position.includes(offset) || (offset == position.getOffset())) {
+					return offset - position.getOffset() + ((Position) entry.getValue()).getOffset();
+				}
+			}
+//			Logger.logException(new BadLocationException("Translated offset requested but not found for: " + offset));
+			return -1;
+		}
+	}
+
+	/**
+	 * @param offset JavaScript offset
+	 * @return the corresponding web page offset, or -1 if one can not be
+	 *         calculated
+	 */
+	int getWebOffset(int offset) {
+		synchronized (finished) {
+			Iterator entries = fPositionMap.entrySet().iterator();
+			while (entries.hasNext()) {
+				Entry entry = (Entry) entries.next();
+				Position position = (Position) entry.getValue();
+				if (position.includes(offset) || (offset == position.getOffset())) {
+					return offset - position.getOffset() + ((Position) entry.getKey()).getOffset();
+				}
+			}
+//			Logger.logException(new BadLocationException("Page offset requested but not found for: " + offset));
+			return -1;
+		}
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.jsdt.web.support.jsp/.project b/bundles/org.eclipse.wst.jsdt.web.support.jsp/.project
index f9e0796..9e6f97f 100644
--- a/bundles/org.eclipse.wst.jsdt.web.support.jsp/.project
+++ b/bundles/org.eclipse.wst.jsdt.web.support.jsp/.project
@@ -20,9 +20,14 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments/>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.web.support.jsp/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.web.support.jsp/META-INF/MANIFEST.MF
index ced1139..1cbdbf9 100644
--- a/bundles/org.eclipse.wst.jsdt.web.support.jsp/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.jsdt.web.support.jsp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.wst.jsdt.web.support.jsp;singleton:=true
-Bundle-Version: 1.0.400.qualifier
+Bundle-Version: 1.0.500.qualifier
 Bundle-Activator: org.eclipse.wst.jsdt.web.support.jsp.Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.wst.jsdt.web.ui;bundle-version="[1.0.200,2.0.0)",
diff --git a/bundles/org.eclipse.wst.jsdt.web.support.jsp/build.properties b/bundles/org.eclipse.wst.jsdt.web.support.jsp/build.properties
index bc3b0f2..ab560d0 100644
--- a/bundles/org.eclipse.wst.jsdt.web.support.jsp/build.properties
+++ b/bundles/org.eclipse.wst.jsdt.web.support.jsp/build.properties
@@ -1,3 +1,13 @@
+###############################################################################
+# Copyright (c) 2008, 2012 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/.project b/bundles/org.eclipse.wst.jsdt.web.ui/.project
index 4917858..19b0ab9 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/.project
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/.project
@@ -20,9 +20,14 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments/>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.web.ui/META-INF/MANIFEST.MF
index 349427c..92e2020 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.wst.jsdt.web.ui; singleton:=true
-Bundle-Version: 1.0.401.qualifier
+Bundle-Version: 1.0.501.qualifier
 Bundle-Activator: org.eclipse.wst.jsdt.web.ui.internal.JsUIPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
@@ -33,22 +33,22 @@
  org.eclipse.ui.workbench;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.sse.ui;bundle-version="[1.3.0,1.4.0)",
- org.eclipse.wst.xml.ui;bundle-version="[1.1.100,1.2.0)",
- org.eclipse.wst.jsdt.web.core;bundle-version="[1.0.300,2.0.0)",
- org.eclipse.wst.css.core;bundle-version="[1.1.400,1.2.0)",
- org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
- org.eclipse.wst.sse.core;bundle-version="[1.1.500,1.2.0)",
+ org.eclipse.wst.sse.ui;bundle-version="[1.3.100,1.4.0)",
+ org.eclipse.wst.xml.ui;bundle-version="[1.1.300,1.2.0)",
+ org.eclipse.wst.jsdt.web.core;bundle-version="[1.0.500,2.0.0)",
+ org.eclipse.wst.css.core;bundle-version="[1.1.600,1.2.0)",
+ org.eclipse.wst.xml.core;bundle-version="[1.1.700,1.2.0)",
+ org.eclipse.wst.sse.core;bundle-version="[1.1.700,1.2.0)",
  org.eclipse.debug.core;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.search;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.300,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.jsdt.core;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.wst.jsdt.ui;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.wst.html.ui;bundle-version="[1.0.500,1.1.0)",
- org.eclipse.wst.html.core;bundle-version="[1.1.400,1.2.0)",
- org.eclipse.wst.jsdt.manipulation;bundle-version="[1.0.200,2.0.0)"
+ org.eclipse.wst.jsdt.core;bundle-version="[1.1.201,2.0.0)",
+ org.eclipse.wst.jsdt.ui;bundle-version="[1.1.201,2.0.0)",
+ org.eclipse.wst.html.ui;bundle-version="[1.0.700,1.1.0)",
+ org.eclipse.wst.html.core;bundle-version="[1.1.600,1.2.0)",
+ org.eclipse.wst.jsdt.manipulation;bundle-version="[1.0.400,2.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/build.properties b/bundles/org.eclipse.wst.jsdt.web.ui/build.properties
index 01667d8..9cb6a16 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/build.properties
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
+# Copyright (c) 2007, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/plugin.xml b/bundles/org.eclipse.wst.jsdt.web.ui/plugin.xml
index 9088bd7..e1dfd25 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/plugin.xml
@@ -327,7 +327,7 @@
 	</extension>
 	
 	<!--======================================================================================-->
-	<!-- JSP UI Adapter factories					   						  				  -->
+	<!-- JS Adapter factories for HTML				   						  				  -->
 	<!--======================================================================================-->
 	<extension
 		point="org.eclipse.wst.sse.ui.adapterFactoryDescription">
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTCompletionProposal.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTCompletionProposal.java
index c32f660..2204dfe 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTCompletionProposal.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTCompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,7 +19,6 @@
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.wst.jsdt.internal.ui.text.java.JavaCompletionProposal;
-import org.eclipse.wst.jsdt.internal.ui.text.java.LazyJavaCompletionProposal;
 import org.eclipse.wst.jsdt.internal.ui.text.java.LazyJavaTypeCompletionProposal;
 import org.eclipse.wst.jsdt.ui.text.java.IJavaCompletionProposal;
 
@@ -57,12 +56,12 @@
 	 * <p>Uses the wrapped proposal if its lazy</p>
 	 */
 	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
-		if (this.fJavaCompletionProposal instanceof LazyJavaCompletionProposal) {
-			((LazyJavaCompletionProposal) this.fJavaCompletionProposal).apply(viewer, trigger, stateMask, offset);
-		}
-		else {
+//		if (this.fJavaCompletionProposal instanceof LazyJavaCompletionProposal) {
+//			((LazyJavaCompletionProposal) this.fJavaCompletionProposal).apply(viewer, trigger, stateMask, offset);
+//		}
+//		else {
 			super.apply(viewer, trigger, stateMask, offset);
-		}
+//		}
 	}
 	
 	/**
@@ -72,12 +71,12 @@
 	 */
 	public Point getSelection(IDocument document) {
 		Point selection;
-		if (this.fJavaCompletionProposal instanceof LazyJavaCompletionProposal) {
-			selection = this.fJavaCompletionProposal.getSelection(document);
-		}
-		else {
+//		if (this.fJavaCompletionProposal instanceof LazyJavaCompletionProposal) {
+//			selection = this.fJavaCompletionProposal.getSelection(document);
+//		}
+//		else {
 			selection = super.getSelection(document);
-		}
+//		}
 		return selection;
 	}
 	
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTContentAssistantProcessor.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTContentAssistantProcessor.java
index 29b5e26..9ada6ea 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTContentAssistantProcessor.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTContentAssistantProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,6 +16,7 @@
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.wst.jsdt.core.IJavaScriptUnit;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.jsdt.web.ui.internal.JsUIMessages;
 import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -75,7 +76,7 @@
 			
 			if (translationAdapter != null) {
 				IJsTranslation translation = translationAdapter.getJsTranslation(true);
-				fJavaPosition = getDocumentPosition();
+				fJavaPosition = ((JsTranslation)translation).getJavaScriptOffset(getDocumentPosition());
 				try {
 					IJavaScriptUnit cu = translation.getCompilationUnit();
 					// can't get java proposals w/out a compilation unit
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTProposalCollector.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTProposalCollector.java
index 9f873f5..cc7b354 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTProposalCollector.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/contentassist/JSDTProposalCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2011 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@
 import org.eclipse.wst.jsdt.ui.text.java.CompletionProposalComparator;
 import org.eclipse.wst.jsdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 
 
 /**
@@ -91,9 +92,9 @@
 		JSDTCompletionProposal jspProposal;
 		String completion = String.valueOf(proposal.getCompletion());
 		// java offset
-		int offset = proposal.getReplaceStart();
+		int offset = ((JsTranslation)fTranslation).getWebPageOffset(proposal.getReplaceStart());
 		// replacement length
-		int length = proposal.getReplaceEnd() - offset;
+		int length = proposal.getReplaceEnd() - proposal.getReplaceStart();
 		// translate offset from Java > JSP
 		// cursor position after must be calculated
 		int positionAfter = calculatePositionAfter(proposal, completion);
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/format/FormattingStrategyJSDT.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/format/FormattingStrategyJSDT.java
index b295d82..6134cd5 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/format/FormattingStrategyJSDT.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/format/FormattingStrategyJSDT.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -43,6 +43,7 @@
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslator;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapterFactory;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslator;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
@@ -119,63 +120,98 @@
 			try {
 				//get the JS text from the document (not translated)
 				String jsTextNotTranslated = document.get(partition.getOffset(), partition.getLength());
+				String originalText = jsTextNotTranslated;
 				
 				//deal with getting the JS text and unwrapping it from any <!-- //--> statements
 				String preText = "";
 				String postText = lineDelim + scriptRegionIndent;
 
-				//find start comment tag
+				// find and remove start comment tag if it's there
 				Pattern startPattern = Pattern.compile("(\\A(\\s*<!--.*(" + lineDelim + ")?))"); //$NON-NLS-1$
 				Matcher matcher = startPattern.matcher(jsTextNotTranslated);
-				if(matcher.find()) {
-					jsTextNotTranslated = matcher.replaceFirst(""); //$NON-NLS-1$
+				if (matcher.find()) {
 					preText = lineDelim + scriptRegionIndent + matcher.group().trim();
+					jsTextNotTranslated = matcher.replaceFirst(""); //$NON-NLS-1$
 				}
 				
-				//find end tag
+				// find and remove end comment tag if it's there
 				matcher = END_PATTERN.matcher(jsTextNotTranslated);
-				if(matcher.find()) {
+				if (matcher.find()) {
 					jsTextNotTranslated = matcher.replaceFirst(""); //$NON-NLS-1$
 					postText = lineDelim + scriptRegionIndent + matcher.group().trim() + postText;
 				}
 				
-				//replace the text in the document with the none-translated JS text but without HTML leading and trailing comments
-				TextEdit replaceEdit = new ReplaceEdit(partition.getOffset(), partition.getLength(), jsTextNotTranslated);
-				replaceEdit.apply(document);
-				int jsRegionLength = jsTextNotTranslated.length();
+				/*
+				 * replace the text in the document with the non-translated JS
+				 * text but without HTML leading and trailing comments
+				 */
+				int scriptLength = jsTextNotTranslated.length();
+				TextEdit replaceEdit = null;
+				if (scriptLength != originalText.length()) {
+					replaceEdit = new ReplaceEdit(partition.getOffset(), partition.getLength(), jsTextNotTranslated);
+					replaceEdit.apply(document);
+				}
 				
-				//translate the updated document
+				// translate the web page without the script "wrapping"
 				IJsTranslation translation = getTranslation(document);
 				String jsTextTranslated = translation.getJsText();
 				
-				//format the text translated text
-				TextEdit edit = CodeFormatterUtil.format2(CodeFormatter.K_JAVASCRIPT_UNIT, jsTextTranslated, partition.getOffset(), jsRegionLength, startIndentLevel, lineDelim, getPreferences());
-				IDocument jsDoc = new Document(jsTextTranslated);
-				
-				//Undo the text replacements done by the translator so that it could build a CU for the JS region
-				if(translation instanceof JsTranslation) {
-					IJsTranslator translator = ((JsTranslation)translation).getTranslator();
+				/*
+				 * Set a default replace text that is the original contents
+				 * with a new line and proper indentation in front
+				 */
+				String replaceText = lineDelim + getIndentationString(getPreferences(), startIndentLevel) + jsTextNotTranslated;
+
+				int javaScriptOffset = ((JsTranslation) translation).getJavaScriptOffset(partition.getOffset());
+
+				// known range, proceed
+				if (javaScriptOffset >= 0) {
+					// format the translated text
+					TextEdit edit = CodeFormatterUtil.format2(CodeFormatter.K_JAVASCRIPT_UNIT, jsTextTranslated, javaScriptOffset, scriptLength, startIndentLevel, lineDelim, getPreferences());
+					IDocument jsDoc = new Document(jsTextTranslated);
 					
-					if(translator instanceof JsTranslator) {
-						Region[] regions = ((JsTranslator)translator).getGeneratedRanges();
-						//for each generated range, replace it with the original text
-						for(int r = 0; r < regions.length; ++r) {
-							jsDoc.replace(regions[r].getOffset(), regions[r].getLength(),
-									document.get(regions[r].getOffset(), regions[r].getLength()));
+					/*
+					 * Put the original (possibly not JS) text back into the doc
+					 * to which we're applying the edit
+					 */
+					if (translation instanceof JsTranslation) {
+						IJsTranslator translator = ((JsTranslation) translation).getTranslator();
+	
+						if (translator instanceof JsTranslator) {
+							Region[] regions = ((JsTranslator) translator).getGeneratedRanges();
+							/*
+							 * for each generated range, replace it with the
+							 * original web page text
+							 */
+							for (int r = 0; r < regions.length; ++r) {
+								int webPageOffset = ((JsTranslation) translation).getWebPageOffset(regions[r].getOffset());
+								if (webPageOffset > 0) {
+									jsDoc.replace(regions[r].getOffset(), regions[r].getLength(), document.get(webPageOffset, regions[r].getLength()));
+								}
+							}
 						}
 					}
+	
+					if (edit != null) {
+						edit.apply(jsDoc);
+						replaceText = lineDelim + getIndentationString(getPreferences(), startIndentLevel) + (jsDoc.get(edit.getOffset(), edit.getLength())).trim();
+					}
+					else {
+						/*
+						 * Revert changes (it may still appear dirty, though,
+						 * because of the above edits having been applied)
+						 */
+						replaceEdit = new ReplaceEdit(partition.getOffset(), scriptLength, originalText);
+						replaceEdit.apply(document);
+						return;
+					}
 				}
-				
-				/* error formating the code so abort */
-				if(edit==null) return;
-				edit.apply(jsDoc);
-				String replaceText = lineDelim + getIndentationString(getPreferences(), startIndentLevel) + (jsDoc.get(edit.getOffset(), edit.getLength())).trim();
-				
 				//apply edit to html doc using the formated translated text and the possible leading and trailing html comments
 				replaceText = preText + replaceText + postText;
-				replaceEdit = new ReplaceEdit(partition.getOffset(), jsRegionLength, replaceText);
+				replaceEdit = new ReplaceEdit(partition.getOffset(), scriptLength, replaceText);
 				replaceEdit.apply(document);
 			} catch (BadLocationException e) {
+				Logger.logException(e);
 			}
 		}
 	}
@@ -242,6 +278,7 @@
 		try {
 			xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(document);
 			IDOMDocument xmlDoc = xmlModel.getDocument();
+			JsTranslationAdapterFactory.setupAdapterFactory(xmlModel);
 			JsTranslationAdapter translationAdapter = (JsTranslationAdapter) xmlDoc.getAdapterFor(IJsTranslation.class);
 			if (translationAdapter != null) {
 				tran = translationAdapter.getJsTranslation(true);
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java
index 2193098..6011638 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java
@@ -35,6 +35,7 @@
 import org.eclipse.wst.jsdt.core.JavaScriptModelException;
 import org.eclipse.wst.jsdt.internal.core.JavaElement;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.jsdt.web.ui.internal.Logger;
 import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -158,7 +159,7 @@
 			IDocument document = textViewer.getDocument();
 			IJsTranslation jsTranslation = getJsTranslation(document);
 			if (jsTranslation != null) {
-				IJavaScriptElement[] elements = jsTranslation.getElementsFromJsRange(region.getOffset(), region.getOffset() + region.getLength());
+				IJavaScriptElement[] elements = ((JsTranslation)jsTranslation).getElementsFromWebRange(region.getOffset(), region.getOffset() + region.getLength());
 				if (elements != null && elements.length > 0) {
 					// create a hyperlink for each JavaScript element
 					for (int i = 0; i < elements.length; ++i) {
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/java/search/JsFindOccurrencesProcessor.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/java/search/JsFindOccurrencesProcessor.java
index 7a0d93d..7e4cc6a 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/java/search/JsFindOccurrencesProcessor.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/java/search/JsFindOccurrencesProcessor.java
@@ -17,6 +17,7 @@
 import org.eclipse.search.ui.ISearchQuery;
 import org.eclipse.wst.jsdt.core.IJavaScriptElement;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.jsdt.web.core.text.IJsPartitions;
 import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -57,7 +58,7 @@
 				if (adapter != null) {
 					IJsTranslation translation = adapter.getJsTranslation(false);
 					// https://bugs.eclipse.org/bugs/show_bug.cgi?id=102211
-					elements = translation.getElementsFromJsRange(selection.getOffset(), selection.getOffset() + selection.getLength());
+					elements = ((JsTranslation)translation).getElementsFromWebRange(selection.getOffset(), selection.getOffset() + selection.getLength());
 				}
 			}
 		} finally {
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/taginfo/JSDTHoverProcessor.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/taginfo/JSDTHoverProcessor.java
index d5e1669..e1ee74e 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/taginfo/JSDTHoverProcessor.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/taginfo/JSDTHoverProcessor.java
@@ -20,6 +20,7 @@
 import org.eclipse.wst.jsdt.ui.JSdocContentAccess;
 import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.taginfo.AbstractHoverProcessor;
@@ -102,7 +103,7 @@
 				JsTranslationAdapter adapter = (JsTranslationAdapter) xmlDoc.getAdapterFor(IJsTranslation.class);
 				if (adapter != null) {
 					IJsTranslation translation = adapter.getJsTranslation(true);
-					IJavaScriptElement[] result = translation.getElementsFromJsRange(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength());
+					IJavaScriptElement[] result = ((JsTranslation)translation).getElementsFromWebRange(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength());
 // Vector filteredResults = new Vector();
 // List badFunctions = translation.getGeneratedFunctionNames();
 // boolean bad = false;
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java
index 456ef6f..5545d5a 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.wst.jsdt.web.ui.views.contentoutline;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Vector;
 
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -30,9 +32,10 @@
 import org.eclipse.wst.jsdt.internal.core.SourceRefElement;
 import org.eclipse.wst.jsdt.ui.JavaScriptElementLabelProvider;
 import org.eclipse.wst.jsdt.ui.StandardJavaScriptElementContentProvider;
-import org.eclipse.wst.jsdt.web.core.internal.Logger;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
+import org.eclipse.wst.jsdt.web.ui.internal.Logger;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
@@ -178,51 +181,45 @@
 	}
 	
 	private Object[] filterChildrenForRange(IJavaScriptElement[] allChildren, Node node) {
-	//	int javaPositionStart = ((NodeImpl) node).getStartOffset();
-	//	int javaPositionEnd   = ((NodeImpl) node).getEndOffset();
-		
-	//	Object[] result =new Object[0];
-		
 		int javaPositionEnd = ((NodeImpl) node).getEndOffset();
 		int javaPositionStart = ((NodeImpl) node).getStartOffset();
+		javaPositionStart = ((JsTranslation)getTranslation(node)).getJavaScriptOffset(((NodeImpl) node).getStartOffset());
+		if (javaPositionStart < 0)
+			javaPositionStart = ((NodeImpl) node).getStartOffset();
+		javaPositionEnd = ((JsTranslation)getTranslation(node)).getJavaScriptOffset(((NodeImpl) node).getEndOffset() - 1);
+		if (javaPositionEnd < 0)
+			javaPositionEnd = ((NodeImpl) node).getEndOffset();
 
-		Vector validChildren = new Vector();
+		List validChildren = new ArrayList();
 		for (int i = 0; i < allChildren.length; i++) {
-			if (allChildren[i] instanceof IJavaScriptElement) {
-				ISourceRange range = null;
-				if (allChildren[i] instanceof Member) {
-					try {
-						range = ((Member) allChildren[i]).getNameRange();
-					} catch (JavaScriptModelException e) {
-											// TODO Auto-generated catch block
-						e.printStackTrace();
-					}
-				} else if (allChildren[i]  instanceof SourceRefElement) {
-					try {
-						range = ((SourceRefElement)allChildren[i] ).getSourceRange();
-					} catch (JavaScriptModelException e) {
-						// TODO Auto-generated catch block
-						e.printStackTrace();
-					}
+			ISourceRange range = null;
+			if (allChildren[i] instanceof Member) {
+				try {
+					range = ((Member) allChildren[i]).getNameRange();
+				} catch (JavaScriptModelException e) {
+					Logger.logException("Error getting range of Member child.", e);
 				}
-				if (allChildren[i].getElementType() == IJavaScriptElement.TYPE || (javaPositionStart <= range.getOffset() && range.getLength() + range.getOffset() <= (javaPositionEnd))) {
-					
-					
-							int htmllength = range == null ? 0 : range.getLength();
-							int htmloffset = range == null ? 0 : range.getOffset();
-							if (htmllength < 0 || htmloffset < 0) {
-								continue;
-							}
-							Position position = new Position(htmloffset, htmllength);
-							validChildren.add(getJsNode(node.getParentNode(), allChildren[i], position));
-					
+			} else if (allChildren[i]  instanceof SourceRefElement) {
+				try {
+					range = ((SourceRefElement)allChildren[i] ).getSourceRange();
+				} catch (JavaScriptModelException e) {
+					Logger.logException("Error getting range of SourceRefElement child.", e);
+				}
+			}
+			
+			if (range != null && javaPositionStart <= range.getOffset() &&
+						(range.getLength() + range.getOffset()) <= (javaPositionEnd)) {
 				
+				int htmlLength = range.getLength();
+				int htmlOffset = range.getOffset();
+				if (htmlLength >= 0 && htmlOffset >= 0) {
+					Position position = new Position(htmlOffset, htmlLength);
+					validChildren.add(getJsNode(node.getParentNode(), allChildren[i], position));
 				}
 			}
 		}
 		Object[] result = new Object[0];
 
-
 		if (validChildren.size() > 0) {
 			result = validChildren.toArray();
 		}
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JFaceNodeAdapterForJs.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JFaceNodeAdapterForJs.java
index 6e47c34..2a7a3a4 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JFaceNodeAdapterForJs.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JFaceNodeAdapterForJs.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import org.eclipse.wst.jsdt.ui.StandardJavaScriptElementContentProvider;
 import org.eclipse.wst.jsdt.web.core.internal.Logger;
 import org.eclipse.wst.jsdt.web.core.javascript.IJsTranslation;
+import org.eclipse.wst.jsdt.web.core.javascript.JsTranslation;
 import org.eclipse.wst.jsdt.web.core.javascript.JsTranslationAdapter;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
@@ -81,13 +82,14 @@
 		}
 		int startOffset = 0;
 		int endOffset = 0;
-		IJavaScriptElement[] result = null;
+		IJavaScriptElement[] result = new IJavaScriptElement[0];
 		IJsTranslation translation = null;
 		if (node.getNodeType() == Node.TEXT_NODE && (node instanceof NodeImpl)) {
-			startOffset = ((NodeImpl) node).getStartOffset();
-			endOffset = ((NodeImpl) node).getEndOffset();
 			translation = getTranslation(node);
-			result = translation.getAllElementsInJsRange(startOffset, endOffset);
+			startOffset = ((JsTranslation)translation).getJavaScriptOffset(((NodeImpl) node).getStartOffset());
+			endOffset = ((JsTranslation)translation).getJavaScriptOffset(((NodeImpl) node).getEndOffset() - 1);
+			if (startOffset >= 0 && endOffset >= 0)
+				result = translation.getAllElementsInJsRange(startOffset, endOffset);
 		}
 		return result;
 //			
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JsLabelProvider.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JsLabelProvider.java
index 9c30f15..6fa8309 100644
--- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JsLabelProvider.java
+++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/provisional/contentoutline/JsLabelProvider.java
@@ -1,6 +1,13 @@
-/**
- * 
- */
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.wst.jsdt.web.ui.views.provisional.contentoutline;
 
 import org.eclipse.swt.graphics.Image;
diff --git a/bundles/org.eclipse.wst.sse.core/.classpath b/bundles/org.eclipse.wst.sse.core/.classpath
index df9dea9..5599a1c 100644
--- a/bundles/org.eclipse.wst.sse.core/.classpath
+++ b/bundles/org.eclipse.wst.sse.core/.classpath
@@ -4,11 +4,7 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="src-tasktags"/>
 	<classpathentry kind="src" path="src-contentproperties"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4">
-		<accessrules>
-			<accessrule kind="accessible" pattern="org/w3c/dom/traversal/NodeIterator"/>
-		</accessrules>
-	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.wst.sse.core/.project b/bundles/org.eclipse.wst.sse.core/.project
index 36c5b34..6aaab4d 100644
--- a/bundles/org.eclipse.wst.sse.core/.project
+++ b/bundles/org.eclipse.wst.sse.core/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
index 07f048d..a730220 100644
--- a/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
@@ -45,7 +45,7 @@
  org.eclipse.core.jobs;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,2.0.0)",
  org.eclipse.emf.common;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.100,2.0.0)";resolution:=optional,
  org.eclipse.core.expressions;bundle-version="[3.4.100,4.0.0)",
diff --git a/bundles/org.eclipse.wst.sse.core/component.xml b/bundles/org.eclipse.wst.sse.core/component.xml
deleted file mode 100644
index dae223c..0000000
--- a/bundles/org.eclipse.wst.sse.core/component.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.sse">
-	<description url="http://eclipse.org/webtools/wst/components/sse/overview.html"></description>
-	<component-depends unrestricted="true"></component-depends>
-	<plugin id="org.eclipse.wst.sse.core" fragment="false" />
-	<plugin id="org.eclipse.wst.sse.doc.user" fragment="false" />
-	<plugin id="org.eclipse.wst.sse.ui" fragment="false" />
-	<package name="org.eclipse.wst.sse.ui.views.properties" api="false">
-		<type name="PropertySheetConfiguration" subclass="true" instantiate="true" />
-		<type name="IPropertySourceExtension" implement="true" />
-	</package>
-	<package name="org.eclipse.wst.sse.ui" api="false">
-		<type name="StructuredTextEditor" subclass="false" instantiate="true" />
-		<type name="StructuredTextViewerConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.sse.ui.views.contentoutline" api="false">
-		<type name="ContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<plugin id="org.eclipse.wst.sse.ui.infopop" fragment="false" />
-</component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.sse.core/src-contentproperties/org/eclipse/wst/sse/internal/contentproperties/SimpleNodeOperator.java b/bundles/org.eclipse.wst.sse.core/src-contentproperties/org/eclipse/wst/sse/internal/contentproperties/SimpleNodeOperator.java
index ace7a38..3f18a11 100644
--- a/bundles/org.eclipse.wst.sse.core/src-contentproperties/org/eclipse/wst/sse/internal/contentproperties/SimpleNodeOperator.java
+++ b/bundles/org.eclipse.wst.sse.core/src-contentproperties/org/eclipse/wst/sse/internal/contentproperties/SimpleNodeOperator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,8 +12,6 @@
  *******************************************************************************/
 package org.eclipse.wst.sse.internal.contentproperties;
 
-
-
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -43,7 +41,6 @@
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.traversal.NodeIterator;
 import org.xml.sax.SAXException;
 
 /**
@@ -285,22 +282,6 @@
 		return null;
 	}
 
-	public void printTree(NodeIterator iter) {
-		Node n;
-		while ((n = iter.nextNode()) != null) {
-			System.out.println(n.getNodeName() + ":");//$NON-NLS-1$
-			NamedNodeMap m = n.getAttributes();
-			if (m == null)
-				continue;
-			for (int i = 0; i < m.getLength(); i++) {
-				String attName = m.item(i).getNodeName();
-				System.out.print(" " + attName + "=" + m.item(i).getNodeValue());//$NON-NLS-1$ //$NON-NLS-2$
-			}
-			System.out.println("");//$NON-NLS-1$
-		}
-	}
-
-
 	// remove attribute(attName) at ele.
 	protected Attr removeAttributeAt(Element ele, String attName) {
 		if (ele == null || attName == null)
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/FileBufferModelManager.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/FileBufferModelManager.java
index 6ae82d5..aad98e6 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/FileBufferModelManager.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/FileBufferModelManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -53,6 +53,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.exceptions.ResourceInUse;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.util.URIResolverExtension;
 import org.eclipse.wst.sse.core.internal.util.URIResolver;
 
 /**
@@ -102,7 +103,7 @@
 	/**
 	 * A URIResolver instance of models built on java.io.Files
 	 */
-	static class ExternalURIResolver implements URIResolver {
+	static class ExternalURIResolver implements URIResolver, URIResolverExtension {
 		IPath fLocation;
 
 		ExternalURIResolver(IPath location) {
@@ -164,13 +165,17 @@
 
 		public void setProject(IProject newProject) {
 		}
+
+		public URIResolver newInstance() {
+			return new ExternalURIResolver(fLocation != null ? (IPath) fLocation.clone() : null);
+		}
 	}
 
 	/**
 	 * A URIResolver instance of models built on the extensible WST URI
 	 * resolver
 	 */
-	static class CommonURIResolver implements URIResolver {
+	static class CommonURIResolver implements URIResolver, URIResolverExtension {
 		String fLocation;
 		IPath fPath;
 		private IProject fProject;
@@ -182,6 +187,9 @@
 			fProject = workspaceFile.getProject();
 		}
 
+		private CommonURIResolver() {
+		}
+
 		public String getFileBaseLocation() {
 			return fLocation;
 		}
@@ -245,6 +253,14 @@
 		public void setProject(IProject newProject) {
 			fProject = newProject;
 		}
+
+		public URIResolver newInstance() {
+			CommonURIResolver resolver = new CommonURIResolver();
+			resolver.fLocation = fLocation;
+			resolver.fPath = (IPath) fPath.clone();
+			resolver.fProject = fProject;
+			return resolver;
+		}
 	}
 
 	/**
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
index bd7d94e..cbf33b9 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2011 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -80,6 +80,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.exceptions.ResourceInUse;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.util.Assert;
+import org.eclipse.wst.sse.core.internal.util.URIResolverExtension;
 import org.eclipse.wst.sse.core.internal.util.ProjectResolver;
 import org.eclipse.wst.sse.core.internal.util.URIResolver;
 import org.eclipse.wst.sse.core.internal.util.Utilities;
@@ -895,6 +896,9 @@
 			((AbstractStructuredModel) newModel).setContentTypeIdentifier(oldModel.getContentTypeIdentifier());
 		}
 		URIResolver oldResolver = oldModel.getResolver();
+		if (oldResolver instanceof URIResolverExtension) {
+			oldResolver = ((URIResolverExtension) oldResolver).newInstance();
+		}
 		newModel.setResolver(oldResolver);
 		try {
 			newModel.setId(DUPLICATED_MODEL);
@@ -1037,15 +1041,12 @@
 	 * transformation is done.
 	 */
 	public  IStructuredDocument createStructuredDocumentFor(String filename, String content, URIResolver resolver) throws IOException {
-		// TODO: avoid all these String instances
-		StringBuffer contentBuffer = new StringBuffer(content);
 		IDocumentLoader loader = null;
 		IModelHandler handler = calculateType(filename, null);
 		loader = handler.getDocumentLoader();
 		IStructuredDocument result = (IStructuredDocument) loader.createNewStructuredDocument();
-		StringBuffer convertedContent = loader.handleLineDelimiter(contentBuffer, result);
 		result.setEncodingMemento(new NullMemento());
-		result.setText(this, convertedContent.toString());
+		result.setText(this, content);
 		return result;
 	}
 
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/URIResolverExtension.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/URIResolverExtension.java
new file mode 100644
index 0000000..23fcfa2
--- /dev/null
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/URIResolverExtension.java
@@ -0,0 +1,25 @@
+/*******************************************************************************

+ * Copyright (c) 2012 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.wst.sse.core.internal.util;

+

+/**

+ * Extension to the {@link URIResolver} interface. Implementing this interface

+ * allows for a new copy of the URIResolver to be created 

+ *

+ */

+public interface URIResolverExtension {

+	/**

+	 * Creates a new instance of the implementing {@link URIResolver}

+	 * 

+	 * @return a new instance of the {@link URIResolver}

+	 */

+	URIResolver newInstance();

+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.sse.ui/.project b/bundles/org.eclipse.wst.sse.ui/.project
index 78bd94c..740a410 100644
--- a/bundles/org.eclipse.wst.sse.ui/.project
+++ b/bundles/org.eclipse.wst.sse.ui/.project
@@ -19,9 +19,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
index 9bd14b6..d7e3e4a 100644
--- a/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
@@ -60,11 +60,11 @@
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.forms;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.wst.sse.core;bundle-version="[1.1.500,1.2.0)",
+ org.eclipse.wst.sse.core;bundle-version="[1.1.700,1.2.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)",
  org.eclipse.emf.common;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
-Bundle-ActivationPolicy: lazy
+Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.sse.ui.internal.propertytester"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.wst.sse.ui/plugin.xml b/bundles/org.eclipse.wst.sse.ui/plugin.xml
index e50b9eb..00175f0 100644
--- a/bundles/org.eclipse.wst.sse.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.sse.ui/plugin.xml
@@ -751,7 +751,7 @@
 				style="push">
 		        <visibleWhen checkEnabled="false">
 				   <with variable="activeEditor">
-				   		<test property="org.eclipse.wst.sse.ui.outline.isConfigurableOutlinePage" />
+				   		<test property="org.eclipse.wst.sse.ui.outline.isConfigurableOutlinePage" forcePluginActivation="true"/>
     				</with>
 				</visibleWhen>
 			</command>
@@ -866,7 +866,7 @@
 	<extension
          point="org.eclipse.core.expressions.propertyTesters">
       <propertyTester
-            class="org.eclipse.wst.sse.ui.internal.CustomFilterPropertyTester"
+            class="org.eclipse.wst.sse.ui.internal.propertytester.CustomFilterPropertyTester"
             id="org.eclipse.wst.sse.ui.internal.handlers.CustomFilterPropertyTester"
             namespace="org.eclipse.wst.sse.ui.outline"
             properties="isConfigurableOutlinePage"
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
index e6010d5..f92cbbc 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2011 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -236,7 +236,6 @@
  * 
  * @since 1.0
  */
-
 public class StructuredTextEditor extends TextEditor {
 	private class GotoMatchingBracketHandler extends AbstractHandler {
 		public Object execute(ExecutionEvent arg0) throws ExecutionException {
@@ -990,9 +989,16 @@
 
 		public void partActivated(IWorkbenchPart part) {
 			if (part.getAdapter(ITextEditor.class) == fEditor) {
-				IReconciler reconciler = getSourceViewerConfiguration().getReconciler(getSourceViewer());
-				if (reconciler instanceof DocumentRegionProcessor) {
-					((DocumentRegionProcessor) reconciler).forceReconciling();
+				SourceViewerConfiguration sourceViewerConfiguration = getSourceViewerConfiguration();
+				/*
+				 * Guard against possible tight timing between part creation
+				 * and viewer configuration
+				 */
+				if (sourceViewerConfiguration != null) {
+					IReconciler reconciler = sourceViewerConfiguration.getReconciler(getSourceViewer());
+					if (reconciler instanceof DocumentRegionProcessor) {
+						((DocumentRegionProcessor) reconciler).forceReconciling();
+					}
 				}
 			}
 		}
@@ -3236,11 +3242,14 @@
 		SourceViewerConfiguration configuration = getSourceViewerConfiguration();
 		String[] types = configuration.getConfiguredContentTypes(getSourceViewer());
 
+		ISourceViewer sourceViewer = getSourceViewer();
+		if (sourceViewer == null)
+			return;
+
 		for (int i = 0; i < types.length; i++) {
 
 			String t = types[i];
 
-			ISourceViewer sourceViewer = getSourceViewer();
 			if (sourceViewer instanceof ITextViewerExtension2) {
 				// Remove existing hovers
 				((ITextViewerExtension2) sourceViewer).removeTextHovers(t);
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/derived/SubstitutionTextReader.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/derived/SubstitutionTextReader.java
index 4d2a78f..1f634ce 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/derived/SubstitutionTextReader.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/derived/SubstitutionTextReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -105,7 +105,7 @@
 		do {
 
 			c = nextChar();
-			while (!fReadFromBuffer) {
+			while (!fReadFromBuffer && c != -1) {
 				String s = computeSubstitution(c);
 				if (s == null)
 					break;
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/CustomFilterHandler.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/CustomFilterHandler.java
index baaa020..29c45bf 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/CustomFilterHandler.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/CustomFilterHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,9 +22,9 @@
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 
 		IEditorPart editor = HandlerUtil.getActiveEditor(event);
-		ConfigurableContentOutlinePage page = (ConfigurableContentOutlinePage) editor.getAdapter(IContentOutlinePage.class);
-		if (page != null) {
-			page.getOutlineFilterProcessor().openDialog();
+		Object page = editor.getAdapter(IContentOutlinePage.class);
+		if (page instanceof ConfigurableContentOutlinePage) {
+			((ConfigurableContentOutlinePage) page).getOutlineFilterProcessor().openDialog();
 		}
 		return null;
 	}
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/CustomFilterPropertyTester.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/propertytester/CustomFilterPropertyTester.java
similarity index 91%
rename from bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/CustomFilterPropertyTester.java
rename to bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/propertytester/CustomFilterPropertyTester.java
index d646039..e4fa4d7 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/CustomFilterPropertyTester.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/propertytester/CustomFilterPropertyTester.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.sse.ui.internal;
+package org.eclipse.wst.sse.ui.internal.propertytester;
 
 import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.ui.IEditorPart;
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/StructuredRegionProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/StructuredRegionProcessor.java
index 03b2dde..6524ba6 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/StructuredRegionProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/StructuredRegionProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -61,20 +61,15 @@
 		 * @see org.eclipse.wst.sse.core.internal.provisional.IModelLifecycleListener#processPreModelEvent(org.eclipse.wst.sse.core.internal.model.ModelLifecycleEvent)
 		 */
 		public void processPreModelEvent(ModelLifecycleEvent event) {
-			if(fCurrentDoc != null) {
-				IStructuredModel model = null;
-				try {
-					model = getStructuredModelForRead(fCurrentDoc);
-					if (event.getType() == ModelLifecycleEvent.MODEL_DOCUMENT_CHANGED && event.getModel() == model) {
-						changing = event.getModel();
-						flushDirtyRegionQueue();
-						// note: old annotations are removed via the strategies on
-						// AbstractStructuredTextReconcilingStrategy#setDocument(...)
-					}
-				} finally {
-					if(model != null) {
-						model.releaseFromRead();
-					}
+			if(fCurrentDoc != null && fCurrentModel != null) {
+				if (event.getType() == ModelLifecycleEvent.MODEL_DOCUMENT_CHANGED && event.getModel() == fCurrentModel) {
+					changing = event.getModel();
+					flushDirtyRegionQueue();
+					/*
+					 * note: old annotations are removed via the strategies on
+					 * AbstractStructuredTextReconcilingStrategy
+					 * #setDocument(...)
+					 */
 				}
 			}
 		}
@@ -88,7 +83,12 @@
 	/** Used to get the current model on demand so a model does not need to be held by permanently */
 	private IDocument fCurrentDoc = null;
 	
-	/** Only to be used for content type and IModelLifecycleListener registration.  All other uses should "get" the model. */
+	/**
+	 * Only to be used for content type and IModelLifecycleListener
+	 * registration. All other uses should "get" the model --getting the model
+	 * during these specific options can cause lock interruption by
+	 * org.eclipse.core.internal.jobs.DeadlockDetector.
+	 */
 	private IStructuredModel fCurrentModel = null;
 
 	/*
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
index 093ec05..79b29bd 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
@@ -783,12 +783,16 @@
 	 * @param highlighting The highlighting
 	 */
 	public void highlightingStyleChanged(HighlightingStyle highlighting) {
-		for (int i= 0, n= fPositions.size(); i < n; i++) {
-			HighlightedPosition position= (HighlightedPosition) fPositions.get(i);
-			if (position.getHighlighting() == highlighting && fSourceViewer instanceof ITextViewerExtension2)
-				((ITextViewerExtension2) fSourceViewer).invalidateTextPresentation(position.getOffset(), position.getLength());
-			else
-				fSourceViewer.invalidateTextPresentation();
+		if (fSourceViewer instanceof ITextViewerExtension2) {
+			final ITextViewerExtension2  viewer = (ITextViewerExtension2) fSourceViewer;
+			for (int i = 0, n = fPositions.size(); i < n; i++) {
+				HighlightedPosition position = (HighlightedPosition) fPositions.get(i);
+				if (position.getHighlighting() == highlighting)
+					viewer.invalidateTextPresentation(position.getOffset(),	position.getLength());
+			}
+		}
+		else {
+			fSourceViewer.invalidateTextPresentation();
 		}
 	}
 
@@ -797,9 +801,10 @@
 	 */
 	private void invalidateTextPresentation() {
 		if (fSourceViewer instanceof ITextViewerExtension2) {
+			final ITextViewerExtension2  viewer = (ITextViewerExtension2) fSourceViewer;
 			for (int i = 0, n = fPositions.size(); i < n; i++) {
 				Position position = (Position) fPositions.get(i);
-				((ITextViewerExtension2) fSourceViewer).invalidateTextPresentation(position.getOffset(), position.getLength());
+				viewer.invalidateTextPresentation(position.getOffset(), position.getLength());
 			}
 		}
 		else {
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingReconciler.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingReconciler.java
index 8318c97..00a99f4 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingReconciler.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingReconciler.java
@@ -239,8 +239,7 @@
 	}
 
 	public void setDocument(IDocument document) {
-		fDocument = document;
-//		refresh();
+		fDocument = (document instanceof IStructuredDocument) ? document : null;
 	}
 
 	public void initialReconcile() {
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/taginfo/BestMatchHover.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/taginfo/BestMatchHover.java
index d105f91..da49b52 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/taginfo/BestMatchHover.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/taginfo/BestMatchHover.java
@@ -20,6 +20,7 @@
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.ITextHover;
 import org.eclipse.jface.text.ITextHoverExtension;
+import org.eclipse.jface.text.ITextHoverExtension2;
 import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.wst.sse.ui.internal.ExtendedConfigurationBuilder;
 import org.eclipse.wst.sse.ui.internal.Logger;
@@ -29,7 +30,7 @@
  * processors) Priority of hover help processors is: ProblemHoverProcessor,
  * TagInfoProcessor, AnnotationHoverProcessor
  */
-public class BestMatchHover implements ITextHover, ITextHoverExtension {
+public class BestMatchHover implements ITextHover, ITextHoverExtension, ITextHoverExtension2 {
 	/** Current best match text hover */
 	private ITextHover fBestMatchHover;
 	/**
@@ -119,6 +120,35 @@
 		return displayText;
 	}
 
+	public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
+		Object information = null;
+
+		// already have a best match hover picked out from getHoverRegion call
+		if (fBestMatchHover instanceof ITextHoverExtension2) {
+			information = ((ITextHoverExtension2 ) fBestMatchHover).getHoverInfo2(textViewer, hoverRegion);
+		}
+		else if (fBestMatchHover != null) {
+			information = fBestMatchHover.getHoverInfo(textViewer, hoverRegion);
+		}
+		// either had no best match hover or best match hover returned null
+		if (information == null) {
+			// go through list of text hovers and return first display string
+			Iterator i = getTextHovers().iterator();
+			while ((i.hasNext()) && (information == null)) {
+				ITextHover hover = (ITextHover) i.next();
+				if (hover == fBestMatchHover)
+					continue;
+				if (hover instanceof ITextHoverExtension2) {
+					information = ((ITextHoverExtension2) hover).getHoverInfo2(textViewer, hoverRegion);
+				}
+				else {
+					information = hover.getHoverInfo(textViewer, hoverRegion);
+				}
+			}
+		}
+		return information;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
diff --git a/bundles/org.eclipse.wst.xml.core/.project b/bundles/org.eclipse.wst.xml.core/.project
index c417514..337ce8b 100644
--- a/bundles/org.eclipse.wst.xml.core/.project
+++ b/bundles/org.eclipse.wst.xml.core/.project
@@ -2,7 +2,8 @@
 <projectDescription>
 	<name>org.eclipse.wst.xml.core</name>
 	<comment></comment>
-	<projects></projects>
+	<projects>
+	</projects>
 	<buildSpec>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
@@ -19,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.xml.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xml.core/META-INF/MANIFEST.MF
index fc46870..bd55c3f 100644
--- a/bundles/org.eclipse.wst.xml.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xml.core/META-INF/MANIFEST.MF
@@ -314,7 +314,7 @@
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.sse.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.jem.util;bundle-version="[2.0.200,3.0.0)";resolution:=optional,
  org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)";resolution:=optional,
diff --git a/bundles/org.eclipse.wst.xml.core/component.xml b/bundles/org.eclipse.wst.xml.core/component.xml
deleted file mode 100644
index e061eb3..0000000
--- a/bundles/org.eclipse.wst.xml.core/component.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.xml">
-	<component-depends unrestricted="true"></component-depends>
-	<plugin id="org.eclipse.wst.xmleditor.doc.user" fragment="false" />
-	<plugin id="org.eclipse.wst.xml.core" fragment="false" />
-	<plugin id="org.eclipse.wst.xml.ui" fragment="false" />
-	<description url="http://eclipse.org/webtools/wst/components/xml/overview.html" />
-	<package name="org.eclipse.wst.xml.ui" api="false">
-		<type name="StructuredTextViewerConfigurationXML" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.xml.ui.views.contentoutline" api="false">
-		<type name="XMLContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.wst.xml.ui.views.properties" api="false">
-		<type name="XMLPropertySheetConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<plugin id="org.eclipse.wst.xml.ui.infopop" fragment="false" />
-	<plugin id="org.eclipse.wst.xml_core.feature.source" fragment="false" />
-	<plugin id="org.eclipse.wst.xml_ui.feature.source" fragment="false" />
-	<plugin id="org.apache.xerces" fragment="false" />
-</component>
diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java
index 454fe8a..650d1a2 100644
--- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java
+++ b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2002, 2011 IBM Corporation and others.
+ * Copyright (c) 2002, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -390,6 +390,23 @@
           uriQualifiedTypeName = "[" +  typeURI + "]" + typeName; //$NON-NLS-1$ //$NON-NLS-2$
         }
         result = (CMElementDeclaration)ed.getProperty("DerivedElementDeclaration=" + uriQualifiedTypeName);   //$NON-NLS-1$
+        if(result == null)
+        {
+        	String reference = null;
+        	NamespaceInfo namespaceInfo = namespaceTable.getNamespaceInfoForPrefix(typePrefix);
+        	if(namespaceInfo != null)
+        	{
+        		String locationHint = resolveGrammarURI(element.getOwnerDocument(), namespaceInfo.uri, namespaceInfo.locationHint);
+        		if(locationHint != null)
+        		{
+        			reference = "[" + locationHint + "]" + typeName; //$NON-NLS-1$ //$NON-NLS-2$
+        		}
+        	}
+        	if(reference != null)
+        	{
+        		result = (CMElementDeclaration)ed.getProperty("ExternallyDerivedElementDeclaration=" + reference);   //$NON-NLS-1$
+        	}
+        }
       }
     }                                                                                                    
     return result;
diff --git a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
index f3a4da8..592143e 100644
--- a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
+++ b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -324,6 +324,13 @@
     return validate(uri, inputstream, context);
   }
 
+  public ValidationReport validateWithSetup(String uri, InputStream inputstream, NestedValidatorContext context)
+  {
+    setupValidation(context);
+    return validate(uri, inputstream, context);
+  }
+
+
   /**
    * This method clears all the markers on the given IFile for a specified
    * validator.
diff --git a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/LazyURLInputStream.java b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/LazyURLInputStream.java
index 78fd207..015193b 100644
--- a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/LazyURLInputStream.java
+++ b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/LazyURLInputStream.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,7 +12,8 @@
 package org.eclipse.wst.xml.core.internal.validation.core;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+
+import org.eclipse.wst.common.uriresolver.URIHelper;
 
 
 /**
@@ -28,7 +29,6 @@
   protected boolean error;
   boolean hasMarks;
   boolean pretendFileIsStillOpen;
-
   public LazyURLInputStream(String url)
   {
     this.url = url;
@@ -44,7 +44,7 @@
     
       try
       {
-        inner = new URL(url).openStream();
+    	inner = URIHelper.getInputStream(url, 0);
 		pretendFileIsStillOpen = false;
 		hasMarks = false;
       }
diff --git a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/xmlvalidation.properties b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/xmlvalidation.properties
index a88483a..de313d3 100644
--- a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/xmlvalidation.properties
+++ b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/xmlvalidation.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2001, 2011 IBM Corporation and others.
+# Copyright (c) 2001, 2012 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -28,7 +28,7 @@
 _UI_REF_FILE_ERROR_MESSAGE                       = Referenced file contains errors ({0}).  For more information, right click on the message in the Problems View and select "Show Details..."
 
 # Warning when no grammar is located.
-_WARN_NO_GRAMMAR                                 = No grammar constraints (DTD or XML schema) detected for the document.
+_WARN_NO_GRAMMAR                                 = No grammar constraints (DTD or XML Schema) referenced in the document.
 
 _NO_DOCUMENT_ELEMENT = A well-formed document requires a root element.
  
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
index 9e56e70..55da4b7 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
@@ -25,7 +25,7 @@
 import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
 
 
-public final class ContentDescriberForXML implements ITextContentDescriber {
+public class ContentDescriberForXML implements ITextContentDescriber {
 	private final static QualifiedName[] SUPPORTED_OPTIONS = {IContentDescription.CHARSET, IContentDescription.BYTE_ORDER_MARK, IContentDescriptionExtended.DETECTED_CHARSET, IContentDescriptionExtended.UNSUPPORTED_CHARSET, IContentDescriptionExtended.APPROPRIATE_DEFAULT};
 	/**
 	 * <code>restrictedMode</code> is used just for testing/experiments.
@@ -90,7 +90,7 @@
 		return SUPPORTED_OPTIONS;
 	}
 
-	private int calculateSupportedOptions(int result, InputStream contents, IContentDescription description) throws IOException {
+	protected int calculateSupportedOptions(int result, InputStream contents, IContentDescription description) throws IOException {
 		int returnResult = result;
 		if (isRelevent(description)) {
 			IResourceCharsetDetector detector = getDetector();
@@ -122,7 +122,7 @@
 	 * @param description
 	 * @throws IOException
 	 */
-	private int calculateSupportedOptions(int result, Reader contents, IContentDescription description) throws IOException {
+	protected int calculateSupportedOptions(int result, Reader contents, IContentDescription description) throws IOException {
 		int returnResult = result;
 		if (isRelevent(description)) {
 			IResourceCharsetDetector detector = getDetector();
diff --git a/bundles/org.eclipse.wst.xml.ui/.project b/bundles/org.eclipse.wst.xml.ui/.project
index 50dc4a8..ec8f136 100644
--- a/bundles/org.eclipse.wst.xml.ui/.project
+++ b/bundles/org.eclipse.wst.xml.ui/.project
@@ -2,7 +2,8 @@
 <projectDescription>
 	<name>org.eclipse.wst.xml.ui</name>
 	<comment></comment>
-	<projects></projects>
+	<projects>
+	</projects>
 	<buildSpec>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
@@ -19,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.jdt.core.prefs
index a512da0..0b031c8 100644
--- a/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Sat Mar 24 02:59:49 EDT 2007

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -19,17 +18,22 @@
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

+org.eclipse.jdt.core.compiler.problem.deadCode=warning

 org.eclipse.jdt.core.compiler.problem.deprecation=ignore

 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled

 org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error

 org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error

@@ -40,6 +44,7 @@
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

 org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

@@ -47,17 +52,30 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error

+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

+org.eclipse.jdt.core.compiler.problem.nullReference=error

 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled

 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

@@ -65,14 +83,19 @@
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

 org.eclipse.jdt.core.compiler.problem.unusedImport=error

 org.eclipse.jdt.core.compiler.problem.unusedLabel=error

 org.eclipse.jdt.core.compiler.problem.unusedLocal=error

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.source=1.3

 org.eclipse.jdt.core.incompatibleJDKLevel=ignore

diff --git a/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.pde.prefs
index de4a8be..9812abb 100644
--- a/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.wst.xml.ui/.settings/org.eclipse.pde.prefs
@@ -13,7 +13,7 @@
 compilers.p.unknown-attribute=0
 compilers.p.unknown-class=0
 compilers.p.unknown-element=0
-compilers.p.unknown-identifier=0
+compilers.p.unknown-identifier=1
 compilers.p.unknown-resource=0
 compilers.p.unresolved-ex-points=0
 compilers.p.unresolved-import=0
diff --git a/bundles/org.eclipse.wst.xml.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xml.ui/META-INF/MANIFEST.MF
index 0869988..fe01f4a 100644
--- a/bundles/org.eclipse.wst.xml.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xml.ui/META-INF/MANIFEST.MF
@@ -56,7 +56,7 @@
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.500,1.2.0)",
  org.eclipse.wst.common.ui;bundle-version="[1.1.400,1.2.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.100,1.3.0)",
diff --git a/bundles/org.eclipse.wst.xml.ui/plugin.xml b/bundles/org.eclipse.wst.xml.ui/plugin.xml
index 7e36fbb..691236a 100644
--- a/bundles/org.eclipse.wst.xml.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.xml.ui/plugin.xml
@@ -1336,11 +1336,11 @@
 			</colorOverride>
 			<colorOverride
 				id="commentBorder"
-				value="COLOR_LIST_SELECTION">
+				value="COLOR_WIDGET_NORMAL_SHADOW">
 			</colorOverride>
 			<colorOverride
 				id="commentText"
-				value="COLOR_LIST_SELECTION">
+				value="COLOR_WIDGET_NORMAL_SHADOW">
 			</colorOverride>
 			<colorOverride
 				id="declBoder"
diff --git a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
index 59f8da3..014eb75 100644
--- a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
+++ b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others. All rights reserved. This
+ * Copyright (c) 2004, 2012 IBM Corporation and others. All rights reserved. This
  * program and the accompanying materials are made available under the terms
  * of the Eclipse Public License v1.0 which accompanies this distribution, and
  * is available at http://www.eclipse.org/legal/epl-v10.html
@@ -53,10 +53,12 @@
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IMemento;
 import org.eclipse.ui.INavigationLocation;
 import org.eclipse.ui.INavigationLocationProvider;
 import org.eclipse.ui.IPartListener;
 import org.eclipse.ui.IPartService;
+import org.eclipse.ui.IPersistableEditor;
 import org.eclipse.ui.IPropertyListener;
 import org.eclipse.ui.IWindowListener;
 import org.eclipse.ui.IWorkbenchActionConstants;
@@ -92,7 +94,7 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class XMLMultiPageEditorPart extends MultiPageEditorPart implements INavigationLocationProvider {
+public class XMLMultiPageEditorPart extends MultiPageEditorPart implements INavigationLocationProvider, IPersistableEditor {
 
 	/**
 	 * Internal part activation listener, copied from AbstractTextEditor
@@ -687,10 +689,10 @@
 			toolbarContainer.setLayout(layout);
 			toolbarContainer.setLayoutData(new GridData(GridData.END, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
 
-			ToolBar tb = new ToolBar(toolbarContainer, SWT.FLAT | SWT.NO_BACKGROUND);
+			ToolBar tb = new ToolBar(toolbarContainer, SWT.FLAT);
 			fToolbarManager = new ToolBarManager(tb);
 			tb.setLayoutData(new GridData(GridData.END, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
-			tb = new ToolBar(toolbarContainer, SWT.FLAT | SWT.NO_BACKGROUND);
+			tb = new ToolBar(toolbarContainer, SWT.FLAT);
 			fEditorManager = new ToolBarManager(tb);
 			tb.setLayoutData(new GridData(GridData.END, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
 			fDesignContainer = container;
@@ -826,9 +828,6 @@
 	 * Creates the source page of the multi-page editor.
 	 */
 	protected void createSourcePage() throws PartInitException {
-		fTextEditor = createTextEditor();
-		fTextEditor.setEditorPart(this);
-
 		/*
 		 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=134301 - XML editor
 		 * does not remember font settings
@@ -1006,6 +1005,8 @@
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
 		try {
 			super.init(site, input);
+			fTextEditor = createTextEditor();
+			fTextEditor.setEditorPart(this);
 			// we want to listen for our own activation
 			fActivationListener = new ActivationListener(site.getWorkbenchWindow().getPartService());
 		}
@@ -1161,4 +1162,16 @@
 			}
 		};
 	}
+
+	public void saveState(IMemento memento) {
+		if (fTextEditor != null) {
+			fTextEditor.saveState(memento);
+		}
+	}
+
+	public void restoreState(IMemento memento) {
+		if (fTextEditor != null) {
+			fTextEditor.restoreState(memento);
+		}
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/StructuredTextViewerConfigurationXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/StructuredTextViewerConfigurationXML.java
index 2c11ee3..9da1daf 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/StructuredTextViewerConfigurationXML.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/StructuredTextViewerConfigurationXML.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,7 +20,9 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.text.IAutoEditStrategy;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
 import org.eclipse.jface.text.formatter.IContentFormatter;
 import org.eclipse.jface.text.formatter.MultiPassContentFormatter;
 import org.eclipse.jface.text.source.ISourceViewer;
@@ -34,9 +36,11 @@
 import org.eclipse.wst.xml.core.internal.text.rules.StructuredTextPartitionerForXML;
 import org.eclipse.wst.xml.core.text.IXMLPartitions;
 import org.eclipse.wst.xml.ui.internal.XMLFormattingStrategy;
+import org.eclipse.wst.xml.ui.internal.XMLUIPlugin;
 import org.eclipse.wst.xml.ui.internal.autoedit.AutoEditStrategyForTabs;
 import org.eclipse.wst.xml.ui.internal.contentassist.XMLStructuredContentAssistProcessor;
 import org.eclipse.wst.xml.ui.internal.contentoutline.JFaceNodeLabelProvider;
+import org.eclipse.wst.xml.ui.internal.preferences.XMLUIPreferenceNames;
 import org.eclipse.wst.xml.ui.internal.style.LineStyleProviderForXML;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Node;
@@ -100,6 +104,14 @@
 		return fConfiguredContentTypes;
 	}
 	
+	public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
+		final IContentAssistant assistant = super.getContentAssistant(sourceViewer);
+		if (assistant instanceof ContentAssistant) {
+			((ContentAssistant) assistant).enableAutoInsert(XMLUIPlugin.getInstance().getPreferenceStore().getBoolean(XMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION));
+		}
+		return assistant;
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration#getContentAssistProcessors(
 	 * 	org.eclipse.jface.text.source.ISourceViewer, java.lang.String)
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
index 2250814..a9e6b5f 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others. All rights reserved.   This
+ * Copyright (c) 2005, 2012 IBM Corporation and others. All rights reserved.   This
  * program and the accompanying materials are made available under the terms of
  * the Eclipse Public License v1.0 which accompanies this distribution, and is
  * available at http://www.eclipse.org/legal/epl-v10.html
@@ -204,6 +204,7 @@
 	public static String Compress_empty_element_tags_UI_;
 	public static String Insert_required_attributes_UI_;
 	public static String Insert_missing_tags_UI_;
+	public static String Insert_single_proposals;
 	public static String Quote_attribute_values_UI_;
 	public static String Format_source_UI_;
 	public static String Convert_EOL_codes_UI_;
@@ -244,6 +245,7 @@
 	public static String Format_comments;
 	public static String Format_comments_join_lines;
 	public static String Grammar_Constraints;
+	public static String Group_label_Insertion;
 	public static String Use_inferred_grammar_in_absence_of;
 	public static String Suggestion_Strategy;
 	public static String Suggestion_Strategy_Lax;
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
index 39af9c0..1f8f279 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2001, 2011 IBM Corporation and others.
+# Copyright (c) 2001, 2012 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -228,6 +228,7 @@
 Compress_empty_element_tags_UI_=&Compress empty element tags
 Insert_required_attributes_UI_=Insert &required attributes
 Insert_missing_tags_UI_=&Insert missing tags
+Insert_single_proposals=&Insert single proposals automatically
 Quote_attribute_values_UI_=&Quote attribute values
 Format_source_UI_=&Format source
 Convert_EOL_codes_UI_=Convert line &delimiters to
@@ -275,6 +276,7 @@
 Format_comments=&Format comments
 Format_comments_join_lines=&Join lines
 Grammar_Constraints=Grammar Constraints
+Group_label_Insertion=Insertion
 Use_inferred_grammar_in_absence_of=&Use inferred grammar in absence of DTD/Schema
 Suggestion_Strategy=&Suggestion strategy:
 Suggestion_Strategy_Lax=Lax
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/autoedit/StructuredAutoEditStrategyXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/autoedit/StructuredAutoEditStrategyXML.java
index efeabd9..e994f2c 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/autoedit/StructuredAutoEditStrategyXML.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/autoedit/StructuredAutoEditStrategyXML.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -107,6 +107,10 @@
 							String prevText = region.getText(prevTextRegion);
 							inUnclosedAttValueRegion = (prevText.startsWith("'") && ((prevText.length() == 1) || !prevText.endsWith("'"))) ||
 								(prevText.startsWith("\"") && ((prevText.length() == 1) || !prevText.endsWith("\"")));
+							if (!inUnclosedAttValueRegion) {
+								// Check if action is taking place within the paired quotes. This means quotes are actually mismatched and attribute is not properly closed
+								inUnclosedAttValueRegion = prevTextRegion == region.getRegionAtCharacterOffset(command.offset);
+							}
 						} 
 						//if command offset is in an unclosed attribute value region then done remove the end tag
 						if(!inUnclosedAttValueRegion) {
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
index c6c0143..237c524 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -198,7 +198,7 @@
 							if (attrAtLocationHasValue) {
 								// only propose the name
 								proposedText = getRequiredName(node, attrDecl);
-								proposal = new CustomCompletionProposal(
+								proposal = new MarkupCompletionProposal(
 										proposedText, contentAssistRequest.getReplacementBeginPosition(),
 										contentAssistRequest.getReplacementLength(), proposedText.length(),
 										attrImage, proposedText, null, proposedInfo,
@@ -227,7 +227,7 @@
 								}
 								if (proposalNeedsSpace)
 									proposedText += " "; //$NON-NLS-1$
-								proposal = new CustomCompletionProposal(proposedText,
+								proposal = new MarkupCompletionProposal(proposedText,
 										contentAssistRequest.getReplacementBeginPosition(),
 										contentAssistRequest.getReplacementLength(),
 										cursorPosition, attrImage,
@@ -367,7 +367,7 @@
 							if ((matchString.length() == 0) || possibleValue.startsWith(matchString)) {
 								String rString = "\"" + possibleValue + "\""; //$NON-NLS-1$ //$NON-NLS-2$
 								alternateMatch = "\"" + alternateMatch; //$NON-NLS-1$
-								CustomCompletionProposal proposal = new CustomCompletionProposal(
+								CustomCompletionProposal proposal = new MarkupCompletionProposal(
 										rString, rOffset, rLength, possibleValue.length() + 1,
 										XMLEditorPluginImageHelper.getInstance().getImage(XMLEditorPluginImages.IMG_OBJ_ENUM),
 										rString, alternateMatch, null, proposedInfo, XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE, true);
@@ -377,7 +377,7 @@
 					}
 					if(defaultValue != null && ((matchString.length() == 0) || defaultValue.startsWith(matchString))) {
 						String rString = "\"" + defaultValue + "\""; //$NON-NLS-1$ //$NON-NLS-2$
-						CustomCompletionProposal proposal = new CustomCompletionProposal(
+						CustomCompletionProposal proposal = new MarkupCompletionProposal(
 								rString, rOffset, rLength, defaultValue.length() + 1,
 								XMLEditorPluginImageHelper.getInstance().getImage(XMLEditorPluginImages.IMG_OBJ_DEFAULT),
 								rString, null, proposedInfo, XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE);
@@ -392,7 +392,7 @@
 					String value = attrDecl.getAttrType().getImpliedValue();
 					if ((value != null) && (value.length() > 0)) {
 						String rValue = "\"" + value + "\"";//$NON-NLS-2$//$NON-NLS-1$
-						CustomCompletionProposal proposal = new CustomCompletionProposal(
+						CustomCompletionProposal proposal = new MarkupCompletionProposal(
 								rValue, contentAssistRequest.getReplacementBeginPosition(),
 								contentAssistRequest.getReplacementLength(), rValue.length() + 1,
 								image, rValue, null, proposedInfo,
@@ -400,7 +400,7 @@
 						contentAssistRequest.addProposal(proposal);
 						if ((currentValue.length() > 0) && !value.equals(currentValue)) {
 							rValue = "\"" + currentValue + "\""; //$NON-NLS-2$//$NON-NLS-1$
-							proposal = new CustomCompletionProposal(rValue, contentAssistRequest.getReplacementBeginPosition(), contentAssistRequest.getReplacementLength(), rValue.length() + 1, image, rValue, null, proposedInfo, XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE);
+							proposal = new MarkupCompletionProposal(rValue, contentAssistRequest.getReplacementBeginPosition(), contentAssistRequest.getReplacementLength(), rValue.length() + 1, image, rValue, null, proposedInfo, XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE);
 							contentAssistRequest.addProposal(proposal);
 						}
 					}
@@ -412,7 +412,7 @@
 				CustomCompletionProposal proposal = null;
 				if ((currentValue != null) && (currentValue.length() > 0)) {
 					String rValue = "\"" + currentValue + "\""; //$NON-NLS-2$//$NON-NLS-1$
-					proposal = new CustomCompletionProposal(rValue,
+					proposal = new MarkupCompletionProposal(rValue,
 							contentAssistRequest.getReplacementBeginPosition(),
 							contentAssistRequest.getReplacementLength(), 1, image,
 							rValue, null, proposedInfo,
@@ -447,7 +447,7 @@
 			CompletionProposalInvocationContext context) {
 
 		if (contentAssistRequest.getStartOffset() + contentAssistRequest.getRegion().getTextLength() < contentAssistRequest.getReplacementBeginPosition()) {
-			CustomCompletionProposal proposal = new CustomCompletionProposal(">", //$NON-NLS-1$
+			CustomCompletionProposal proposal = new MarkupCompletionProposal(">", //$NON-NLS-1$
 						contentAssistRequest.getReplacementBeginPosition(), contentAssistRequest.getReplacementLength(), 1, XMLEditorPluginImageHelper.getInstance().getImage(XMLEditorPluginImages.IMG_OBJ_TAG_GENERIC), NLS.bind(XMLUIMessages.Close_with__, (new Object[]{" '>'"})), //$NON-NLS-1$
 						null, null, XMLRelevanceConstants.R_END_TAG_NAME);
 			contentAssistRequest.addProposal(proposal);
@@ -479,14 +479,14 @@
 								image = this.getGenericTagImage();
 							}
 							if (contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_NAME) {
-								proposal = new CustomCompletionProposal(
+								proposal = new MarkupCompletionProposal(
 										replacementText, contentAssistRequest.getStartOffset(),
 										contentAssistRequest.getRegion().getTextLength(),
 										replacementText.length(), image, displayText, null,
 										proposedInfo, XMLRelevanceConstants.R_END_TAG_NAME);
 							}
 							else {
-								proposal = new CustomCompletionProposal(
+								proposal = new MarkupCompletionProposal(
 										replacementText,
 										contentAssistRequest.getReplacementBeginPosition(),
 										contentAssistRequest.getReplacementLength(),
@@ -631,7 +631,7 @@
 			setErrorMessage(XMLUIMessages.Content_Assist_not_availab_UI_);
 		}
 		if (addProposal == true) {
-			CustomCompletionProposal proposal = new CustomCompletionProposal(replaceText, replaceBegin, replaceLength, cursorOffset, image, displayString, null, proposedInfo, XMLRelevanceConstants.R_END_TAG);
+			CustomCompletionProposal proposal = new MarkupCompletionProposal(replaceText, replaceBegin, replaceLength, cursorOffset, image, displayString, null, proposedInfo, XMLRelevanceConstants.R_END_TAG);
 			contentAssistRequest.addProposal(proposal);
 		}
 	}
@@ -749,7 +749,7 @@
 					// prompt with a self-closing end character if needed
 					// this is one of the few times to ignore the length -- always insert
 					// contentAssistRequest.getReplacementLength()
-					CustomCompletionProposal proposal = new CustomCompletionProposal(
+					CustomCompletionProposal proposal = new MarkupCompletionProposal(
 							getContentGenerator().getStartTagClose(node, elementDecl),
 							contentAssistRequest.getReplacementBeginPosition(), 0,
 							getContentGenerator().getStartTagClose(node, elementDecl).length(), image,
@@ -759,7 +759,7 @@
 				}
 				else {
 					// prompt with a close for the start tag
-					CustomCompletionProposal proposal = new CustomCompletionProposal(">", //$NON-NLS-1$
+					CustomCompletionProposal proposal = new MarkupCompletionProposal(">", //$NON-NLS-1$
 								contentAssistRequest.getReplacementBeginPosition(),
 								// this is one of the few times to ignore the
 								// length -- always insert
@@ -775,7 +775,7 @@
 						IStructuredDocumentRegion sdr = contentAssistRequest.getDocumentRegion();
 						String openingTagText = (sdr != null) ? sdr.getFullText() : ""; //$NON-NLS-1$
 						if ((openingTagText != null) && (openingTagText.indexOf(node.getNodeName()) != -1)) {
-							proposal = new CustomCompletionProposal("></" + node.getNodeName() + ">", //$NON-NLS-2$//$NON-NLS-1$
+							proposal = new MarkupCompletionProposal("></" + node.getNodeName() + ">", //$NON-NLS-2$//$NON-NLS-1$
 										contentAssistRequest.getReplacementBeginPosition(),
 										// this is one of the few times to
 										// ignore the length -- always insert
@@ -786,7 +786,7 @@
 					}
 					// prompt with slash bracket "/>" incase if it's a self ending tag
 					if (endWithSlashBracket) {
-						proposal = new CustomCompletionProposal("/>", //$NON-NLS-1$
+						proposal = new MarkupCompletionProposal("/>", //$NON-NLS-1$
 									contentAssistRequest.getReplacementBeginPosition(),
 									// this is one of the few times to ignore
 									// the length -- always insert
@@ -801,7 +801,7 @@
 			else if ((contentAssistRequest.getDocumentRegion() == node.getLastStructuredDocumentRegion()) && !node.getLastStructuredDocumentRegion().isEnded()) {
 				setErrorMessage(null);
 				// prompt with a closing end character for the end tag
-				CustomCompletionProposal proposal = new CustomCompletionProposal(">", //$NON-NLS-1$
+				CustomCompletionProposal proposal = new MarkupCompletionProposal(">", //$NON-NLS-1$
 							contentAssistRequest.getReplacementBeginPosition(),
 							// this is one of the few times to ignore the length -- always insert
 							// contentAssistRequest.getReplacementLength(),
@@ -865,7 +865,7 @@
 						String proposedInfo = getAdditionalInfo(parentDecl, childType);
 						for (int i = 0; i < childStrings.length; i++) {
 							if(!childStrings[i].equals(defaultValue)) {
-								CustomCompletionProposal textProposal = new CustomCompletionProposal(
+								CustomCompletionProposal textProposal = new MarkupCompletionProposal(
 										childStrings[i],begin, length, childStrings[i].length(),
 										XMLEditorPluginImageHelper.getInstance().getImage(XMLEditorPluginImages.IMG_OBJ_ENUM),
 										childStrings[i], null, proposedInfo, XMLRelevanceConstants.R_TAG_INSERTION);
@@ -873,7 +873,7 @@
 							}
 						}
 						if(defaultValue != null) {
-							CustomCompletionProposal textProposal = new CustomCompletionProposal(
+							CustomCompletionProposal textProposal = new MarkupCompletionProposal(
 									defaultValue, begin, length, defaultValue.length(),
 									XMLEditorPluginImageHelper.getInstance().getImage(XMLEditorPluginImages.IMG_OBJ_DEFAULT),
 									defaultValue, null, proposedInfo, XMLRelevanceConstants.R_TAG_INSERTION);
@@ -940,7 +940,7 @@
 
 							String proposedInfo = getAdditionalInfo(parentDecl, elementDecl);
 							int relevance = isStrictCMNodeSuggestion ? XMLRelevanceConstants.R_STRICTLY_VALID_TAG_INSERTION : XMLRelevanceConstants.R_TAG_INSERTION;
-							CustomCompletionProposal proposal = new CustomCompletionProposal(
+							CustomCompletionProposal proposal = new MarkupCompletionProposal(
 									proposedText, contentAssistRequest.getReplacementBeginPosition(),
 									contentAssistRequest.getReplacementLength(), markupAdjustment,
 									image, tagname, null, proposedInfo, relevance);
@@ -1000,7 +1000,7 @@
 						// account for the &lt; and &gt;
 						int markupAdjustment = getContentGenerator().getMinimalStartTagLength(parent, ed);
 						String proposedInfo = getAdditionalInfo(null, ed);
-						CustomCompletionProposal proposal = new CustomCompletionProposal(
+						CustomCompletionProposal proposal = new MarkupCompletionProposal(
 								proposedText, contentAssistRequest.getReplacementBeginPosition(),
 								contentAssistRequest.getReplacementLength(), markupAdjustment, image,
 								tagname, null, proposedInfo, XMLRelevanceConstants.R_TAG_INSERTION);
@@ -1088,7 +1088,7 @@
 						}
 						int relevance = isStrictCMNodeSuggestion ? XMLRelevanceConstants.R_STRICTLY_VALID_TAG_NAME : XMLRelevanceConstants.R_TAG_NAME;
 						String proposedInfo = getAdditionalInfo(getCMElementDeclaration(parent), elementDecl);
-						CustomCompletionProposal proposal = new CustomCompletionProposal(
+						CustomCompletionProposal proposal = new MarkupCompletionProposal(
 								proposedText, contentAssistRequest.getReplacementBeginPosition(),
 								contentAssistRequest.getReplacementLength(), cursorAdjustment, image,
 								getRequiredName(parent, elementDecl), null, proposedInfo,
@@ -1144,7 +1144,7 @@
 					if (image == null) {
 						image = this.getGenericTagImage();
 					}
-					CustomCompletionProposal proposal = new CustomCompletionProposal(
+					CustomCompletionProposal proposal = new MarkupCompletionProposal(
 							proposedText, contentAssistRequest.getReplacementBeginPosition(),
 							contentAssistRequest.getReplacementLength(), cursorAdjustment, image,
 							getRequiredName(parent, ed), null, proposedInfo, XMLRelevanceConstants.R_TAG_NAME);
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/CustomTemplateProposal.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/CustomTemplateProposal.java
index f19dd90..81de306 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/CustomTemplateProposal.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/CustomTemplateProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
 package org.eclipse.wst.xml.ui.internal.contentassist;
 
 import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension4;
 import org.eclipse.jface.text.templates.Template;
 import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.jface.text.templates.TemplateProposal;
@@ -23,7 +24,7 @@
  * Purpose of this class is to make the additional proposal info into content
  * fit for an HTML viewer (by escaping characters)
  */
-class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal {
+class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal, ICompletionProposalExtension4 {
 	// copies of this class exist in:
 	// org.eclipse.jst.jsp.ui.internal.contentassist
 	// org.eclipse.wst.html.ui.internal.contentassist
@@ -37,4 +38,8 @@
 		String additionalInfo = super.getAdditionalProposalInfo();
 		return StringUtils.convertToHTMLContent(additionalInfo);
 	}
+
+	public boolean isAutoInsertable() {
+		return false;
+	}
 }
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/MarkupCompletionProposal.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/MarkupCompletionProposal.java
new file mode 100644
index 0000000..e6ddf18
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/MarkupCompletionProposal.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.xml.ui.internal.contentassist;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.jface.text.link.LinkedModeUI;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.jface.text.link.LinkedPositionGroup;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
+import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
+import org.eclipse.wst.xml.ui.internal.Logger;
+
+/**
+ * A completion proposal that is capable of establishing linked positions within
+ * inserted markup. 
+ *
+ */
+public class MarkupCompletionProposal extends CustomCompletionProposal {
+
+	private IRegion fSelectedRegion = null;
+
+	public MarkupCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int relevance) {
+		super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo, relevance);
+	}
+
+	public MarkupCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int relevance, boolean updateReplacementLengthOnValidate) {
+		super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, null, contextInformation, additionalProposalInfo, relevance, updateReplacementLengthOnValidate);
+	}
+
+	public MarkupCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, String alternateMatch, IContextInformation contextInformation, String additionalProposalInfo, int relevance, boolean updateReplacementLengthOnValidate) {
+		super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, alternateMatch, contextInformation, additionalProposalInfo, relevance, updateReplacementLengthOnValidate);
+	}
+
+	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
+		super.apply(viewer, trigger, stateMask, offset);
+
+		getLinkedPositions(viewer);
+	}
+
+	/**
+	 * Sets up linked positions and installs them on the viewer.
+	 * 
+	 */
+	protected void getLinkedPositions(ITextViewer viewer) {
+		final String replacement = getReplacementString();
+		final IDocument document = viewer.getDocument();
+		final int length = replacement.length();
+		boolean inAttribute = false, hasGroup = false;
+		int offset = 0;
+		char attType = 0;
+		int exitPosition = -1;
+		LinkedModeModel model = new LinkedModeModel();
+
+		try {
+			for (int i = 0; i < length; i++) {
+				final char c = replacement.charAt(i);
+				switch (c) {
+					case '=':
+						break;
+					case '\'':
+					case '\"':
+						if (!inAttribute) {
+							offset = i;
+							attType = c;
+							inAttribute = true;
+						}
+						else {
+							// Found matching quotes establishing an attribute value region
+							if (attType == c && replacement.charAt(i - 1) != '\\') {
+								inAttribute = false; // Record position length
+								addPosition(model, document, getReplacementOffset() + offset + 1, i - offset - 1);
+								hasGroup = true;
+							}
+						}
+						break;
+					case '>':
+						if (!inAttribute && exitPosition == -1) {
+							exitPosition = getReplacementOffset() + i + 1;
+						}
+						break;
+				}
+			}
+			if (hasGroup) {
+				model.forceInstall();
+				final LinkedModeUI ui= new EditorLinkedModeUI(model, viewer);
+				ui.setExitPosition(viewer, exitPosition < 0 ? getReplacementOffset() + getReplacementLength() + replacement.length() - 1 : exitPosition, 0, Integer.MAX_VALUE);
+				ui.setCyclingMode(LinkedModeUI.CYCLE_WHEN_NO_PARENT);
+				ui.setDoContextInfo(true);
+				ui.enter();
+				fSelectedRegion = ui.getSelectedRegion();
+			}
+		}
+		catch (BadLocationException e) {
+			Logger.logException(e);
+		}
+	}
+
+	/**
+	 * Adds a {@link LinkedPosition} to its own position group. This group is then added to the model
+	 * @param model the linked model for this proposal
+	 * @param document the document the content assist is operating upon
+	 * @param offset the offset to establish the {@link LinkedPosition}
+	 * @param length the length of the {@link LinkedPosition}
+	 * @throws BadLocationException
+	 */
+	private void addPosition(LinkedModeModel model, IDocument document, int offset, int length) throws BadLocationException {
+		final LinkedPositionGroup group = new LinkedPositionGroup();
+		group.addPosition(new LinkedPosition(document, offset, length, LinkedPositionGroup.NO_STOP));
+		model.addGroup(group);
+	}
+
+	public Point getSelection(IDocument document) {
+		// Attempt to return the selection based on the selected region from the LinkedModeUI
+		if (fSelectedRegion == null)
+			return super.getSelection(document);
+		return new Point(fSelectedRegion.getOffset(), fSelectedRegion.getLength());
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
index c36673f..0608f0f 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Standards for Technology in Automotive Retail and others.
+ * Copyright (c) 2008, 2012 Standards for Technology in Automotive Retail and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,7 +7,7 @@
  *
  * Contributors:
  *     David Carver - initial API and implementation, bug 212330
- *     
+ *     IBM Corporation - http://bugs.eclipse.org/373701
  *******************************************************************************/
 package org.eclipse.wst.xml.ui.internal.handlers;
 
@@ -126,12 +126,10 @@
 	public void setAppearanceForEditMode(int editMode, UIElement element) {
 		if (editMode == ModelQuery.EDIT_MODE_CONSTRAINED_STRICT) {
 			element.setTooltip(XMLEditorMessages.XMLTableTreeActionBarContributor_3);
-			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_3);
 			element.setIcon(onImage);
 		}
 		else {
 			element.setTooltip(XMLEditorMessages.XMLTableTreeActionBarContributor_5);
-			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_5);
 			element.setIcon(offImage);
 		}
 	}
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
index 28338d4..740ac59 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * Copyright (c) 2010, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -54,13 +54,16 @@
 	
 	/** configuration block for changing preference having to do with the content assist categories */
 	private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
-	
+
+	private Button fInsertSingleProposals;
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage#createContents(org.eclipse.swt.widgets.Composite)
 	 */
 	protected Control createContents(Composite parent) {
 		final Composite composite = super.createComposite(parent, 1);
 		
+		createContentsForInsertionGroup(composite);
 		createContentsForAutoActivationGroup(composite);
 		createContentsForCyclingGroup(composite);
 		
@@ -76,6 +79,7 @@
 	protected void performDefaults() {
 		performDefaultsForAutoActivationGroup();
 		performDefaultsForCyclingGroup();
+		performDefaultsForInsertionGroup();
 
 		validateValues();
 		enableValues();
@@ -89,6 +93,7 @@
 	protected void initializeValues() {
 		initializeValuesForAutoActivationGroup();
 		initializeValuesForCyclingGroup();
+		initializeValuesForInsertionGroup();
 	}
 	
 	/**
@@ -97,6 +102,7 @@
 	protected void storeValues() {
 		storeValuesForAutoActivationGroup();
 		storeValuesForCyclingGroup();
+		storeValuesForInsertionGroup();
 	}
 	
 	/**
@@ -187,6 +193,15 @@
 		}
 	}
 	
+	private void createContentsForInsertionGroup(Composite composite) {
+		Group group = createGroup(composite, 2);
+		
+		group.setText(XMLUIMessages.Group_label_Insertion);
+		
+		fInsertSingleProposals = createCheckBox(group, XMLUIMessages.Insert_single_proposals);
+		((GridData) fInsertSingleProposals.getLayoutData()).horizontalSpan = 2;
+	}
+
 	/**
 	 * <p>Create the contents for the content assist cycling preference group</p>
 	 * @param parent {@link Composite} parent of the group
@@ -222,7 +237,11 @@
 			fConfigurationBlock.storeValues();
 		}
 	}
-	
+
+	private void storeValuesForInsertionGroup() {
+		getPreferenceStore().setValue(XMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION, (fInsertSingleProposals != null) ? fInsertSingleProposals.getSelection() : false);
+	}
+
 	/**
 	 * <p>Initialize the values for the auto activation group</p>
 	 */
@@ -247,7 +266,11 @@
 			fConfigurationBlock.initializeValues();
 		}
 	}
-	
+
+	private void initializeValuesForInsertionGroup() {
+		initCheckbox(fInsertSingleProposals, XMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
+	}
+
 	/**
 	 * <p>Load the defaults for the auto activation group</p>
 	 */
@@ -272,7 +295,11 @@
 			fConfigurationBlock.performDefaults();
 		}
 	}
-	
+
+	private void performDefaultsForInsertionGroup() {
+		defaultCheckbox(fInsertSingleProposals, XMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION);
+	}
+
 	/**
 	 * Return the currently selected suggestion strategy preference
 	 * 
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceInitializer.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceInitializer.java
index ce65015..2464218 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,6 +34,7 @@
 		IPreferenceStore store = XMLUIPlugin.getDefault().getPreferenceStore();
 		ColorRegistry registry = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry();
 
+		store.setDefault(XMLUIPreferenceNames.INSERT_SINGLE_SUGGESTION, true);
 		store.setDefault(XMLUIPreferenceNames.AUTO_PROPOSE, true);
 		store.setDefault(XMLUIPreferenceNames.AUTO_PROPOSE_CODE, "<=:"); //$NON-NLS-1$
 		store.setDefault(XMLUIPreferenceNames.AUTO_PROPOSE_DELAY, 500);
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceNames.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceNames.java
index 83f1278..6c430ff 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceNames.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLUIPreferenceNames.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -212,4 +212,12 @@
 	 * character (<tt>\0</tt>) in the desired sort order.</p>
 	 */
 	public static final String CONTENT_ASSIST_DEFAULT_PAGE_SORT_ORDER= "xml_content_assist_default_page_sort_order"; //$NON-NLS-1$
+
+	/**
+	 * <p>preference key to store the option for auto insertion of single suggestions</p>
+	 * <p>
+	 * Value is of type <code>boolean</code>
+	 * </p>
+	 */
+	public static final String INSERT_SINGLE_SUGGESTION = "insertSingleSuggestion"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.wst.xsd.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.xsd.core/.settings/org.eclipse.jdt.core.prefs
index ab5558f..bad89ad 100644
--- a/bundles/org.eclipse.wst.xsd.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.xsd.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Sat Mar 24 02:19:12 EDT 2007
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -7,32 +6,37 @@
 org.eclipse.jdt.core.circularClasspath=error
 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.compliance=1.5
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
 org.eclipse.jdt.core.compiler.problem.deprecation=ignore
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
 org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
@@ -40,6 +44,7 @@
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
 org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
@@ -47,17 +52,30 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=error
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
@@ -65,15 +83,20 @@
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=error
 org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.source=1.4
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.xsd.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xsd.core/META-INF/MANIFEST.MF
index 4d3101f..1a86239 100644
--- a/bundles/org.eclipse.wst.xsd.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xsd.core/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.wst.xsd.core.internal.validation;x-internal:=true,
  org.eclipse.wst.xsd.core.internal.validation.eclipse;x-internal:=true 
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.xsd;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,1.3.0)",
diff --git a/bundles/org.eclipse.wst.xsd.core/src-contentmodel/org/eclipse/wst/xsd/contentmodel/internal/XSDImpl.java b/bundles/org.eclipse.wst.xsd.core/src-contentmodel/org/eclipse/wst/xsd/contentmodel/internal/XSDImpl.java
index 9abdc21..251b8a0 100644
--- a/bundles/org.eclipse.wst.xsd.core/src-contentmodel/org/eclipse/wst/xsd/contentmodel/internal/XSDImpl.java
+++ b/bundles/org.eclipse.wst.xsd.core/src-contentmodel/org/eclipse/wst/xsd/contentmodel/internal/XSDImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2009 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
@@ -130,6 +131,7 @@
    */
   public static final String PROPERTY_XSITYPES = "XSITypes";
   public static final String PROPERTY_DERIVED_ELEMENT_DECLARATION = "DerivedElementDeclaration";
+  public static final String PROPERTY_EXTERNALLY_DERIVED_ELEMENT_DECLARATION = "ExternallyDerivedElementDeclaration";
   public static final String PROPERTY_SUBSTITUTION_GROUP = "SubstitutionGroup";
   public static final String PROPERTY_SUBSTITUTION_GROUP_VALUE = "SubstitutionGroupValue";
   public static final String PROPERTY_ABSTRACT = "Abstract";
@@ -1648,7 +1650,7 @@
     public boolean supports(String propertyName)
     {
       return propertyName.equals(PROPERTY_XSITYPES) || propertyName.equals(PROPERTY_DERIVED_ELEMENT_DECLARATION) || propertyName.equals(PROPERTY_SUBSTITUTION_GROUP)
-          || propertyName.equals(PROPERTY_ABSTRACT) || super.supports(propertyName);
+          || propertyName.equals(PROPERTY_ABSTRACT) || propertyName.equals(PROPERTY_EXTERNALLY_DERIVED_ELEMENT_DECLARATION) || super.supports(propertyName);
     }
 
     /**
@@ -1874,6 +1876,15 @@
           result = getDerivedElementDeclaration(uriQualifiedTypeName);
         }
       }
+      else if (propertyName.startsWith(PROPERTY_EXTERNALLY_DERIVED_ELEMENT_DECLARATION))
+      {
+          int index = propertyName.indexOf("=");
+          if (index != -1)
+          {
+            String reference = propertyName.substring(index + 1);
+            result = getExternallyDerivedElementDeclaration(reference);
+          }
+      }
       else if (propertyName.equals(PROPERTY_SUBSTITUTION_GROUP))
       {
         return getSubstitutionGroup();
@@ -1997,6 +2008,12 @@
      * @return corresponding element declaration.
      */
     protected abstract CMElementDeclaration getDerivedElementDeclaration(String uriQualifiedTypeName);
+    
+    
+    protected CMElementDeclaration getExternallyDerivedElementDeclaration(String reference)
+    {
+    	return null;
+    }
 
     /**
      * Returns a list of documentation elements.
@@ -2199,6 +2216,7 @@
   public static class XSDElementDeclarationAdapter extends ElementDeclarationBaseImpl
   {
     protected List derivedElementDeclarations = null;
+    protected Map externallyDerivedElementDeclarationsMap = new HashMap();
     protected List xsiTypes = null;
     protected XSDElementDeclaration xsdElementDeclaration;
     protected CMNodeListImpl substitutionGroup;
@@ -2387,6 +2405,72 @@
       }
       return result;
     }
+    
+    protected CMElementDeclaration getExternallyDerivedElementDeclaration(String reference) {
+    	Object declaration = externallyDerivedElementDeclarationsMap.get(reference);
+    	if(declaration instanceof CMElementDeclaration)
+    	{
+    		return (CMElementDeclaration)declaration;
+    	}
+    	String schemaLocation = null;
+    	String xsiType = null;
+    	if(reference != null)
+    	{
+    		int index = reference.indexOf("]"); //$NON-NLS-1$
+    		if(index != -1)
+    		{
+    			schemaLocation = reference.substring(1, index);
+    			xsiType = reference.substring(index + 1);
+    		}
+    	}
+    	if(schemaLocation != null && xsiType != null)
+    	{
+    		XSDResourceImpl resource = null;
+    		try
+    		{       
+    			XSDTypeDefinition baseType = getXSDType();
+    			String baseTypeNamespace = getXSDElementDeclaration().getSchema().getTargetNamespace();
+    			ResourceSet resourceSet = new ResourceSetImpl();
+    			resourceSet.getAdapterFactories().add(new XSDSchemaLocatorAdapterFactory());
+    			InputStream inputStream = resourceSet.getURIConverter().createInputStream(URI.createURI(schemaLocation));
+    			resource = (XSDResourceImpl)resourceSet.createResource(URI.createURI("*.xsd")); //$NON-NLS-1$
+    			resource.setURI(createURI(schemaLocation));
+    			resource.load(inputStream, null);         
+    			XSDSchema xsdSchema = resource.getSchema();
+    			if(xsdSchema != null && baseType != null && xsiType != null)
+    			{
+    				String typeName = baseType.getName();
+    				List typeDefinitions = xsdSchema.getTypeDefinitions();
+    				Iterator iterator = typeDefinitions.iterator();
+    				while(iterator.hasNext())
+    				{
+    					Object object = iterator.next();
+    					if(object instanceof XSDComplexTypeDefinition)
+    					{
+    						XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)object;	        			 
+    						if(xsiType.equals(xsdComplexTypeDefinition.getName()) && isTypeDerivedFrom(xsdComplexTypeDefinition, baseTypeNamespace, typeName))
+    						{
+    							DerivedElementDeclarationImpl derivedElementDeclaration = new DerivedElementDeclarationImpl(this, xsdComplexTypeDefinition, reference);
+    							externallyDerivedElementDeclarationsMap.put(reference, derivedElementDeclaration);
+    							return derivedElementDeclaration;
+    						}
+    					}
+    				}
+    			}
+    		} catch(Exception exception)
+    		{
+    			// Do nothing
+    		}
+    		finally
+    		{
+    			if(resource != null && resource.isLoaded())
+    			{
+    				resource.unload();
+    			}
+    		}
+    	}
+    	return null;
+    }
 
     /**
      * Returns the substitution group for this element. The group consists of:
@@ -2497,6 +2581,11 @@
     {
       return owner.getDerivedElementDeclaration(uriQualifiedTypeName);
     }
+    
+    protected CMElementDeclaration getExternallyDerivedElementDeclaration(String reference)
+    {
+    	return owner.getDerivedElementDeclaration(reference);
+    }
 
     /**
      * Returns the referenced element declaration if this is an element
diff --git a/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.core.prefs
index 95c882e..466ecc9 100644
--- a/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.core.prefs
@@ -32,7 +32,7 @@
 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

 org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore

 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled

 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled

diff --git a/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..d211d32
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.pde.prefs
index 061cd53..c0a9540 100644
--- a/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.wst.xsd.ui/.settings/org.eclipse.pde.prefs
@@ -1,16 +1,35 @@
-#Mon Apr 17 02:01:33 EDT 2006

+compilers.f.unresolved-features=1

+compilers.f.unresolved-plugins=1

 compilers.incompatible-environment=0

 compilers.p.build=0

+compilers.p.build.bin.includes=1

+compilers.p.build.encodings=2

+compilers.p.build.java.compiler=2

+compilers.p.build.java.compliance=1

+compilers.p.build.missing.output=2

+compilers.p.build.output.library=1

+compilers.p.build.source.library=1

+compilers.p.build.src.includes=1

 compilers.p.deprecated=1

+compilers.p.discouraged-class=1

 compilers.p.illegal-att-value=0

+compilers.p.internal=1

+compilers.p.missing-packages=2

+compilers.p.missing-version-export-package=2

+compilers.p.missing-version-import-package=2

+compilers.p.missing-version-require-bundle=2

 compilers.p.no-required-att=0

 compilers.p.not-externalized-att=0

 compilers.p.unknown-attribute=0

 compilers.p.unknown-class=0

 compilers.p.unknown-element=0

+compilers.p.unknown-identifier=1

 compilers.p.unknown-resource=0

 compilers.p.unresolved-ex-points=0

 compilers.p.unresolved-import=0

 compilers.p.unused-element-or-attribute=0

+compilers.s.create-docs=false

+compilers.s.doc-folder=doc

+compilers.s.open-tags=1

 compilers.use-project=true

 eclipse.preferences.version=1

diff --git a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
index 74437c9..e3b9f49 100644
--- a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_UI_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.xsd.ui; singleton:=true
-Bundle-Version: 1.2.404.qualifier
+Bundle-Version: 1.2.500.qualifier
 Bundle-Activator: org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
@@ -60,7 +60,7 @@
  org.eclipse.wst.xsd.ui.internal.wizards;x-internal:=true
 Require-Bundle: org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.sse.ui;bundle-version="[1.2.0,1.4.0)",
  org.eclipse.wst.sse.core;bundle-version="[1.1.300,1.2.0)",
  org.eclipse.wst.common.core;bundle-version="[1.1.0,1.3.0)",
diff --git a/development/org.eclipse.wst.sse.unittests/.classpath b/development/org.eclipse.wst.sse.unittests/.classpath
deleted file mode 100644
index bfb3353..0000000
--- a/development/org.eclipse.wst.sse.unittests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/development/org.eclipse.wst.sse.unittests/.cvsignore b/development/org.eclipse.wst.sse.unittests/.cvsignore
deleted file mode 100644
index 9fc9cb0..0000000
--- a/development/org.eclipse.wst.sse.unittests/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-bin
-build.xml
-ssejunit.jar
-temp.folder
diff --git a/development/org.eclipse.wst.sse.unittests/.project b/development/org.eclipse.wst.sse.unittests/.project
deleted file mode 100644
index e6f5109..0000000
--- a/development/org.eclipse.wst.sse.unittests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.sse.unittests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.core.resources.prefs b/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index afa5c91..0000000
--- a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.core.prefs b/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2dd8b5c..0000000
--- a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,80 +0,0 @@
-#Sun Apr 16 14:37:21 EDT 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.ui.prefs b/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index ef2ac65..0000000
--- a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:39 EDT 2006
-eclipse.preferences.version=1
-internal.default.compliance=default
diff --git a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.ltk.core.refactoring.prefs b/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index c59368c..0000000
--- a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.pde.prefs b/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index f724958..0000000
--- a/development/org.eclipse.wst.sse.unittests/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,15 +0,0 @@
-#Sun Apr 16 14:05:29 EDT 2006
-compilers.p.build=0
-compilers.p.deprecated=1
-compilers.p.illegal-att-value=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=0
-compilers.p.unknown-element=0
-compilers.p.unknown-resource=0
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=0
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/development/org.eclipse.wst.sse.unittests/META-INF/MANIFEST.MF b/development/org.eclipse.wst.sse.unittests/META-INF/MANIFEST.MF
deleted file mode 100644
index 25d4679..0000000
--- a/development/org.eclipse.wst.sse.unittests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,44 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.wst.sse.unittests; singleton:=true
-Bundle-Version: 0.7.0
-Bundle-ClassPath: .
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.sse.unittests,
- org.eclipse.wst.sse.unittests.minortools
-Require-Bundle: org.junit;bundle-version="3.8.0",
- org.eclipse.core.runtime,
- org.eclipse.wst.css.tests.encoding;resolution:=optional,
- org.eclipse.wst.css.core.tests;resolution:=optional,
- org.eclipse.wst.css.ui.tests;resolution:=optional,
- org.eclipse.wst.dtd.core.tests;resolution:=optional,
- org.eclipse.wst.dtd.ui.tests;resolution:=optional,
- org.eclipse.wst.html.core.tests;resolution:=optional,
- org.eclipse.wst.html.tests.encoding;resolution:=optional,
- org.eclipse.wst.html.ui.tests;resolution:=optional,
- org.eclipse.wst.sse.core.tests;resolution:=optional,
- org.eclipse.wst.sse.ui.tests;resolution:=optional,
- org.eclipse.wst.xml.core.tests;resolution:=optional,
- org.eclipse.wst.xml.tests.encoding;resolution:=optional,
- org.eclipse.wst.xml.validation.tests;resolution:=optional,
- org.eclipse.wst.xsd.validation.tests;resolution:=optional,
- org.eclipse.wst.css.ui.tests;resolution:=optional,
- org.eclipse.wst.sse.ui;resolution:=optional,
- org.eclipse.wst.xml.ui;resolution:=optional,
- org.eclipse.wst.xml.ui.tests;resolution:=optional,
- org.eclipse.jst.jsp.core.tests;resolution:=optional,
- org.eclipse.jst.jsp.tests.encoding;resolution:=optional,
- org.eclipse.jst.jsp.ui.tests;resolution:=optional,
- org.eclipse.wst.xsd.core.tests;resolution:=optional,
- org.eclipse.wst.xsd.ui.tests;resolution:=optional,
- org.eclipse.wst.xsl.tests;resolution:=optional,
- org.eclipse.wst.jsdt.core.tests.compiler;resolution:=optional,
- org.eclipse.wst.jsdt.core.tests.model;resolution:=optional,
- org.eclipse.wst.jsdt.ui.tests;resolution:=optional,
- org.eclipse.wst.jsdt.web.core.tests;resolution:=optional,
- org.eclipse.wst.jsdt.web.ui.tests;resolution:=optional
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-ActivationPolicy: lazy
-Eclipse-LazyStart: true
diff --git a/development/org.eclipse.wst.sse.unittests/SSE Master List Test Suite.launch b/development/org.eclipse.wst.sse.unittests/SSE Master List Test Suite.launch
deleted file mode 100644
index 582c9ca..0000000
--- a/development/org.eclipse.wst.sse.unittests/SSE Master List Test Suite.launch
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/SSE Master List Test Suite"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/MasterListTestSuite.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.wst.sse.unittests.MasterListTestSuite"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -showLocation -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.wst.sse.unittests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms100M -Xmx600M -XX:MaxPermSize=192M"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-</launchConfiguration>
diff --git a/development/org.eclipse.wst.sse.unittests/build.properties b/development/org.eclipse.wst.sse.unittests/build.properties
deleted file mode 100644
index bde1454..0000000
--- a/development/org.eclipse.wst.sse.unittests/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               plugin.properties
-source.. = src/
diff --git a/development/org.eclipse.wst.sse.unittests/icons/sourceEditor.gif b/development/org.eclipse.wst.sse.unittests/icons/sourceEditor.gif
deleted file mode 100644
index 75ebdb8..0000000
--- a/development/org.eclipse.wst.sse.unittests/icons/sourceEditor.gif
+++ /dev/null
Binary files differ
diff --git a/development/org.eclipse.wst.sse.unittests/plugin.properties b/development/org.eclipse.wst.sse.unittests/plugin.properties
deleted file mode 100644
index 8c4370b..0000000
--- a/development/org.eclipse.wst.sse.unittests/plugin.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2001, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-#     
-###############################################################################
-XML_Source_Page_Editor.name=XML Source Page Editor
-JavaScript_Source_Page_Editor.name=JavaScript Source Page Editor
-
-Bundle-Vendor.0 = Eclipse.org
-Bundle-Name.0 = Unit Tests
-additionalTests=Additional TestCases and TestSuites
\ No newline at end of file
diff --git a/development/org.eclipse.wst.sse.unittests/plugin.xml b/development/org.eclipse.wst.sse.unittests/plugin.xml
deleted file mode 100644
index 6dd4917..0000000
--- a/development/org.eclipse.wst.sse.unittests/plugin.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-        <extension point="org.eclipse.ui.editors">
-                <editor
-                        name="%XML_Source_Page_Editor.name"
-                        icon="icons/sourceEditor.gif"
-                        contributorClass="org.eclipse.wst.xml.ui.internal.actions.ActionContributorXML"
-                        class="org.eclipse.wst.sse.ui.StructuredTextEditor"
-                        symbolicFontName="org.eclipse.wst.sse.ui.textfont"
-                        id="org.eclipse.core.runtime.xml.source">
-                        <contentTypeBinding
-                                contentTypeId="org.eclipse.core.runtime.xml" />
-                        <contentTypeBinding
-                                contentTypeId="org.eclipse.wst.xml.core.xmlsource" />
-                </editor>
-        </extension>
-
-	<extension-point id="additionalTests" name="%additionalTests" schema="schema/additionalTests.exsd"/>
-
-</plugin>
diff --git a/development/org.eclipse.wst.sse.unittests/schema/additionalTests.exsd b/development/org.eclipse.wst.sse.unittests/schema/additionalTests.exsd
deleted file mode 100644
index e0e5893..0000000
--- a/development/org.eclipse.wst.sse.unittests/schema/additionalTests.exsd
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.sse.unittests">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.sse.unittests" id="additionalTests" name="%additionalTests"/>
-      </appInfo>
-      <documentation>
-         This extension point provides a way to add extra test cases and suites to the already running list without declaring a runtime dependency in this plug-in.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice minOccurs="0" maxOccurs="unbounded">
-            <element ref="test"/>
-            <element ref="suite"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="test">
-      <annotation>
-         <documentation>
-            Adds an individual Test case to run.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The Test class name.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="junit.framework.Test:"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="suite">
-      <annotation>
-         <documentation>
-            Adds a TestSuite to run.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The TestSuite class name.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="junit.framework.TestSuite:"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-
-</schema>
diff --git a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/MasterListTestSuite.java b/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/MasterListTestSuite.java
deleted file mode 100644
index 97cb8ca..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/MasterListTestSuite.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * 
- * All rights reserved. This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License v1.0 which
- * accompanies  this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- * 
- ****************************************************************************/
-
-package org.eclipse.wst.sse.unittests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsp.core.tests.JSPCoreTestSuite;
-import org.eclipse.jst.jsp.tests.encoding.JSPEncodingTestSuite;
-import org.eclipse.jst.jsp.ui.tests.JSPUITestSuite;
-import org.eclipse.wst.css.core.tests.CSSCoreTestSuite;
-import org.eclipse.wst.css.tests.encoding.CSSEncodingTestSuite;
-import org.eclipse.wst.css.ui.tests.CSSUITestSuite;
-import org.eclipse.wst.dtd.core.tests.DTDCoreTestSuite;
-import org.eclipse.wst.dtd.ui.tests.DTDUITestSuite;
-import org.eclipse.wst.html.core.tests.HTMLCoreTestSuite;
-import org.eclipse.wst.html.tests.encoding.HTMLEncodingTestSuite;
-import org.eclipse.wst.html.ui.tests.HTMLUITestSuite;
-import org.eclipse.wst.jsdt.core.tests.RunJSDTCoreTests;
-import org.eclipse.wst.jsdt.core.tests.compiler.JSDTCompilerTests;
-import org.eclipse.wst.jsdt.ui.tests.JSDTUITests;
-import org.eclipse.wst.jsdt.web.core.tests.AllWebCoreTests;
-import org.eclipse.wst.jsdt.web.ui.tests.AllWebUITests;
-import org.eclipse.wst.sse.core.tests.SSEModelTestSuite;
-import org.eclipse.wst.sse.ui.tests.SSEUITestSuite;
-import org.eclipse.wst.xml.core.tests.SSEModelXMLTestSuite;
-import org.eclipse.wst.xml.tests.encoding.EncodingTestSuite;
-import org.eclipse.wst.xml.ui.tests.XMLUITestSuite;
-import org.eclipse.wst.xml.validation.tests.internal.AllXMLTests;
-import org.eclipse.wst.xsd.core.tests.internal.AllXSDCoreTests;
-import org.eclipse.wst.xsd.validation.tests.internal.AllXSDTests;
-
-public class MasterListTestSuite extends TestSuite {
-	private static final String CLASS = "class";
-	private static final String EXTENSION_POINT_ID = "org.eclipse.wst.sse.unittests.additionalTests";
-
-	public MasterListTestSuite() {
-		super("WTP Source Editing Master List Test Suite");
-
-		System.setProperty("wtp.autotest.noninteractive", "true");
-
-		addTest(SSEModelTestSuite.suite());
-
-		addTest(SSEModelXMLTestSuite.suite());
-		addTest(DTDCoreTestSuite.suite());
-		addTest(AllXSDCoreTests.suite());
-		addTest(CSSCoreTestSuite.suite());
-		addTest(HTMLCoreTestSuite.suite());
-		addTest(JSPCoreTestSuite.suite());
-
-		addTest(EncodingTestSuite.suite());
-		addTest(CSSEncodingTestSuite.suite());
-		addTest(HTMLEncodingTestSuite.suite());
-		addTest(JSPEncodingTestSuite.suite());
-
-		addTest(AllXMLTests.suite());
-		addTest(AllXSDTests.suite());
-
-		addTest(SSEUITestSuite.suite());
-		addTest(XMLUITestSuite.suite());
-		addTest(DTDUITestSuite.suite());
-		addTest(CSSUITestSuite.suite());
-		addTest(HTMLUITestSuite.suite());
-		addTest(JSPUITestSuite.suite());
-		
-		addTest(RunJSDTCoreTests.suite());
-		addTest(JSDTCompilerTests.suite());
-		addTest(JSDTUITests.suite());
-		addTest(AllWebCoreTests.suite());
-		addTest(AllWebUITests.suite());
-		
-
-//		addTest(new AllTestsSuite());
-		
-		// addTest(RegressionBucket.suite());
-		// addTest(AllTestCases.suite());
-
-		IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID);
-		for (int i = 0; i < elements.length; i++) {
-			if (elements[i].getName().equals("suite")) {
-				TestSuite suite;
-				try {
-					suite = (TestSuite) elements[i].createExecutableExtension(CLASS);
-					addTestSuite(suite.getClass());
-					System.err.println("Adding TestSuite " + suite.getClass().getName());
-				}
-				catch (CoreException e) {
-					e.printStackTrace(System.err);
-					Platform.getLog(Platform.getBundle("org.eclipse.wst.sse.unittests")).log(e.getStatus());
-				}
-			}
-			else if (elements[i].getName().equals("test")) {
-				Test test;
-				try {
-					test = (Test) elements[i].createExecutableExtension(CLASS);
-					addTestSuite(test.getClass());
-					System.err.println("Adding TestCase " + test.getClass().getName());
-				}
-				catch (CoreException e) {
-					e.printStackTrace(System.err);
-					Platform.getLog(Platform.getBundle("org.eclipse.wst.sse.unittests")).log(e.getStatus());
-				}
-			}
-		}
-	}
-
-	public void testAll() {
-		// this method needs to exist, but doesn't really do anything
-		// other than to signal to create an instance of this class.
-		// The rest it automatic from the tests added in constructor.
-	}
-}
diff --git a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/TestTurkish.java b/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/TestTurkish.java
deleted file mode 100644
index 939c544..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/TestTurkish.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.wst.sse.unittests;
-
-import java.util.Locale;
-
-/**
- * TestTurkish
- * See http://www.i18nguy.com/unicode/turkish-i18n.html
- */
-
-public class TestTurkish {
-	public static void main(String[] args) {
-		String turkishLowerCase = "\u0131" + "\u0069";
-		String turkishUpperCase = "\u0130" + "\u0049";
-		Locale[] locales = Locale.getAvailableLocales();
-		for (int i = 0; i < locales.length; i++) {
-			// System.out.println(locales[i]);
-		}
-		Locale turkishLocale = new Locale("TR");
-		String testUppercase = turkishLowerCase.toUpperCase(turkishLocale);
-		System.out.println(turkishUpperCase.equals(testUppercase));
-	}
-}
diff --git a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestString.java b/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestString.java
deleted file mode 100644
index 578fc46..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestString.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.wst.sse.unittests.minortools;
-
-import java.io.IOException;
-import java.io.StringReader;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * TestString
- */
-
-public class TestString {
-
-	public static void main(String[] args) {
-
-
-		String xml = "<?xml version=\"1.0\" encoding=\"UTF-16\"?><message><sourceUri></sourceUri><body></body></message>";
-
-
-		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-		factory.setNamespaceAware(false);
-		factory.setValidating(false);
-		try {
-			DocumentBuilder builder = factory.newDocumentBuilder();
-			Document document = builder.parse(new InputSource(new StringReader(xml)));
-			if (document != null) {
-				System.out.print(document.hasChildNodes());
-			}
-			System.out.println(document);
-		}
-		catch (ParserConfigurationException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		catch (SAXException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-	}
-
-}
diff --git a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestStringUtils.java b/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestStringUtils.java
deleted file mode 100644
index aa2e238..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/TestStringUtils.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.sse.unittests.minortools;
-
-
-
-public class TestStringUtils {
-
-	/**
-	 * TestStringUtils constructor comment.
-	 */
-	private TestStringUtils() {
-		super();
-	}
-
-	/**
-	 * Replace matching literal portions of a string with another string
-	 */
-	public static String replace(String aString, String source, String target) {
-		if (aString == null)
-			return null;
-		String normalString = ""; //$NON-NLS-1$
-		int length = aString.length();
-		int position = 0;
-		int previous = 0;
-		int spacer = source.length();
-		while (position + spacer - 1 < length && aString.indexOf(source, position) > -1) {
-			position = aString.indexOf(source, previous);
-			normalString = normalString + aString.substring(previous, position) + target;
-			position += spacer;
-			previous = position;
-		}
-		normalString = normalString + aString.substring(position, aString.length());
-
-		return normalString;
-	}
-
-}
diff --git a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/VersionRemover.java b/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/VersionRemover.java
deleted file mode 100644
index 61ed9c5..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/org/eclipse/wst/sse/unittests/minortools/VersionRemover.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.sse.unittests.minortools;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.eclipse.wst.xml.core.tests.util.CommonXML;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-
-
-/**
- * Modifies plugin.xml and fragment.xml files to not require specific versions
- * of their plugin dependencies.
- * 
- * @author nitin
- */
-public class VersionRemover {
-
-	char[] charbuff = new char[2048];
-	StringBuffer s = null;
-
-	public VersionRemover() {
-		super();
-	}
-
-
-
-	public static void main(String[] args) {
-		if (args.length < 1)
-			new VersionRemover().visit(new File("d:/target"));
-		else
-			new VersionRemover().visit(new File(args[0]));
-	}
-
-
-
-	protected void visit(File file) {
-		// Skip directories like org.eclipse.*, org.apache.*, and org.junit.*
-		if (file.isDirectory() && !file.getName().startsWith("org.eclipse.") && !file.getName().startsWith("org.apache") && !file.getName().startsWith("org.junit")) {
-			String[] contents = file.list();
-			for (int i = 0; i < contents.length; i++)
-				visit(new File(file.getAbsolutePath() + '/' + contents[i]));
-		}
-		else {
-			fixupFile(file);
-		}
-	}
-
-	protected void fixupFile(File file) {
-		// only load and fixup files named plugin.xml or fragment.xml under eclipse\plugins\XXXXXXX.*
-		if (!(file.getName().equalsIgnoreCase("plugin.xml") || file.getName().equalsIgnoreCase("fragment.xml")) || file.getAbsolutePath().indexOf("eclipse\\plugins\\XXXXXXX.") == -1)
-			return;
-		//		System.out.println(file.getAbsolutePath());
-		try {
-			Document doc = CommonXML.getDocumentBuilder().parse(file);
-			NodeList imports = null;
-			if (file.getName().equalsIgnoreCase("plugin.xml"))
-				imports = doc.getElementsByTagName("import");
-			else if (file.getName().equalsIgnoreCase("fragment.xml"))
-				imports = doc.getElementsByTagName("fragment");
-			boolean changed = false;
-			for (int i = 0; i < imports.getLength(); i++) {
-				Node importNode = imports.item(i);
-				if (importNode.getNodeName().equalsIgnoreCase("import") && importNode.getAttributes().getNamedItem("version") != null) {
-					changed = true;
-					importNode.getAttributes().removeNamedItem("version");
-				}
-				if (importNode.getAttributes().getNamedItem("plugin-version") != null) {
-					changed = true;
-					importNode.getAttributes().removeNamedItem("plugin-version");
-				}
-				if (importNode.getAttributes().getNamedItem("match") != null) {
-					importNode.getAttributes().removeNamedItem("match");
-					changed = true;
-				}
-			}
-			if (changed) {
-				FileOutputStream ostream = new FileOutputStream(file.getAbsolutePath());
-				CommonXML.serialize(doc, ostream);
-				ostream.close();
-				System.out.println("Modified " + file.getAbsolutePath());
-			}
-		}
-		catch (SAXException e) {
-			System.err.println(file.getPath() + ": " + e);
-		}
-		catch (IOException e) {
-			System.err.println(file.getPath() + ": " + e);
-		}
-	}
-}
diff --git a/development/org.eclipse.wst.sse.unittests/src/testStringXML.jpage b/development/org.eclipse.wst.sse.unittests/src/testStringXML.jpage
deleted file mode 100644
index 0f1eaa0..0000000
--- a/development/org.eclipse.wst.sse.unittests/src/testStringXML.jpage
+++ /dev/null
Binary files differ
diff --git a/development/org.eclipse.wst.sse.unittests/tet.jsp b/development/org.eclipse.wst.sse.unittests/tet.jsp
deleted file mode 100644
index 191b21e..0000000
--- a/development/org.eclipse.wst.sse.unittests/tet.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8"

-	pageEncoding="UTF-8"%>

-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

-<html>

-<head>

-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

-<title>content of lowercase title tags</title>

-<tıtle>content of lowercase title tags (no diaresis over i)</tıtle>

-<title>content of uppercase tags</title>

-<title></title>

-<title></title>

-<title></title>

-<title></title>

-</head>

-<body>

-<i></i>

-<i></i>

-<i></i>

-<i></i>

-</body>

-</html>

diff --git a/development/org.eclipse.wst.sse.unittests/turkishCase.jpage b/development/org.eclipse.wst.sse.unittests/turkishCase.jpage
deleted file mode 100644
index ba96e61..0000000
--- a/development/org.eclipse.wst.sse.unittests/turkishCase.jpage
+++ /dev/null
@@ -1,3 +0,0 @@
-
-String s = "\u0131"+"\u0069";
-s.toUpperCase();
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.web.ui.infopop/.cvsignore b/docs/org.eclipse.wst.web.ui.infopop/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/docs/org.eclipse.wst.web.ui.infopop/.project b/docs/org.eclipse.wst.web.ui.infopop/.project
deleted file mode 100644
index 10c4a6e..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web.ui.infopop</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/docs/org.eclipse.wst.web.ui.infopop/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.web.ui.infopop/META-INF/MANIFEST.MF
deleted file mode 100644
index 8a60c52..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Static Web infopop
-Bundle-SymbolicName: org.eclipse.wst.web.ui.infopop; singleton:=true
-Bundle-Version: 1.0.300.qualifier
-Bundle-Vendor: %pluginProvider
-Bundle-Localization: plugin
-Eclipse-AutoStart: true
diff --git a/docs/org.eclipse.wst.web.ui.infopop/StaticWebWizContexts.xml b/docs/org.eclipse.wst.web.ui.infopop/StaticWebWizContexts.xml
deleted file mode 100644
index bf0f403..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/StaticWebWizContexts.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS type="org.eclipse.help.contexts"?>
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<contexts>
-<context id="webw2000">
-<description> Use this page to name your Web project and specify the file system location (the place where the resources you create are stored.) When the Use default check box is selected, the project will be created in the file system location where your workspace resides. To change the default file system location, clear the checkbox and locate the path using the <b>Browse</b> button. To configure additional options, select the <b>Next</b> button.
-In the Target Runtime field, select the server where you want to publish the Web project. if a server is not already defined, click <b>New</b> to select a server runtime environment. </description>
-<topic label="Creating a static Web project" href="../org.eclipse.wst.webtools.doc.user/topics/twcresta.html"/>
-</context>
-
-<context id="webw2100">
-<description>Presets are used to define a default set of facet versions that will configure a project for a particular type of development. The Static Web Module facet enables the project to be deployed as a static
-Web module. Click Show Runtimes to view the available runtimes and runtime compositions.</description>
-<topic label="Creating a static Web project" href="../org.eclipse.wst.webtools.doc.user/topics/twcresta.html"/>
-</context>
-
-<context id="webw2200">
-<description>The Web content folder is where the elements of your Web site such as Web pages, graphics and style sheets are stored. This directory structure is necessary to ensure that the content of your Web site will be included in the WAR file at deployment and that link validation will work correctly.
-</description>
-<topic label="Creating a static Web project" href="../org.eclipse.wst.webtools.doc.user/topics/twcresta.html"/>
-</context>
-
-
-</contexts>
diff --git a/docs/org.eclipse.wst.web.ui.infopop/about.html b/docs/org.eclipse.wst.web.ui.infopop/about.html
deleted file mode 100644
index 2199df3..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-
-<BODY lang="EN-US">
-
-<H3>About This Content</H3>
-
-<P>June, 2008</P>
-
-<H3>License</H3>
-
-<P>The Eclipse Foundation makes available all content in this plug-in 
-("Content"). Unless otherwise indicated below, the Content is provided to you 
-under the terms and conditions of the Eclipse Public License Version 1.0 
-("EPL"). A copy of the EPL is available at
-<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-
-<P>If you did not receive this Content directly from the Eclipse Foundation, the 
-Content is being redistributed by another party ("Redistributor") and different 
-terms and conditions may apply to your use of any object code in the Content. 
-Check the RedistributorÂ’s license that was provided with the Content. If no such 
-license exists, contact the Redistributor. Unless otherwise indicated below, the 
-terms and conditions of the EPL still apply to any source code in the Content 
-and such source code may be obtained at
-<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
-
-</BODY>
-</HTML>
diff --git a/docs/org.eclipse.wst.web.ui.infopop/build.properties b/docs/org.eclipse.wst.web.ui.infopop/build.properties
deleted file mode 100644
index 0c7c1a9..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = StaticWebWizContexts.xml,\
-               about.html,\
-               plugin.xml,\
-               plugin.properties,\
-               META-INF/
-src.includes = build.properties
-generateSourceBundle=false
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.web.ui.infopop/plugin.properties b/docs/org.eclipse.wst.web.ui.infopop/plugin.properties
deleted file mode 100644
index b61d2de..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName     = Static Web infopop
-pluginProvider = Eclipse.org
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.web.ui.infopop/plugin.xml b/docs/org.eclipse.wst.web.ui.infopop/plugin.xml
deleted file mode 100644
index 20ac018..0000000
--- a/docs/org.eclipse.wst.web.ui.infopop/plugin.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ================================================= -->
-<!-- This is the plugin for declaring the help         -->
-<!-- contributions for using the tool.                 -->
-<!-- ================================================= -->
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<plugin>
-
-<extension point="org.eclipse.help.contexts">
-      <contexts file="StaticWebWizContexts.xml" plugin ="org.eclipse.wst.web.ui"/>
-</extension>
-
-
-</plugin>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.web_core.feature.patch/.project b/features/org.eclipse.wst.web_core.feature.patch/.project
deleted file mode 100644
index 1825661..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_core.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_core.feature.patch/build.properties b/features/org.eclipse.wst.web_core.feature.patch/build.properties
deleted file mode 100644
index 64f93a9..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-bin.includes = feature.xml
diff --git a/features/org.eclipse.wst.web_core.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html b/features/org.eclipse.wst.web_core.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html
deleted file mode 100644
index 60c3bc4..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Build" content="Build">
-   <title>WTP 1.5.5 Patches</title>
-</head>
-
-<body>
-
-<h1>WTP 1.5.5 Patches</h1>
-
-<h2>org.eclipse.jst.web_ui.feature</h2>
-
-<p>Bug <a href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=185402'>185402</a>. JSP validation fails because of defaulted attribute flush on jsp:include</p>
-<p>Bug <a href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=203711'>203711</a>. taglib declarations in JSP fragments</p>
-<p>Bug <a href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=199053'>199053</a>. Syntax errors outside of scripting areas not reported</p>
-
diff --git a/features/org.eclipse.wst.web_core.feature.patch/eclipse_update_120.jpg b/features/org.eclipse.wst.web_core.feature.patch/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature.patch/epl-v10.html b/features/org.eclipse.wst.web_core.feature.patch/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.web_core.feature.patch/feature.properties b/features/org.eclipse.wst.web_core.feature.patch/feature.properties
deleted file mode 100644
index 7997b4a..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/feature.properties
+++ /dev/null
@@ -1,156 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WTP Patch for wst.xml_ui
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=\
-A patch for sse.ui\n\
-This patch fixes problems described in the following bugs: \n\
-\n\
-Bug 185402 JSP validation fails because of defaulted attribute flush on jsp:include  \n\
-See bug 185402 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=185402)) \n\
-\n\
-Bug 203711 taglib declarations in JSP fragments  \n\
-See bug 203711 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=203711)) \n\
-\n\
-Bug 199053 Syntax errors outside of scripting areas not reported  \n\
-See bug 199053 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=199053)) \n\
-\n\
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2007 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-October, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_core.feature.patch/feature.xml b/features/org.eclipse.wst.web_core.feature.patch/feature.xml
deleted file mode 100644
index a781364..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/feature.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_core.feature.patch"
-      label="%featureName"
-      version="1.5.5.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.wst.web_core.feature" version="1.5.5.v200708090518--4hNDDiEnJWDdRQ" patch="true"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.wst.html.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.wst.web_core.feature.patch/license.html b/features/org.eclipse.wst.web_core.feature.patch/license.html
deleted file mode 100644
index 2347060..0000000
--- a/features/org.eclipse.wst.web_core.feature.patch/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.web_core.feature/.cvsignore b/features/org.eclipse.wst.web_core.feature/.cvsignore
deleted file mode 100644
index 8a9b065..0000000
--- a/features/org.eclipse.wst.web_core.feature/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build.xml
-org.eclipse.wst.web_core.feature_1.0.0.bin.dist.zip
diff --git a/features/org.eclipse.wst.web_core.feature/.project b/features/org.eclipse.wst.web_core.feature/.project
deleted file mode 100644
index fa0ce1f..0000000
--- a/features/org.eclipse.wst.web_core.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_core.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_core.feature/build.properties b/features/org.eclipse.wst.web_core.feature/build.properties
deleted file mode 100644
index 7c626e2..0000000
--- a/features/org.eclipse.wst.web_core.feature/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               feature.properties
diff --git a/features/org.eclipse.wst.web_core.feature/eclipse_update_120.jpg b/features/org.eclipse.wst.web_core.feature/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_core.feature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature/feature.properties b/features/org.eclipse.wst.web_core.feature/feature.properties
deleted file mode 100644
index 6243264..0000000
--- a/features/org.eclipse.wst.web_core.feature/feature.properties
+++ /dev/null
@@ -1,48 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WST Web Core
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-
-# "description" property - description of the feature
-description=Web tools core.
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_core.feature/feature.xml b/features/org.eclipse.wst.web_core.feature/feature.xml
deleted file mode 100644
index 67777b4..0000000
--- a/features/org.eclipse.wst.web_core.feature/feature.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_core.feature"
-      label="%featureName"
-      version="3.4.0.qualifier"
-      provider-name="%providerName"
-      license-feature="org.eclipse.license"
-      license-feature-version="1.0.0.qualifier">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.wst.jsdt.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.common_core.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.xml_core.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.server_core.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.wst.css.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.html.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.web"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.html b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.html
deleted file mode 100644
index fe81d46..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<P>June, 2008</P>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Source Code</h3>
-<p>This plug-in contains source code zip files (&quot;Source Zips&quot;) that correspond to binary content in other plug-ins. These Source Zips may be distributed under different license
-agreements and/or notices. Details about these license agreements and notices are contained in &quot;about.html&quot; files (&quot;Abouts&quot;) located in sub-directories in the
-src/ directory of this plug-in. Such Abouts govern your use of the Source Zips in that directory, not the EPL.</p>
-
-</body>
-</html>
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.ini b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.ini
deleted file mode 100644
index fda5a40..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=wtp_prod32.png
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (not translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
-# Property "welcomePerspective" contains the id of the perspective in which the
-# welcome page is to be opened.
-# optional
-
-
-
-
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.mappings b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.mappings
deleted file mode 100644
index a28390a..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=@build@
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.properties
deleted file mode 100644
index 61f1e6e..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-#
-# Do not translate any values surrounded by {}
-
-blurb=Web Standard Tools - Web Core\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others 2005.  All rights reserved.\n\
-Visit http://www.eclipse.org/webtools
-
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/build.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/build.properties
deleted file mode 100644
index ead512d..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-bin.includes = about.html, about.ini, about.mappings, about.properties, wtp_prod32.png, plugin.properties, plugin.xml, src/**, META-INF/
-sourcePlugin = true
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/plugin.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/plugin.properties
deleted file mode 100644
index c9d38d6..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName=Web Standard Tools - Web Core Source
-providerName=Eclipse.org
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.gif b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.gif
deleted file mode 100644
index eefb44a..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.gif
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.png b/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.png
deleted file mode 100644
index bfceab3..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateBundle/wtp_prod32.png
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/build.properties
deleted file mode 100644
index be839a7..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes =\
-eclipse_update_120.jpg,\
-feature.xml,\
-feature.properties,\
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/eclipse_update_120.jpg b/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/feature.properties
deleted file mode 100644
index a153de1..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplateFeature/feature.properties
+++ /dev/null
@@ -1,48 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WST Web Core Developer Resources
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-
-# "description" property - description of the feature
-description=Source code zips for WST Web core.
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.html b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.html
deleted file mode 100644
index fe81d46..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<P>June, 2008</P>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Source Code</h3>
-<p>This plug-in contains source code zip files (&quot;Source Zips&quot;) that correspond to binary content in other plug-ins. These Source Zips may be distributed under different license
-agreements and/or notices. Details about these license agreements and notices are contained in &quot;about.html&quot; files (&quot;Abouts&quot;) located in sub-directories in the
-src/ directory of this plug-in. Such Abouts govern your use of the Source Zips in that directory, not the EPL.</p>
-
-</body>
-</html>
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.ini b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.ini
deleted file mode 100644
index fda5a40..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=wtp_prod32.png
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (not translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
-# Property "welcomePerspective" contains the id of the perspective in which the
-# welcome page is to be opened.
-# optional
-
-
-
-
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.mappings b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.mappings
deleted file mode 100644
index 0dfb735..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings

-# contains fill-ins for about.properties

-# java.io.Properties file (ISO 8859-1 with "\" escapes)

-# This file does not need to be translated.

-

-0=@build@

diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.properties
deleted file mode 100644
index 61f1e6e..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-#
-# Do not translate any values surrounded by {}
-
-blurb=Web Standard Tools - Web Core\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others 2005.  All rights reserved.\n\
-Visit http://www.eclipse.org/webtools
-
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/build.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/build.properties
deleted file mode 100644
index ead512d..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-bin.includes = about.html, about.ini, about.mappings, about.properties, wtp_prod32.png, plugin.properties, plugin.xml, src/**, META-INF/
-sourcePlugin = true
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/plugin.properties b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/plugin.properties
deleted file mode 100644
index c9d38d6..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName=Web Standard Tools - Web Core Source
-providerName=Eclipse.org
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.gif b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.gif
deleted file mode 100644
index eefb44a..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.gif
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.png b/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.png
deleted file mode 100644
index bfceab3..0000000
--- a/features/org.eclipse.wst.web_core.feature/sourceTemplatePlugin/wtp_prod32.png
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_sdk.feature/.cvsignore b/features/org.eclipse.wst.web_sdk.feature/.cvsignore
deleted file mode 100644
index 2ad302e..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-build.xml
-features
-plugins
-org.eclipse.wst.web_sdk.feature_1.0.0.bin.dist.zip
diff --git a/features/org.eclipse.wst.web_sdk.feature/.project b/features/org.eclipse.wst.web_sdk.feature/.project
deleted file mode 100644
index b79f84b..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_sdk.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_sdk.feature/build.properties b/features/org.eclipse.wst.web_sdk.feature/build.properties
deleted file mode 100644
index 860b5b7..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               feature.properties
-
-generate.feature@org.eclipse.wst.web_ui.feature.source=org.eclipse.wst.web_ui.feature, feature@org.eclipse.wst.web_core.feature.source
-
diff --git a/features/org.eclipse.wst.web_sdk.feature/eclipse_update_120.jpg b/features/org.eclipse.wst.web_sdk.feature/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_sdk.feature/feature.properties b/features/org.eclipse.wst.web_sdk.feature/feature.properties
deleted file mode 100644
index 1d43131..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/feature.properties
+++ /dev/null
@@ -1,48 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WST Web Plug-in Developer Resources
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-
-# "description" property - description of the feature
-description=Source code zips for the WST web tools
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2000, 2006 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_sdk.feature/feature.xml b/features/org.eclipse.wst.web_sdk.feature/feature.xml
deleted file mode 100644
index 4ff5289..0000000
--- a/features/org.eclipse.wst.web_sdk.feature/feature.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_sdk.feature"
-      label="%featureName"
-      version="3.4.0.qualifier"
-      provider-name="%providerName"
-      license-feature="org.eclipse.license"
-      license-feature-version="1.0.0.qualifier">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.wst.web_ui.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.web_ui.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.jsdt_sdk.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.xml_sdk.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.server_sdk.feature"
-         version="0.0.0"/>
-
-</feature>
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/.project b/features/org.eclipse.wst.web_ui.feature.patch/.project
deleted file mode 100644
index 4bcd9fe..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_ui.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/build.properties b/features/org.eclipse.wst.web_ui.feature.patch/build.properties
deleted file mode 100644
index cb50260..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = feature.xml,\
-               license.html,\
-               feature.properties,\
-               epl-v10.html,\
-               eclipse_update_120.jpg
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/buildnotes_org.eclipse.wst.web_ui.feature.patch.html b/features/org.eclipse.wst.web_ui.feature.patch/buildnotes_org.eclipse.wst.web_ui.feature.patch.html
deleted file mode 100644
index e392a3c..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/buildnotes_org.eclipse.wst.web_ui.feature.patch.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta name="Build" content="Build">
-<title>WTP 3.0.4 Patches</title>
-</head>
-
-<body>
-
-<h1>WTP 3.0.4 Patches</h1>
-
-<h2>org.eclipse.wst.web_ui.feature</h2>
-
-<p>Bug <a
-	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=270407'>270407</a>.
-org.eclipse.ui.workbench.texteditor.hyperlinkDetectors' extension point will be ignored
-</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/eclipse_update_120.jpg b/features/org.eclipse.wst.web_ui.feature.patch/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/epl-v10.html b/features/org.eclipse.wst.web_ui.feature.patch/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/feature.properties b/features/org.eclipse.wst.web_ui.feature.patch/feature.properties
deleted file mode 100644
index 500d125..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/feature.properties
+++ /dev/null
@@ -1,148 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WTP Patch for org.eclipse.wst.web_ui.feature
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=\
-Contains fixes for the following bugs: \n\
-\n\
-Bug https://bugs.eclipse.org/270407 org.eclipse.ui.workbench.texteditor.hyperlinkDetectors' extension point will be ignored\n\
-\n\
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2008 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-October, 2008\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/feature.xml b/features/org.eclipse.wst.web_ui.feature.patch/feature.xml
deleted file mode 100644
index d185d36..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/feature.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_ui.feature.patch"
-      label="%featureName"
-      version="3.0.4.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.wst.web_ui.feature" version="3.0.4.v200811240900-7R0EP7E8Ks9v7urtuDJtBcaRV6Ri" patch="true"/>
-   </requires>
-   
-   <plugin
-         id="org.eclipse.wst.jsdt.web.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-         
-</feature>
diff --git a/features/org.eclipse.wst.web_ui.feature.patch/license.html b/features/org.eclipse.wst.web_ui.feature.patch/license.html
deleted file mode 100644
index 2347060..0000000
--- a/features/org.eclipse.wst.web_ui.feature.patch/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.web_ui.feature/.cvsignore b/features/org.eclipse.wst.web_ui.feature/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/features/org.eclipse.wst.web_ui.feature/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/features/org.eclipse.wst.web_ui.feature/.project b/features/org.eclipse.wst.web_ui.feature/.project
deleted file mode 100644
index 024b477..0000000
--- a/features/org.eclipse.wst.web_ui.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_ui.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_ui.feature/build.properties b/features/org.eclipse.wst.web_ui.feature/build.properties
deleted file mode 100644
index 7c626e2..0000000
--- a/features/org.eclipse.wst.web_ui.feature/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               feature.properties
diff --git a/features/org.eclipse.wst.web_ui.feature/feature.properties b/features/org.eclipse.wst.web_ui.feature/feature.properties
deleted file mode 100644
index 3737fbc..0000000
--- a/features/org.eclipse.wst.web_ui.feature/feature.properties
+++ /dev/null
@@ -1,48 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Eclipse Web Developer Tools
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-
-# "description" property - description of the feature
-description=Eclipse Web Developer Tools, including HTML, CSS, XHTML, etc.
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006, 2009 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_ui.feature/feature.xml b/features/org.eclipse.wst.web_ui.feature/feature.xml
deleted file mode 100644
index b10181f..0000000
--- a/features/org.eclipse.wst.web_ui.feature/feature.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_ui.feature"
-      label="%featureName"
-      version="3.4.0.qualifier"
-      provider-name="%providerName"
-      plugin="org.eclipse.wst.web.ui"
-      license-feature="org.eclipse.license"
-      license-feature-version="1.0.0.qualifier">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.wst.web_userdoc.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.web_core.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.jsdt.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.common_ui.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.server_ui.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.wst.xml_ui.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.wst.jsdt.web.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.jsdt.web.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.html.ui.infopop"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.web.ui.infopop"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.css.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.html.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.web.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.html b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.html
deleted file mode 100644
index fe81d46..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<P>June, 2008</P>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Source Code</h3>
-<p>This plug-in contains source code zip files (&quot;Source Zips&quot;) that correspond to binary content in other plug-ins. These Source Zips may be distributed under different license
-agreements and/or notices. Details about these license agreements and notices are contained in &quot;about.html&quot; files (&quot;Abouts&quot;) located in sub-directories in the
-src/ directory of this plug-in. Such Abouts govern your use of the Source Zips in that directory, not the EPL.</p>
-
-</body>
-</html>
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.ini b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.ini
deleted file mode 100644
index fda5a40..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=wtp_prod32.png
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (not translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
-# Property "welcomePerspective" contains the id of the perspective in which the
-# welcome page is to be opened.
-# optional
-
-
-
-
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.mappings b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.mappings
deleted file mode 100644
index a28390a..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=@build@
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.properties
deleted file mode 100644
index 3195c0a..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-#
-# Do not translate any values surrounded by {}
-
-blurb=Web Standard Tools - Web UI\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others 2005.  All rights reserved.\n\
-Visit http://www.eclipse.org/webtools
-
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/build.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/build.properties
deleted file mode 100644
index 30a575c..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-
-bin.includes = about.html, about.ini, about.mappings, about.properties, wtp_prod32.png, plugin.properties, plugin.xml, src/**, META-INF/
-sourcePlugin = true
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/plugin.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/plugin.properties
deleted file mode 100644
index 0656fb9..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName=Web Standard Tools - Web UI Source
-providerName=Eclipse.org
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.gif b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.gif
deleted file mode 100644
index eefb44a..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.gif
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.png b/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.png
deleted file mode 100644
index bfceab3..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateBundle/wtp_prod32.png
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/build.properties
deleted file mode 100644
index 7e0ba44..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes =\
-eclipse_update_120.jpg,\
-feature.xml,\
-feature.properties,\
-
-generate.feature@org.eclipse.wst.web_core.feature.source = org.eclipse.wst.web_core.feature
-
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/eclipse_update_120.jpg b/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/feature.properties
deleted file mode 100644
index 8142eec..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplateFeature/feature.properties
+++ /dev/null
@@ -1,49 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WST Web UI Developer Resources
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=Source code zips for WST Web UI.
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.html b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.html
deleted file mode 100644
index fe81d46..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<P>June, 2008</P>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Source Code</h3>
-<p>This plug-in contains source code zip files (&quot;Source Zips&quot;) that correspond to binary content in other plug-ins. These Source Zips may be distributed under different license
-agreements and/or notices. Details about these license agreements and notices are contained in &quot;about.html&quot; files (&quot;Abouts&quot;) located in sub-directories in the
-src/ directory of this plug-in. Such Abouts govern your use of the Source Zips in that directory, not the EPL.</p>
-
-</body>
-</html>
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.ini b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.ini
deleted file mode 100644
index fda5a40..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=wtp_prod32.png
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (not translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
-# Property "welcomePerspective" contains the id of the perspective in which the
-# welcome page is to be opened.
-# optional
-
-
-
-
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.mappings b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.mappings
deleted file mode 100644
index 0dfb735..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings

-# contains fill-ins for about.properties

-# java.io.Properties file (ISO 8859-1 with "\" escapes)

-# This file does not need to be translated.

-

-0=@build@

diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.properties
deleted file mode 100644
index 3195c0a..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-#
-# Do not translate any values surrounded by {}
-
-blurb=Web Standard Tools - Web UI\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others 2005.  All rights reserved.\n\
-Visit http://www.eclipse.org/webtools
-
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/build.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/build.properties
deleted file mode 100644
index 30a575c..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-
-bin.includes = about.html, about.ini, about.mappings, about.properties, wtp_prod32.png, plugin.properties, plugin.xml, src/**, META-INF/
-sourcePlugin = true
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/plugin.properties b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/plugin.properties
deleted file mode 100644
index 0656fb9..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName=Web Standard Tools - Web UI Source
-providerName=Eclipse.org
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.gif b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.gif
deleted file mode 100644
index eefb44a..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.gif
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.png b/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.png
deleted file mode 100644
index bfceab3..0000000
--- a/features/org.eclipse.wst.web_ui.feature/sourceTemplatePlugin/wtp_prod32.png
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_userdoc.feature/.cvsignore b/features/org.eclipse.wst.web_userdoc.feature/.cvsignore
deleted file mode 100644
index 9cfe174..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build.xml
-org.eclipse.wst.web_userdoc.feature_1.0.0.jar
diff --git a/features/org.eclipse.wst.web_userdoc.feature/.project b/features/org.eclipse.wst.web_userdoc.feature/.project
deleted file mode 100644
index 1b5eb31..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.web_userdoc.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.web_userdoc.feature/build.properties b/features/org.eclipse.wst.web_userdoc.feature/build.properties
deleted file mode 100644
index 7c626e2..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               feature.properties
diff --git a/features/org.eclipse.wst.web_userdoc.feature/eclipse_update_120.jpg b/features/org.eclipse.wst.web_userdoc.feature/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.web_userdoc.feature/feature.properties b/features/org.eclipse.wst.web_userdoc.feature/feature.properties
deleted file mode 100644
index 3217521..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/feature.properties
+++ /dev/null
@@ -1,48 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WST Web User Documentation
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Web Tools Platform
-
-
-# "description" property - description of the feature
-description=WST Web user documentation
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
-#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.web_userdoc.feature/feature.xml b/features/org.eclipse.wst.web_userdoc.feature/feature.xml
deleted file mode 100644
index e3619cd..0000000
--- a/features/org.eclipse.wst.web_userdoc.feature/feature.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.web_userdoc.feature"
-      label="%featureName"
-      version="3.3.0.qualifier"
-      provider-name="%providerName"
-      license-feature="org.eclipse.license"
-      license-feature-version="1.0.0.qualifier">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.wst.doc.user"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.wst.webtools.doc.user"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.wst.xml_core.feature.patch/.project b/features/org.eclipse.wst.xml_core.feature.patch/.project
deleted file mode 100644
index 648c793..0000000
--- a/features/org.eclipse.wst.xml_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.xml_core.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.xml_core.feature.patch/description.txt b/features/org.eclipse.wst.xml_core.feature.patch/description.txt
deleted file mode 100644
index 2d8148a..0000000
--- a/features/org.eclipse.wst.xml_core.feature.patch/description.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This head trunk is deliberatly empty. 
-
-Please load the appropriate maintenance branch. 
-
diff --git a/features/org.eclipse.wst.xml_ui.feature.patch/.project b/features/org.eclipse.wst.xml_ui.feature.patch/.project
deleted file mode 100644
index 910c1f8..0000000
--- a/features/org.eclipse.wst.xml_ui.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.xml_ui.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.xml_ui.feature.patch/build.properties b/features/org.eclipse.wst.xml_ui.feature.patch/build.properties
deleted file mode 100644
index 64f93a9..0000000
--- a/features/org.eclipse.wst.xml_ui.feature.patch/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-bin.includes = feature.xml
diff --git a/features/org.eclipse.wst.xml_ui.feature.patch/feature.xml b/features/org.eclipse.wst.xml_ui.feature.patch/feature.xml
deleted file mode 100644
index 42b3c23..0000000
--- a/features/org.eclipse.wst.xml_ui.feature.patch/feature.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.xml_ui.feature.path"
-      label="Path Feature"
-      version="1.0.0">
-
-   <description url="http://www.example.com/description">
-      [Enter Feature Description here.]
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
-      [Enter Copyright Description here.]
-   </copyright>
-
-   <license url="http://www.example.com/license">
-      [Enter License Description here.]
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.wst.xml_ui.feature" version="1.5.5.v200707311635-zkiCfzO-IFUOjzR" patch="true"/>
-   </requires>
-
-</feature>