This commit was manufactured by cvs2svn to create tag 'R1_0_2'.
diff --git a/features/org.eclipse.wst.common_core.feature/feature.xml b/features/org.eclipse.wst.common_core.feature/feature.xml
index 2dbdd2b..f99c869 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.common_core.feature"
       label="WST Common Core Feature"
-      version="1.0.100.qualifier"
+      version="1.0.2.qualifier"
       provider-name="Eclipse.org">
 
    <description>
@@ -18,8 +18,8 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jem" version="1.2" match="equivalent"/>
-      <import feature="org.eclipse.emf" version="2.2" match="equivalent"/>
+      <import feature="org.eclipse.jem" version="1.1.0.1" match="equivalent"/>
+      <import feature="org.eclipse.emf" version="2.1.1" match="equivalent"/>
    </requires>
 
    <plugin
@@ -91,11 +91,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.wst.common.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
index aea5453..081fe1a 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.common_core.feature.source"
       label="%featureName"
-      version="1.0.1.qualifier"
+      version="1.0.2.qualifier"
       provider-name="%providerName">
 
    <description>
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.xml b/features/org.eclipse.wst.common_sdk.feature/feature.xml
index 25d4d58..5e57d0a 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.common_sdk.feature"
       label="WST Common Feature SDK"
-      version="1.0.100.qualifier"
+      version="1.0.2.qualifier"
       provider-name="Eclipse.org">
 
    <description>
@@ -12,7 +12,7 @@
    <license url="license.html">
       %license
    </license>
-
+   
    <url>
       <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.xml b/features/org.eclipse.wst.common_ui.feature/feature.xml
index a8aa8f4..1a56b2e 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.common_ui.feature"
       label="org.eclipse.wst.common_ui.feature"
-      version="1.0.101.qualifier"
+      version="1.0.201.qualifier"
       provider-name="Eclipse.org">
 
    <description>
@@ -22,8 +22,8 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.gef" version="3.2" match="equivalent"/>
-      <import feature="org.eclipse.wst.common_core.feature" version="1.0.1" match="greaterOrEqual"/>
+      <import feature="org.eclipse.gef" version="3.1.1" match="equivalent"/>
+      <import feature="org.eclipse.wst.common_core.feature" version="1.0.2" match="equivalent"/>
    </requires>
 
    <plugin
@@ -123,7 +123,7 @@
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-   
+         
    <plugin
          id="org.eclipse.wst.validation.infopop"
          download-size="0"
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
index c5652c6..4e1bb1c 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.common_ui.feature.source"
       label="WST Common UI Feature Source"
-      version="1.0.1.qualifier"
+      version="1.0.2.qualifier"
       provider-name="Eclipse.org">
 
    <description>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplatePlugin/plugin.properties b/features/org.eclipse.wst.common_ui.feature/sourceTemplatePlugin/plugin.properties
index 4c0b73c..3c25535 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplatePlugin/plugin.properties
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplatePlugin/plugin.properties
@@ -8,5 +8,5 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-pluginName=Web Standard Tools - Common UI Source
+pluginName=Web Standard Tools - Common UI
 providerName=Eclipse.org
diff --git a/plugins/org.eclipse.jem.util/.classpath b/plugins/org.eclipse.jem.util/.classpath
deleted file mode 100644
index d4d58af..0000000
--- a/plugins/org.eclipse.jem.util/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="jemutil"/>
-	<classpathentry kind="src" path="property_files"/>
-	<classpathentry kind="src" path="jemutil-nonworkbnech"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry sourcepath="org.eclipse.perfmsr.core.stub/perfmsr.jar" kind="lib" path="org.eclipse.perfmsr.core.stub/perfmsr.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.jem.util/.cvsignore b/plugins/org.eclipse.jem.util/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.jem.util/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.jem.util/.options b/plugins/org.eclipse.jem.util/.options
deleted file mode 100644
index 0565417..0000000
--- a/plugins/org.eclipse.jem.util/.options
+++ /dev/null
@@ -1,3 +0,0 @@
-org.eclipse.jem.util/debug/logtrace=false
-org.eclipse.jem.util/debug/logtracefile=false
-org.eclipse.jem.util/debug/loglevel=WARNING
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/.project b/plugins/org.eclipse.jem.util/.project
deleted file mode 100644
index e0e4120..0000000
--- a/plugins/org.eclipse.jem.util/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jem.util</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/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d78073f..0000000
--- a/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,289 +0,0 @@
-#Tue Feb 21 10:09:19 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=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=disabled
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-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.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=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.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=1
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=150
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=150
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 6c8e1bc..0000000
--- a/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Tue Feb 21 10:09:19 EST 2006
-eclipse.preferences.version=1
-formatter_profile=_jve
-formatter_settings_version=10
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;org.eclipse.wtp;org.eclipse.jem;org.eclipse.ve.internal.cdm;org.eclipse.ve.internal.cde;org.eclipse.ve.internal.jcm;org.eclipse.ve.internal.java;org.eclipse.ve;com;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/>
diff --git a/plugins/org.eclipse.jem.util/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.jem.util/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index fb46b28..0000000
--- a/plugins/org.eclipse.jem.util/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Fri May 13 10:10:04 EDT 2005
-compilers.p.deprecated=1
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=2
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=2
-compilers.p.unknown-element=1
-compilers.p.unknown-resource=2
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=2
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
deleted file mode 100644
index aaa7e87..0000000
--- a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,25 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.jem.util; singleton:=true
-Bundle-Version: 1.2.0.qualifier
-Bundle-Activator: org.eclipse.jem.util.plugin.JEMUtilPlugin
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.jem.internal.util.emf.workbench;x-friends:="org.eclipse.jem.beaninfo",
- org.eclipse.jem.internal.util.emf.workbench.nature;x-internal:=true,
- org.eclipse.jem.internal.util.emf.workbench.nls;x-internal:=true,
- org.eclipse.jem.util,
- org.eclipse.jem.util.emf.workbench,
- org.eclipse.jem.util.emf.workbench.nature,
- org.eclipse.jem.util.logger,
- org.eclipse.jem.util.logger.proxy,
- org.eclipse.jem.util.logger.proxyrender,
- org.eclipse.jem.util.plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.emf.ecore,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.perfmsr.core;resolution:=optional,
- com.ibm.icu
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.jem.util/PERFMSR_README.txt b/plugins/org.eclipse.jem.util/PERFMSR_README.txt
deleted file mode 100644
index ea51258..0000000
--- a/plugins/org.eclipse.jem.util/PERFMSR_README.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-org.eclipse.perfmsr.core code can be found in the perfmsr.jar loaded as binary in this
-project. Since this is optional, we needed to be able to compile without the true
-plugin being available. So we created the stub jar containing just what we needed.
-
-If there is a need to change anything in the stub jar, you will need to checkout
-the folder org.eclipse.jem.util/org.eclipse.perfmsr.core.stub. This will then
-be a separate project. You can then make the changes there, and then following the
-README in that project to create and commit the changes. 
-
-The jar is in this project's classpath, but it is not exported and is not in
-the plugin.xml or build.properties. This means it will be available for compilation
-but it won't show up in the runtime workbench.
\ No newline at end of file
diff --git "a/plugins/org.eclipse.jem.util/READ_ME_BEFORE_CHANGING_MANIFEST\041\041\041" "b/plugins/org.eclipse.jem.util/READ_ME_BEFORE_CHANGING_MANIFEST\041\041\041"
deleted file mode 100644
index 718e94a..0000000
--- "a/plugins/org.eclipse.jem.util/READ_ME_BEFORE_CHANGING_MANIFEST\041\041\041"
+++ /dev/null
@@ -1,8 +0,0 @@
-Do not include a new dependency plugin to the MANIFEST for this plugind!!!
-
-The reason for this is that this plugin is also executed outside of Eclipse framework, such IBM Websphere Application Server (c) IBM. We cannot add
-new dependencies to the plugin because the current set is considered to be API. Adding a new set without consulting those users would break
-them.
-
-The external API is anything in the jemutil-nonworkbench folder. If it is only for a class in the other source folder(s) it may be OK since they would not be 
-using that code. But it would be best to consult with them first.
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/about.html b/plugins/org.eclipse.jem.util/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/plugins/org.eclipse.jem.util/about.html
+++ /dev/null
@@ -1,22 +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>February 24, 2005</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>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/build.properties b/plugins/org.eclipse.jem.util/build.properties
deleted file mode 100644
index b40afd0..0000000
--- a/plugins/org.eclipse.jem.util/build.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 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 = plugin.xml,\
-               .options,\
-               about.html,\
-               plugin.properties,\
-               META-INF/,\
-               .
-src.includes = schema/,\
-               about.html
-output.. = bin/
-source.. = jemutil/,\
-           property_files/,\
-           jemutil-nonworkbnech/
-jars.compile.order = .
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java
deleted file mode 100644
index 09269a2..0000000
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java
+++ /dev/null
@@ -1,329 +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
- *******************************************************************************/
-/*
- *  $RCSfile: LogEntry.java,v $
- *  $Revision: 1.4 $  $Date: 2006/01/20 19:30:40 $ 
- */
-package org.eclipse.jem.util.logger;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintWriter;
-
-/**
- * This class should be used when logging information which should be grouped together. Instead of creating a new instance of this class every time it
- * is needed, for performance reasons, create an instance and reuse it.
- * <p>
- * Currently the only fields that are logged are the {@link #getText()} and {@link #getTargetException()}.
- * 
- * @since 1.0.0
- */
-public class LogEntry {
-
-	private int _executionMap = 0;
-
-	private Throwable _caughtException = null;
-
-	private String _propertiesFileName = null;
-
-	private String localeOfOrigin = null;
-
-	private String sourceIdentifier;
-
-	private String elapsedTime;
-
-	private String text;
-
-	private String messageTypeIdentifier;
-
-	/**
-	 * The file name parameter must be a name which can be used by ResourceBundle to load the string from the .properties file. The parameter must not
-	 * be null or the empty string.
-	 * 
-	 * @param propertiesFileName
-	 * 
-	 * @since 1.0.0
-	 */
-	public LogEntry(String propertiesFileName) {
-		setPropertiesFileName(propertiesFileName);
-	}
-
-	/**
-	 * Default Constructor
-	 */
-	public LogEntry() {
-	}
-
-	/**
-	 * Get execution map
-	 * 
-	 * @return execution map
-	 * 
-	 * @since 1.0.0
-	 */
-	public int getExecutionMap() {
-		return _executionMap;
-	}
-
-	/**
-	 * Get the properties file name
-	 * 
-	 * @return properties file name or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getPropertiesFileName() {
-		return _propertiesFileName;
-	}
-
-	/**
-	 * Get target exception
-	 * 
-	 * @return target exception or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public Throwable getTargetException() {
-		return _caughtException;
-	}
-
-	/**
-	 * Get locale of origin
-	 * 
-	 * @return locale of origin or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getLocaleOfOrigin() {
-		return localeOfOrigin;
-	}
-
-	/**
-	 * Get source identifier.
-	 * 
-	 * @return source identifier or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getSourceidentifier() {
-		return sourceIdentifier;
-	}
-
-	/**
-	 * Get elapsed time
-	 * 
-	 * @return elapsed time
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getElapsedTime() {
-		return elapsedTime;
-	}
-
-	/**
-	 * Get the message type identifier
-	 * 
-	 * @return message type identifier or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getMessageTypeIdentifier() {
-		return messageTypeIdentifier;
-	}
-
-	/**
-	 * Set execution map
-	 * 
-	 * @param map
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setExecutionMap(int map) {
-		_executionMap = map;
-	}
-
-	/**
-	 * Set properties file name
-	 * 
-	 * @param fName
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setPropertiesFileName(String fName) {
-		_propertiesFileName = fName;
-	}
-
-	/**
-	 * Set target exception
-	 * 
-	 * @param exc
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setTargetException(Throwable exc) {
-		_caughtException = exc;
-	}
-
-	/**
-	 * Append stacktrace of current stack (at the time of call to this method) to the text buffer.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public void appendStackTrace() {
-		// Grab the stack trace from the Thread ...
-		ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
-		PrintWriter printWriter = new PrintWriter(byteOutput);
-		// Can't call Thread.dumpStack() because it doesn't take a writer as input.
-		// Copy its mechanism instead.
-		new Exception("Stack trace").printStackTrace(printWriter); //$NON-NLS-1$
-		printWriter.flush();
-
-		// and update the text to the LogEntry's text.
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(getText());
-		buffer.append("\n"); //$NON-NLS-1$
-		buffer.append(byteOutput.toString());
-		setText(buffer.toString());
-	}
-
-	/**
-	 * Get the text.
-	 * 
-	 * @return text or or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getText() {
-		return text;
-	}
-
-	/**
-	 * Set the text
-	 * 
-	 * @param string
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setText(String string) {
-		text = string;
-	}
-
-	/**
-	 * Set every entry to the default value except the properties file name.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public void reset() {
-		setExecutionMap(0);
-		setTargetException(null);
-		localeOfOrigin = null;
-		sourceIdentifier = null;
-		elapsedTime = null;
-		setText(null);
-	}
-
-	/**
-	 * Set locale of origin.
-	 * 
-	 * @param origin
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setLocaleOfOrigin(String origin) {
-		localeOfOrigin = origin;
-	}
-
-	/**
-	 * Set source id.
-	 * 
-	 * @param id
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setSourceID(String id) {
-		sourceIdentifier = id;
-	}
-
-	/**
-	 * Set elapsed time.
-	 * 
-	 * @param time
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setElapsedTime(long time) {
-		elapsedTime = String.valueOf(time);
-	}
-
-	/**
-	 * Set source identifier.
-	 * 
-	 * @param string
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setSourceIdentifier(String string) {
-		setSourceID(string);
-	}
-
-	/**
-	 * Set message type identifier.
-	 * 
-	 * @param string
-	 * 
-	 * @since 1.0.0
-	 * @deprecated Use {@link #setText(String)} instead and calling it with the result of {@link java.text.MessageFormat#format(java.lang.String, java.lang.Object[])}
-	 */
-	public void setMessageTypeIdentifier(String string) {
-		messageTypeIdentifier = string;
-	}
-
-	/**
-	 * Set message type id. Same as <code>setMessageTypeIdentifier.</code>
-	 * @param string
-	 * 
-	 * @since 1.0.0
-	 * @deprecated Use {@link #setText(String)} instead and calling it with the result of {@link java.text.MessageFormat#format(java.lang.String, java.lang.Object[])}
-	 */
-	public void setMessageTypeID(String string) {
-		setMessageTypeIdentifier(string);
-	}
-
-	/**
-	 * Set tokens. (Currently this is ignored).
-	 * 
-	 * @param strings
-	 * 
-	 * @since 1.0.0
-	 * @deprecated Use {@link #setText(String)} instead and calling it with the result of {@link java.text.MessageFormat#format(java.lang.String, java.lang.Object[])}
-	 */
-	public void setTokens(String[] strings) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
-		PrintWriter printWriter = new PrintWriter(byteOutput);
-		if (text != null)
-			printWriter.println(text);
-		if (_caughtException != null) {
-			_caughtException.printStackTrace(printWriter);
-		}
-		printWriter.flush();
-		return byteOutput.toString();
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java
deleted file mode 100644
index 3ba7c4d..0000000
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java
+++ /dev/null
@@ -1,72 +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
- *******************************************************************************/
-/*
- *  $RCSfile: ILogRenderer.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:05:54 $ 
- */
-package org.eclipse.jem.util.logger.proxy;
-
-/**
- * Basic log renderer interface. It is replaced by the extension <code>ILogRenderer2.</code>
- * 
- * @since 1.0.0
- */
-public interface ILogRenderer {
-
-	/**
-	 * Logged to console.
-	 */
-	final public static String CONSOLE_DESCRIPTION = "console"; //$NON-NLS-1$
-
-	/**
-	 * Logged to workbench.
-	 */
-	final public static String WORKBENCH_DESCRIPTION = "workbench log"; //$NON-NLS-1$
-
-	/**
-	 * Not logged.
-	 */
-	final public static String NOLOG_DESCRIPTION = ""; //$NON-NLS-1$
-
-	/**
-	 * Log levels. These are deprecated, use <code>java.util.logging.Level</code> codes instead.
-	 */
-	final public static int LOG_ERROR = 0;
-
-	final public static int LOG_TRACE = 1;
-
-	final public static int LOG_WARNING = 2;
-
-	final public static int LOG_INFO = 3;
-
-	final public static String DefaultPluginID = "org.eclipse.jem.util"; //$NON-NLS-1$
-
-	/**
-	 * Log the string at the specified type.
-	 * 
-	 * @param msg
-	 * @param type
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(String msg, int type);
-
-	/**
-	 * Start or stop the tracing.
-	 * 
-	 * @param Flag
-	 *            <code>true</code> to start the tracing.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setTraceMode(boolean Flag);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java
deleted file mode 100644
index 69ee144..0000000
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java
+++ /dev/null
@@ -1,151 +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
- *******************************************************************************/
-/*
- *  $RCSfile: ILogRenderer2.java,v $
- *  $Revision: 1.4 $  $Date: 2005/08/24 21:10:34 $ 
- */
-package org.eclipse.jem.util.logger.proxy;
-
-import java.util.logging.Level;
- 
-/**
- * Log renderer that provides more function. Basically it can handle
- * the logging of specific types in a different manner than the default
- * conversion to string supplied by Logger.
- * 
- * It also uses the Level classes from java.util.logging as the logging levels.
- * 
- * @since 1.0.0
- */
-public interface ILogRenderer2 extends ILogRenderer {
-	
-	/**
-	 * When Logger.setLevel(DEFAULT): restore to what the default level was.
-	 * When log(...,DEFAULT): Log at the default level for the type of object.
-	 */
-	static final Level DEFAULT = new Logger.LocalLevel("DEFAULT", Integer.MAX_VALUE-1); //$NON-NLS-1$
-	
-	/**
-	 * When log(...,TRACE) : Log only when in trace mode.
-	 * Don't use in Logger.setLevel(). Has no meaning in that case.
-	 */
-	static final Level TRACE = new Logger.LocalLevel("TRACE", Integer.MAX_VALUE-2);	 //$NON-NLS-1$
-
-	/**
-	 * Log the throwable at the given level (if DEFAULT, use default level for a throwable).
-	 * 
-	 * @param t
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(Throwable t, Level level);
-	
-	/**
-	 * Log the object at the given level (if DEFAULT, use default level for an object).
-	 * 
-	 * @param o
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(Object o, Level level);
-	
-	/**
-	 * Log the boolean at the given level (if DEFAULT, use default level for a boolean).
-	 * 
-	 * @param b
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(boolean b, Level level);	
-
-	/**
-	 * Log the char at the given level (if DEFAULT, use default level for a char).
-	 * 
-	 * @param c
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(char c, Level level);	
-	
-	/**
-	 * Log the byte at the given level (if DEFAULT, use default level for a byte).
-	 * 
-	 * @param b
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(byte b, Level level);
-	
-	/**
-	 * Log the short at the given level (if DEFAULT, use default level for a short).
-	 * 
-	 * @param s
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(short s, Level level);
-	
-	/**
-	 * Log the int at the given level (if DEFAULT, use default level for an int).
-	 * 
-	 * @param i
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(int i, Level level);
-
-	/**
-	 * Log the long at the given level (if DEFAULT, use default level for a long).
-	 * 
-	 * @param l
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(long l, Level level);
-
-	/**
-	 * Log the float at the given level (if DEFAULT, use default level for a float).
-	 * 
-	 * @param f
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(float f, Level level);
-
-	/**
-	 * Log the double at the given level (if DEFAULT, use default level for a double).
-	 * 
-	 * @param d
-	 * @param level
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	String log(double d, Level level);
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java
deleted file mode 100644
index 6f0f828..0000000
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java
+++ /dev/null
@@ -1,247 +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
- *******************************************************************************/
-/*
- *  $RCSfile: JDKConsoleRenderer.java,v $
- *  $Revision: 1.3 $  $Date: 2005/08/24 21:10:34 $ 
- */
-package org.eclipse.jem.util.logger.proxy;
-
-import java.util.logging.Level;
-
-/**
- * Default log renderer to use when not running under Eclipse. It logs to sysout and syserr.
- * 
- * @since 1.1.0
- */
-
-public class JDKConsoleRenderer implements ILogRenderer2 {
-
-	private boolean fTraceMode = false; // will we actually punch trace messaged or not
-
-	private boolean fSettingTrace = false;
-
-	private Logger fMyLogger = null;
-
-	/**
-	 * Constructer taking a logger.
-	 * 
-	 * @param logger
-	 * 
-	 * @since 1.1.0
-	 */
-	public JDKConsoleRenderer(Logger logger) {
-		super();
-		fMyLogger = logger;
-		fTraceMode = fMyLogger.getTraceMode();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer#log(java.lang.String, int)
-	 */
-	public String log(String msg, int type) {
-
-		if (type == ILogRenderer.LOG_TRACE && !fTraceMode)
-			return null;
-
-		if (type == ILogRenderer.LOG_ERROR)
-			System.err.println(msg);
-		else
-			System.out.println(msg);
-		return ILogRenderer.CONSOLE_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer#setTraceMode(boolean)
-	 */
-	public void setTraceMode(boolean flag) {
-
-		if (fSettingTrace)
-			return;
-		fSettingTrace = true;
-		fTraceMode = flag;
-		fMyLogger.setTraceMode(flag);
-		fSettingTrace = false;
-	}
-
-	/**
-	 * Log the string at the given level.
-	 * 
-	 * @param msg
-	 * @param level
-	 * @return <code>CONSOLE_DESCRIPTION</code>
-	 * 
-	 * @since 1.1.0
-	 */
-	protected String log(String msg, Level level) {
-		if (level == Level.SEVERE)
-			System.err.println(msg);
-		else
-			System.out.println(msg);
-		return ILogRenderer.CONSOLE_DESCRIPTION;
-	}
-
-	/**
-	 * Answer if logging at the given level
-	 * 
-	 * @param logLevel
-	 * @return <code>true</code> if logging at the given level.
-	 * 
-	 * @since 1.1.0
-	 */
-	protected boolean isLogging(Level logLevel) {
-		return fTraceMode || fMyLogger.isLoggingLevel(logLevel);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(boolean, java.util.logging.Level)
-	 */
-	public String log(boolean b, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(b), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(byte, java.util.logging.Level)
-	 */
-	public String log(byte b, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(b), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(char, java.util.logging.Level)
-	 */
-	public String log(char c, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(c), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(double, java.util.logging.Level)
-	 */
-	public String log(double d, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(d), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(float, java.util.logging.Level)
-	 */
-	public String log(float f, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(f), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(int, java.util.logging.Level)
-	 */
-	public String log(int i, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(i), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(long, java.util.logging.Level)
-	 */
-	public String log(long l, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(l), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(java.lang.Object, java.util.logging.Level)
-	 */
-	public String log(Object o, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(o), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(short, java.util.logging.Level)
-	 */
-	public String log(short s, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(String.valueOf(s), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(java.lang.Throwable, java.util.logging.Level)
-	 */
-	public String log(Throwable t, Level level) {
-		if (level == DEFAULT)
-			level = Level.SEVERE;
-		if (isLogging(level))
-			return log(fMyLogger.getGenericMsg(fMyLogger.exceptionToString(t), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java
deleted file mode 100644
index 6a33f8f..0000000
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java
+++ /dev/null
@@ -1,843 +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
- *******************************************************************************/
-/*
- *  $RCSfile: Logger.java,v $
- *  $Revision: 1.7 $  $Date: 2006/02/15 23:40:59 $ 
- */
-package org.eclipse.jem.util.logger.proxy;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.*;
-import java.util.logging.Level;
-
-/**
- * This is a base, UI independent logger.   It will
- * construct a consistent msg. body, and call an enfironment specific ILogRenderer.
- * By default, this logger will use a console based ILogRenderer,
- * and a J2EE Plugin identification.
- * 
- * <p>
- * When running outside of Eclipse, the trace and logging level come from the system properties
- * <ul>
- * 		<li>"debug" (="true") - The default is <code>false</code>. 
- * 		<li>"logLevel" (="level" where "level" is a level string, e.g. SEVERE, WARNING, etc. from the <code>java.util.logging.Level</code> class).
- * 			The default is "WARNING".
- * </ul>
- * 
- * 
- * @since 1.0.0
- */
-public class Logger {
-	
-	// This is used by ILogRenderer2 to define the default level.
-	static class LocalLevel extends Level {
-		/**
-		 * Comment for <code>serialVersionUID</code>
-		 * 
-		 * @since 1.1.0
-		 */
-		private static final long serialVersionUID = -6273357074767854883L;
-
-		public LocalLevel(String name, int level) {
-			super(name, level);
-		}
-	}	
-	
-	private boolean fTraceMode = false; // will we actually punch trace messaged or not              
-	private String fPluginID;
-	private ILogRenderer fRenderer = null;
-	private ILogRenderer2 renderer2 = null;
-	public String fLineSeperator;
-	private Level level;
-	private Level defaultLevel = Level.SEVERE;	// By default only severe or greater are logged.
-	private String logFileName;
-	private final static String DefaultLoggerPlugin = ILogRenderer.DefaultPluginID;
-	static private Hashtable Loggers = new Hashtable(); // Keep track of all the Loggers
-	final protected static String[] LogMark = { "*** ERROR *** ", //$NON-NLS-1$
-		"[Trace] ", //$NON-NLS-1$
-		"+++ Warning +++ ", //$NON-NLS-1$
-		"Info " }; //$NON-NLS-1$
-
-	final protected static String Filler = "    "; // Use this to indent msg. body //$NON-NLS-1$
-	
-	protected Logger() {
-		this(ILogRenderer.DefaultPluginID);
-	}
-	
-	protected Logger(String pluginID) {
-		fPluginID = pluginID;
-		setRenderer(new JDKConsoleRenderer(this));	// Set up default to this. Someone can change it later.
-	}
-
-	/**
-	 * Return the stacktrace as a print formatted string.
-	 * @param e
-	 * @return the stacktrace as a string.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String exceptionToString(Throwable e) {
-		StringWriter stringWriter = new StringWriter();
-		e.printStackTrace(new PrintWriter(stringWriter));
-		return stringWriter.toString();
-	}
-	
-	/**
-	 * Get the system default logger. This is used for clients that don't know if they
-	 * are running in Eclipse or outside of it. This way they have a common logger format
-	 * which switch correctly.
-	 * @return default logger.
-	 * 
-	 * @since 1.0.0
-	 */
-	static public Logger getLogger() {
-		Logger defaultLogger = (Logger) Loggers.get(DefaultLoggerPlugin);
-		if (defaultLogger == null) {
-			defaultLogger = new Logger();
-			defaultLogger.init();
-			Loggers.put(DefaultLoggerPlugin, defaultLogger);
-		}
-		return defaultLogger;
-	}
-	
-	/**
-	 * Get the logger for a specific plugin.
-	 * @param pluginId
-	 * @return logger for a specific pluggin.
-	 * 
-	 * @since 1.0.0
-	 */
-	static public Logger getLogger(String pluginId) {
-		if (pluginId == null)
-			return Logger.getLogger();
-		Logger Logger = (Logger) Loggers.get(pluginId);
-		if (Logger == null) {
-			Logger = new Logger(pluginId);
-			Logger.init();
-			Loggers.put(pluginId, Logger);
-		}
-		return Logger;
-	}
-	
-	/**
-	 * Used by subclass to get a logger if it exists, but not create one.
-	 * @param pluginId
-	 * @return logger.
-	 * 
-	 * @since 1.0.0
-	 */
-	static protected Logger getLoggerIfExists(String pluginId) {
-		if (pluginId == null)
-			return Logger.getLogger();
-		else
-			return (Logger) Loggers.get(pluginId);
-	}
-
-	/**
-	 * Get the plugin id for this logger.
-	 * @return pluginid
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getPluginID() {
-		return fPluginID;
-	}
-	
-	/**
-	 * Get the trace mode for this logger
-	 * @return <code>true</code> if tracing is going on.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean getTraceMode() {
-		return fTraceMode;
-	}
-	
-	/*
-	 * Indent the Msg. Body to make it easier to read the log
-	 */
-	private void indentMsg(String msg, StringBuffer logMsg) {
-		// Line seperator is different on different platform, unix = \n, windows \r\n and mac \r
-		String sep = fLineSeperator;
-		if (msg.indexOf("\r\n") != -1) //$NON-NLS-1$
-			sep = "\r\n"; //$NON-NLS-1$
-		else if (msg.indexOf("\n") != -1) //$NON-NLS-1$
-			sep = "\n"; //$NON-NLS-1$
-		else if (msg.indexOf("\r") != -1) //$NON-NLS-1$
-			sep = "\r"; //$NON-NLS-1$
-		StringTokenizer tokenizer = new StringTokenizer(msg, sep);
-		boolean first = true;
-		while (tokenizer.hasMoreTokens()) {
-			if (first) {
-				first = false;
-				logMsg.append(Filler + tokenizer.nextToken());
-			} else
-				logMsg.append(fLineSeperator + Filler + tokenizer.nextToken());
-		}
-	}
-	/*
-	 * If Eclipse is started with the -XDebug or -debug turn traces on for this Logger
-	 * Creation date: (8/23/2001 7:37:04 PM)
-	 */
-	private void init() {
-		if (System.getProperty("debug") != null) //$NON-NLS-1$
-			fTraceMode = true;
-		level = defaultLevel = Level.parse(System.getProperty("logLevel", Level.WARNING.getName())); //$NON-NLS-1$
-		
-		try {
-			fLineSeperator = System.getProperty("line.separator"); // Diff on Win/Unix/Mac //$NON-NLS-1$
-		} catch (Throwable e) {
-			fLineSeperator = "\n"; //$NON-NLS-1$
-		}
-	}
-	/*
-	 * Generic log.
-	 * Creation date: (8/24/2001 1:55:34 PM)
-	 * @return java.lang.String
-	 * @param msg java.lang.String
-	 * @param type int
-	 */
-	private String logAny(String msg, int type) {
-		StringBuffer logMsg = new StringBuffer();
-		logMsg.append(fLineSeperator);
-		logMsg.append(LogMark[type]);
-		return punchLog(logRest(msg, logMsg), type);
-	}
-	
-	/**
-	 * This is to be used by renderers that want to put a msg out
-	 * in a generic format. This just returns the string that
-	 * should be logged. It puts things like headers on it.
-	 * 
-	 * @param msg
-	 * @param aLevel
-	 * @return The generic message for the string and level.
-	 * 
-	 * @since 1.0.0
-	 */
-	public String getGenericMsg(String msg, Level aLevel) {
-		StringBuffer genMsg = new StringBuffer(msg.length()+16);
-		genMsg.append(fLineSeperator);
-		genMsg.append(getLevelHeader(aLevel));
-		genMsg.append(": "); //$NON-NLS-1$
-		genMsg.append(new Date());
-		indentMsg(msg, genMsg);
-		return genMsg.toString();
-	}
-	
-	private static final Level[] LEVEL_SEARCH = new Level[] {
-		Level.SEVERE,
-		Level.WARNING,
-		Level.INFO,
-		ILogRenderer2.TRACE
-	};
-	
-	private static final String[] LEVEL_MARK = new String[] {
-		"*** ERROR ***", //$NON-NLS-1$
-		"+++ Warning +++", //$NON-NLS-1$
-		"Info", //$NON-NLS-1$
-		"[Trace]" //$NON-NLS-1$
-	};
-	
-	private String getLevelHeader(Level aLevel) {
-		for (int i=0; i<LEVEL_SEARCH.length; i++)
-			if (LEVEL_SEARCH[i] == aLevel)
-				return LEVEL_MARK[i];
-		return aLevel.getName();	// Not found, just use level string.
-	}
-	
-	// The write's are here for history. Will implement using log(obj, Level) for all of the types.
-
-
-	/**
-	 * deprecated use log(Level, Exception)
-	 * @param aLevel
-	 * @param ex
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 * 
-	 */
-	public String write(Level aLevel, Exception ex) {
-		return log(aLevel, ex);
-	}
-	
-	/**
-	 * deprecated use log(Throwable)
-	 * @param ex
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 * 
-	 */
-	public String write(Throwable ex) {
-		return log(ex);
-	}
-	
-	/**
-	 * deprecated use log(Object, Level)
-	 * @param aLevel
-	 * @param logEntry
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public String write(Level aLevel, Object logEntry) {
-		return log(logEntry, aLevel);
-	}
-	
-	/**
-	 * deprecated use log(String, Level)
-	 * @param aLevel
-	 * @param string
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public String write(Level aLevel, String string) {
-		return log(string, aLevel);
-	}
-	/**
-	 * deprecated use log(Throwable, Level)
-	 * @param aLevel
-	 * @param ex
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public String write(Level aLevel, Throwable ex) {
-		return log(ex, aLevel);
-	}
-	/**
-	 * deprecated use log(Throwable, Level)
-	 * @param aLevel
-	 * @param ex
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(Level aLevel, Exception ex) {
-		return log(ex, aLevel);
-	}
-	/**
-	 * deprecated use log(Throwable, Level)
-	 * @param aLevel
-	 * @param ex
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(Level aLevel, Throwable ex) {
-		return log(ex, aLevel);
-	}
-	
-	/**
-	 * Get the logging level
-	 * @return logging level
-	 * 
-	 * @since 1.0.0
-	 */
-	public Level getLevel() {
-		return level;
-	}
-	
-	/**
-	 * Check if the requested level is being logged. (e.g. if current level is SEVERE, then FINE will not be logged).
-	 * @param requestlevel
-	 * @return <code>true</code> if the level will be logged.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean isLoggingLevel(Level requestlevel) {
-		if (requestlevel == ILogRenderer2.TRACE && !getTraceMode())
-			return false;	// We aren't tracing but requested trace.
-		
-		return !(requestlevel.intValue() < getLevel().intValue() || getLevel() == Level.OFF);
-	}
-
-	/**
-	 * Log an error string.
-	 * @param msg
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logError(String msg) {
-		return log(msg, Level.SEVERE);
-	}
-
-	/**
-	 * Log an error throwable
-	 * @param e
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logError(Throwable e) {
-		return log(e, Level.SEVERE);
-	}
-
-	/**
-	 * Log an info message.
-	 * @param msg
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logInfo(String msg) {
-		return log(msg, Level.INFO);
-	}
-	
-/**
- * Log a throwable as a warning.
- * @param e
- * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
- * 
- * @since 1.0.0
- */
-	public String logInfo(Throwable e) {
-		return log(e, Level.INFO);
-	}
-
-	/**
-	 * Append the string to logMsg buffer passed in. Append the date and format the
-	 * string with nice indentation.
-	 * 
-	 * @param msg
-	 * @param logMsg
-	 * @return the string from the logMsg after logging the rest.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected String logRest(String msg, StringBuffer logMsg) {
-		logMsg.append(new Date());
-		indentMsg(msg, logMsg);
-		return logMsg.toString();
-	}
-
-	/**
-	 * Log the msg as trace only.
-	 * @param msg
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logTrace(String msg) {
-		if (fTraceMode)
-			return log(msg, ILogRenderer2.TRACE);
-		else
-			return ILogRenderer.NOLOG_DESCRIPTION;
-	}
-
-	/**
-	 * Log the throwable as trace only.
-	 * @param e
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logTrace(Throwable e) {
-		return log(e, ILogRenderer2.TRACE);
-	}
-
-	/**
-	 * Log the message as warning.
-	 * @param msg
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logWarning(String msg) {
-		return log(msg, Level.WARNING);
-	}
-	/**
-	 * Log the throwable as a warning.
-	 * @param e
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String logWarning(Throwable e) {
-		return log(e, Level.WARNING);
-	}
-	
-	/**
-	 * Ask the Renderer to punch the msg. in the log.. one
-	 * caller at the time
-	 * Creation date: (8/24/2001 9:19:17 AM)
-	 * @return java.lang.String
-	 * @param msg java.lang.String
-	 * @param type int
-	 */
-	protected synchronized String punchLog(String msg, int type) {
-		return fRenderer.log(msg, type);
-	}
-	
-	/**
-	 * Set the renderer to use.
-	 * @param renderer
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setRenderer(ILogRenderer renderer) {
-		fRenderer = renderer;
-		renderer2 = (renderer instanceof ILogRenderer2) ? (ILogRenderer2) renderer : null;
-		renderer.setTraceMode(getTraceMode());
-	}
-	
-	/**
-	 * Set the trace mode.
-	 * @param flag <code>true</code> to turn on tracing.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setTraceMode(boolean flag) {
-		fTraceMode = flag;
-		if (fRenderer != null)
-			fRenderer.setTraceMode(flag);
-	}
-	
-	/**
-	 * Set the level cutoff for logging. Anything below this level will not log.
-	 * Do not set level to <code>ILogRenderer2.TRACE</code>. It doesn't make sense.
-	 * 
-	 * @param level (Use <code>ILogRenderer2.DEFAULT</code> to restore to default for this logger.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setLevel(Level level) {
-		this.level = level != ILogRenderer2.DEFAULT ? level : defaultLevel;
-	}
-	
-	/**
-	 * Set the default level for this logger. It won't touch the current level.
-	 * 
-	 * @param level
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setDefaultLevel(Level level) {
-		this.defaultLevel = level;
-	}
-	
-	/**
-	 * Get the log file name.
-	 * @return Returns the logFileName.
-	 */
-	public String getLogFileName() {
-		return logFileName;
-	}
-
-	/**
-	 * Set the log file name.
-	 * @param logFileName The logFileName to set.
-	 */
-	public void setLogFileName(String logFileName) {
-		this.logFileName = logFileName;
-	}
-	
-	// Now all of the log() types that use a Level.
-
-	/**
-	 * Log the throwable at the default level for a throwable. 
-	 * @param e
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(Throwable e) {
-		return log(e, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the throwable at the given level.
-	 * @param e
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(Throwable e, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(e, logLevel);
-		} else {
-			// Do it the old way.
-			String stackTrace = exceptionToString(e);
-			return logAny(stackTrace, getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.SEVERE));
-		}
-	}
-	
-	public String log(Object o) {
-		return log(o, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the object at the given level.
-	 * @param o
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(Object o, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(o, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(o), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}	
-	
-	// The following are added to match up with Hyades so that primitives can be logged too.
-	
-	/**
-	 * Log a boolean at the default level. 
-	 * @param b
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(boolean b) {
-		return log(b, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log a boolean at the given level.
-	 * @param b
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(boolean b, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(b, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(b), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}	
-	
-	/**
-	 * Log the character at the default level.
-	 * @param c
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(char c) {
-		return log(c, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the character at the given level.
-	 * @param c
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(char c, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(c, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(c), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}
-	
-	/**
-	 * Log the byte at the default level.
-	 * @param b
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(byte b) {
-		return log(b, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the byte at the given level.
-	 * @param b
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(byte b, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(b, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(b), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}	
-	
-	/**
-	 * Log the short at the default level.
-	 * @param s
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(short s) {
-		return log(s, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the short at the given level.
-	 * @param s
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(short s, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(s, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(s), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}
-	
-	/**
-	 * Log the int at the default level.
-	 * @param i
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(int i) {
-		return log(i, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the int at the default level.
-	 * @param i
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(int i, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(i, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(i), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}
-	
-	/**
-	 * Log the long at the default level.
-	 * @param l
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(long l) {
-		return log(l, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the long at the given level.
-	 * @param l
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(long l, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(l, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(l), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}	
-	
-	/**
-	 * Log the float at the default level.
-	 * @param f
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(float f) {
-		return log(f, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the float at the given level.
-	 * @param f
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(float f, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(f, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(f), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}
-	
-	/**
-	 * Log the double at the default level
-	 * @param d
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(double d) {
-		return log(d, ILogRenderer2.DEFAULT);
-	}
-	
-	/**
-	 * Log the double at the given level
-	 * 
-	 * @param d
-	 * @param logLevel
-	 * @return how it was logged. See <code>CONSOLE_DESCRIPTION.</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	public String log(double d, Level logLevel) {
-		if (renderer2 != null) {
-			return renderer2.log(d, logLevel);
-		} else {
-			// Do it the old way.
-			return logAny(String.valueOf(d), getOldType(logLevel != ILogRenderer2.DEFAULT ? level : Level.FINEST));
-		}
-	}	
-	
-	/*
-	 * Turn new type into old type. The defaultLevel is the
-	 * level to use if the incoming level is marked as default.
-	 */
-	private int getOldType(Level aLevel) {
-		if (aLevel == Level.SEVERE)
-			return ILogRenderer.LOG_ERROR;
-		else if (aLevel == Level.WARNING)
-			return ILogRenderer.LOG_WARNING;
-		else if (aLevel == Level.INFO)
-			return ILogRenderer.LOG_INFO;
-		else if (aLevel == ILogRenderer2.TRACE)
-			return ILogRenderer.LOG_TRACE;
-		else
-			return ILogRenderer.LOG_INFO;		
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java
deleted file mode 100644
index 698a435..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java
+++ /dev/null
@@ -1,172 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: EMFWorkbenchContextFactory.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2005/06/16 20:14:27 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench;
-
-import java.util.*;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectNature;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-import org.eclipse.jem.internal.util.emf.workbench.nls.EMFWorkbenchResourceHandler;
-import org.eclipse.jem.util.RegistryReader;
-import org.eclipse.jem.util.emf.workbench.*;
-import org.eclipse.jem.util.emf.workbench.nature.EMFNature;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-
-public class EMFWorkbenchContextFactory  {
-	public static final EMFWorkbenchContextFactory INSTANCE;
-	
-	static {
-		INSTANCE = createFactoryInstance();
-	}
-	private final Class CONTRIBUTOR_CLASS = IEMFContextContributor.class;
-	protected Map emfContextCache = new WeakHashMap();
-
-	
-	private static EMFWorkbenchContextFactory createFactoryInstance() {
-		EMFWorkbenchContextFactory factory = createFactoryInstanceFromExtension();
-		if (factory == null)
-			factory = new EMFWorkbenchContextFactory();
-		return factory;
-	}
-	
-	private static EMFWorkbenchContextFactory createFactoryInstanceFromExtension() {
-		final EMFWorkbenchContextFactory[] factoryHolder = new EMFWorkbenchContextFactory[1];
-		RegistryReader reader = new RegistryReader(JEMUtilPlugin.ID, "internalWorkbenchContextFactory") { //$NON-NLS-1$
-			public boolean readElement(IConfigurationElement element) {
-				if (element.getName().equals("factoryClass")) //$NON-NLS-1$
-					try {
-						factoryHolder[0] = (EMFWorkbenchContextFactory)element.createExecutableExtension("name"); //$NON-NLS-1$
-						return true;
-					} catch (CoreException e) {
-						Logger.getLogger().logError(e);
-					}				
-				return false;
-			}
-		};
-		reader.readRegistry();
-		return factoryHolder[0];
-	}
-
-	/**
-	 * Constructor for EMFNatureFactory.
-	 */
-	protected EMFWorkbenchContextFactory() {
-		super();
-
-	}
-
-
-	protected void cacheEMFContext(IProject aProject, EMFWorkbenchContextBase emfContext) {
-		if (aProject != null && emfContext != null)
-			emfContextCache.put(aProject, emfContext);
-	}
-
-	protected EMFWorkbenchContextBase getCachedEMFContext(IProject aProject) {
-		if (aProject != null)
-			return (EMFWorkbenchContextBase) emfContextCache.get(aProject);
-		return null;
-	}
-
-	/**
-	 * <code>aProject</code> is either being closed or deleted so we need to cleanup our cache.
-	 */
-	public void removeCachedProject(IProject aProject) {
-		if (aProject != null) 
-			emfContextCache.remove(aProject); 
-		
-	}
-	/**
-	 * Return a new or existing EMFNature on <code>aProject</code>. Allow the <code>contributor</code>
-	 * to contribute to the new or existing nature prior to returning.
-	 */
-	public EMFWorkbenchContextBase createEMFContext(IProject aProject, IEMFContextContributor contributor) {
-		if (aProject == null)
-			throw new IllegalStateException("[EMFWorkbenchContextBase]" + EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextFactory_UI_0")); //$NON-NLS-1$ //$NON-NLS-2$
-		if (!aProject.isAccessible())
-			throw new IllegalStateException("[EMFWorkbenchContextBase]" + EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextFactory_UI_1", new Object[]{aProject.getName()})); //$NON-NLS-1$ //$NON-NLS-2$
-		EMFWorkbenchContextBase context = getCachedEMFContext(aProject);
-		boolean contributorFound = false;
-		if (context == null) {
-			context = primCreateEMFContext(aProject);
-			cacheEMFContext(aProject, context);
-			contributorFound = initializeEMFContextFromContributors(aProject, context, contributor);
-		}
-		if (contributor != null && context != null && !contributorFound)
-			contributor.primaryContributeToContext(context);
-		return context;
-	}
-	
-	protected boolean initializeEMFContextFromContributors(IProject aProject, EMFWorkbenchContextBase emfContext, IEMFContextContributor contributor) {
-		boolean contributorFound = false;
-		if (aProject == null || emfContext == null)
-			return contributorFound;
-		List runtimes = EMFNature.getRegisteredRuntimes(aProject);
-		for (int i = 0; i < runtimes.size(); i++) {
-			IProjectNature nature = (IProjectNature) runtimes.get(i);
-			if (nature != null && CONTRIBUTOR_CLASS.isInstance(nature)) {
-				if (nature == contributor)
-					contributorFound = true;
-				((IEMFContextContributor) nature).primaryContributeToContext(emfContext);
-			}
-		}
-		return contributorFound;
-	}
-
-	protected boolean isNatureEnabled(IProject aProject, String natureId) {
-		try {
-			return aProject.isNatureEnabled(natureId);
-		} catch (CoreException e) {
-			return false;
-		}
-	}
-
-	protected String[] getNatureIds(IProject aProject) {
-		try {
-			if (aProject.isAccessible())
-				return aProject.getDescription().getNatureIds();
-		} catch (CoreException e) {
-		}
-		return null;
-	}
-
-	protected IProjectNature getNature(IProject aProject, String natureId) {
-		try {
-			return aProject.getNature(natureId);
-		} catch (CoreException e) {
-			return null;
-		}
-	}
-
-	protected EMFWorkbenchContextBase primCreateEMFContext(IProject aProject) {
-		return new EMFWorkbenchContextBase(aProject);
-	}
-	/**
-	 * Return an existing EMFNature on <code>aProject</code>.
-	 */
-	public EMFWorkbenchContextBase getEMFContext(IProject aProject) {
-		return getCachedEMFContext(aProject);
-	}
-
-	public ResourceSetWorkbenchSynchronizer createSynchronizer(ResourceSet aResourceSet, IProject aProject) {
-		return new ResourceSetWorkbenchSynchronizer(aResourceSet, aProject);
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
deleted file mode 100644
index 36c8f4d..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
+++ /dev/null
@@ -1,274 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ProjectResourceSetImpl.java,v $$
- *  $$Revision: 1.8 $$  $$Date: 2005/03/18 18:52:06 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench;
-
-import java.io.IOException;
-import java.util.*;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.NotificationImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-
-import org.eclipse.jem.util.emf.workbench.*;
-import org.eclipse.jem.util.emf.workbench.nature.EMFNature;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-public class ProjectResourceSetImpl extends ResourceSetImpl implements ProjectResourceSet {
-	private boolean isReleasing = false;
-	private IProject project;
-	protected List resourceHandlers = new ArrayList();
-	protected ResourceSetWorkbenchSynchronizer synchronizer;
-	protected ProjectResourceSetImpl() {
-		setURIResourceMap(new HashMap(10));	// Tell it to cache uri->resource access.
-		getLoadOptions().put(XMLResource.OPTION_USE_PARSER_POOL, EMFNature.SHARED_PARSER_POOL);
-	}
-	public ProjectResourceSetImpl(IProject aProject) {
-		this();
-		setProject(aProject);
-		initializeSharedCacheListener();
-	}
-	protected void initializeSharedCacheListener() {
-		JEMUtilPlugin.getSharedCache().beginListening(this);
-	}
-	protected boolean isReleasing() {
-		return isReleasing;
-	}
-	/**
-	 * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#delegatedGetResource(URI, boolean)
-	 */
-	protected Resource delegatedGetResource(URI uri, boolean loadOnDemand) {
-		Resource res = super.delegatedGetResource(uri, loadOnDemand);
-		if (res == null)
-			res = getResourceFromHandlers(uri);
-		return res;
-	}
-	public Resource createResource(URI uri) {
-		if (isReleasing) return null;
-		//Check the map first when creating the resource and do not
-		//normalize if a value is found.
-		boolean isMapped = !(((URIConverterImpl.URIMap)getURIConverter().getURIMap()).getURI(uri).equals(uri));
-		URI converted = uri;
-		if (!isMapped)
-			converted = getURIConverter().normalize(uri);
-		Resource result = createResourceFromHandlers(converted);
-		if (result == null)
-			result = super.createResource(converted);
-		
-		return result;
-	}
-	/**
-	 * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#demandLoad(Resource)
-	 */
-	protected void demandLoad(Resource resource) throws IOException {
-		if (!isReleasing)
-			super.demandLoad(resource);
-	}
-	
-	/**
-	 * See if any resource handlers from the WorkbenchContext
-	 * decide to create the Resource in another manner.
-	 */
-	protected Resource createResourceFromHandlers(URI uri) {
-		Resource resource = null;
-		ResourceHandler handler = null;
-		for (int i = 0; i < resourceHandlers.size(); i++) {
-			handler = (ResourceHandler) resourceHandlers.get(i);
-			resource = handler.createResource(this, uri);
-			if (resource != null)
-				return resource;
-		}
-		return null;
-	}
-	/**
-	 * See if any resource handlers from the WorkbenchContext
-	 * can return a Resource from a <code>uri</code>.
-	 */
-	protected Resource getResourceFromHandlers(URI uri) {
-		if (isReleasing) return null;
-		for (int i = 0; i < resourceHandlers.size(); i++) {
-			Resource resource = ((ResourceHandler) resourceHandlers.get(i)).getResource(this, uri);
-			if (resource != null)
-				return resource;
-		}
-		return null;
-	}
-	
-	public void release() {
-		// Send out notification of release.
-		if (eNotificationRequired()) {
-			eNotify(new NotificationImpl(SPECIAL_NOTIFICATION_TYPE, null, null, Notification.NO_INDEX, false) {
-				/* (non-Javadoc)
-				 * @see org.eclipse.emf.common.notify.impl.NotificationImpl#getFeatureID(java.lang.Class)
-				 */
-				public int getFeatureID(Class expectedClass) {
-					return PROJECTRESOURCESET_ABOUT_TO_RELEASE_ID;
-				}
-				
-				/* (non-Javadoc)
-				 * @see org.eclipse.emf.common.notify.impl.NotificationImpl#getNotifier()
-				 */
-				public Object getNotifier() {
-					return ProjectResourceSetImpl.this;
-				}
-			});
-		}
-		setIsReleasing(true);
-		if (synchronizer != null)
-			synchronizer.dispose();
-		synchronizer = null;
-		removeAndUnloadAllResources();
-		resourceHandlers = null;
-		eAdapters().clear();
-		setProject(null);
-		JEMUtilPlugin.getSharedCache().stopListening(this);
-	}
-	protected void removeAndUnloadAllResources() {
-		boolean caughtException = false;
-		if (getResources().isEmpty()) return;
-		List list = new ArrayList(getResources());
-		getResources().clear();
-		Resource res;
-		int size = list.size();
-		for (int i = 0; i < size; i++) {
-			res = (Resource) list.get(i);
-			try {
-				res.unload();
-			} catch (RuntimeException ex) {
-				Logger.getLogger().logError(ex);
-				caughtException = true;
-			}
-		}
-		if (caughtException)
-			throw new RuntimeException("Exception(s) unloading resources - check log files"); //$NON-NLS-1$
-	}
-	protected void setIsReleasing(boolean aBoolean) {
-		isReleasing = aBoolean;
-	}
-	/**
-	 * Gets the project.
-	 * @return Returns a IProject
-	 */
-	public IProject getProject() {
-		return project;
-	}
-	/**
-	 * Sets the project.
-	 * @param project The project to set
-	 */
-	protected void setProject(IProject project) {
-		this.project = project;
-	}
-	/*
-	 * Javadoc copied from interface.
-	 */
-	public EObject getEObject(URI uri, boolean loadOnDemand) {
-		if (isReleasing) return null;
-		Resource resource = getResource(uri.trimFragment(), loadOnDemand);
-		EObject result = null;
-		if (resource != null && resource.isLoaded())
-			result = resource.getEObject(uri.fragment());
-		if (result == null)
-			result = getEObjectFromHandlers(uri, loadOnDemand);
-		return result;
-	}
-	/**
-	 * See if any resource handlers from the WorkbenchContext
-	 * can return a EObject from a <code>uri</code> after
-	 * failing to find it using the normal mechanisms.
-	 */
-	protected EObject getEObjectFromHandlers(URI uri, boolean loadOnDemand) {
-		EObject obj = null;
-		ResourceHandler handler = null;
-		for (int i = 0; i < resourceHandlers.size(); i++) {
-			handler = (ResourceHandler) resourceHandlers.get(i);
-			obj = handler.getEObjectFailed(this, uri, loadOnDemand);
-			if (obj != null)
-				return obj;
-		}
-		return null;
-	}
-	
-	public boolean add(ResourceHandler resourceHandler) {
-		return resourceHandlers.add(resourceHandler);
-	}
-	public void addFirst(ResourceHandler resourceHandler) {
-		resourceHandlers.add(0, resourceHandler);
-	}
-	public boolean remove(ResourceHandler resourceHandler) {
-		return resourceHandlers.remove(resourceHandler);
-	}
-	/**
-	 * Returns the synchronizer.
-	 * @return ResourceSetWorkbenchSynchronizer
-	 */
-	public ResourceSetWorkbenchSynchronizer getSynchronizer() {
-		return synchronizer;
-	}
-	/**
-	 * Sets the synchronizer.
-	 * @param synchronizer The synchronizer to set
-	 */
-	public void setSynchronizer(ResourceSetWorkbenchSynchronizer synchronizer) {
-		this.synchronizer = synchronizer;
-	}
-	/**
-	 * @see org.eclipse.emf.ecore.resource.ResourceSet#setResourceFactoryRegistry(Resource.Factory.Registry)
-	 */
-	public void setResourceFactoryRegistry(Resource.Factory.Registry factoryReg) {
-		if (resourceFactoryRegistry != null && factoryReg != null) {
-			preserveEntries(factoryReg.getExtensionToFactoryMap(), resourceFactoryRegistry.getExtensionToFactoryMap());
-			preserveEntries(factoryReg.getProtocolToFactoryMap(), resourceFactoryRegistry.getProtocolToFactoryMap());
-		}
-		super.setResourceFactoryRegistry(factoryReg);
-	}
-	/*
-	 * Preserve the entries from map2 in map1 if no collision.
-	 */
-	protected void preserveEntries(Map map1, Map map2) {
-		if (map2.isEmpty())
-			return;
-		Iterator it = map2.entrySet().iterator();
-		Map.Entry entry;
-		while (it.hasNext()) {
-			entry = (Map.Entry) it.next();
-			if (!map1.containsKey(entry.getKey()))
-				map1.put(entry.getKey(), entry.getValue());
-		}
-	}
-	/*
-	 * Javadoc copied from interface.
-	 */
-	public Resource getResource(URI uri, boolean loadOnDemand) {
-		if (isReleasing) return null;
-		return super.getResource(uri, loadOnDemand);
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jem.util.emf.workbench.ProjectResourceSet#resetNormalizedURICache()
-	 */
-	public void resetNormalizedURICache() {
-		if (getURIResourceMap() != null)
-			getURIResourceMap().clear();
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceHandler.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceHandler.java
deleted file mode 100644
index 9234123..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceHandler.java
+++ /dev/null
@@ -1,147 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkspaceResourceHandler.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
-
-import org.eclipse.jem.util.emf.workbench.ResourceHandler;
-import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-/**
- * The main purpose of this class is to redirect, if necessary, to another 
- * ResourceSet.  This class should be used in conjunction with the WorkbenchURIConverter
- * so that the URIs passed will use the platform protocol.  Anything else will be considered
- * to be ambiguous and we will not be able to redirect.
- */
-public class WorkspaceResourceHandler implements ResourceHandler {
-	/**
-	 * Constructor for WorkspaceResourceHandler.
-	 */
-	public WorkspaceResourceHandler() {
-		super();
-	}
-	/*
-	* @see IResourceHandler#getResource(ResourceSet, URI)
-	*/
-	public Resource getResource(ResourceSet originatingResourceSet, URI uri) {
-		if (WorkbenchResourceHelperBase.isPlatformResourceURI(uri))
-			return getResourceForPlatformProtocol(originatingResourceSet, uri);
-		URI mappedURI = ((URIConverterImpl.URIMap)originatingResourceSet.getURIConverter().getURIMap()).getURI(uri);
-		if (isGlobalPluginLoad(mappedURI))
-			return getResourceForPlatformPluginProtocol(originatingResourceSet, uri);
-		return null;
-	}
-	/**
-	 * Redirect to the correct project based on the project name in the <code>uri</code>.
-	 * The <code>uri</code> will be in the following format:   platform:/resource/[project name].
-	 */
-	protected Resource createResourceForPlatformProtocol(ResourceSet originatingResourceSet, URI uri) {
-		String projectName = uri.segment(1);
-		IProject project = getProject(projectName);
-		if (project != null && project.isAccessible()) {
-			ResourceSet set = WorkbenchResourceHelperBase.getResourceSet(project);
-			if (originatingResourceSet != set)
-				return createResource(uri, set);
-		}
-		return null;
-	}
-	/**
-		 * Redirect to the correct project based on the project name in the <code>uri</code>.
-		 * The <code>uri</code> will be in the following format:   platform:/resource/[project name].
-		 */
-	protected Resource createResourceForPlatformPluginProtocol(ResourceSet originatingResourceSet, URI uri) {
-			
-		ResourceSet set = JEMUtilPlugin.getPluginResourceSet();
-		return createResource(uri, set);
-		}
-	protected Resource createResource(URI uri, ResourceSet redirectedResourceSet) {
-		return redirectedResourceSet.createResource(uri);
-	}
-	/**
-	 * Redirect to the correct project based on the first segment in the file name.
-	 * This is for compatability purposes for people using the platform:/resource protocol.
-	 */
-	protected Resource getResourceForPlatformProtocol(ResourceSet originatingResourceSet, URI uri) {
-		String projectName = uri.segment(1);
-		IProject project = getProject(projectName);
-		if (project != null && project.isAccessible()) {
-			ResourceSet set = WorkbenchResourceHelperBase.getResourceSet(project);
-			if (originatingResourceSet != set)
-				return getResource(uri, set);
-		}
-		return null;
-	}
-	/**
-		 * Redirect to the correct project based on the first segment in the file name.
-		 * This is for compatability purposes for people using the platform:/resource protocol.
-		 */
-	protected Resource getResourceForPlatformPluginProtocol(ResourceSet originatingResourceSet, URI uri) {
-			
-		ResourceSet set = JEMUtilPlugin.getPluginResourceSet();
-		return getResource(uri, set);
-			
-	}
-	protected Resource getResource(URI uri, ResourceSet redirectedResourceSet) {
-		return redirectedResourceSet.getResource(uri, false);
-	}
-	
-	protected IWorkspace getWorkspace() {
-		return ResourcesPlugin.getWorkspace();
-	}
-	protected IProject getProject(String projectName) {
-		IWorkspace ws = getWorkspace();
-		if (ws == null)
-			return null;
-		return ws.getRoot().getProject(projectName);
-	}
-	protected IProject getProject(ResourceSet resourceSet) {
-		return WorkbenchResourceHelperBase.getProject(resourceSet);
-	}
-	/**
-	 * @see org.eclipse.jem.util.ResourceHandler#createResource(ResourceSet, URI)
-	 */
-	public Resource createResource(ResourceSet originatingResourceSet, URI uri) {
-		if (WorkbenchResourceHelperBase.isPlatformResourceURI(uri))
-			return createResourceForPlatformProtocol(originatingResourceSet, uri);
-		URI mappedURI = ((URIConverterImpl.URIMap)originatingResourceSet.getURIConverter().getURIMap()).getURI(uri);
-		if (isGlobalPluginLoad(mappedURI))
-			return createResourceForPlatformPluginProtocol(originatingResourceSet, uri);
-		return null;
-	}
-	/**
-	 * @see org.eclipse.jem.util.ResourceHandler#getEObjectFailed(ResourceSet, URI, boolean)
-	 * Subclasses may override.
-	 */
-	public EObject getEObjectFailed(ResourceSet originatingResourceSet, URI uri, boolean loadOnDemand) {
-		return null;
-	}
-	
-	protected boolean isGlobalPluginLoad(URI aURI) {
-		if (WorkbenchResourceHelperBase.isPlatformPluginResourceURI(aURI)) {
-			String[] globalPlugins = JEMUtilPlugin.getGlobalLoadingPluginNames();
-			for (int i=0;i<globalPlugins.length;i++) {
-				if (aURI.segment(1).startsWith(globalPlugins[i]))
-					return true;
-			}
-		}
-		return false;
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceNotifier.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceNotifier.java
deleted file mode 100644
index 6c10afe..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/WorkspaceResourceNotifier.java
+++ /dev/null
@@ -1,73 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkspaceResourceNotifier.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench;
-
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.common.notify.impl.NotifierImpl;
-
-import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
-
-/**
- * This class is used to capture all ADD and REMOVE notifications from each ProjectResourceSet
- * and forward it on to any interrested listeners.  This is to allow you to listen to one object
- * to gain all ADD and REMOVE notifications for each ResourceSet within the system.
- */
-public class WorkspaceResourceNotifier extends NotifierImpl {
-	protected Adapter projectAdapter = new WorkspaceResourceCacheAdapter();
-
-	class WorkspaceResourceCacheAdapter extends AdapterImpl {
-		/**
-		 * Forward ADD and REMOVE notification.
-		 */
-		public void notifyChanged(Notification msg) {
-			switch (msg.getEventType()) {
-				case Notification.ADD :
-				case Notification.ADD_MANY :
-				case Notification.REMOVE :
-				case Notification.REMOVE_MANY :
-					eNotify(msg);
-					break;
-			}
-		}
-	}
-
-	/**
-	 * Constructor for WorkspaceResourceCache.
-	 */
-	public WorkspaceResourceNotifier() {
-		super();
-	}
-
-	/**
-	 * Begin listening to a ProjectResourceSet.
-	 */
-	public void beginListening(ProjectResourceSet aResourceSet) {
-		if (aResourceSet != null) { 
-			if (aResourceSet.eAdapters() == null ||  
-			!aResourceSet.eAdapters().contains(projectAdapter))
-			aResourceSet.eAdapters().add(projectAdapter);
-		}
-	}
-	/**
-	 * Stop listening to a ProjectResourceSet.
-	 */
-	public void stopListening(ProjectResourceSet aResourceSet) {
-		if (aResourceSet != null)
-			aResourceSet.eAdapters().remove(projectAdapter);
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nature/EMFNatureRegistry.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nature/EMFNatureRegistry.java
deleted file mode 100644
index f85f7b0..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nature/EMFNatureRegistry.java
+++ /dev/null
@@ -1,74 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: EMFNatureRegistry.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench.nature;
-
-import java.util.HashSet;
-import java.util.Set;
-
-
-import org.eclipse.core.runtime.*;
-
-import org.eclipse.jem.internal.util.emf.workbench.nls.EMFWorkbenchResourceHandler;
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-public class EMFNatureRegistry {
-
-	private static final String NATURE_REGISTRATION_POINT = "org.eclipse.jem.util.nature_registration"; //$NON-NLS-1$
-	private static final String NATURE  = "nature"; //$NON-NLS-1$
-	private static final String STATIC_ID = "id"; //$NON-NLS-1$
-
-	/**
-	 * Constructor
-	 */
-	private EMFNatureRegistry() {
-		super();
-		readRegistry();
-	}
-	
-	private static EMFNatureRegistry singleton;
-	
-	public final Set REGISTERED_NATURE_IDS = new HashSet();
-	
-	public static EMFNatureRegistry singleton() {
-		if (singleton == null)
-			singleton = new EMFNatureRegistry();
-		return singleton;
-	}
-	
-	protected void readRegistry() {
-	// register Nature IDs for the J2EENatures
-		IExtensionRegistry r = Platform.getExtensionRegistry();
-		IConfigurationElement[] ce = r.getConfigurationElementsFor(NATURE_REGISTRATION_POINT);
-		String natureId;
-		for (int i=0; i<ce.length; i++) {
-			if (ce[i].getName().equals(NATURE)) {
-				natureId = ce[i].getAttribute(STATIC_ID);
-				if (natureId != null)
-					registerNatureID(natureId);
-			}
-		}
-	}
-
-	/**
-	 * @param natureId
-	 */
-	private void registerNatureID(String natureId) {
-		if (!REGISTERED_NATURE_IDS.contains(natureId))
-			REGISTERED_NATURE_IDS.add(natureId);
-		else
-			Logger.getLogger().logError(EMFWorkbenchResourceHandler.getString("EMFNatureRegistry_ERROR_0", new Object[] {natureId})); //$NON-NLS-1$
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nls/EMFWorkbenchResourceHandler.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nls/EMFWorkbenchResourceHandler.java
deleted file mode 100644
index 31a8e45..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/nls/EMFWorkbenchResourceHandler.java
+++ /dev/null
@@ -1,63 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: EMFWorkbenchResourceHandler.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.internal.util.emf.workbench.nls;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class EMFWorkbenchResourceHandler {
-
-	private static ResourceBundle fgResourceBundle;
-
-	/**
-	 * Returns the resource bundle used by all classes in this Project
-	 */
-	public static ResourceBundle getResourceBundle() {
-		try {
-			return ResourceBundle.getBundle("emfworkbench");//$NON-NLS-1$
-		} catch (MissingResourceException e) {
-			// does nothing - this method will return null and
-			// getString(String, String) will return the key
-			// it was called with
-		}
-		return null;
-	}
-	public static String getString(String key) {
-		if (fgResourceBundle == null) {
-			fgResourceBundle= getResourceBundle();
-		}
-		
-		if (fgResourceBundle != null) {
-			try {
-				return fgResourceBundle.getString(key);
-			} catch (MissingResourceException e) {
-				return "!" + key + "!";//$NON-NLS-2$//$NON-NLS-1$
-			}
-		} else {
-			return "!" + key + "!";//$NON-NLS-2$//$NON-NLS-1$
-		}
-	}
-public static String getString(String key, Object[] args) {
-
-	try {return MessageFormat.format(getString(key), args);}
-	catch (IllegalArgumentException e) {return getString(key);}
-
-}
-public static String getString(String key, Object[] args, int x) {
-
-		return getString(key);
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/CharacterUtil.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/CharacterUtil.java
deleted file mode 100644
index afe7279..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/CharacterUtil.java
+++ /dev/null
@@ -1,279 +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
- *******************************************************************************/
-/*
- *  $RCSfile: CharacterUtil.java,v $
- *  $Revision: 1.1 $  $Date: 2006/02/24 17:32:14 $ 
- */
-package org.eclipse.jem.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import com.ibm.icu.text.UTF16;
- 
-
-/**
- * Static helper to handle characters in the new UTF multi-char format.
- * It is needed because ICU4J currently doesn't handle some correctly yet that we
- * need to have working. As ICU4J gets them working, the methods here will become
- * deprecated.
- * 
- * @since 1.2.0
- */
-public class CharacterUtil {
-
-	private CharacterUtil() {
-		
-	}
-	
-	
-	/**
-	 * TODO So until ICU4J does work correctly this util will be needed. It will
-	 * stay around because it is API, but at that time it will be marked deprecated. It should
-	 * also then reroute to ICU4J instead of doing the method reflections.
-	 */
-	private static Method METHOD_JAVA_IDENTIFIER_START, METHOD_JAVA_IDENTIFIER_PART;
-	
-	static {
-		// Try to get the Character.isJavaIdentifier(int) method. If there, then we are in 1.5 or above. Else use the char form.
-		try {
-			METHOD_JAVA_IDENTIFIER_START = Character.class.getMethod("isJavaIdentifierStart", new Class[] {Integer.TYPE});
-		} catch (SecurityException e) {
-			// Default to use (char) type instead.
-			METHOD_JAVA_IDENTIFIER_START = null;
-		} catch (NoSuchMethodException e) {
-			// Default to use (char) type instead.
-			METHOD_JAVA_IDENTIFIER_START = null;
-		}
-		try {
-			METHOD_JAVA_IDENTIFIER_PART = Character.class.getMethod("isJavaIdentifierPart", new Class[] {Integer.TYPE});
-		} catch (SecurityException e) {
-			// Default to use (char) type instead.
-			METHOD_JAVA_IDENTIFIER_PART = null;
-		} catch (NoSuchMethodException e) {
-			// Default to use (char) type instead.
-			METHOD_JAVA_IDENTIFIER_PART = null;
-		}		
-	}
-
-	/**
-	 * Is start of java identifier
-	 * @param intChar int character (UTF multi-char is valid)
-	 * @return <code>true</code> if start of java identifier.
-	 * 
-	 * @see Character#isJavaIdentifierStart(char)
-	 * @since 1.2.0
-	 */
-	public static boolean isJavaIdentifierStart(int intChar) {
-		if (METHOD_JAVA_IDENTIFIER_START != null) {
-			try {
-				return ((Boolean) METHOD_JAVA_IDENTIFIER_START.invoke(null, new Object[] {new Integer(intChar)})).booleanValue();
-			} catch (IllegalArgumentException e) {
-			} catch (IllegalAccessException e) {
-			} catch (InvocationTargetException e) {
-			}
-		}
-		return Character.isJavaIdentifierStart((char) intChar);
-	}
-	
-	/**
-	 * Is start of java identifier
-	 * @param intChar int character (UTF multi-char is valid)
-	 * @return <code>true</code> if start of java identifier.
-	 * 
-	 * @see Character#isJavaIdentifierStart(char)
-	 * @since 1.2.0
-	 */
-	public static boolean isJavaIdentifierPart(int intChar) {
-		if (METHOD_JAVA_IDENTIFIER_PART != null) {
-			try {
-				return ((Boolean) METHOD_JAVA_IDENTIFIER_PART.invoke(null, new Object[] {new Integer(intChar)})).booleanValue();
-			} catch (IllegalArgumentException e) {
-			} catch (IllegalAccessException e) {
-			} catch (InvocationTargetException e) {
-			}
-		}
-		return Character.isJavaIdentifierPart((char) intChar);
-	}
-	
-	public static abstract class AbstractCharIterator {
-
-		
-		protected final CharSequence charSeq;
-		private int pos = 0;
-		private int lastCharIndex = 0;
-
-		/**
-		 * Create with a string.
-		 * @param charSeq
-		 * 
-		 * @since 1.2.0
-		 */
-		public AbstractCharIterator(CharSequence charSeq) {
-			this.charSeq = charSeq;
-		}
-		
-		/**
-		 * Set the next char index.
-		 * @param index
-		 * 
-		 * @since 1.2.0
-		 */
-		public void setIndex(int index) {
-			pos = index;
-		}
-
-		/**
-		 * Has another char.
-		 * @return <code>true</code> if there is another char to return.
-		 * 
-		 * @since 1.2.0
-		 */
-		public boolean hasNext() {
-			return pos < charSeq.length();
-		}
-		
-		/**
-		 * Has another char before the current position. Doing previous
-		 * will return the char that was just returned.
-		 * @return
-		 * 
-		 * @since 1.2.0
-		 */
-		public boolean hasPrevious() {
-			return pos > 0;
-		}
-		
-		/**
-		 * Return next char from the one that was just returned.
-		 * @return next char.
-		 * 
-		 * @since 1.2.0
-		 */
-		public int next() {
-			if (!hasNext())
-				throw new IllegalStateException();
-			
-			int next = utfCharAt(pos);
-			lastCharIndex = pos;
-			pos += UTF16.getCharCount(next);
-			return next;
-		}
-		
-		/**
-		 * Return the UTF-32 char at the given position.
-		 * @param pos
-		 * @return
-		 * 
-		 * @since 1.2.0
-		 */
-		protected abstract int utfCharAt(int pos);
-		
-		/**
-		 * Return the previous character from the one that was just returned.
-		 * @return
-		 * 
-		 * @since 1.2.0
-		 */
-		public int previous() {
-			if (!hasPrevious())
-				throw new IllegalStateException();
-
-			int next;
-			if (UTF16.isTrailSurrogate(charSeq.charAt(--pos))) {
-				if (pos > 0)
-					next = utfCharAt(--pos);
-				else
-					next = charSeq.charAt(pos);
-			} else {
-				next = charSeq.charAt(pos);
-			}
-			lastCharIndex = pos;
-			return next;
-		}
-		
-		/**
-		 * Return the UTF16 character position of the char that was just returned from either
-		 * previous or next.
-		 * This is the (char) position not the
-		 * position of logical int chars returned. For example a standard string of
-		 * <code>"abc"</code> the position of the char 'b' is 1. But take the string
-		 * <code>"ab1b2c"</code> where "b1b2" is one UTF-32 char, then the position
-		 * of 'c' is 3. It would not be 2, which is what the logical char position
-		 * would be if taking UFT32 into account.
-		 * @return
-		 * 
-		 * @since 1.2.0
-		 */
-		public int getPosition() {
-			return lastCharIndex;
-		}
-	
-	}
-	
-	/**
-	 * Special char iterator that returns ints instead of chars for
-	 * walking strings that can contain UTF multi-chars. This is
-	 * a limited version of {@link java.text.CharacterIterator}.
-	 * 
-	 * @since 1.2.0
-	 */
-	public static class StringIterator extends AbstractCharIterator {
-		
-
-		/**
-		 * Create with a string.
-		 * @param str
-		 * 
-		 * @since 1.2.0
-		 */
-		public StringIterator(String str) {
-			super(str);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jem.util.CharacterUtil.AbstractCharIterator#utfCharAt(int)
-		 */
-		protected int utfCharAt(int pos) {
-			return UTF16.charAt((String) charSeq, pos);
-		}
-		
-	}
-	
-	/**
-	 * Special char iterator that returns ints instead of chars for
-	 * walking strings that can contain UTF multi-chars. This is
-	 * a limited version of {@link java.text.CharacterIterator}.
-	 * 
-	 * @since 1.2.0
-	 */
-	public static class StringBufferIterator extends AbstractCharIterator {
-		
-
-		/**
-		 * Create with a string.
-		 * @param strBuffer
-		 * 
-		 * @since 1.2.0
-		 */
-		public StringBufferIterator(StringBuffer strBuffer) {
-			super(strBuffer);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jem.util.CharacterUtil.AbstractCharIterator#utfCharAt(int)
-		 */
-		protected int utfCharAt(int pos) {
-			return UTF16.charAt((StringBuffer) charSeq, pos);
-		}
-		
-	}	
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/NotPresentPerformanceMonitor.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/NotPresentPerformanceMonitor.java
deleted file mode 100644
index 54af2bd..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/NotPresentPerformanceMonitor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.jem.util;
-/*******************************************************************************
- * 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
- *******************************************************************************/
-/*
- *  $$RCSfile: NotPresentPerformanceMonitor.java,v $$
- *  $$Revision: 1.3 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-/**
- * This is the instantiation to use if the performance monitor plugin is not installed. It basically does nothing.
- * 
- * <p>
- * This class is not intended to be instantiated by clients.
- * </p>
- * 
- * @since 1.0.0
- */
-public class NotPresentPerformanceMonitor extends PerformanceMonitorUtil {
-
-	/*
-	 * Only instantiated from this package.
-	 */
-	NotPresentPerformanceMonitor() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#setVar(java.lang.String)
-	 */
-	public void setVar(String var) {
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#doSnapshot(int, int)
-	 */
-	protected void doSnapshot(int step, int types) {
-	}
-
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#doSnapshot(int)
-	 */
-	protected void doSnapshot(int step) {
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PerformanceMonitorUtil.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PerformanceMonitorUtil.java
deleted file mode 100644
index a76fdd0..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PerformanceMonitorUtil.java
+++ /dev/null
@@ -1,280 +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
- *******************************************************************************/
-/*
- *  $RCSfile: PerformanceMonitorUtil.java,v $
- *  $Revision: 1.7 $  $Date: 2005/08/24 21:10:34 $ 
- */
-package org.eclipse.jem.util;
-import java.util.EventObject;
-
-import org.eclipse.perfmsr.core.IPerformanceMonitor;
-
-/**
- * This is a simplified wrapper to the IPerformanceMonitor that hides it so that the actual plugin can be optional and not required.
- * 
- * <p>
- * This class is not meant to be subclassed by clients.
- * </p>
- * 
- * @since 1.0.0
- */
-public abstract class PerformanceMonitorUtil {
-	/**
-	 * Event for PerformanceListener notification.
-	 * 
-	 * @since 1.1.0
-	 */
-	public static class PerformanceEvent extends EventObject {
-		
-		/**
-		 * Comment for <code>serialVersionUID</code>
-		 * 
-		 * @since 1.1.0
-		 */
-		private static final long serialVersionUID = -4680071462750180339L;
-
-		PerformanceEvent(Object source, int step) {
-			super(source);
-			snapshowWithTypes = false;
-			this.step = step;
-			this.types = 0;	// Not set.
-		}
-		
-		PerformanceEvent(Object source, int step, int types) {
-			super(source);
-			snapshowWithTypes = true;
-			this.step = step;
-			this.types = types;
-		}
-
-		
-		/**
-		 * Snapshot with types if <code>true</code>.
-		 * @since 1.1.0
-		 */
-		public final boolean snapshowWithTypes;
-
-		/**
-		 * Step of snapshot
-		 * @since 1.1.0
-		 */
-		public final int step;
-		
-		/**
-		 * types of snapshot.
-		 * @since 1.1.0
-		 */
-		public final int types;
-	}
-	
-	/**
-	 * Performance Listener interface
-	 * 
-	 * @since 1.1.0
-	 */
-	public interface PerformanceListener {
-		/**
-		 * Snapshot was called.
-		 * @param event
-		 * 
-		 * @since 1.1.0
-		 */
-		public void snapshot(PerformanceEvent event);
-	}
-	
-	private PerformanceListener[] listeners;
-
-	public interface Types {
-
-		/**
-		 * 1 - Write out the performance counters from the operating system. These include working set, peak working set, elapsed time, user time, and
-		 * kernel time.
-		 */
-		int OperatingSystemCounters = IPerformanceMonitor.Types.OperatingSystemCounters;
-
-		/**
-		 * 2 - Write out the global performance info. This includes things like the total committed memory for the entire system.
-		 * 
-		 * This function depends on the GetPerformanceInfo() function being available in the Windows psapi.dll. This is available in XP but is usually
-		 * not available in Win/2000. If it is not available then this function throws an UnsupportedOperationException.
-		 */
-		int GlobalSystemCounters = IPerformanceMonitor.Types.GlobalSystemCounters;
-
-		/**
-		 * 4 - Write out the size of the Java Heap.
-		 */
-		int JavaHeapSize = IPerformanceMonitor.Types.JavaHeapSize;
-
-		/**
-		 * 8 - Write out how much of the Java heap is being used. This calls the garbage collector so it may skew timing results.
-		 */
-		int JavaHeapUsed = IPerformanceMonitor.Types.JavaHeapUsed;
-
-		/**
-		 * 16 - The plugin startup and size information.
-		 */
-		int PluginInfo = IPerformanceMonitor.Types.PluginInfo;
-
-		/** 0xffff - Everything. */
-		int All = IPerformanceMonitor.Types.All;
-	}
-
-	private static PerformanceMonitorUtil sharedMonitor;
-
-	public static PerformanceMonitorUtil getMonitor() {
-		if (sharedMonitor == null) {
-			try {
-				Class.forName("org.eclipse.perfmsr.core.PerfMsrCorePlugin"); // This just tests if the performance plugin is available. Throws //$NON-NLS-1$
-																			 // exception otherwise.
-				Class presentClass = Class.forName("org.eclipse.jem.util.PresentPerformanceMonitor"); // Get the class we use wrapper it. //$NON-NLS-1$
-				sharedMonitor = (PerformanceMonitorUtil) presentClass.newInstance();
-				if (!sharedMonitor.isValid())
-					sharedMonitor = null;
-			} catch (RuntimeException e) {
-				// If any runtime exception, just use the not present one.
-			} catch (ClassNotFoundException e) {
-				// If class not found, then plugin not available, so just use the not present one.
-			} catch (InstantiationException e) {
-				// Problem instantiating, so just use the not present one.
-			} catch (IllegalAccessException e) {
-				// Some illegal access, so just use the not present one.
-			}
-			if (sharedMonitor == null) {
-				// Couldn't get the performance one for some reason. Use not present one instead.
-				sharedMonitor = new NotPresentPerformanceMonitor();
-			}
-		}
-		return sharedMonitor;
-	}
-	
-	protected boolean isValid() {
-		return true;
-	}
-
-	/**
-	 * Set the variations that are in effect.
-	 * 
-	 * @param var
-	 *            a comma delimited string of variation numbers
-	 */
-	public abstract void setVar(String var);
-
-	/**
-	 * Take a snapshot of some default performance measurements.
-	 * 
-	 * @param step
-	 *            this identifies the step that the snapshot is for
-	 */
-	public final void snapshot(int step) {
-		doSnapshot(step);
-		if (listeners != null)
-			notifySnapshot(new PerformanceEvent(this, step));
-	}
-	
-	private void notifySnapshot(PerformanceEvent event) {
-		PerformanceListener[] list = listeners;
-		for (int i = 0; i < list.length; i++) {
-			list[i].snapshot(event);
-		}
-	}
-	
-	/**
-	 * Do the actual snapshot
-	 * @param step
-	 * 
-	 * @see #snapshot(int)
-	 * @since 1.1.0
-	 */
-	protected abstract void doSnapshot(int step);
-
-	/**
-	 * Take a snapshot of the selected performance measurements.
-	 * 
-	 * @param step
-	 *            this identifies the step that the snapshot is for
-	 * 
-	 * @param types
-	 *            This controls which measurements are selected. It is an or'd together list of the IPerformanceMonitor.Types constants.
-	 * 
-	 * @see IPerformanceMonitor.Types
-	 */
-	public void snapshot(int step, int types) {
-		doSnapshot(step, types);
-		if (listeners != null)
-			notifySnapshot(new PerformanceEvent(this, step, types));		
-	}
-	
-	/**
-	 * Do the actual snapshot
-	 * @param step
-	 * 
-	 * @see #snapshot(int, int)
-	 * @since 1.1.0
-	 */
-	protected abstract void doSnapshot(int step, int types);	
-	
-	/**
-	 * Add listener to list.
-	 * @param listener
-	 * 
-	 * @since 1.1.0
-	 */
-	public void addPerformanceListener(PerformanceListener listener) {
-		if (findListener(listener) != -1)
-			return;
-		PerformanceListener[] newList = new PerformanceListener[listeners != null ? listeners.length+1 : 1];
-		if (listeners != null)
-			System.arraycopy(listeners, 0, newList, 0, listeners.length);
-		newList[newList.length-1] = listener;
-		listeners = newList;
-	}
-	
-	private int findListener(PerformanceListener listener) {
-		if (listeners != null) {
-			for (int i = 0; i < listeners.length; i++) {
-				if (listeners[i] == listener)
-					return i;
-			}
-		}
-		return -1;
-	}
-	
-	/**
-	 * Remove the listener from the list.
-	 * @param listener
-	 * 
-	 * @since 1.1.0
-	 */
-	public void removePerformanceListener(PerformanceListener listener) {
-		int index = findListener(listener);
-		if (index != -1) {
-			if (listeners.length == 1) {
-				listeners = null;
-				return;
-			}
-			PerformanceListener[] newList = new PerformanceListener[listeners.length-1];
-			System.arraycopy(listeners, 0, newList, 0, index);
-			System.arraycopy(listeners, index+1, newList, index, newList.length-index);
-			listeners = newList;
-		}
-	}
-	/**
-	 * Upload the results to the server. This causes the file to be
-	 * closed, and the monitor to be placed into the finished state.
-	 * 
-	 * This method can only be called if the uploadhost, uploadport and uploaduserid
-	 * have been configured before hand.
-	 * 
-	 * @param description an optional description (it can be null)
-	 * 
-	 */
-	public boolean upload(String description){return false;}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PresentPerformanceMonitor.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PresentPerformanceMonitor.java
deleted file mode 100644
index 3ee5b05..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/PresentPerformanceMonitor.java
+++ /dev/null
@@ -1,79 +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
- *******************************************************************************/
-/*
- *  $RCSfile: PresentPerformanceMonitor.java,v $
- *  $Revision: 1.5 $  $Date: 2005/08/24 21:10:34 $ 
- */
-package org.eclipse.jem.util;
-import org.eclipse.perfmsr.core.IPerformanceMonitor;
-import org.eclipse.perfmsr.core.PerfMsrCorePlugin;
-
-/**
- * This is the version used when the performance plugin is available.
- * 
- * <p>
- * This class is not meant to be instantiated by clients.
- * </p>
- * 
- * @since 1.0.0
- */
-public class PresentPerformanceMonitor extends PerformanceMonitorUtil {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#upload(java.lang.String)
-	 */
-	public boolean upload(String description) {
-		return monitor.upload(description).success;
-	}
-	
-	private IPerformanceMonitor monitor;
-
-	/*
-	 * So that only instantiated by this package.
-	 */
-	PresentPerformanceMonitor() {
-		monitor = PerfMsrCorePlugin.getPerformanceMonitor(true);
-	}
-	
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#isValid()
-	 */
-	protected boolean isValid() {
-		return monitor != null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#setVar(java.lang.String)
-	 */
-	public void setVar(String var) {
-		monitor.setVar(var);
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#doSnapshot(int)
-	 */
-	protected void doSnapshot(int step) {
-		monitor.snapshot(step);
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jem.util.PerformanceMonitorUtil#doSnapshot(int, int)
-	 */
-	protected void doSnapshot(int step, int types) {
-		monitor.snapshot(step, types);
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java
deleted file mode 100644
index b149c40..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java
+++ /dev/null
@@ -1,156 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: RegistryReader.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2006/02/21 17:16:30 $$ 
- */
-package org.eclipse.jem.util;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * Class to read a registry. It is meant to be subclassed to provide specific function.
- * 
- * @since 1.0.0
- */
-public abstract class RegistryReader {
-
-	String pluginId;
-
-	String extensionPointId;
-
-	private static Bundle systemBundle;
-
-	/**
-	 * Utility method to get the plugin id of a configuation element
-	 * 
-	 * @param configurationElement
-	 * @return plugin id of configuration element
-	 * @since 1.0.0
-	 */
-	public static String getPluginId(IConfigurationElement configurationElement) {
-		String pluginId = null;
-
-		if (configurationElement != null) {
-			IExtension extension = configurationElement.getDeclaringExtension();
-
-			if (extension != null)
-				pluginId = extension.getContributor().getName();
-		}
-
-		return pluginId;
-	}
-
-	/**
-	 * Constructor for RegistryReader taking a registry, plugin id, and extension point id.
-	 * 
-	 * @param registry
-	 * @param pluginID
-	 * @param extensionPoint
-	 * 
-	 * @deprecated Use RegistryReader(plugin, extensionPoint) instead. The registry passed in is ignored.
-	 * @since 1.0.0
-	 */
-	public RegistryReader(IPluginRegistry registry, String pluginID, String extensionPoint) {
-		this(pluginID, extensionPoint);
-	}
-
-	/**
-	 * Constructor for RegistryReader taking the plugin id and extension point id.
-	 * 
-	 * @param pluginID
-	 * @param extensionPoint
-	 * 
-	 * @since 1.0.0
-	 */
-	public RegistryReader(String pluginID, String extensionPoint) {
-		super();
-		this.pluginId = pluginID;
-		extensionPointId = extensionPoint;
-	}
-
-	private void internalReadElement(IConfigurationElement element) {
-		boolean recognized = this.readElement(element);
-		if (!recognized) {
-			logError(element, "Error processing extension: " + element); //$NON-NLS-1$
-		}
-	}
-
-	/*
-	 * Logs the error in the desktop log using the provided text and the information in the configuration element.
-	 */
-	protected void logError(IConfigurationElement element, String text) {
-		IExtension extension = element.getDeclaringExtension();
-		StringBuffer buf = new StringBuffer();
-		buf.append("Plugin " + extension.getContributor().getName() + ", extension " + extension.getExtensionPointUniqueIdentifier()); //$NON-NLS-1$ //$NON-NLS-2$
-		buf.append("\n" + text); //$NON-NLS-1$
-		Logger.getLogger().logError(buf.toString());
-	}
-
-	/*
-	 * Logs a very common registry error when a required attribute is missing.
-	 */
-	protected void logMissingAttribute(IConfigurationElement element, String attributeName) {
-		logError(element, "Required attribute '" + attributeName + "' not defined"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/*
-	 * Implement this method to read element attributes. If this element has subelements, the reader will recursively cycle through them and call this
-	 * method so don't do it here.
-	 */
-	public abstract boolean readElement(IConfigurationElement element);
-
-	/**
-	 * Read the extension point and parse it.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void readRegistry() {
-		IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(pluginId, extensionPointId);
-		if (point == null)
-			return;
-		IConfigurationElement[] elements = point.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			internalReadElement(elements[i]);
-		}
-	}
-
-	/**
-	 * Tests to see if it is valid at this point in time to create an executable extension. A valid reason not to would be that the workspace is
-	 * shutting donw.
-	 * 
-	 * @param element
-	 * @return <code>true</code> if it is valid point to create an executable extension.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean canCreateExecutableExtension(IConfigurationElement element) {
-		if (Platform.isRunning() && getSystemBundle().getState() != Bundle.STOPPING)
-			return true;
-		return false;
-	}
-
-	/**
-	 * Get the system bundle
-	 * 
-	 * @return system bundle.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected static Bundle getSystemBundle() {
-		if (systemBundle == null)
-			systemBundle = Platform.getBundle("org.eclipse.osgi"); //$NON-NLS-1$
-		return systemBundle;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/TimerTests.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/TimerTests.java
deleted file mode 100644
index 9757c84..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/TimerTests.java
+++ /dev/null
@@ -1,352 +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
- *******************************************************************************/
-/*
- *  $RCSfile: TimerTests.java,v $
- *  $Revision: 1.7 $  $Date: 2006/02/15 23:40:59 $ 
- */
-package org.eclipse.jem.util;
-
-import java.text.NumberFormat;
-import java.util.*;
-
-/**
- * 
- * @since 1.0.2
- */
-public class TimerTests {
-
-	/**
-	 * Default TimerTests class to use when not using your own. It's a global.
-	 */
-	public static TimerTests basicTest = new TimerTests();
-
-	public static final String CURRENT_PARENT_ID = "current parent"; //$NON-NLS-1$
-	protected String currentParentId = null;
-
-
-	protected static class TimerStep {
-		static final int START = 0;
-		static final int STOP = 1;
-		static final int START_CUMULATIVE = 2;
-		static final int STOP_CUMULATIVE = 3;
-		static final int START_ACCUMULATING = 4;
-		static final int STOP_ACCUMULATING = 5;
-		protected String id;
-		protected int type;
-		protected long currentTime;
-		protected int threadId;
-}
-
-	protected boolean testOn = false;
-	protected List steps;
-
-	public synchronized boolean startStep(String id) {
-		if (!testOn)
-			return true;
-
-		TimerStep step = createTimerStep(id, TimerStep.START);
-		return step != null;
-	}
-
-	protected TimerStep createTimerStep(String id, int stepType) {
-		TimerStep newStep = new TimerStep();
-		newStep.threadId = Thread.currentThread().hashCode();
-		newStep.id = id;
-		newStep.type = stepType;
-		newStep.currentTime = System.currentTimeMillis();
-		steps.add(newStep);
-
-		return newStep;
-	}
-
-	public synchronized boolean stopStep(String id) {
-		if (!testOn)
-			return true;
-		TimerStep step = createTimerStep(id, TimerStep.STOP);
-		return step != null;
-	}
-
-	public synchronized boolean startAccumulating(String id) {
-		if (!testOn)
-			return true;
-
-		return createTimerStep(id, TimerStep.START_ACCUMULATING) != null;
-	}
-
-	public synchronized boolean stopAccumulating(String id) {
-		if (!testOn)
-			return true;
-
-		return createTimerStep(id, TimerStep.STOP_ACCUMULATING) != null;
-	}
-	public synchronized boolean startCumulativeStep(String id) {
-		if (!testOn)
-			return true;
-
-		return createTimerStep(id, TimerStep.START_CUMULATIVE) != null;
-	}
-
-	public synchronized boolean stopCumulativeStep(String id) {
-		if (!testOn)
-			return true;
-		return createTimerStep(id, TimerStep.STOP_CUMULATIVE) != null;
-	}
-
-	/**
-	 * Clear the tests so that you can restart and do some more tests.
-	 * 
-	 * 
-	 * @since 1.0.2
-	 */
-	public synchronized void clearTests() {
-		if (!testOn)
-			return;
-		steps.clear();
-		currentParentId = null;
-	}
-
-	/**
-	 * Turn this test on. If not turned on then all calls will quickly return with no errors. This allows the code to stay in place even when not
-	 * debugging.
-	 * <p>
-	 * When turned off, it will clear the test.
-	 * 
-	 * @param on
-	 * 
-	 * @since 1.0.2
-	 */
-	public synchronized void testState(boolean on) {
-		if (on == testOn)
-			return;
-		if (on) {
-			testOn = true;
-			if (steps == null)
-				steps = new ArrayList();
-		} else {
-			testOn = false;
-			steps = null;
-		}
-		currentParentId = null;
-	}
-	private static class CumulativeInformation {
-		public TimerStep currentCumulativeStep;
-		public long cumTime;
-		public int cumCount;
-		public int cumCountNonZero;
-		public long maxTime;
-		public long minTime = Integer.MAX_VALUE;
-		public long minTimeNonZero = Integer.MAX_VALUE;
-	}
-	public synchronized void printIt() {
-		if (!testOn)
-			return;
-		if (steps == null)
-			return;
-		Map stepInfoByThreadId = new HashMap();
-		Map indentsByThreadId = new HashMap();
-		Map cumSteps;
-		TimerStep prevStep = null;
-		TimerStep startStep;
-		NumberFormat percentFormatter = NumberFormat.getPercentInstance();
-		double totalTime = 0;
-		StringBuffer strb = new StringBuffer(150);
-		if (steps.size() > 2){
-			totalTime = ((TimerStep)steps.get(steps.size()-1)).currentTime - ((TimerStep)steps.get(0)).currentTime;
-		}
-		for (int i = 0; i < steps.size(); i++) {
-			TimerStep step = (TimerStep) steps.get(i);
-			Integer threadId = new Integer(step.threadId);
-			switch (step.type) {
-				case TimerStep.START:
-				case TimerStep.STOP:
-					Integer threadIndent = (Integer) indentsByThreadId.get(threadId);
-					int indent = 0;
-					if (step.type == TimerStep.START) {
-						if (threadIndent != null)
-							indent = threadIndent.intValue() + 1;
-						indentsByThreadId.put(threadId, new Integer(indent));
-					} else {
-						if (threadIndent != null)
-							indent = threadIndent.intValue();
-						if (indent > 0)
-							indentsByThreadId.put(threadId, new Integer(indent - 1));
-						else {
-							indentsByThreadId.remove(threadId);
-							indent = 0;
-						}
-					}
-					strb.setLength(0);
-					strb.append(step.currentTime);
-					strb.append("\t"); //$NON-NLS-1$
-					for (int j = 0; j < indent; j++) {
-						strb.append("     "); //$NON-NLS-1$
-					}
-					switch (step.type) {
-						case TimerStep.START:
-							strb.append("Start"); //$NON-NLS-1$
-							break;
-
-						case TimerStep.STOP:
-							strb.append("Stop "); //$NON-NLS-1$
-							break;
-						default:
-							break;
-					}
-					;
-					strb.append(" \""); //$NON-NLS-1$
-					strb.append(step.id);
-					strb.append("\"   id("); //$NON-NLS-1$
-					strb.append(step.threadId);
-					strb.append(")"); //$NON-NLS-1$
-					Map startSteps = (Map) stepInfoByThreadId.get(threadId);
-					if (startSteps == null)
-						stepInfoByThreadId.put(threadId, startSteps = new HashMap());
-					if (step.type == TimerStep.START) {
-						// Store the start step for later lookup when calulating the total time
-						startSteps.put(step.id, step);
-					} else {
-						// This is the stop time for a step. We need to find
-						// the corresponding start time and calculate the total time.
-						Object item = startSteps.remove(step.id);
-						if (item instanceof TimerStep) {
-							startStep = (TimerStep) item;
-							if (startStep != null) {
-								int addchars = 100 - strb.length();
-								for (int j = 0; j < addchars; j++) {
-									strb.append(" "); //$NON-NLS-1$
-								}
-								long delta = step.currentTime - startStep.currentTime;
-								strb.append("    Total = " + delta + " ms"); //$NON-NLS-1$ //$NON-NLS-2$
-								if (totalTime > 0)
-									strb.append("   " + percentFormatter.format(delta/totalTime)); //$NON-NLS-1$
-							}
-						} else
-							strb.append("    ---> Couldn't find Starting point for \"" + step.id + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-					if (i > 0 && (step.currentTime - prevStep.currentTime) > 0)
-						System.out.println("-- " + (step.currentTime - prevStep.currentTime) + " ms --"); //$NON-NLS-1$ //$NON-NLS-2$
-					prevStep = step;
-					System.out.println(strb);
-					break;
-
-				case TimerStep.START_ACCUMULATING:
-					cumSteps = (Map) stepInfoByThreadId.get(threadId);
-					if (cumSteps == null)
-						stepInfoByThreadId.put(threadId, cumSteps = new HashMap());
-					cumSteps.put(step.id, new CumulativeInformation());
-					threadIndent = (Integer) indentsByThreadId.get(threadId);
-					indent = 0;
-					if (threadIndent != null)
-						indent = threadIndent.intValue();
-					strb.setLength(0);
-					strb.append(step.currentTime);
-					strb.append("\t"); //$NON-NLS-1$
-					for (int j = 0; j < indent; j++) {
-						strb.append("     "); //$NON-NLS-1$
-					}
-					strb.append("Start Accumulating"); //$NON-NLS-1$
-					strb.append(" \""); //$NON-NLS-1$
-					strb.append(step.id);
-					strb.append("\"   id("); //$NON-NLS-1$
-					strb.append(step.threadId);
-					strb.append(")"); //$NON-NLS-1$
-					if (i > 0 && (step.currentTime - prevStep.currentTime) > 0)
-						System.out.println("-- " + (step.currentTime - prevStep.currentTime) + " ms --"); //$NON-NLS-1$ //$NON-NLS-2$
-					prevStep = step;
-					System.out.println(strb);
-					break;
-
-				case TimerStep.START_CUMULATIVE:
-					cumSteps = (Map) stepInfoByThreadId.get(threadId);
-					if (cumSteps != null) {
-						Object info = cumSteps.get(step.id);
-						if (info instanceof CumulativeInformation)
-							((CumulativeInformation) info).currentCumulativeStep = step;
-					}
-					break;
-					
-				case TimerStep.STOP_CUMULATIVE:
-					cumSteps = (Map) stepInfoByThreadId.get(threadId);
-					if (cumSteps != null) {
-						Object info = cumSteps.get(step.id);
-						if (info instanceof CumulativeInformation) {
-							CumulativeInformation cumInfo = (CumulativeInformation) info;
-							if (cumInfo.currentCumulativeStep != null) {
-								cumInfo.cumCount++;
-								long delta = step.currentTime - cumInfo.currentCumulativeStep.currentTime;
-								cumInfo.cumTime += delta;
-								if (cumInfo.maxTime < delta)
-									cumInfo.maxTime = delta;
-								if (delta < cumInfo.minTime)
-									cumInfo.minTime = delta;
-								if (delta != 0) {
-									cumInfo.cumCountNonZero++;
-									if (delta < cumInfo.minTimeNonZero)
-										cumInfo.minTimeNonZero = delta;
-								}
-							}
-						}
-					}
-					break;
-					
-				case TimerStep.STOP_ACCUMULATING:
-					threadIndent = (Integer) indentsByThreadId.get(threadId);
-					indent = 0;
-					if (threadIndent != null)
-						indent = threadIndent.intValue();
-					strb.setLength(0);
-					strb.append(step.currentTime);
-					strb.append("\t"); //$NON-NLS-1$
-					for (int j = 0; j < indent; j++) {
-						strb.append("     "); //$NON-NLS-1$
-					}
-					strb.append("Stop  Accumulating"); //$NON-NLS-1$
-					strb.append(" \""); //$NON-NLS-1$
-					strb.append(step.id);
-					strb.append("\"   id("); //$NON-NLS-1$
-					strb.append(step.threadId);
-					strb.append(")"); //$NON-NLS-1$
-					cumSteps = (Map) stepInfoByThreadId.get(threadId);
-					if (cumSteps != null) {
-						Object info = cumSteps.get(step.id);
-						if (info instanceof CumulativeInformation) {
-							CumulativeInformation cumInfo = (CumulativeInformation) info;
-							if (cumInfo.currentCumulativeStep != null) {
-								strb.append("   cumulative time="); //$NON-NLS-1$
-								strb.append(cumInfo.cumTime);
-								strb.append("   cumulative count="); //$NON-NLS-1$
-								strb.append(cumInfo.cumCount);
-								strb.append("   max time="); //$NON-NLS-1$
-								strb.append(cumInfo.maxTime);
-								strb.append("   min time="); //$NON-NLS-1$
-								strb.append(cumInfo.minTime);
-								strb.append("   avg time="); //$NON-NLS-1$
-								strb.append(((double) cumInfo.cumTime)/cumInfo.cumCount);
-								strb.append("   NonZero times: cumulative ~0 count="); //$NON-NLS-1$
-								strb.append(cumInfo.cumCountNonZero);
-								if (cumInfo.cumCountNonZero != 0) {
-									strb.append("   min ~0 time="); //$NON-NLS-1$
-									strb.append(cumInfo.minTimeNonZero);
-									strb.append("   avg ~0 time="); //$NON-NLS-1$
-									strb.append(((double) cumInfo.cumTime) / cumInfo.cumCountNonZero);
-								}
-							}
-						}
-					}
-					if (i > 0 && (step.currentTime - prevStep.currentTime) > 0)
-						System.out.println("-- " + (step.currentTime - prevStep.currentTime) + " ms --"); //$NON-NLS-1$ //$NON-NLS-2$
-					prevStep = step;
-					System.out.println(strb);
-					break;
-			}
-		}
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java
deleted file mode 100644
index 45e754b..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java
+++ /dev/null
@@ -1,189 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: UIContextDetermination.java,v $$
- *  $$Revision: 1.3 $$  $$Date: 2005/05/18 21:58:34 $$ 
- */
-package org.eclipse.jem.util;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.*;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * Static utility class for UIContext determination.
- * 
- * @since 1.0.0
- */
-public class UIContextDetermination {
-
-	private static final int UNKNOWN = 100;
-
-	public static final String HEADLESS_CONTEXT_LITERAL = "Headless"; //$NON-NLS-1$
-
-	public static final String UI_CONTEXT_LITERAL = "UI"; //$NON-NLS-1$
-
-	public static final int HEADLESS_CONTEXT = 102;
-
-	public static final int UI_CONTEXT = 100;
-
-	private static Map cachedExtensions = null;
-
-	private static int currentContext = UNKNOWN;
-
-	private UIContextDetermination() {
-	}
-
-	/**
-	 * Returns an instance of a given class based on the UI or Headless context.
-	 * 
-	 * @param key
-	 * @return new class instance for the given key.
-	 * @throws IllegalArgumentException
-	 *             If the key is invalid (e.g. no extension is found for the key)
-	 */
-	public static Object createInstance(String key) {
-		Object result = null;
-		if (cachedExtensions == null)
-			initExtensions();
-		IConfigurationElement contextSensitiveClass = (IConfigurationElement) cachedExtensions.get(key);
-		try {
-			if (contextSensitiveClass != null)
-				result = contextSensitiveClass
-						.createExecutableExtension(UIContextDeterminationRegistryReader.UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR);
-		} catch (CoreException e) {
-			Logger.getLogger().logError("Problem loading extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
-			Logger.getLogger().logError(e);
-		}
-		if (result == null)
-			Logger.getLogger().logError("Extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
-		return result;
-	}
-
-	/**
-	 * Returns the current context -- determines the value if necessary.
-	 * 
-	 * @return current context
-	 * @see #HEADLESS_CONTEXT
-	 * @see #UI_CONTEXT
-	 */
-	public static int getCurrentContext() {
-		if (currentContext == UNKNOWN) {
-			currentContext = HEADLESS_CONTEXT;
-			new UITesterRegistryReader().readRegistry();
-		}
-		return currentContext;
-	}
-
-	/*
-	 * Invokes the UIContextDeterminationRegistryReader to cache all of the extensions, if necessary.
-	 *  
-	 */
-	private static void initExtensions() {
-		if (cachedExtensions == null) {
-			cachedExtensions = new HashMap();
-			new UIContextDeterminationRegistryReader().readRegistry();
-		}
-	}
-
-	/*
-	 * Converts the input to one of UI_CONTEXT or HEADLESS_CONTEXT. Defaults to HEADLESS on invalid input
-	 * 
-	 * @param literal @return
-	 */
-	private static int convertLiteral(String literal) {
-		return (UI_CONTEXT_LITERAL.equals(literal)) ? UI_CONTEXT : HEADLESS_CONTEXT;
-	}
-
-	/*
-	 * Reads the registration of UI Context-sensitive class extensions and initializes the cache of the UIContextDetermination object.
-	 * 
-	 * @author mdelder
-	 */
-	private static class UIContextDeterminationRegistryReader extends RegistryReader {
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_ELEMENT = "uiContextSensitiveClass"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR = "key"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR = "context"; //$NON-NLS-1$
-
-		public UIContextDeterminationRegistryReader() {
-			super(JEMUtilPlugin.PLUGIN_ID, JEMUtilPlugin.UI_CONTEXT_EXTENSION_POINT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jem.util.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-		 */
-		public boolean readElement(IConfigurationElement element) {
-			boolean result = false;
-			if (element.getName().equals(UI_CONTEXT_SENSTIVE_CLASS_ELEMENT)) {
-
-				String key = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR);
-				String context = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR);
-
-				if (!cachedExtensions.containsKey(key) || getCurrentContext() == convertLiteral(context))
-					cachedExtensions.put(key, element);
-				result = true;
-			}
-			return result;
-		}
-	}
-
-	/*
-	 * Reads the uiTester extension and instantiate the any of the UITester classes it finds.
-	 * 
-	 * The implementation has the side effect that if multiple UITesters are registered, any of them can trip the currentContext into the UI_CONTEXT
-	 * state.
-	 * 
-	 * @author mdelder
-	 */
-	private static class UITesterRegistryReader extends RegistryReader {
-
-		public static final String UI_TESTER_ELEMENT = "uiTester"; //$NON-NLS-1$
-
-		public static final String UI_TESTER_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
-
-		public UITesterRegistryReader() {
-			super(JEMUtilPlugin.PLUGIN_ID, JEMUtilPlugin.UI_TESTER_EXTENSION_POINT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see com.ibm.etools.emf.workbench.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-		 */
-		public boolean readElement(IConfigurationElement element) {
-			boolean result = false;
-			if (element.getName().equals(UI_TESTER_ELEMENT)) {
-				result = true;
-				try {
-					if (canCreateExecutableExtension(element)) {
-						UITester tester = (UITester) element.createExecutableExtension(UI_TESTER_CLASSNAME_ATTR);
-						if (tester.isCurrentContextUI())
-							currentContext = UI_CONTEXT;
-					}
-				} catch (Throwable t) {
-					Logger.getLogger().log("UIContextDetermination is proceeding in HEADLESS mode"); //$NON-NLS-1$
-				}
-			}
-			return result;
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java
deleted file mode 100644
index 54517e8..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.jem.util;
-/*******************************************************************************
- * 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
- *******************************************************************************/
-/*
- *  $$RCSfile: UITester.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-/**
- * Interface for a UITester. The "classname" attribute on the "uiTester" extension point should implement this class.
- * 
- * @since 1.0.0
- */
-public interface UITester {
-
-	/**
-	 * Answer if the current context is an UI context.
-	 * 
-	 * @return <code>true</code> if an UI context.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean isCurrentContextUI();
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/EMFWorkbenchContextBase.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/EMFWorkbenchContextBase.java
deleted file mode 100644
index bedff60..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/EMFWorkbenchContextBase.java
+++ /dev/null
@@ -1,193 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: EMFWorkbenchContextBase.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-
-import org.eclipse.jem.internal.util.emf.workbench.*;
-import org.eclipse.jem.internal.util.emf.workbench.nls.EMFWorkbenchResourceHandler;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * ContextBase for EMFWorkbench.
- * 
- * <p>
- * This is meant to be subclassed as needed for additional or override function. It will be instantiated by default.
- * </p>
- * 
- * @since 1.0.0
- */
-public class EMFWorkbenchContextBase {
-
-	protected IProject project;
-
-	protected ProjectResourceSet resourceSet;
-
-	/**
-	 * Construct with a project.
-	 * 
-	 * @param aProject
-	 * 
-	 * @since 1.0.0
-	 */
-	public EMFWorkbenchContextBase(IProject aProject) {
-		if (aProject == null)
-			throw new IllegalArgumentException(EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextBase_ERROR_1")); //$NON-NLS-1$
-		project = aProject;
-	}
-
-	/**
-	 * Dispose of the context base.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public void dispose() {
-		if (resourceSet != null)
-			resourceSet.release();
-		resourceSet = null;
-		project = null;
-	}
-
-	/**
-	 * Get the project this context is associated with.
-	 * 
-	 * @return project
-	 * 
-	 * @since 1.0.0
-	 */
-	public IProject getProject() {
-		return project;
-	}
-
-	/**
-	 * Return the resource set (creating if needed) for context.
-	 * 
-	 * @return resource set
-	 * 
-	 * @since 1.0.0
-	 */
-	public ProjectResourceSet getResourceSet() {
-		if (resourceSet == null) {
-			resourceSet = createResourceSet();
-			initializeResourceSet(resourceSet);
-		}
-		return resourceSet;
-	}
-
-	/**
-	 * Used for optimization; answer whether a resourceSet has been created
-	 * 
-	 * @return <code>true</code> if a resource set has been created.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean hasResourceSet() {
-		return resourceSet != null;
-	}
-
-	/**
-	 * Initialize the resource set.
-	 * 
-	 * @param aResourceSet
-	 * 
-	 * @since 1.0.0
-	 */
-	protected void initializeResourceSet(ProjectResourceSet aResourceSet) {
-		createResourceSetSynchronizer(aResourceSet);
-		aResourceSet.setURIConverter(createURIConverter(aResourceSet));
-		aResourceSet.add(new WorkspaceResourceHandler());
-		JEMUtilPlugin.getDefault().addExtendedResourceHandlers(aResourceSet);
-
-	}
-
-	/**
-	 * Create the resource set. By default it is a ProjectResourceSetImpl.
-	 * 
-	 * @return project's new resource set.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected ProjectResourceSet createResourceSet() {
-		if (project == null)
-			throw new IllegalStateException(EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextBase_ERROR_2")); //$NON-NLS-1$
-		return new ProjectResourceSetImpl(project);
-	}
-
-	/**
-	 * Create a URIConverter for the resource set.
-	 * 
-	 * @param aResourceSet
-	 * @return a uri converter.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected WorkbenchURIConverter createURIConverter(ProjectResourceSet aResourceSet) {
-		return new WorkbenchURIConverterImpl(getProject(), aResourceSet.getSynchronizer());
-	}
-
-	/**
-	 * Create a resource set workbench synchronizer.
-	 * 
-	 * @param aResourceSet
-	 * @return a resource set workbench synchronizer.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected ResourceSetWorkbenchSynchronizer createResourceSetSynchronizer(ProjectResourceSet aResourceSet) {
-		return EMFWorkbenchContextFactory.INSTANCE.createSynchronizer(aResourceSet, getProject());
-	}
-
-	/**
-	 * Delete the resource from the workspace.
-	 * 
-	 * @param aResource
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public void deleteResource(Resource aResource) throws CoreException {
-		if (aResource != null)
-			deleteFile(aResource);
-	}
-
-	/**
-	 * Delete the file associated with the resource.
-	 * 
-	 * @param resource
-	 * 
-	 * @since 1.0.0
-	 */
-	public void deleteFile(Resource resource) {
-		throw new UnsupportedOperationException(EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextBase_ERROR_0")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Get resource (with the given URI) from the project resource set. Load it if not already loaded.
-	 * 
-	 * @param uri
-	 * @return resource for the uri, or <code>null</code> if not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public Resource getResource(URI uri) {
-		return this.resourceSet.getResource(uri, true);
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/IEMFContextContributor.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/IEMFContextContributor.java
deleted file mode 100644
index 465d7fa..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/IEMFContextContributor.java
+++ /dev/null
@@ -1,46 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: IEMFContextContributor.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-
-package org.eclipse.jem.util.emf.workbench;
-
-/**
- * EMF Context Contributor interface. Implimenters are called to contribute to the context.
- * 
- * @see org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase#createEMFContext(IProject, IEMFContextContributor)
- * @since 1.0.0
- */
-public interface IEMFContextContributor {
-
-	/**
-	 * This is your opportunity to add a primary EMFNature. Typically you would add to the WorkbenchContext held by <code>aNature</code> in order to
-	 * change the container for the WorkbenchURIConverter or add adapter factories to the ResourceSet or anything else that is needed.
-	 * 
-	 * @param aNature
-	 * 
-	 * @since 1.0.0
-	 */
-	void primaryContributeToContext(EMFWorkbenchContextBase aNature);
-
-	/**
-	 * This is your opportunity to add a secondary EMFNature. Typically you would add to the WorkbenchContext held by <code>aNature</code> in order
-	 * to change the container for the WorkbenchURIConverter or add adapter factories to the ResourceSet or anything else that is needed.
-	 * 
-	 * @param aNature
-	 * 
-	 * @since 1.0.0
-	 */
-	void secondaryContributeToContext(EMFWorkbenchContextBase aNature);
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ISynchronizerExtender.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ISynchronizerExtender.java
deleted file mode 100644
index f70dd1e..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ISynchronizerExtender.java
+++ /dev/null
@@ -1,44 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ISynchronizerExtender.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import org.eclipse.core.resources.IResourceDelta;
-
-/**
- * Implimenters allows clients, eg {@link org.eclipse.jem.util.emf.workbench.EMFNatureContributor}, to extend the behavior of the
- * ResourceSetWorkbenchSynchronizer.
- * 
- * @see org.eclipse.jem.util.emf.workbench.ResourceSetWorkbenchSynchronizer#addExtender(ISynchronizerExtender)
- * @since 1.0.0
- */
-public interface ISynchronizerExtender {
-
-	/**
-	 * Notification that project has changed.
-	 * 
-	 * @param delta
-	 * 
-	 * @since 1.0.0
-	 */
-	void projectChanged(IResourceDelta delta);
-
-	/**
-	 * Notification that project has been closed.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	void projectClosed();
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java
deleted file mode 100644
index 68c9735..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java
+++ /dev/null
@@ -1,117 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ProjectResourceSet.java,v $$
- *  $$Revision: 1.3 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * A ResourceSet for an entire project. It allows sharing of resources from multiple editors/viewers for a project.
- * <p>
- * An additional Notification type is sent out by ProjectResourceSet's of project resource set about to be released. A release is
- * called when projects are about to be closed. They release all of the resources and unload them. This notification can be used 
- * to know that this is about to happen and to do something before the resources become invalid. It will be sent out just before the
- * resource set will be released. 
- * 
- * @see ProjectResourceSet#SPECIAL_NOTIFICATION_TYPE
- * @see ProjectResourceSet#PROJECTRESOURCESET_ABOUT_TO_RELEASE_ID 
- * @since 1.0.0
- */
-
-public interface ProjectResourceSet extends ResourceSet {
-
-	IProject getProject();
-	
-	/**
-	 * Notification type in notifications from the ProjectResourceSet for
-	 * special notifications, and not the standard ones from ResourceSet.
-	 * 
-	 * @see org.eclipse.emf.common.notify.Notification#getEventType()
-	 * @since 1.1.0
-	 */
-	static int SPECIAL_NOTIFICATION_TYPE = Notification.EVENT_TYPE_COUNT+4;
-	
-	/**
-	 * Notification Feature ID for resource set about to be released.
-	 * Use {@link org.eclipse.emf.common.notify.Notification#getFeatureID(java.lang.Class)} to
-	 * get this id. The getFeature() on notification will return null.
-	 * 
-	 * @since 1.1.0
-	 */
-	static int PROJECTRESOURCESET_ABOUT_TO_RELEASE_ID = 1000;
-
-	/**
-	 * Call when the ResourceSet is no longer to be used.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	void release();
-
-	/**
-	 * Add the <code>resourceHandler</code> to the end of the list of resourceHandlers.
-	 * 
-	 * @param resourceHandler
-	 *            IResourceHandler
-	 * @return boolean Return <code>true</code> if it was added.
-	 * @since 1.0.0
-	 */
-	boolean add(ResourceHandler resourceHandler);
-
-	/**
-	 * Add the <code>resourceHandler</code> to the front of the list of resourceHandlers.
-	 * 
-	 * @param resourceHandler
-	 *            IResourceHandler
-	 * @since 1.0.0
-	 */
-	void addFirst(ResourceHandler resourceHandler);
-
-	/**
-	 * Remove the <code>resourceHandler</code> from the list of resourceHandlers.
-	 * 
-	 * @param resourceHandler
-	 *            IResourceHandler
-	 * @return boolean Return true if it was removed.
-	 * @since 1.0.0
-	 */
-	boolean remove(ResourceHandler resourceHandler);
-
-	/**
-	 * Return the ResourceSet synchronizer that will synchronize the ResourceSet with changes from the Workbench.
-	 * 
-	 * @return ResourceSetWorkbenchSynchronizer
-	 * @since 1.0.0
-	 */
-	ResourceSetWorkbenchSynchronizer getSynchronizer();
-
-	/**
-	 * Set the ResourceSet synchronizer that will synchronize the ResourceSet with changes from the Workbench.
-	 * 
-	 * @param aSynchronizer
-	 * @return ResourceSetWorkbenchSynchronizer
-	 * @since 1.0.0
-	 */
-	void setSynchronizer(ResourceSetWorkbenchSynchronizer aSynchronizer);
-
-	/**
-	 * This should be called by clients whenever the structure of the project changes such that any cached URIs will be invalid. For example, if the
-	 * source folders within the URIConverter change.
-	 * 
-	 * @since 1.0.0
-	 */
-	void resetNormalizedURICache();
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectUtilities.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectUtilities.java
deleted file mode 100644
index b339d88..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectUtilities.java
+++ /dev/null
@@ -1,754 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ProjectUtilities.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2005/05/11 19:01:24 $$ 
- */
-
-package org.eclipse.jem.util.emf.workbench;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import java.util.logging.Level;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.*;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * EMF Workbench Project Utilities.
- * 
- * @since 1.0.0
- */
-
-public class ProjectUtilities {
-
-	/**
-	 * Project control file name in project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public final static String DOT_PROJECT = ".project"; //$NON-NLS-1$
-
-	/**
-	 * Classpath control file name in project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public final static String DOT_CLASSPATH = ".classpath"; //$NON-NLS-1$
-
-	public ProjectUtilities() {
-	}
-
-	/**
-	 * Add the nature id to the project ahead of all other nature ids.
-	 * 
-	 * @param proj
-	 * @param natureId
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void addNatureToProject(IProject proj, String natureId) throws CoreException {
-		IProjectDescription description = proj.getDescription();
-		String[] prevNatures = description.getNatureIds();
-		String[] newNatures = new String[prevNatures.length + 1];
-		System.arraycopy(prevNatures, 0, newNatures, 1, prevNatures.length);
-		newNatures[0] = natureId;
-		description.setNatureIds(newNatures);
-		proj.setDescription(description, null);
-	}
-
-	/**
-	 * Add the nature id after all of the other nature ids for the project.
-	 * 
-	 * @param proj
-	 * @param natureId
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void addNatureToProjectLast(IProject proj, String natureId) throws CoreException {
-		IProjectDescription description = proj.getDescription();
-		String[] prevNatures = description.getNatureIds();
-		String[] newNatures = new String[prevNatures.length + 1];
-		System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
-		newNatures[prevNatures.length] = natureId;
-		description.setNatureIds(newNatures);
-		proj.setDescription(description, null);
-	}
-
-	/**
-	 * Remove the nature id from the project.
-	 * 
-	 * @param project
-	 * @param natureId
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void removeNatureFromProject(IProject project, String natureId) throws CoreException {
-		IProjectDescription description = project.getDescription();
-		String[] prevNatures = description.getNatureIds();
-		int size = prevNatures.length;
-		int newsize = 0;
-		String[] newNatures = new String[size];
-		boolean matchfound = false;
-		for (int i = 0; i < size; i++) {
-			if (prevNatures[i].equals(natureId)) {
-				matchfound = true;
-				continue;
-			} else
-				newNatures[newsize++] = prevNatures[i];
-		}
-		if (!matchfound)
-			throw new CoreException(new Status(IStatus.ERROR, JEMUtilPlugin.ID, 0,
-					"The nature id " + natureId + " does not exist on the project " + project.getName(), null)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		else {
-			String[] temp = newNatures;
-			newNatures = new String[newsize];
-			System.arraycopy(temp, 0, newNatures, 0, newsize);
-			description.setNatureIds(newNatures);
-			project.setDescription(description, null);
-		}
-	}
-
-	/**
-	 * Add the list of projects to end of the "referenced projects" list from the project's description.
-	 * 
-	 * @param project
-	 * @param toBeAddedProjectsList
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void addReferenceProjects(IProject project, List toBeAddedProjectsList) throws CoreException {
-
-		IProjectDescription description = project.getDescription();
-		IProject[] projects = description.getReferencedProjects();
-
-		ArrayList projectsList = new ArrayList();
-
-		for (int i = 0; i < projects.length; i++) {
-			projectsList.add(projects[i]);
-		}
-
-		for (int i = 0; i < toBeAddedProjectsList.size(); i++) {
-			projectsList.add(toBeAddedProjectsList.get(i));
-		}
-
-		IProject[] refProjects = new IProject[projectsList.size()];
-
-		for (int i = 0; i < refProjects.length; i++) {
-			refProjects[i] = (IProject) (projectsList.get(i));
-		}
-
-		description.setReferencedProjects(refProjects);
-		project.setDescription(description, null);
-	}
-
-	/**
-	 * Add the single project to the end of the "referenced projects" list from the project's description.
-	 * 
-	 * @param project
-	 * @param projectToBeAdded
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void addReferenceProjects(IProject project, IProject projectToBeAdded) throws CoreException {
-		IProjectDescription description = project.getDescription();
-		IProject[] projects = description.getReferencedProjects();
-
-		ArrayList projectsList = new ArrayList();
-
-		for (int i = 0; i < projects.length; i++) {
-			projectsList.add(projects[i]);
-		}
-
-		projectsList.add(projectToBeAdded);
-
-		IProject[] refProjects = new IProject[projectsList.size()];
-
-		for (int i = 0; i < refProjects.length; i++) {
-			refProjects[i] = (IProject) (projectsList.get(i));
-		}
-
-		description.setReferencedProjects(refProjects);
-		project.setDescription(description, null);
-	}
-
-	/**
-	 * Force a an immediate build of the project.
-	 * 
-	 * @param project
-	 * @param progressMonitor
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void forceAutoBuild(IProject project, IProgressMonitor progressMonitor) {
-		try {
-			project.build(IncrementalProjectBuilder.FULL_BUILD, progressMonitor);
-		} catch (CoreException ce) {
-			//Revisit: Need to use a Logger
-			//Logger.getLogger().logError(ce);
-		}
-	}
-
-	/**
-	 * Return if auto build is turned on.
-	 * 
-	 * @return <code>true</code> if auto build is turned on.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean getCurrentAutoBuildSetting() {
-
-		IWorkspace workspace = ResourcesPlugin.getWorkspace();
-		IWorkspaceDescription wd = workspace.getDescription();
-		return wd.isAutoBuilding();
-	}
-
-	/**
-	 * Get the project associated with the given object.
-	 * 
-	 * @param object
-	 *            may be an <code>IProject, IResource, IAdaptable (to an IProject), EObject (gets IProject if object is in a ProjectResourceSet</code>.
-	 * @param natureId
-	 *            if <code>null</code> then returns project. If not <code>null</code> then returns project only if project has this nature id.
-	 * @return project associated with the object or <code>null</code> if not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(Object object, String natureId) {
-		IProject result = getProject(object);
-		if (natureId == null)
-			return result;
-		if (result != null && result.isAccessible() && natureId != null)
-			try {
-				if (result.hasNature(natureId))
-					return result;
-			} catch (CoreException e) {
-				Logger.getLogger().logError(e);
-			}
-		return null;
-	}
-
-	/**
-	 * Get the project associated with the given object.
-	 * 
-	 * @param object
-	 *            may be an <code>IProject, IResource, IAdaptable (to an IProject), EObject (gets IProject if object is in a ProjectResourceSet</code>.
-	 * @return project associated with the object or <code>null</code> if not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(Object object) {
-		IProject result = null;
-
-		if (object instanceof IProject)
-			result = (IProject) object;
-		else if (object instanceof IResource)
-			result = ((IResource) object).getProject();
-		else if (object instanceof IAdaptable)
-			result = (IProject) ((IAdaptable) object).getAdapter(IProject.class);
-		else if (object instanceof EObject)
-			result = getProject((EObject) object);
-
-		return result;
-	}
-
-	/**
-	 * Get the project associated with the given EObject. (If in a ProjectResourceSet, then the project from that resource set).
-	 * 
-	 * @param aRefObject
-	 * @return project if associated or <code>null</code> if not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(EObject aRefObject) {
-		if (aRefObject != null) {
-			Resource resource = aRefObject.eResource();
-			return getProject(resource);
-		}
-		return null;
-	}
-
-	/**
-	 * Get the project associated with the given Resource. (If in a ProjectResourceSet, then the project from that resource set).
-	 * 
-	 * @param resource
-	 * @return project if associated or <code>null</code> if not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(Resource resource) {
-		ResourceSet set = resource == null ? null : resource.getResourceSet();
-		if (set instanceof ProjectResourceSet)
-			return ((ProjectResourceSet) set).getProject();
-		URIConverter converter = set == null ? null : set.getURIConverter();
-		if (converter != null && converter instanceof WorkbenchURIConverter && ((WorkbenchURIConverter) converter).getOutputContainer() != null)
-			return ((WorkbenchURIConverter) converter).getOutputContainer().getProject();
-		else
-			return null;
-	}
-
-	/**
-	 * Remove the list of projects from the list of "referenced projects" in the project's description.
-	 * 
-	 * @param project
-	 * @param toBeRemovedProjectList
-	 * @throws org.eclipse.core.runtime.CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void removeReferenceProjects(IProject project, List toBeRemovedProjectList) throws org.eclipse.core.runtime.CoreException {
-		IProjectDescription description = project.getDescription();
-		IProject[] projects = description.getReferencedProjects();
-
-		ArrayList projectsList = new ArrayList();
-
-		for (int i = 0; i < projects.length; i++) {
-			projectsList.add(projects[i]);
-		}
-
-		for (int i = 0; i < toBeRemovedProjectList.size(); i++) {
-			projectsList.remove(toBeRemovedProjectList.get(i));
-		}
-
-		IProject[] refProjects = new IProject[projectsList.size()];
-
-		for (int i = 0; i < refProjects.length; i++) {
-			refProjects[i] = (IProject) (projectsList.get(i));
-		}
-
-		description.setReferencedProjects(refProjects);
-		project.setDescription(description, null);
-	}
-
-	/**
-	 * Remove the project from the list of "referenced projects" in the description for the given project.
-	 * 
-	 * @param project
-	 * @param toBeRemovedProject
-	 * @throws org.eclipse.core.runtime.CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void removeReferenceProjects(IProject project, IProject toBeRemovedProject) throws org.eclipse.core.runtime.CoreException {
-		IProjectDescription description = project.getDescription();
-		IProject[] projects = description.getReferencedProjects();
-
-		ArrayList projectsList = new ArrayList();
-
-		for (int i = 0; i < projects.length; i++) {
-			projectsList.add((projects[i]));
-		}
-
-		projectsList.remove(toBeRemovedProject);
-
-		IProject[] refProjects = new IProject[projectsList.size()];
-
-		for (int i = 0; i < refProjects.length; i++) {
-			refProjects[i] = (IProject) (projectsList.get(i));
-		}
-
-		description.setReferencedProjects(refProjects);
-		project.setDescription(description, null);
-	}
-
-	/**
-	 * Turn auto-building off.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void turnAutoBuildOff() {
-		try {
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			IWorkspaceDescription wd = workspace.getDescription();
-			wd.setAutoBuilding(false);
-			workspace.setDescription(wd);
-		} catch (CoreException ce) {
-			//Logger.getLogger().logError(ce);
-		}
-	}
-
-	/**
-	 * Turn auto-building on.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void turnAutoBuildOn() {
-		try {
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			IWorkspaceDescription wd = workspace.getDescription();
-			wd.setAutoBuilding(true);
-			workspace.setDescription(wd);
-		} catch (CoreException ce) {
-			//Logger.getLogger().logError(ce);
-		}
-	}
-
-	/**
-	 * Set the auto-building state.
-	 * 
-	 * @param aBoolean
-	 *            <code>true</code> to turn auto-building on.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void turnAutoBuildOn(boolean aBoolean) {
-		try {
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			IWorkspaceDescription wd = workspace.getDescription();
-			wd.setAutoBuilding(aBoolean);
-			workspace.setDescription(wd);
-		} catch (CoreException ce) {
-			//Logger.getLogger().logError(ce);
-
-		}
-	}
-
-	/**
-	 * Adds a builder to the build spec for the given project.
-	 * 
-	 * @param builderID
-	 *            The id of the builder.
-	 * @param project
-	 *            Project to add to.
-	 * @return whether the builder id was actually added (it may have already existed)
-	 * @throws CoreException
-	 * @since 1.0.0
-	 */
-	public static boolean addToBuildSpec(String builderID, IProject project) throws CoreException {
-		return addToBuildSpecBefore(builderID, null, project);
-	}
-
-	/**
-	 * Adds a builder to the build spec for the given project, immediately before the specified successor builder.
-	 * 
-	 * @param builderID
-	 *            The id of the builder.
-	 * @param successorID
-	 *            The id to put the builder before.
-	 * @return whether the builder id was actually added (it may have already existed)
-	 * @throws CoreException
-	 * @since 1.0.0
-	 */
-	public static boolean addToBuildSpecBefore(String builderID, String successorID, IProject project) throws CoreException {
-		IProjectDescription description = project.getDescription();
-		ICommand[] commands = description.getBuildSpec();
-		boolean found = false;
-		for (int i = 0; i < commands.length; ++i) {
-			if (commands[i].getBuilderName().equals(builderID)) {
-				found = true;
-				break;
-			}
-		}
-		if (!found) {
-			boolean successorFound = false;
-			ICommand command = description.newCommand();
-			command.setBuilderName(builderID);
-			ICommand[] newCommands = new ICommand[commands.length + 1];
-			for (int j = 0, index = 0; j < commands.length; j++, index++) {
-				if (successorID != null && commands[j].getBuilderName().equals(successorID)) {
-					successorFound = true;
-					newCommands[index++] = command;
-				}
-				newCommands[index] = commands[j];
-			}
-			if (!successorFound)
-				newCommands[newCommands.length - 1] = command;
-			description.setBuildSpec(newCommands);
-			project.setDescription(description, null);
-		}
-		return !found;
-	}
-
-	/**
-	 * Remove the builder from the build spec.
-	 * 
-	 * @param builderID
-	 *            The id of the builder.
-	 * @param project
-	 *            Project to remove from.
-	 * @return boolean if the builder id was found and removed
-	 * @throws CoreException
-	 * @since 1.0.0
-	 */
-	public static boolean removeFromBuildSpec(String builderID, IProject project) throws CoreException {
-		IProjectDescription description = project.getDescription();
-		ICommand[] commands = description.getBuildSpec();
-		boolean found = false;
-		for (int i = 0; i < commands.length; ++i) {
-			if (commands[i].getBuilderName().equals(builderID)) {
-				found = true;
-				break;
-			}
-		}
-		if (found) {
-			ICommand[] newCommands = new ICommand[commands.length - 1];
-			int newCount = 0;
-			for (int i = 0; i < commands.length; ++i) {
-				if (!(commands[i].getBuilderName().equals(builderID))) {
-					//Add the existng to the new array
-					newCommands[newCount] = commands[i];
-					newCount++;
-				}
-			}
-
-			description.setBuildSpec(newCommands);
-			project.setDescription(description, null);
-
-		}
-		return found;
-
-	}
-
-	/**
-	 * Ensure the container is not read-only.
-	 * <p>
-	 * For Linux, a Resource cannot be created in a ReadOnly folder. This is only necessary for new files.
-	 * 
-	 * @param resource
-	 *            workspace resource to make read/write
-	 * @since 1.0.0
-	 */
-	public static void ensureContainerNotReadOnly(IResource resource) {
-		if (resource != null && !resource.exists()) { //it must be new
-			IContainer container = resource.getParent();
-			ResourceAttributes attr = container.getResourceAttributes();
-			while (attr != null && !attr.isReadOnly()) {
-				container = container.getParent();
-				if (container == null)
-					break;
-				attr = container.getResourceAttributes();
-			}
-			if (container != null && attr != null)
-				attr.setReadOnly(false);
-		}
-	}
-
-	/**
-	 * Get projects from primary nature.
-	 * 
-	 * @param natureID
-	 * @return All projects that have the given nature id as the first nature id.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject[] getProjectsForPrimaryNature(String natureID) {
-		IProject[] projectsWithNature = new IProject[] {};
-		List result = new ArrayList();
-		IProject[] projects = getAllProjects();
-		for (int i = 0; i < projects.length; i++) {
-			if (isProjectPrimaryNature(projects[i], natureID))
-				result.add(projects[i]);
-		}
-		return (IProject[]) result.toArray(projectsWithNature);
-	}
-
-	/**
-	 * Get all projects in the workspace
-	 * 
-	 * @return all workspace projects
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject[] getAllProjects() {
-		return ResourcesPlugin.getWorkspace().getRoot().getProjects();
-	}
-
-	/**
-	 * Is this nature id the primary nature id for the project
-	 * 
-	 * @param project
-	 * @param natureID
-	 * @return <code>true</code> if first nature id for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean isProjectPrimaryNature(IProject project, String natureID) {
-		String[] natures = null;
-		try {
-			natures = project.getDescription().getNatureIds();
-		} catch (Exception e1) {
-		}
-		return (natures != null && natures.length > 0 && natures[0].equals(natureID));
-	}
-
-	protected static IPath createPath(IProject p, String defaultSourceName) {
-		IPath path = new Path(p.getName());
-		path = path.append(defaultSourceName);
-		path = path.makeAbsolute();
-		return path;
-	}
-
-	/**
-	 * Returns a list of existing files which will be modified if the classpath changes for the given proeject.
-	 * 
-	 * @param p
-	 *            project
-	 * @return list of affected files.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static List getFilesAffectedByClasspathChange(IProject p) {
-		List result = new ArrayList(2);
-		addFileIfExists(p, result, DOT_CLASSPATH);
-		addFileIfExists(p, result, DOT_PROJECT);
-		return result;
-	}
-
-	protected static void addFileIfExists(IProject p, List aList, String filename) {
-		IFile aFile = p.getFile(filename);
-		if (aFile != null && aFile.exists())
-			aList.add(aFile);
-	}
-
-	/**
-	 * Strip off a leading "/" from each project name in the array, if it has one.
-	 * 
-	 * @param projecNames
-	 * @return array of project names with all leading '/' removed.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static String[] getProjectNamesWithoutForwardSlash(String[] projecNames) {
-		String[] projNames = new String[projecNames.length];
-		List temp = java.util.Arrays.asList(projecNames);
-		for (int i = 0; i < temp.size(); i++) {
-			String name = (String) (temp.get(i));
-			if (name.startsWith("/")) { //$NON-NLS-1$
-				projNames[i] = name.substring(1, name.length());
-			} else {
-				projNames[i] = name;
-			}
-		}
-		return projNames;
-	}
-
-	protected static URL createFileURL(IPath path) {
-		try {
-			return path.toFile().toURL();
-		} catch (MalformedURLException e) {
-			Logger.getLogger().log(e, Level.WARNING);
-			return null;
-		}
-	}
-
-	/**
-	 * Find first newObject that is not in the oldObjects array (using "==").
-	 * 
-	 * @param oldObjects
-	 * @param newObjects
-	 * @return first newObject not found in oldObjects, or <code>null</code> if all found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Object getNewObject(Object[] oldObjects, Object[] newObjects) {
-		if (oldObjects != null && newObjects != null && oldObjects.length < newObjects.length) {
-			for (int i = 0; i < newObjects.length; i++) {
-				boolean found = false;
-				Object object = newObjects[i];
-				for (int j = 0; j < oldObjects.length; j++) {
-					if (oldObjects[j] == object) {
-						found = true;
-						break;
-					}
-				}
-				if (!found)
-					return object;
-			}
-		}
-		if (oldObjects == null && newObjects != null && newObjects.length == 1)
-			return newObjects[0];
-		return null;
-	}
-
-	/**
-	 * List of all files in the project.
-	 * <p>
-	 * Note: A more efficient way to do this is to use {@link IResource#accept(org.eclipse.core.resources.IResourceProxyVisitor, int)}
-	 * 
-	 * @param 1.0.0
-	 * @return list of files in the project
-	 * 
-	 * @see IResource#accept(org.eclipse.core.resources.IResourceProxyVisitor, int)
-	 * @since 1.0.0
-	 */
-	public static List getAllProjectFiles(IProject project) {
-		List result = new ArrayList();
-		if (project == null)
-			return result;
-		try {
-			result = collectFiles(project.members(), result);
-		} catch (CoreException e) {
-		}
-		return result;
-	}
-
-	private static List collectFiles(IResource[] members, List result) throws CoreException {
-		// recursively collect files for the given members
-		for (int i = 0; i < members.length; i++) {
-			IResource res = members[i];
-			if (res instanceof IFolder) {
-				collectFiles(((IFolder) res).members(), result);
-			} else if (res instanceof IFile) {
-				result.add(res);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Get the project.
-	 * 
-	 * @param projectName
-	 * @return a IProject given the projectName
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(String projectName) {
-		return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-	}
-
-	/**
-	 * Return whether the given builder name is attached to the project.
-	 * 
-	 * @param project
-	 * @param builderName
-	 * @return <code>true</code> if builder name is attached to the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean hasBuilder(IProject project, String builderName) {
-		try {
-			ICommand[] builders = project.getDescription().getBuildSpec();
-			for (int i = 0; i < builders.length; i++) {
-				ICommand builder = builders[i];
-				if (builder != null) {
-					if (builder.getBuilderName().equals(builderName))
-						return true;
-				}
-			}
-		} catch (Exception e) {
-		}
-		return false;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceHandler.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceHandler.java
deleted file mode 100644
index 0170780..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceHandler.java
+++ /dev/null
@@ -1,65 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ResourceHandler.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Implementers of this interface are provide extension capabilities on resource set. Such as looking or creating in other resource sets for a
- * resource or an EObject.
- * 
- * @see org.eclipse.jem.util.emf.workbench.ProjectResourceSet#add(ResourceHandler)
- * @since 1.0.0
- */
-public interface ResourceHandler {
-
-	/**
-	 * Each ResourceHandler for a WorkbenchContext (which holds a ProjectResourceSet) will get an oportunity to get the Resource given the uriString
-	 * prior to the originatingResourceSet getting it in the normal manner.
-	 * 
-	 * If this handler loaded a Resource in its create(ResourceSet, uriString) then this method should be able to return it as well.
-	 * 
-	 * @param originatingResourceSet
-	 * @param uri
-	 * @return resource if found or <code>nulll/code> if this handler didn't find it.
-	 * 
-	 * @since 1.0.0
-	 */
-	Resource getResource(ResourceSet originatingResourceSet, URI uri);
-
-	/**
-	 * Get the EObject for the given URI, if it can. Load the resource if loadOnDemand is <code>true</code>.
-	 * 
-	 * @param originatingResourceSet
-	 * @param uri
-	 *            uri of EObject being requested
-	 * @param loadOnDemand
-	 *            <code>true</code> if resource should be loaded
-	 * @return eobject if found or <code>null</code> if not.
-	 */
-	EObject getEObjectFailed(ResourceSet originatingResourceSet, URI uri, boolean loadOnDemand);
-
-	/**
-	 * Create the resource pointed to be the URI if this handler will handle it.
-	 * 
-	 * @param originatingResourceSet
-	 * @param uri
-	 * @return resource if created, or <code>null</code> if handler doesn't handle this type.
-	 */
-	Resource createResource(ResourceSet originatingResourceSet, URI uri);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
deleted file mode 100644
index 1781936..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
+++ /dev/null
@@ -1,191 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: ResourceSetWorkbenchSynchronizer.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-
-package org.eclipse.jem.util.emf.workbench;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-import org.eclipse.jem.internal.util.emf.workbench.EMFWorkbenchContextFactory;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * Synchronizer on the workbench. It listens for the project to see if it is closed or deleted. If it does it notifies this out.
- * 
- * @since 1.0.0
- */
-public class ResourceSetWorkbenchSynchronizer implements IResourceChangeListener {
-
-	protected IProject project;
-
-	protected ResourceSet resourceSet;
-
-	/** Extenders that will be notified after a pre build resource change */
-	protected List extenders;
-
-	/** The delta for this project that will be broadcast to the extenders */
-	protected IResourceDelta currentProjectDelta;
-
-	private int currentEventType = -1;
-
-	/**
-	 * Constructor taking a resource set and project.
-	 * 
-	 * @param aResourceSet
-	 * @param aProject
-	 * 
-	 * @since 1.0.0
-	 */
-	public ResourceSetWorkbenchSynchronizer(ResourceSet aResourceSet, IProject aProject) {
-		resourceSet = aResourceSet;
-		project = aProject;
-		if (aResourceSet != null && aResourceSet instanceof ProjectResourceSet)
-			((ProjectResourceSet) aResourceSet).setSynchronizer(this);
-		initialize();
-	}
-
-	/**
-	 * Get the project for this synchronizer
-	 * 
-	 * @return project
-	 * 
-	 * @since 1.0.0
-	 */
-	public IProject getProject() {
-		return project;
-	}
-
-	/*
-	 * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
-	 */
-	public void resourceChanged(IResourceChangeEvent event) {
-		currentEventType = event.getType();
-		currentProjectDelta = null;
-		if ((currentEventType == IResourceChangeEvent.PRE_CLOSE || currentEventType == IResourceChangeEvent.PRE_DELETE)
-				&& event.getResource().equals(getProject())) {
-			release();
-			notifyExtendersOfClose();
-		}
-	}
-
-	protected void notifyExtendersIfNecessary() {
-		if (currentEventType != IResourceChangeEvent.POST_CHANGE || extenders == null || currentProjectDelta == null)
-			return;
-		for (int i = 0; i < extenders.size(); i++) {
-			ISynchronizerExtender extender = (ISynchronizerExtender) extenders.get(i);
-			extender.projectChanged(currentProjectDelta);
-		}
-	}
-
-	protected void notifyExtendersOfClose() {
-		if (extenders != null && !extenders.isEmpty()) {
-			for (int i = 0; i < extenders.size(); i++) {
-				ISynchronizerExtender extender = (ISynchronizerExtender) extenders.get(i);
-				extender.projectClosed();
-			}
-		}
-	}
-
-	protected IWorkspace getWorkspace() {
-		if (getProject() == null)
-			return ResourcesPlugin.getWorkspace();
-		return getProject().getWorkspace();
-	}
-
-	protected void initialize() {
-		getWorkspace().addResourceChangeListener(this,
-				IResourceChangeEvent.PRE_CLOSE | IResourceChangeEvent.PRE_DELETE | IResourceChangeEvent.POST_CHANGE | IResourceChangeEvent.PRE_BUILD);
-	}
-
-	/**
-	 * Dispose of the synchronizer. Called when no longer needed.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public void dispose() {
-		getWorkspace().removeResourceChangeListener(this);
-	}
-
-	/**
-	 * The project is going away so we need to cleanup ourself and the ResourceSet.
-	 */
-	protected void release() {
-		if (JEMUtilPlugin.isActivated()) {
-			try {
-				if (resourceSet instanceof ProjectResourceSet)
-					((ProjectResourceSet) resourceSet).release();
-			} finally {
-				EMFWorkbenchContextFactory.INSTANCE.removeCachedProject(getProject());
-				dispose();
-			}
-		}
-	}
-
-	/**
-	 * Add an extender to be notified of events.
-	 * 
-	 * @param extender
-	 * 
-	 * @since 1.0.0
-	 */
-	public void addExtender(ISynchronizerExtender extender) {
-		if (extenders == null)
-			extenders = new ArrayList(3);
-		extenders.add(extender);
-	}
-
-	/**
-	 * Remove extender from notification of events.
-	 * 
-	 * @param extender
-	 * 
-	 * @since 1.0.0
-	 */
-	public void removeExtender(ISynchronizerExtender extender) {
-		if (extenders == null)
-			return;
-		extenders.remove(extender);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return getClass().getName() + '(' + ((getProject() != null) ? getProject().getName() : "null") + ')'; //$NON-NLS-1$
-	}
-
-	/**
-	 * Tell Synchronizer that a file is about to be saved. This method should be called prior to writing to an IFile from an EMF resource.
-	 * <p>
-	 * Default does nothing, but subclasses can do something.
-	 * </p>
-	 * 
-	 * @param aFile
-	 *            file about to be saved.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void preSave(IFile aFile) {
-		//Default is do nothing
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchByteArrayOutputStream.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchByteArrayOutputStream.java
deleted file mode 100644
index 9d72f51..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchByteArrayOutputStream.java
+++ /dev/null
@@ -1,148 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkbenchByteArrayOutputStream.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import java.io.IOException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
-
-/**
- * ByteArray OutputStream for the Workbench. It works with the synchronizer {@link org.eclipse.jem.util.emf.workbench.ResourceSetWorkbenchSynchronizer}to
- * notify of a save. It also changes all of the line separators to the current system line separator, i.e. if there are some '\r' and we are on
- * Windows(R) then they will be converted to '\n\r'), if the setting for the stream is to do eol conversion.
- * 
- * @since 1.0.0
- */
-public class WorkbenchByteArrayOutputStream extends URIConverterImpl.PlatformResourceOutputStream {
-
-	private boolean fConvertEOL = false;
-
-	protected ResourceSetWorkbenchSynchronizer synchronizer;
-
-	/**
-	 * Construct with an IFile
-	 * 
-	 * @param aFile
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchByteArrayOutputStream(IFile aFile) {
-		this(aFile, null);
-	}
-
-	/**
-	 * Construct with a IFile and a synchronizer. This way synchronizer will know when file is about to be saved.
-	 * 
-	 * @param aFile
-	 * @param aSynchronizer
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchByteArrayOutputStream(IFile aFile, ResourceSetWorkbenchSynchronizer aSynchronizer) {
-		super(aFile, false, true, null);
-		synchronizer = aSynchronizer;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.io.OutputStream#close()
-	 */
-	public void close() throws IOException {
-		if (synchronizer != null)
-			synchronizer.preSave(file);
-		super.close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.emf.ecore.resource.impl.URIConverterImpl.PlatformResourceOutputStream#flush()
-	 */
-	public void flush() throws IOException {
-		if (synchronizer != null)
-			synchronizer.preSave(file);
-		super.flush();
-	}
-
-	/*
-	 * Convert the end of line characters.
-	 */
-	private int convertEOL(byte[] data) {
-		// Algorithm:
-		// Remove all '\r' chars
-		// Replace all '\n' chars with line seperator chars
-
-		String EOL = System.getProperties().getProperty("line.separator"); //$NON-NLS-1$
-		byte[] EOLBytes = EOL.getBytes();
-
-		int out = 0;
-
-		for (int in = 0; in < data.length; in++) {
-			if (data[in] == '\r') {
-				// don't output (ie, throw the char away)
-			} else if (data[in] == '\n') {
-				// The code does not currently handle expanding the array
-				if ((in - out + 1) < EOLBytes.length)
-					throw new UnsupportedOperationException("WorkbenchByteArrayOutputStream: Expanding EOL chars not implemented"); //$NON-NLS-1$
-
-				for (int i = 0; i < EOLBytes.length; i++) {
-					data[out++] = EOLBytes[i];
-				}
-			} else {
-				// Just copy the data
-				data[out++] = data[in];
-			}
-		}
-
-		return out;
-	}
-
-	/**
-	 * Is EOL conversion turned on.
-	 * 
-	 * @return <code>true</code> if EOL conversion is turned on.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean isConvertEOLChars() {
-		return fConvertEOL;
-	}
-
-	/**
-	 * Set the EOL conversion flag.
-	 * 
-	 * @param set
-	 *            <code>true</code> if EOL should be converted to current line separator.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setConvertEOLChars(boolean set) {
-		fConvertEOL = set;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.io.ByteArrayOutputStream#toByteArray()
-	 */
-	public synchronized byte[] toByteArray() {
-		byte[] contents = super.toByteArray();
-		if (isConvertEOLChars())
-			convertEOL(contents);
-		return contents;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchResourceHelperBase.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchResourceHelperBase.java
deleted file mode 100644
index 2601650..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchResourceHelperBase.java
+++ /dev/null
@@ -1,694 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkbenchResourceHelperBase.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2005/10/14 20:57:31 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.emf.ecore.*;
-import org.eclipse.emf.ecore.resource.*;
-import org.eclipse.emf.ecore.util.InternalEList;
-
-import org.eclipse.jem.internal.util.emf.workbench.EMFWorkbenchContextFactory;
-import org.eclipse.jem.internal.util.emf.workbench.WorkspaceResourceHandler;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * Workbench resource helper
- * 
- * @since 1.0.0
- */
-public class WorkbenchResourceHelperBase {
-
-	/**
-	 * Everything is static, don't know why there is an instance here.
-	 */
-	public static final WorkbenchResourceHelperBase INSTANCE = new WorkbenchResourceHelperBase();
-
-	protected static WorkspaceResourceHandler workspaceURILoader = new WorkspaceResourceHandler();
-
-	protected static void resolveContainedProxies(EObject refObject) {
-		List contained = refObject.eContents();
-		EObject mofObject;
-		for (int i = 0; i < contained.size(); i++) {
-			mofObject = (EObject) contained.get(i);
-			resolveProxies(mofObject);
-		}
-	}
-
-	protected static void resolveNonContainedProxies(EObject refObject) {
-		List references = refObject.eClass().getEAllReferences();
-		EReference reference;
-		for (int i = 0; i < references.size(); i++) {
-			reference = (EReference) references.get(i);
-			if (!reference.isContainment()) {
-				if (reference.isMany()) {
-					List value = (List) refObject.eGet(reference);
-					for (int j = 0; j < value.size(); j++)
-						value.get(j);
-				} else {
-					refObject.eGet(reference);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Force all of the proxies with <code>resource</code> to be resolved.
-	 * 
-	 * @param resource
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void resolveProxies(Resource resource) {
-		if (resource != null) {
-			List topLevels = resource.getContents();
-			EObject mofObject;
-			for (int i = 0; i < topLevels.size(); i++) {
-				mofObject = (EObject) topLevels.get(i);
-				resolveProxies(mofObject);
-			}
-		}
-	}
-
-	/**
-	 * Return a List of proxies that are contained by the <code>resource</code>.
-	 * 
-	 * @param resource
-	 * @return list of proxies.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static List gatherProxies(Resource resource) {
-		if (resource == null)
-			return Collections.EMPTY_LIST;
-		List list = new ArrayList();
-		List topLevels = resource.getContents();
-		int size = topLevels.size();
-		EObject mofObject;
-		for (int i = 0; i < size; i++) {
-			mofObject = (EObject) topLevels.get(i);
-			gatherProxies((InternalEObject) mofObject, list);
-		}
-		return list;
-	}
-
-	protected static void gatherProxies(InternalEObject refObject, List proxies) {
-		if (refObject == null)
-			return;
-		List contains = refObject.eClass().getEAllContainments();
-		if (contains != null) {
-			int size = contains.size();
-			EStructuralFeature sf = null;
-			for (int i = 0; i < size; i++) {
-				sf = (EStructuralFeature) contains.get(i);
-				gatherProxies(refObject, sf, proxies);
-			}
-		}
-	}
-
-	protected static void gatherProxies(InternalEObject refObject, EStructuralFeature sf, List proxies) {
-		Object value = null;
-		InternalEObject proxy = null;
-		if (sf.isMany() || refObject.eIsSet(sf)) {
-			value = refObject.eGet(sf, false);
-			if (value != null) {
-				if (sf.isMany()) {
-					Iterator j = ((InternalEList) value).basicIterator();
-					while (j.hasNext()) {
-						proxy = (InternalEObject) j.next();
-						if (proxy.eIsProxy())
-							proxies.add(proxy);
-					}
-				} else if (((InternalEObject) value).eIsProxy())
-					proxies.add(value);
-			}
-		}
-	}
-
-	protected static void resolveProxies(EObject refObject) {
-		if (refObject != null) {
-			resolveNonContainedProxies(refObject);
-			resolveContainedProxies(refObject);
-		}
-	}
-
-	/**
-	 * Return an existing context base on <code>aProject</code>.
-	 * 
-	 * @param aProject
-	 * @return the context base for the project or <code>null</code> if none.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static EMFWorkbenchContextBase getEMFContext(IProject aProject) {
-		return EMFWorkbenchContextFactory.INSTANCE.getEMFContext(aProject);
-	}
-
-	/**
-	 * Create a resource from the URI. The URI must contain the project name, either as the first segment, or if in platform resource url protocol.
-	 * {@link #getResourceSet(URI)}
-	 * 
-	 * @param uri
-	 * @return a new resource for the uri or <code>null</code> if not a project uri
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource createResource(URI uri) {
-		ResourceSet set = getResourceSet(uri);
-		if (set != null)
-			return set.createResource(uri);
-		return null;
-	}
-
-	/**
-	 * Check for a cached Resource for the given URI, if none is found, create a new Resource for with the URI against the proper ResourceSet.
-	 * 
-	 * @param uri The URI MUST be either a "<b>platform:/resource/</b>project-name/...." type URI or it
-	 * must be of type "project-name/...". This method will only return resources that are workbench project resources.
-	 * Any other type of URI will cause <code>null</code> to be returned.
-	 * @return resource or <code>null</code> if not a project uri.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource getExistingOrCreateResource(URI uri) {
-		return getExistingOrCreateResource(uri, getResourceSet(uri));
-	}
-	
-	/**
-	 * Get the IFile for the URI. The URI must be a workbench project style URI. 
-	 * @param uri The URI MUST be either a "<b>platform:/resource/</b>project-name/...." type URI or it
-	 * must be of type "project-name/...". This method will only return resources that are workbench project resources.
-	 * Any other type of URI will cause <code>null</code> to be returned.
-	 * @return the IFile if the URI is a project form, <code>null</code> if not a project form, OR the project doesn't exist. The IFile returned doesn't necessarily exist. Use {@link IFile#exists()} to test that.
-	 * 
-	 * @since 1.2.0
-	 */
-	public static IFile getIFile(URI uri) {
-		IProject project = getProject(uri);
-		if (project != null) {
-			IPath path;
-			if (isPlatformResourceURI(uri)) {
-				// Need to get the path and remove the first two segments (/resource/project name/).
-				path = new Path(URI.decode(uri.path())).removeFirstSegments(2);
-			} else {
-				// Need to get the path and remove the first segment (/project name/).
-				path = new Path(URI.decode(uri.path())).removeFirstSegments(1);
-			}
-			return project.getFile(path);
-		} else
-			return null;
-	}
-
-	/**
-	 * Check for a cached Resource for the given URI, if none is found, create a new Resource for with the URI against the given ResourceSet.
-	 * 
-	 * @param uri 
-	 * @param set
-	 * @return resource or <code>null</code> if set was <code>null</code>.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource getExistingOrCreateResource(URI uri, ResourceSet set) {
-		if (set != null) {
-			Resource res = set.getResource(uri, false);
-			if (res == null)
-				res = set.createResource(uri);
-			return res;
-		} else
-			return null;
-	}
-
-	/**
-	 * Return a new or existing context base on <code>aProject</code>. Allow the <code>contributor</code> to contribute to the new or existing
-	 * nature prior to returning.
-	 * 
-	 * @param aProject
-	 * @param contributor
-	 * @return the context base for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static EMFWorkbenchContextBase createEMFContext(IProject aProject, IEMFContextContributor contributor) {
-		return EMFWorkbenchContextFactory.INSTANCE.createEMFContext(aProject, contributor);
-	}
-
-	/**
-	 * Does the passed URI have the form platform:/resource/... ?
-	 * 
-	 * @param uri
-	 * @return <code>true</code> if it is a platform resource protocol.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean isPlatformResourceURI(URI uri) {
-		return JEMUtilPlugin.PLATFORM_PROTOCOL.equals(uri.scheme()) && JEMUtilPlugin.PLATFORM_RESOURCE.equals(uri.segment(0));
-	}
-
-	/**
-	 * This api may be used to cache a Resource if it has a URI that is Workspace relative. Return true if it is cached.
-	 * 
-	 * @param aResource
-	 * @return <code>true</code> if it was successful to cache.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean cacheResource(Resource aResource) {
-		if (aResource != null) {
-			ResourceSet set = getResourceSet(aResource.getURI());
-			if (set != null)
-				return set.getResources().add(aResource);
-		}
-		return false;
-	}
-
-	/**
-	 * This api is used if you create a new MOF resource and you want to add it to the correct ResourceSet. In order to do that, we need the IProject
-	 * that you want aResource to be cached within as well as the IPath which is the full path of the location of the new Resource.
-	 * 
-	 * @param aProject
-	 * @param aResource
-	 * @param fullPath
-	 * @return <code>true</code> if resource was cached.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean cacheResource(IProject aProject, Resource aResource, IPath fullPath) {
-		if (aProject == null || aResource == null || !aProject.isAccessible())
-			return false;
-		ResourceSet set = getResourceSet(aProject);
-		if (set != null) {
-			URI converted = set.getURIConverter().normalize(aResource.getURI());
-			if (converted != aResource.getURI())
-				aResource.setURI(converted);
-			return set.getResources().add(aResource);
-		}
-		return false;
-	}
-
-	/**
-	 * Get the path of the project resource relative to the workspace or relative to the list of containers in this project.
-	 * 
-	 * @param aResource
-	 * @return path
-	 * 
-	 * @since 1.0.0
-	 */
-	public static String getActualProjectRelativeURI(IResource aResource) {
-		if (aResource == null || !aResource.isAccessible())
-			return null;
-		IProject project = aResource.getProject();
-		IPath path = getPathInProject(project, aResource.getFullPath());
-		return path.makeRelative().toString();
-	}
-
-	/**
-	 * Return an IPath that can be used to load a Resource using the <code>fullPath</code>. This will be a project relative path.
-	 * 
-	 * @param project
-	 * @param fullPath
-	 * @return path
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IPath getPathInProject(IProject project, IPath fullPath) {
-		List containers = getProjectURIConverterContainers(project);
-		if (!containers.isEmpty())
-			return getPathFromContainers(containers, fullPath);
-		return fullPath;
-	}
-
-	protected static List getProjectURIConverterContainers(IProject project) {
-		EMFWorkbenchContextBase nature = createEMFContext(project, null);
-		if (nature != null) {
-			WorkbenchURIConverter conv = (WorkbenchURIConverter) nature.getResourceSet().getURIConverter();
-			if (conv != null)
-				return conv.getInputContainers();
-		}
-		return Collections.EMPTY_LIST;
-	}
-
-	/**
-	 * If this path is contained within one of the listed containers, then return the path relative to the container.
-	 * 
-	 * @param containers
-	 * @param fullPath
-	 * @return path relative to a container, or unchanged path if not in a container.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IPath getPathFromContainers(List containers, IPath fullPath) {
-		IContainer container = null;
-		IPath result;
-		int size = containers.size();
-		int matching = -1;
-		IPath containerPath;
-		for (int i = 0; i < size; i++) {
-			container = (IContainer) containers.get(i);
-			containerPath = container.getFullPath();
-			matching = fullPath.matchingFirstSegments(containerPath);
-			if (matching > 0 && matching == containerPath.segmentCount()) {
-				result = fullPath.removeFirstSegments(matching);
-				result = result.makeRelative();
-				return result;
-			}
-		}
-		return fullPath;
-	}
-
-	/**
-	 * Return true if the <code>uri</code> has its container segments visible from the input containers for the <code>project</code>.
-	 * 
-	 * @param project
-	 * @param uri
-	 * @return <code>true</code> if the uri is visible from the input containers.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean hasContainerStructure(IProject project, URI uri) {
-		if (project != null && uri != null) {
-			IPath path = new Path(uri.toString());
-			List containers = getProjectURIConverterContainers(project);
-			int segmentCount = path.segmentCount();
-			IPath containerPath = segmentCount > 1 ? path.removeLastSegments(1) : null;
-			IContainer container = null;
-			for (int i = 0; i < containers.size(); i++) {
-				container = (IContainer) containers.get(i);
-				if (!container.isAccessible())
-					continue;
-				if (segmentCount == 1) {
-					if (container == project)
-						return true;
-				} else if (containerPath != null) {
-					IFolder folder = container.getFolder(containerPath);
-					if (folder != null && folder.isAccessible())
-						return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Get the resource for the uri. The URI MUST be either a "<b>platform:/resource/</b>project-name/...." type URI or it
-	 * must be of type "project-name/...". This method will only return resources that are workbench project resources.
-	 * Any other type of URI will cause <code>null</code> to be returned. It will be loaded if not already loaded. If it is not to
-	 * be loaded if not loaded use {@link #getResource(URI, boolean)} instead.
-	 * 
-	 * @param uri must be either a "<b>platform:/resource/</b>project-name/..." form or it must be "project-name/...". Any other form will be invalid.
-	 * @return resource if uri is for a valid workbench project resource or <code>null</code> if project not found or not a valid project resource.
-	 * 
-	 * @throws WrappedException if valid project format URI but file not found or some other error on load.
-	 * @since 1.0.0
-	 */
-	public static Resource getResource(URI uri) {
-		return getResource(uri, true);
-	}
-
-	/**
-	 * Return the Resource for the passed IFile without forcing a load.
-	 * 
-	 * @param aFile
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource getResource(IFile aFile) {
-		return getResource(aFile, false);
-	}
-
-	/**
-	 * Return the Resource for the passed IFile, forcing a load if <code>loadOnDemand</code> says so.
-	 * 
-	 * @param aFile
-	 * @param loadOnDemand
-	 *            <code>true</code> will force a load of resource if not loaded.
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource getResource(IFile aFile, boolean loadOnDemand) {
-		if (aFile != null)
-			return getResource(URI.createPlatformResourceURI(aFile.getFullPath().toString()), loadOnDemand);
-		return null;
-	}
-
-	/**
-	 * Return the Resource for the passed IFile without a load if not loaded.
-	 * 
-	 * @param aFile
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Resource load(IFile aFile) {
-		return getResource(aFile, true);
-	}
-
-	/**
-	 * Get the resource for the uri. The URI MUST be either a "<b>platform:/resource/</b>project-name/...." type URI or it
-	 * must be of type "project-name/...". This method will only return resources that are workbench project resources.
-	 * Any other type of URI will cause <code>null</code> to be returned.
-	 * 
-	 * @param uri must be either a "<b>platform:/resource/</b>project-name/..." form or it must be "project-name/...". Any other form will be invalid.
-	 * @param loadOnDemand <code>true</code> will cause resource to be loaded if not already loaded.
-	 * @return resource if uri is for a valid workbench project resource, or <code>null</code> if project not found, or not a valid project resource uri.
-	 * 
-	 * @throws WrappedException if valid project format URI but file not found or some other error on load if loadOnDemand is true.
-	 * @since 1.0.0
-	 */
-	public static Resource getResource(URI uri, boolean loadOnDemand) {
-		ResourceSet set = getResourceSet(uri);
-		if (set != null)
-			return set.getResource(uri, loadOnDemand);
-		return null;
-	}
-
-	/**
-	 * Return a ResourceSet for the passed URI. The URI should be in the format platform:/resource/{project name}/... or {project name}/... for this
-	 * api to work.
-	 * 
-	 * @param uri
-	 * @return the resource set or <code>null</code> if not of correct form or project doesn't have a resource set.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static ResourceSet getResourceSet(URI uri) {
-		IProject project = getProject(uri);
-		if (project != null && project.isAccessible())
-			return getResourceSet(project);
-		else
-			return null;
-	}
-	
-	/*
-	 * Get the project for the uri if the uri is a valid workbench project format uri. null otherwise.
-	 */
-	private static IProject getProject(URI uri) {
-		String projectName;
-		if (isPlatformResourceURI(uri))
-			projectName = uri.segment(1);
-		else if (uri.scheme() == null) {
-			projectName = new Path(uri.path()).segment(0); //assume project name is first in the URI
-		} else
-			return null;
-		IProject project = getWorkspace().getRoot().getProject(URI.decode(projectName));
-		if (project != null && project.isAccessible())
-			return project;
-		else
-			return null;
-	}
-
-	/**
-	 * Return the ResourceSet for the passed IProject.
-	 * 
-	 * @param project
-	 * @return resource set
-	 */
-	public static ResourceSet getResourceSet(IProject project) {
-		EMFWorkbenchContextBase nat = createEMFContext(project, null);
-		if (nat != null)
-			return nat.getResourceSet();
-		return null;
-	}
-
-	/**
-	 * Get the workspace. (just use {@link ResourcesPlugin#getWorkspace()}).
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IWorkspace getWorkspace() {
-		return ResourcesPlugin.getWorkspace();
-	}
-
-	/**
-	 * Get the project associated with the resource set.
-	 * 
-	 * @param set
-	 * @return project or <code>null</code> if resource set not associated with a project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IProject getProject(ResourceSet set) {
-		if (set != null) {
-			if (set instanceof ProjectResourceSet) {
-				ProjectResourceSet pset = (ProjectResourceSet) set;
-				return pset.getProject();
-			}
-		}
-		return null;
-	}
-
-	protected static boolean isRegisteredURIMapping(String href) {
-		if (href != null) {
-			String file = href;
-			int index = href.indexOf('#');
-			if (index > -1)
-				file = href.substring(0, index);
-			return URIConverter.URI_MAP.get(file) != null;
-		}
-		return false;
-	}
-
-	/**
-	 * Remove all of the resources from the resource set and then unload them. Unload forces all of the objects to become proxies so next resolve will
-	 * reload the resource.
-	 * 
-	 * @param resources
-	 * @param aSet
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void removeAndUnloadAll(List resources, ResourceSet aSet) {
-		if (aSet == null || resources == null || resources.isEmpty())
-			return;
-		aSet.getResources().removeAll(resources);
-		Resource res;
-		for (int i = 0; i < resources.size(); i++) {
-			res = (Resource) resources.get(i);
-			res.unload();
-		}
-	}
-
-	/**
-	 * Turn object into a proxy.
-	 * 
-	 * @param anObject
-	 * @return <code>true</code> if object was able to become a proxy.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean becomeProxy(EObject anObject) {
-		if (anObject != null) {
-			Resource res = anObject.eResource();
-			if (res != null) {
-				URI uri = res.getURI();
-				((InternalEObject) anObject).eSetProxyURI(uri.appendFragment(res.getURIFragment(anObject)));
-				//anObject.eAdapters().clear();
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Return true if the WrappedException is actually a Resource Not Found.
-	 * 
-	 * @param wrappedEx
-	 * @return <code>true</code> is exception wrappers a resource not found.
-	 * @since 1.0.0
-	 */
-	public static boolean isResourceNotFound(WrappedException wrappedEx) {
-		Exception excep = wrappedEx.exception();
-		while (excep instanceof WrappedException) {
-			excep = ((WrappedException) excep).exception();
-		}
-		return primIsResourceNotFound(excep);
-	}
-
-	private static boolean primIsResourceNotFound(Exception excep) {
-		if (excep instanceof CoreException) {
-			IStatus status = ((CoreException) excep).getStatus();
-			return status.getCode() == IResourceStatus.RESOURCE_NOT_FOUND && ResourcesPlugin.PI_RESOURCES.equals(status.getPlugin());
-		}
-		return false;
-	}
-
-	/**
-	 * Return true if the WrappedException is actually a Resource Not Found.
-	 * 
-	 * @param wrappedEx
-	 * @return <code>true</code> is exception wrappers a resource not found.
-	 * @since 1.0.0
-	 */
-	public static boolean isResourceNotFound(Resource.IOWrappedException wrappedEx) {
-		return primIsResourceNotFound(wrappedEx.getWrappedException());
-	}
-
-	/**
-	 * Return a URI represenation of the platformURI without the leading "platform:/resource/" if present.
-	 * 
-	 * @param platformURI
-	 * @return uri
-	 * @since 1.0.0
-	 */
-	public static URI getNonPlatformURI(URI platformURI) {
-		if (isPlatformResourceURI(platformURI)) {
-			String uriString = primGetNonPlatformURIString(platformURI);
-			return URI.createURI(uriString);
-		}
-		return platformURI;
-	}
-
-	/**
-	 * Return a String represenation of the platformURI without the leading "platform:/resource/" if present.
-	 * 
-	 * @param platformURI
-	 * @return
-	 * @since 1.0.0
-	 */
-	public static String getNonPlatformURIString(URI platformURI) {
-		if (isPlatformResourceURI(platformURI)) { return primGetNonPlatformURIString(platformURI); }
-		return platformURI.toString();
-	}
-
-	/*
-	 * Remove "platform:/resource/" from the front of the platformURI and return the remaining String.
-	 */
-	private static String primGetNonPlatformURIString(URI platformURI) {
-		String uriString = platformURI.toString();
-		//"platform:/resource/" is 19 characters.
-		return uriString.substring(19, uriString.length());
-	}
-
-	/**
-	 * Does the passed URI have the form platform:/plugin/... ?
-	 * 
-	 * @param uri
-	 * @return <code>true</code> if uri is platform plugin protocol.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean isPlatformPluginResourceURI(URI uri) {
-		return JEMUtilPlugin.PLATFORM_PROTOCOL.equals(uri.scheme()) && JEMUtilPlugin.PLATFORM_PLUGIN.equals(uri.segment(0));
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverter.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverter.java
deleted file mode 100644
index e556851..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverter.java
+++ /dev/null
@@ -1,154 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkbenchURIConverter.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.emf.ecore.resource.URIConverter;
-
-/**
- * Implementers of this interface are WorkbenchURI converters. Workbench URI converters handle references to files in the project's containers.
- * This converter is only necessary to resolve old ambiguous workbench URIs.
- * @since 1.0.0
- */
-public interface WorkbenchURIConverter extends URIConverter {
-
-	/**
-	 * Add input container to to the converter.
-	 * 
-	 * @param aContainer
-	 * 
-	 * @since 1.0.0
-	 */
-	void addInputContainer(IContainer aContainer);
-
-	/**
-	 * Add list of containers to the converter.
-	 * 
-	 * @param containers
-	 *            list of <code>IContainer</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	void addInputContainers(List containers);
-
-	/**
-	 * Get the file relative to a container.
-	 * 
-	 * @param uri
-	 * @return file relative to a container or <code>null</code> if not.
-	 * 
-	 * @since 1.0.0
-	 */
-	IFile getFile(String uri);
-
-	/**
-	 * Get first input container
-	 * 
-	 * @return first input container or <code>null</code> if none set.
-	 * 
-	 * @since 1.0.0
-	 */
-	IContainer getInputContainer();
-
-	/**
-	 * Get all input containers.
-	 * 
-	 * @return all input containers.
-	 * 
-	 * @since 1.0.0
-	 */
-	List getInputContainers();
-
-	/**
-	 * Get the output container if set.
-	 * 
-	 * @return output container or <code>null</code> if not set.
-	 * 
-	 * @since 1.0.0
-	 */
-	IContainer getOutputContainer();
-
-	/**
-	 * Set the output container.
-	 * 
-	 * @param container
-	 * 
-	 * @since 1.0.0
-	 */
-	void setOutputContainer(IContainer container);
-
-	/**
-	 * Return an IFile for
-	 * 
-	 * @aPath. If we have a parent and we do not contain the first segment of the aPath, forward to the parent to retrieve the file.
-	 * @param aPath
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	IFile getOutputFile(IPath aPath);
-
-	/**
-	 * Get output file with mapping applied.
-	 * 
-	 * @param uri
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	IFile getOutputFileWithMappingApplied(String uri);
-
-	/**
-	 * Remove input container from list.
-	 * 
-	 * @param aContainer
-	 * @return <code>true</code> if removed.
-	 * 
-	 * @since 1.0.0
-	 */
-	boolean removeInputContainer(IContainer aContainer);
-
-	/**
-	 * Return true if we can retrieve the resource used to open an input stream on.
-	 * 
-	 * @param aFileName
-	 * @return <code>true</code> if filename is valid for file stream access.
-	 * @since 1.0.0
-	 *  
-	 */
-	boolean canGetUnderlyingResource(String aFileName);
-
-	/**
-	 * Is force save relative flag turned on.
-	 * 
-	 * @return <code>true</code> if force save relative is turned on.
-	 * 
-	 * @since 1.0.0
-	 */
-	boolean isForceSaveRelative();
-
-	/**
-	 * Set to true if you do not want any path manipulation when creating the output stream..
-	 * 
-	 * @param forceSaveRelative
-	 *            <code>true</code> to force saves as relative.
-	 */
-	void setForceSaveRelative(boolean forceSaveRelative);
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverterImpl.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverterImpl.java
deleted file mode 100644
index 4eaaee1..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/WorkbenchURIConverterImpl.java
+++ /dev/null
@@ -1,514 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: WorkbenchURIConverterImpl.java,v $$
- *  $$Revision: 1.5 $$  $$Date: 2006/02/06 22:05:46 $$ 
- */
-package org.eclipse.jem.util.emf.workbench;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
-
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-
-/**
- * A default implementation of the WorkbenchURIConverter interface.
- * 
- * @since 1.0.0
- */
-public class WorkbenchURIConverterImpl extends URIConverterImpl implements WorkbenchURIConverter {
-
-	private final static IWorkspaceRoot WORKSPACE_ROOT = URIConverterImpl.workspaceRoot;
-	private final static String WORKSPACE_ROOT_LOCATION = WORKSPACE_ROOT.getLocation().toString();
-
-	private static final String FILE_PROTOCOL = "file"; //$NON-NLS-1$
-
-	private static final IPath INVALID_PATH = new Path("!!!!~!!!!"); //$NON-NLS-1$
-
-	private static final IFile INVALID_FILE = WORKSPACE_ROOT.getFile(INVALID_PATH.append(INVALID_PATH));
-
-	//Used to avoid trying to fixup the URI when getting the
-	//OutputStream
-	protected boolean forceSaveRelative = false;
-
-	protected List inputContainers;
-
-	protected IContainer outputContainer;
-
-	protected ResourceSetWorkbenchSynchronizer resourceSetSynchronizer;
-	
-	/*
-	 * KLUDGE: We need to know the meta data area. This is so that any uri that starts with the metadata directory
-	 * is considered a file uri and NOT a workspace uri. The metadata is where plugin's store their working data.
-	 * It is not part of the workspace root.
-	 *  
-	 * There is no request for simply the metadata area. The log file is in the metadata directory. So we will
-	 * get the log file location and just remove the log file name. That should leave us with the metadata directory
-	 * only. If Eclipse ever decides to move it from here, this will no longer work. But it hasn't moved in three 
-	 * versions.
-	 * 
-	 * @since 1.1.0
-	 */
-	static protected final String METADATA_LOCATION = Platform.getLogFileLocation().removeLastSegments(1).toString();
-
-	/**
-	 * Default converter constructor, no containers.
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchURIConverterImpl() {
-		super();
-	}
-
-	/**
-	 * Construct with an input container.
-	 * 
-	 * @param anInputContainer
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchURIConverterImpl(IContainer anInputContainer) {
-		this(anInputContainer, (ResourceSetWorkbenchSynchronizer) null);
-	}
-
-	/**
-	 * Construct with an input container and a synchronzier.
-	 * 
-	 * @param aContainer
-	 * @param aSynchronizer
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchURIConverterImpl(IContainer aContainer, ResourceSetWorkbenchSynchronizer aSynchronizer) {
-		this(aContainer, null, aSynchronizer);
-	}
-
-	/**
-	 * Construct with an input container and an output container.
-	 * 
-	 * @param anInputContainer
-	 * @param anOutputContainer
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchURIConverterImpl(IContainer anInputContainer, IContainer anOutputContainer) {
-		this(anInputContainer, anOutputContainer, null);
-	}
-
-	/**
-	 * Construct with an input container, output container, and a synchronizer.
-	 * 
-	 * @param anInputContainer
-	 * @param anOutputContainer
-	 * @param aSynchronizer
-	 * 
-	 * @since 1.0.0
-	 */
-	public WorkbenchURIConverterImpl(IContainer anInputContainer, IContainer anOutputContainer, ResourceSetWorkbenchSynchronizer aSynchronizer) {
-		addInputContainer(anInputContainer);
-		setOutputContainer(anOutputContainer);
-		resourceSetSynchronizer = aSynchronizer;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#addInputContainer(org.eclipse.core.resources.IContainer)
-	 */
-	public void addInputContainer(IContainer aContainer) {
-		if (aContainer != null && !getInputContainers().contains(aContainer))
-			getInputContainers().add(aContainer);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#addInputContainers(java.util.List)
-	 */
-	public void addInputContainers(List containers) {
-		for (int i = 0; i < containers.size(); i++) {
-			addInputContainer((IContainer) containers.get(i));
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#removeInputContainer(org.eclipse.core.resources.IContainer)
-	 */
-	public boolean removeInputContainer(IContainer aContainer) {
-		return getInputContainers().remove(aContainer);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getInputContainers()
-	 */
-	public List getInputContainers() {
-		if (inputContainers == null)
-			inputContainers = new ArrayList();
-		return inputContainers;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getInputContainer()
-	 */
-	public IContainer getInputContainer() {
-		if (!getInputContainers().isEmpty())
-			return (IContainer) getInputContainers().get(0);
-		else
-			return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getOutputContainer()
-	 */
-	public IContainer getOutputContainer() {
-		if (outputContainer == null)
-			outputContainer = getInputContainer();
-		return outputContainer;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#setOutputContainer(org.eclipse.core.resources.IContainer)
-	 */
-	public void setOutputContainer(IContainer newOutputContainer) {
-		outputContainer = newOutputContainer;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getOutputFile(org.eclipse.core.runtime.IPath)
-	 */
-	public IFile getOutputFile(IPath aPath) {
-		IFile file = null;
-		if (getOutputContainer() != null) {
-			if (forceSaveRelative)
-				return primGetOutputFile(aPath);
-			file = getOutputFileForPathWithContainerSegments(aPath);
-			if (file != null)
-				return file;
-			else
-				return primGetOutputFile(aPath);
-		}
-		return file;
-	}
-
-	protected IFile primGetOutputFile(IPath aPath) {
-		return primGetFile(getOutputContainer(), aPath);
-	}
-
-	protected IFile getOutputFileForPathWithContainerSegments(IPath aPath) {
-		IContainer out = getOutputContainer();
-		return getFileForPathWithContainerSegments(aPath, out, false);
-	}
-
-	protected IFile getFileForPathWithContainerSegments(IPath aPath, IContainer container, boolean testExists) {
-		IPath containerPath = null;
-		IFile file = null;
-		if (testExists) {
-			containerPath = container.getProjectRelativePath();
-			if (!containerPath.isEmpty()) {
-				file = getFileForMatchingPath(aPath, containerPath, container);
-				if (file != null && file.exists())
-					return file;
-			}
-		}
-		containerPath = container.getFullPath();
-		file = getFileForMatchingPath(aPath, containerPath, container);
-		return file;
-	}
-
-	protected IFile getFileForMatchingPath(IPath containerPath, IPath sourcePath, IContainer container) {
-		int matches = 0;
-		matches = containerPath.matchingFirstSegments(sourcePath);
-		if (matches > 0 && matches == sourcePath.segmentCount()) {
-			IPath loadPath = containerPath.removeFirstSegments(matches);
-			return primGetFile(container, loadPath);
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getFile(java.lang.String)
-	 */
-	public IFile getFile(String uri) {
-		return getFile(new Path(uri));
-	}
-
-	/**
-	 * Get the file from the path.
-	 * 
-	 * @param path
-	 * @return
-	 * @see WorkbenchURIConverter#getFile(String)
-	 * @since 1.0.0
-	 */
-	public IFile getFile(IPath path) {
-		IFile file = null;
-		if (getInputContainer() != null) {
-			path = path.makeRelative();
-			java.util.Iterator it = getInputContainers().iterator();
-			while (it.hasNext()) {
-				IContainer con = (IContainer) it.next();
-				file = getInputFile(con, path);
-				if (file != null && file.exists())
-					return file;
-			}
-		}
-		if (file == null)
-			return INVALID_FILE;
-		return file;
-	}
-
-	/**
-	 * Get output file from string path.
-	 * 
-	 * @param uri
-	 * @return
-	 * 
-	 * @see WorkbenchURIConverter#getOutputFile(IPath)
-	 * @since 1.0.0
-	 */
-	public IFile getOutputFile(String uri) {
-		return getOutputFile(new Path(uri));
-	}
-
-	/**
-	 * Get the input file from the container and path.
-	 * 
-	 * @param con
-	 * @param path
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public IFile getInputFile(IContainer con, IPath path) {
-		IFile file = null;
-		if (WORKSPACE_ROOT.equals(con) && path.segmentCount() < 2)
-			path = INVALID_PATH.append(path);
-		file = primGetFile(con, path);
-		if (file == null || !file.exists())
-			file = getFileForPathWithContainerSegments(path, con, true);
-		return file;
-	}
-
-	protected IFile primGetFile(IContainer container, IPath path) {
-		try {
-			return container.getFile(path);
-		} catch (IllegalArgumentException ex) {
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#canGetUnderlyingResource(java.lang.String)
-	 */
-	public boolean canGetUnderlyingResource(String aFileName) {
-		IFile file = getFile(aFileName);
-		return file != null && file.exists();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#isForceSaveRelative()
-	 */
-	public boolean isForceSaveRelative() {
-		return forceSaveRelative;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#setForceSaveRelative(boolean)
-	 */
-	public void setForceSaveRelative(boolean forceSaveRelative) {
-		this.forceSaveRelative = forceSaveRelative;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.emf.ecore.resource.URIConverter#normalize(org.eclipse.emf.common.util.URI)
-	 */public URI normalize(URI uri) {
-		URI result = uri;
-		String fragment = null;
-		if (uri.hasFragment()) {
-			fragment = uri.fragment();
-			result = uri.trimFragment();
-		}
-		result = getInternalURIMap().getURI(result);
-		if (WorkbenchResourceHelperBase.isPlatformResourceURI(result))
-			return appendFragment(result, fragment);
-		if (WorkbenchResourceHelperBase.isPlatformPluginResourceURI(result)) {
-			URI normalized = normalizePluginURI(result, fragment);
-			return (normalized != null) ? normalized : uri;
-		}
-		String protocol = result.scheme();
-		URI fileSearchURI = null;
-		if (protocol == null) {
-			fileSearchURI = normalizeEmptyProtocol(result, fragment);
-			if (fileSearchURI != null)
-				return fileSearchURI;
-		} else if (FILE_PROTOCOL.equals(protocol)) {
-			fileSearchURI = normalizeFileProtocol(result, fragment);
-			if (fileSearchURI != null)
-				return fileSearchURI;
-		} else if (JEMUtilPlugin.WORKSPACE_PROTOCOL.equals(protocol))
-			return normalizeWorkspaceProtocol(result, fragment);
-		return super.normalize(uri);
-	}
-
-	/*
-	 * Resolves a plugin format into the actual.
-	 */
-	protected URI normalizePluginURI(URI uri, String fragment) {
-		if (uri.segmentCount() < 2)
-			return uri; // Invalid, just let it go on.
-		// See if already normalized.
-		int u_scoreNdx = uri.segment(1).lastIndexOf('_');
-		if (u_scoreNdx != -1) {
-			// Not normalized. Remove the version to make it normalized.
-			String[] segments = uri.segments();
-			segments[1] = segments[1].substring(0, u_scoreNdx);
-			return URI.createHierarchicalURI(uri.scheme(), uri.authority(), uri.device(), segments, uri.query(), fragment);
-		} else
-			return uri;
-	}
-
-	protected URI normalizeWorkspaceProtocol(URI aWorkspaceURI, String fragment) {
-		URI result;
-		String uriString = aWorkspaceURI.toString();
-		uriString = uriString.substring(JEMUtilPlugin.WORKSPACE_PROTOCOL.length() + 1);
-		result = URI.createPlatformResourceURI(uriString);
-		if (fragment != null)
-			result = appendFragment(aWorkspaceURI, fragment);
-		return result;
-	}
-	
-	protected URI normalizeEmptyProtocol(URI aFileUri, String fragment) {
-		//Make the relative path absolute and return a platform URI.
-		IPath path = new Path(aFileUri.toString());
-		return normalizeToWorkspaceURI(path, fragment);
-	}
-	
-	private URI normalizeToWorkspaceURI(IPath path, String fragment) {
-		URI result = null;
-		IFile file = getFile(path);
-		if (file == null || !file.exists())
-			file = getOutputFile(path);
-		if (file != null) {
-			result = URI.createPlatformResourceURI(file.getFullPath().toString());
-			result = appendFragment(result, fragment);
-		}
-		return result;
-	}
-	
-	protected URI normalizeFileProtocol(URI aFileUri, String fragment) {
-		URI result = null;
-		//Make the relative path absolute and return a platform URI.
-		String devicePath = aFileUri.devicePath();
-		//Test for workspace location.
-		if (!devicePath.startsWith(METADATA_LOCATION) &&
-			devicePath.startsWith(WORKSPACE_ROOT_LOCATION) && devicePath.length() > WORKSPACE_ROOT_LOCATION.length()) {
-			//test for workspace location
-			result = normalizeToWorkspaceURI(new Path(devicePath.substring(WORKSPACE_ROOT_LOCATION.length())), fragment);
-		} else if (aFileUri.isRelative()) {
-			result = normalizeToWorkspaceURI(new Path(aFileUri.toString()), fragment);
-		} else {
-			result = aFileUri;
-		}
-		return result;
-	}
-	
-	protected URI appendFragment(URI result, String fragment) {
-		if (fragment != null)
-			return result.appendFragment(fragment);
-		else
-			return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter#getOutputFileWithMappingApplied(java.lang.String)
-	 */
-	public IFile getOutputFileWithMappingApplied(String uri) {
-		URI converted = getInternalURIMap().getURI(URI.createURI(uri));
-		return getOutputFile(new Path(converted.toString()));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.emf.ecore.resource.impl.URIConverterImpl#createPlatformResourceOutputStream(java.lang.String)
-	 */
-	public OutputStream createPlatformResourceOutputStream(String platformResourcePath) throws IOException {
-		IFile file = WORKSPACE_ROOT.getFile(new Path(platformResourcePath));
-		ProjectUtilities.ensureContainerNotReadOnly(file);
-		return new WorkbenchByteArrayOutputStream(file, resourceSetSynchronizer);
-	}
-
-	protected URI getContainerRelativeURI(IFile aFile) {
-		IPath path = WorkbenchResourceHelperBase.getPathFromContainers(inputContainers, aFile.getFullPath());
-		if (path != null)
-			return URI.createURI(path.toString());
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.emf.ecore.resource.impl.URIConverterImpl#createPlatformResourceInputStream(java.lang.String)
-	 */
-	public InputStream createPlatformResourceInputStream(String platformResourcePath) throws IOException {
-		IFile file = WORKSPACE_ROOT.getFile(new Path(platformResourcePath));
-		try {
-			if (!file.isSynchronized(IResource.DEPTH_ONE)) {
-				try {
-					File iofile = file.getFullPath().toFile();
-					if (iofile.exists() || file.exists())
-						file.refreshLocal(IResource.DEPTH_ONE, null);
-				} catch (CoreException ce) {
-					if (ce.getStatus().getCode() != IResourceStatus.WORKSPACE_LOCKED)
-						throw ce;
-				}
-			}
-			// CHANGED from <no-args> to <true> [94015]
-			return file.getContents(true);
-		} catch (CoreException exception) {
-			throw new Resource.IOWrappedException(exception);
-		}		
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/nature/EMFNature.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/nature/EMFNature.java
deleted file mode 100644
index f7f288a..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/nature/EMFNature.java
+++ /dev/null
@@ -1,554 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: EMFNature.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
-package org.eclipse.jem.util.emf.workbench.nature;
-
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.common.util.*;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.xmi.XMLParserPool;
-import org.eclipse.emf.ecore.xmi.impl.XMLParserPoolImpl;
-
-import org.eclipse.jem.internal.util.emf.workbench.nature.EMFNatureRegistry;
-import org.eclipse.jem.util.emf.workbench.*;
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * The base EMFNature.
- * <p>
- * This is expected to be subclassed by clients, but there are default subclasses available.
- * </p>
- * 
- * @since 1.0.0
- */
-public abstract class EMFNature implements IProjectNature, IEMFContextContributor {
-
-	protected IProject project;
-
-	protected EMFWorkbenchContextBase emfContext;
-
-	protected boolean hasConfigured = false;
-	
-	public static XMLParserPool SHARED_PARSER_POOL = new XMLParserPoolImpl();	
-
-	public EMFNature() {
-		super();
-	}
-
-	/**
-	 * Add the nature id to the project.
-	 * 
-	 * @param proj
-	 * @param natureId
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	protected static void addNatureToProject(IProject proj, String natureId) throws CoreException {
-		ProjectUtilities.addNatureToProject(proj, natureId);
-	}
-
-	/**
-	 * Configures the project with this nature. This is called by <code>IProject.addNature</code> and should not be called directly by clients. The
-	 * nature extension id is added to the list of natures on the project by <code>IProject.addNature</code>, and need not be added here.
-	 * 
-	 * <p>
-	 * All subtypes must call super. The better way for subtypes is to override primConfigure instead.
-	 * </p>
-	 * 
-	 * @throws CoreException
-	 * @since 1.0.0
-	 */
-	public void configure() throws org.eclipse.core.runtime.CoreException {
-		if (!hasConfigured) {
-			hasConfigured = true;
-			primConfigure();
-		}
-	}
-
-	/**
-	 * Called from configure the first time configure is called on the nature. Default is do nothing. Subclasses should override and add in their own
-	 * configuration.
-	 * 
-	 * @throws org.eclipse.core.runtime.CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	protected void primConfigure() throws org.eclipse.core.runtime.CoreException {
-
-	}
-
-	/**
-	 * Create an EMF context for the project.
-	 * 
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	protected void createEmfContext() throws CoreException {
-		WorkbenchResourceHelperBase.createEMFContext(getProject(), this);
-	}
-
-	/**
-	 * Create a folder relative to the project based on aProjectRelativePathString.
-	 * 
-	 * @param aProjectRelativePathString
-	 * @return
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public IFolder createFolder(String aProjectRelativePathString) throws CoreException {
-		if (aProjectRelativePathString != null && aProjectRelativePathString.length() > 0)
-			return createFolder(new Path(aProjectRelativePathString));
-		return null;
-	}
-
-	/**
-	 * Create a folder relative to the project based on aProjectRelativePathString.
-	 * 
-	 * @param aProjectRelativePath
-	 * @return
-	 * @throws CoreException
-	 * 
-	 * @since 1.0.0
-	 */
-	public IFolder createFolder(IPath aProjectRelativePath) throws CoreException {
-		if (aProjectRelativePath != null && !aProjectRelativePath.isEmpty()) {
-			IFolder folder = getWorkspace().getRoot().getFolder(getProjectPath().append(aProjectRelativePath));
-			if (!folder.exists()) {
-				ProjectUtilities.ensureContainerNotReadOnly(folder);
-				folder.create(true, true, null);
-			}
-			return folder;
-		}
-		return null;
-	}
-
-	/**
-	 * Removes this nature from the project, performing any required deconfiguration. This is called by <code>IProject.removeNature</code> and
-	 * should not be called directly by clients. The nature id is removed from the list of natures on the project by
-	 * <code>IProject.removeNature</code>, and need not be removed here.
-	 * 
-	 * @throws CoreException
-	 * @since 1.0.0
-	 */
-	public void deconfigure() throws org.eclipse.core.runtime.CoreException {
-		emfContext = null;
-	}
-
-	/**
-	 * Return true if the IFile with the given name exists in this project.
-	 * 
-	 * @param aFileName
-	 *            filename can be relative to one of the input file paths for the WorkbenchURIConverter.
-	 * @return <code>true</code> if filename exists in this project
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean fileExists(String aFileName) {
-		if (aFileName == null)
-			return false;
-
-		IPath path = new Path(aFileName);
-		if (path.isAbsolute())
-			return ResourcesPlugin.getWorkspace().getRoot().getFile(path).exists();
-		else
-			return getWorkbenchURIConverter().canGetUnderlyingResource(aFileName);
-	}
-
-	/**
-	 * Get the resource set for the project
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public ResourceSet getResourceSet() {
-		return getEmfContextBase().getResourceSet();
-	}
-
-	/**
-	 * Returns the EMF root folder for the project. Defaults to the project. Subclasses can override.
-	 * 
-	 * @return EMF root folder for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public IContainer getEMFRoot() {
-		return getProject();
-	}
-
-	/**
-	 * Used for optimizations; answers whether a mof context for this nature has exists yet
-	 * 
-	 * @deprecated use hasResourceSet();
-	 * @since 1.0.0
-	 */
-	public boolean hasContext() {
-		return hasResourceSet();
-	}
-
-	/**
-	 * Is there a resource set yet for the project.
-	 * 
-	 * @return <code>true</code> if there is a resource set for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean hasResourceSet() {
-		return emfContext != null && emfContext.hasResourceSet();
-	}
-
-	/**
-	 * Lazy initializer; for migration of existing workspaces where configure will never get called.
-	 * 
-	 * @return context base for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected EMFWorkbenchContextBase getEmfContextBase() {
-		if (emfContext == null) {
-			try {
-				createEmfContext();
-			} catch (CoreException ex) {
-				Logger.getLogger().logError(ex);
-			}
-		}
-		return emfContext;
-	}
-
-	/**
-	 * Get the IFile with the given name if it is in this project.
-	 * 
-	 * @param aFileName
-	 *            filename can be relative to one of the input file paths for the WorkbenchURIConverter.
-	 * @return file it it is in this project, or <code>null</code> if it doesn't.
-	 * 
-	 * @since 1.0.0
-	 */
-	public IFile getFile(String aFileName) {
-		return getWorkbenchURIConverter().getFile(aFileName);
-	}
-
-	/**
-	 * Return the nature's ID.
-	 * 
-	 * @return nature id
-	 * 
-	 * @since 1.0.0
-	 */
-	public abstract String getNatureID();
-
-	/**
-	 * Return the ID of the plugin that this nature is contained within.
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	protected abstract String getPluginID();
-
-	/**
-	 * Returns the project to which this project nature applies.
-	 * 
-	 * @return the project handle
-	 * @since 1.0.0
-	 */
-	public org.eclipse.core.resources.IProject getProject() {
-		return project;
-	}
-
-	/**
-	 * Return the full path of the project.
-	 * 
-	 * @return full project path (relative to workspace)
-	 * @since 1.0.0
-	 */
-	public IPath getProjectPath() {
-		return getProject().getFullPath();
-	}
-
-	/**
-	 * Get the server property of the project from the supplied key
-	 * 
-	 * @param key
-	 *            java.lang.String
-	 * @deprecated we cannont use persistent properties because they are not stored in the repository
-	 * @since 1.0.0
-	 */
-	protected String getProjectServerValue(String key) {
-		if (key == null)
-			return null;
-		try {
-			QualifiedName wholeName = qualifiedKey(key);
-			return getProject().getPersistentProperty(wholeName);
-		} catch (CoreException exception) {
-			//If we can't find it assume it is null
-			exception.printStackTrace();
-			return null;
-		}
-	}
-
-	/**
-	 * Get WorkbenchURIConverter for this project.
-	 * <p>
-	 * This method assumes the URIConverter on the ResourceSet is the one that was created for the ResourceSet on behalf of this nature runtime.
-	 * </p>
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	protected WorkbenchURIConverter getWorkbenchURIConverter() {
-		return (WorkbenchURIConverter) getResourceSet().getURIConverter();
-	}
-
-	public IWorkspace getWorkspace() {
-		return getProject().getWorkspace();
-	}
-
-	/**
-	 * @deprecated use getResource(URI)
-	 */
-	public Resource getXmiResource(String uri) {
-		return getResource(URI.createURI(uri));
-	}
-
-	/**
-	 * Get the resource for this uri. It will use the resource set of the project to find it. It will load if not already loaded.
-	 * 
-	 * @param uri
-	 * @return resource or <code>null</code> if resource is not found.
-	 * 
-	 * @since 1.0.0
-	 */
-	public Resource getResource(URI uri) {
-		try {
-			return getResourceSet().getResource(uri, true);
-		} catch (WrappedException ex) {
-			if (!WorkbenchResourceHelperBase.isResourceNotFound(ex))
-				throw ex;
-		}
-		return null;
-	}
-
-	/**
-	 * @deprecated use getResourceSet()
-	 */
-	public ResourceSet getXmiResourceSet() {
-		return getResourceSet();
-	}
-
-	/**
-	 * Make sure that all dependent components are initialized before creating the ResourceSet.
-	 */
-	protected void initializeDependentComponents() {
-		//com.ibm.etools.java.init.JavaInit.init();
-	}
-
-	/**
-	 * @deprecated use createResource(URI)
-	 */
-	public Resource makeXmiResource(String uri) {
-		return createResource(URI.createURI(uri));
-	}
-
-	/**
-	 * @deprecated use createResource(URI)
-	 */
-	public Resource makeXmiResource(String uri, EList anExtent) {
-		Resource res = makeXmiResource(uri);
-		if (res != null)
-			res.getContents().addAll(anExtent);
-		return res;
-	}
-
-	/**
-	 * Create the resource for this uri. It will use the resource set of the project to create it.
-	 * 
-	 * @param uri
-	 * @return resource
-	 * 
-	 * @since 1.0.0
-	 */
-	public Resource createResource(URI uri) {
-		return getResourceSet().createResource(uri);
-	}
-
-	/*
-	 * Return the QualifedValue for key for storage in the repository. The key is qualifed with the package name to avoid collision. @return
-	 * QualifedName @param key java.lang.String
-	 */
-	private QualifiedName qualifiedKey(String key) {
-		return new QualifiedName(getPluginID(), key);
-	}
-
-	/**
-	 * Register the given nature id as an EMFNature.
-	 * 
-	 * @param natureID
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void registerNatureID(String natureID) {
-		EMFNatureRegistry.singleton().REGISTERED_NATURE_IDS.add(natureID);
-	}
-
-	/**
-	 * Sets the project to which this nature applies. Used when instantiating this project nature runtime. This is called by
-	 * <code>IProject.addNature</code> and should not be called directly by clients.
-	 * 
-	 * @param project
-	 *            the project to which this nature applies
-	 * 
-	 * @since 1.0.0
-	 */
-	public void setProject(org.eclipse.core.resources.IProject newProject) {
-		project = newProject;
-	}
-
-	/**
-	 * Set the server property of the project from the supplied value
-	 * 
-	 * @param key
-	 *            java.lang.String
-	 * @param value
-	 *            String
-	 * @deprecated we cannont use persistent properties because they are not stored in the repository
-	 */
-	protected void setProjectServerValue(String key, String value) {
-		if (key != null) {
-			try {
-				QualifiedName wholeName = qualifiedKey(key);
-				getProject().setPersistentProperty(wholeName, value);
-			} catch (CoreException exception) {
-				//If we can't find it assume it is null
-				exception.printStackTrace();
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Shutdown the EMF nature
-	 * 
-	 * 
-	 * @since 1.0.0
-	 */
-	public void shutdown() {
-		if (getResourceSet() != null)
-			((ProjectResourceSet) getResourceSet()).release();
-	}
-
-	/**
-	 * Return a list of EMFNatures based on the natures that have been configured for this project.
-	 * 
-	 * @return List of EMFNatures
-	 * @param project
-	 * @return list of natures configured for the project.
-	 * @since 1.0.0
-	 */
-	public static List getRegisteredRuntimes(IProject project) {
-		List result = null;
-		EMFNature nature = null;
-		if (project != null && project.isAccessible()) {
-			String natureID;
-			Iterator it = EMFNatureRegistry.singleton().REGISTERED_NATURE_IDS.iterator();
-			while (it.hasNext()) {
-				natureID = (String) it.next();
-				try {
-					nature = (EMFNature) project.getNature(natureID);
-				} catch (CoreException e) {
-				}
-				if (nature != null) {
-					if (result == null)
-						result = new ArrayList(2);
-					result.add(nature);
-				}
-			}
-		}
-		return result == null ? Collections.EMPTY_LIST : result;
-	}
-
-	/**
-	 * Return a list of nature ids based on the natures that have been configured for this project.
-	 * 
-	 * @return list of configured nature ids.
-	 * @param project
-	 */
-	public static List getRegisteredRuntimeIDs(IProject project) {
-		List result = null;
-		String natureID = null;
-		if (project != null && project.isAccessible()) {
-			Iterator it = EMFNatureRegistry.singleton().REGISTERED_NATURE_IDS.iterator();
-			while (it.hasNext()) {
-				natureID = (String) it.next();
-				try {
-					if (project.hasNature(natureID)) {
-						if (result == null)
-							result = new ArrayList(2);
-						result.add(natureID);
-					}
-				} catch (CoreException e) {
-				}
-			}
-		}
-		return result == null ? Collections.EMPTY_LIST : result;
-	}
-
-	/**
-	 * Return if the project has the given nature.
-	 * 
-	 * @param project
-	 * @param natureId
-	 * @return <code>true</code> if project has given nature
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean hasRuntime(IProject project, String natureId) {
-		if (project == null || !project.isAccessible())
-			return false;
-		try {
-			return project.hasNature(natureId);
-		} catch (CoreException e) {
-			return false;
-		}
-	}
-
-	/**
-	 * Return if the project has any one of the possible given nature ids.
-	 * 
-	 * @param project
-	 * @param possibleNatureIds
-	 * @return <code>true</code> if at least one of the possible natures id is configured for the project.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean hasRuntime(IProject project, String[] possibleNatureIds) {
-		if (project != null) {
-			for (int i = 0; i < possibleNatureIds.length; i++) {
-				if (hasRuntime(project, possibleNatureIds[i]))
-					return true;
-			}
-		}
-		return false;
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java
deleted file mode 100644
index 4285566..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java
+++ /dev/null
@@ -1,472 +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
- *******************************************************************************/
-/*
- *  $RCSfile: AbstractWorkBenchRenderer.java,v $
- *  $Revision: 1.5 $  $Date: 2005/12/14 21:24:26 $ 
- */
-package org.eclipse.jem.util.logger.proxyrender;
-
-import java.lang.reflect.Field;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.util.logger.proxy.*;
-
-
-/**
- * Base log renderer that logs to the workbench.
- * 
- * @since 1.1.0
- */
-public abstract class AbstractWorkBenchRenderer implements ILogRenderer2 {
-
-	private boolean fTraceMode = false; // will we actually punch trace messaged or not
-
-	private boolean fSettingTrace = false;
-
-	protected Bundle fMyBundle = null;
-
-	protected Logger fMyLogger = null;
-
-	protected ILog fWorkBenchLogger = null;
-
-	/**
-	 * Constructer taking a logger.
-	 * 
-	 * @param logger
-	 * 
-	 * @since 1.1.0
-	 */
-	public AbstractWorkBenchRenderer(Logger logger) {
-		super();
-		fMyLogger = logger;
-		fTraceMode = fMyLogger.getTraceMode();
-
-		String pluginID = fMyLogger.getPluginID();
-		fMyBundle = Platform.getBundle(pluginID);
-		if (fMyBundle == null)
-			throw new RuntimeException("Invalid Plugin ID"); //$NON-NLS-1$
-
-		fWorkBenchLogger = Platform.getLog(fMyBundle);
-		setTraceMode(fMyLogger.getTraceMode() || isDebugging(fMyBundle));
-		fMyLogger.setRenderer(this);
-	}
-
-	/*
-	 * This used to come from the Plugin instance. But in new OSGi, there is not necessarily a Plugin instance. So use the same logic they use.
-	 */
-	private boolean isDebugging(Bundle bundle) {
-		String symbolicName = bundle.getSymbolicName();
-		if (symbolicName != null) {
-			String key = symbolicName + "/debug"; //$NON-NLS-1$
-			String value = Platform.getDebugOption(key);
-			return value == null ? false : value.equalsIgnoreCase("true"); //$NON-NLS-1$
-		}
-		return false;
-	}
-
-	/**
-	 * Is the console log for eclipse turned on to sysout. If true, then we shouldn't log to console anything already logged because Eclipse would of
-	 * logged it for us. This comes from the -Declipse.consoleLog="true" which is the default when starting eclipse from PDE.
-	 */
-	protected static final boolean consoleLogOn;
-	static {
-		String consologPropertyName = null;
-		try {
-			// Accessing an internal field, so using reflection. This way if changes in future we won't crash.
-			Class eclipseStarter = Class.forName("org.eclipse.core.runtime.adaptor.EclipseStarter");	//$NON-NLS-1$
-			Field consolelog = eclipseStarter.getDeclaredField("PROP_CONSOLE_LOG");	//$NON-NLS-1$
-			consologPropertyName = (String) consolelog.get(null);
-		} catch (SecurityException e) {
-		} catch (IllegalArgumentException e) {
-		} catch (ClassNotFoundException e) {
-		} catch (NoSuchFieldException e) {
-		} catch (IllegalAccessException e) {
-		}
-		consoleLogOn = consologPropertyName != null && "true".equals(System.getProperty(consologPropertyName)) ;  //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer#setTraceMode(boolean)
-	 */
-	public void setTraceMode(boolean flag) {
-		if (fSettingTrace)
-			return; // Do not allow cycles
-
-		fSettingTrace = true;
-		fTraceMode = flag;
-		fMyLogger.setTraceMode(flag);
-		fSettingTrace = false;
-	}
-
-	// The following methods are for historical renderers in case this has been subclassed outside
-	// of util.
-
-	/**
-	 * Log a string to the trace.
-	 * 
-	 * @param param
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public abstract String log(String param);
-
-	/**
-	 * Default one that log a string to the trace given a level. Default simply passes it to log(String) so that we don't break old subclasses.
-	 * <p>
-	 * If loggedToWorkbench is true, then it shouldn't be logged to console if consoleLogOn is true because workbench already logged to console.
-	 * 
-	 * @param msg
-	 * @param l
-	 * 
-	 * @since 1.0.0
-	 */
-	protected void log(String msg, Level l, boolean loggedToWorkbench) {
-		log(msg);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer#log(java.lang.String, int)
-	 */
-	public String log(String msg, int type) {
-
-		String target = logWorkBench(msg, type);
-		if (fTraceMode || target.equals(NOLOG_DESCRIPTION))
-			return log(msg);
-		else
-			return target;
-	}
-
-	/**
-	 * Log to workbench, a string of the given level <code>ILogRenderer.LOG_</code>. levels.
-	 * 
-	 * @param msg
-	 * @param type
-	 * @return description of the log's destination e.g., <code>CONSOLE_DESCRIPTION</code>
-	 * 
-	 * @see ILogRenderer#LOG_ERROR and all of the other log types.
-	 * @see ILogRenderer#CONSOLE_DESCRIPTION
-	 * @since 1.0.0
-	 */
-	public String logWorkBench(String msg, int type) {
-
-		try {
-			int ErrCode;
-			if (fWorkBenchLogger != null) {
-				switch (type) {
-					case (ILogRenderer.LOG_ERROR):
-						ErrCode = IStatus.ERROR;
-						break;
-					case (ILogRenderer.LOG_WARNING):
-						ErrCode = IStatus.WARNING;
-						break;
-					case (ILogRenderer.LOG_INFO):
-						ErrCode = IStatus.INFO;
-						break;
-					case (ILogRenderer.LOG_TRACE):
-						ErrCode = IStatus.OK;
-						break;
-					default:
-						throw new RuntimeException("Invalid Log Type"); //$NON-NLS-1$
-				}
-				Status status = new Status(ErrCode, fMyBundle.getSymbolicName(), IStatus.OK, msg, null);
-				fWorkBenchLogger.log(status);
-				return WORKBENCH_DESCRIPTION;
-			} else
-				return NOLOG_DESCRIPTION;
-		} catch (Throwable t) {
-			return NOLOG_DESCRIPTION;
-		}
-	}
-
-	// Default implentation of the ILogRenderer2 interface.
-	protected boolean isLogging(Level level) {
-		return fTraceMode || fMyLogger.isLoggingLevel(level);
-	}
-
-	private static final int[] STATUS_LEVEL;
-
-	private static final Level[] STATUS_LEVEL_LOOKUP;
-
-	private static final Level[] LEVEL_STATUS;
-
-	static {
-		// Status levels that correspond to the log levels, from finest to none, same indexes as from STATUS_LEVEL_LOOKUP.
-		STATUS_LEVEL_LOOKUP = new Level[] { Level.INFO, Level.WARNING, Level.SEVERE};
-		STATUS_LEVEL = new int[] { IStatus.INFO, IStatus.WARNING, IStatus.ERROR};
-
-		// Levels that correspond to the IStatus levels.
-		int maxID = Math.max(IStatus.OK, Math.max(IStatus.INFO, Math.max(IStatus.WARNING, IStatus.ERROR)));
-		LEVEL_STATUS = new Level[maxID + 1];
-		LEVEL_STATUS[IStatus.OK] = Level.FINE;
-		LEVEL_STATUS[IStatus.INFO] = Level.INFO;
-		LEVEL_STATUS[IStatus.WARNING] = Level.WARNING;
-		LEVEL_STATUS[IStatus.ERROR] = Level.SEVERE;
-	}
-
-	/**
-	 * Return the Java Level for the status code from the given IStatus.
-	 * 
-	 * @param status
-	 * @return the Java Level
-	 * 
-	 * @since 1.0.0
-	 */
-	protected Level getLogLevel(IStatus status) {
-		return LEVEL_STATUS[status.getSeverity()];
-	}
-
-	/**
-	 * Return the IStatus status code for the given Java Level.
-	 * 
-	 * @param logLevel
-	 * @return the IStatus status code.
-	 * 
-	 * @since 1.0.0
-	 */
-	protected int getStatusSeverity(Level logLevel) {
-		for (int i = 0; i < STATUS_LEVEL_LOOKUP.length; i++) {
-			if (STATUS_LEVEL_LOOKUP[i] == logLevel)
-				return STATUS_LEVEL[i];
-		}
-		return IStatus.OK; // Default to ok.
-	}
-
-	/**
-	 * Log the string to the workbench for the given level
-	 * 
-	 * @param msg
-	 * @param level
-	 * @return description of the log's destination e.g., <code>CONSOLE_DESCRIPTION</code>
-	 * 
-	 * @since 1.1.0
-	 */
-	protected String logWorkbench(String msg, Level level) {
-		String result = NOLOG_DESCRIPTION;
-		// Test again because we could be here simply due to trace mode, in which case we
-		// don't want to workbench log it.
-		if (fMyLogger.isLoggingLevel(level)) {
-			Platform.getLog(fMyBundle).log(new Status(getStatusSeverity(level), fMyBundle.getSymbolicName(), 0, msg, null));
-			result = WORKBENCH_DESCRIPTION;
-			if (fTraceMode)
-				log(msg, level, true);
-		} else if (fTraceMode)
-			log(msg, level, false);
-		return result;
-	}
-
-	private String getStatusMsg(IStatus s, Level l) {
-		if (s.getException() != null)
-			return fMyLogger.getGenericMsg(s.toString() + fMyLogger.fLineSeperator + fMyLogger.exceptionToString(s.getException()), l);
-		else
-			return fMyLogger.getGenericMsg(s.toString(), l);
-	}
-
-	/**
-	 * Log the IStatus to the workbench at the given level.
-	 * 
-	 * @param s
-	 * @param level
-	 * @return description of the log's destination e.g., <code>CONSOLE_DESCRIPTION</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	protected String logWorkbench(IStatus s, Level level) {
-		if (level == DEFAULT)
-			level = getLogLevel(s);
-		String result = NOLOG_DESCRIPTION;
-		// Test again because we could be here simply due to trace mode, in which case we
-		// don't want to workbench log it.
-		if (fMyLogger.isLoggingLevel(level)) {
-			Platform.getLog(fMyBundle).log(s);
-			result = WORKBENCH_DESCRIPTION;
-			if (fTraceMode)
-				log(getStatusMsg(s, level), level, true);
-		} else if (fTraceMode)
-			log(getStatusMsg(s, level), level, false);
-		return result;
-	}
-
-	/**
-	 * Log to the workbench the Throwable at the given level.
-	 * 
-	 * @param t
-	 * @param level
-	 * @return description of the log's destination e.g., <code>CONSOLE_DESCRIPTION</code>
-	 * 
-	 * @since 1.0.0
-	 */
-	protected String logWorkbench(Throwable t, Level level) {
-		String result = NOLOG_DESCRIPTION;
-		// Test again because we could be here simply due to trace mode, in which case we
-		// don't want to workbench log it.
-		if (fMyLogger.isLoggingLevel(level)) {
-			Platform.getLog(fMyBundle).log(new Status(getStatusSeverity(level), fMyBundle.getSymbolicName(), 0, "Exception thrown.", t)); //$NON-NLS-1$
-			result = WORKBENCH_DESCRIPTION;
-			if (fTraceMode)
-				log(fMyLogger.getGenericMsg(fMyLogger.exceptionToString(t), level), level, true);
-		} else if (fTraceMode)
-			log(fMyLogger.getGenericMsg(fMyLogger.exceptionToString(t), level), level, false);
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(byte, java.util.logging.Level)
-	 */
-	public String log(boolean b, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(b), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(byte, java.util.logging.Level)
-	 */
-	public String log(byte b, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(b), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(char, java.util.logging.Level)
-	 */
-	public String log(char c, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(c), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(double, java.util.logging.Level)
-	 */
-	public String log(double d, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(d), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(float, java.util.logging.Level)
-	 */
-	public String log(float f, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(f), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(int, java.util.logging.Level)
-	 */
-	public String log(int i, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(i), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(long, java.util.logging.Level)
-	 */
-	public String log(long l, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(l), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(java.lang.Object, java.util.logging.Level)
-	 */
-	public String log(Object o, Level level) {
-		if (o instanceof IStatus)
-			return logWorkbench((IStatus) o, level);
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(o), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(short, java.util.logging.Level)
-	 */
-	public String log(short s, Level level) {
-		if (level == DEFAULT)
-			level = Level.FINEST;
-		if (isLogging(level))
-			return logWorkbench(fMyLogger.getGenericMsg(String.valueOf(s), level), level);
-		else
-			return NOLOG_DESCRIPTION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxy.ILogRenderer2#log(java.lang.Throwable, java.util.logging.Level)
-	 */
-	public String log(Throwable t, Level level) {
-		if (t instanceof CoreException)
-			return logWorkbench(((CoreException) t).getStatus(), level);
-		if (level == DEFAULT)
-			level = Level.SEVERE;
-		if (isLogging(level)) {
-			return logWorkbench(t, level);
-		} else
-			return NOLOG_DESCRIPTION;
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java
deleted file mode 100644
index 90b2963..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java
+++ /dev/null
@@ -1,67 +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
- *******************************************************************************/
-/*
- *  $RCSfile: ConsoleLogRenderer.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:04:14 $ 
- */
-package org.eclipse.jem.util.logger.proxyrender;
-
-import java.util.logging.Level;
-
-import org.eclipse.jem.util.logger.proxy.ILogRenderer;
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * Log renderer to the console.
- * 
- * @since 1.0.0
- */
-public class ConsoleLogRenderer extends AbstractWorkBenchRenderer {
-
-	/**
-	 * Constructor taking a logger.
-	 * 
-	 * @param logger
-	 * 
-	 * @since 1.0.0
-	 */
-	public ConsoleLogRenderer(Logger logger) {
-		super(logger);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxyrender.AbstractWorkBenchRenderer#log(java.lang.String)
-	 */
-	public String log(String msg) {
-
-		System.out.println(msg);
-		return ILogRenderer.CONSOLE_DESCRIPTION;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxyrender.AbstractWorkBenchRenderer#log(java.lang.String, java.util.logging.Level, boolean)
-	 */
-	protected void log(String msg, Level l, boolean loggedToWorkbench) {
-		if (!loggedToWorkbench || !consoleLogOn) {
-			if (l == Level.SEVERE)
-				System.err.println(msg);
-			else
-				System.out.println(msg);
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java
deleted file mode 100644
index bedf203..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java
+++ /dev/null
@@ -1,113 +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
- *******************************************************************************/
-/*
- *  $RCSfile: DefaultPluginTraceRenderer.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:04:14 $ 
- */
-package org.eclipse.jem.util.logger.proxyrender;
-
-import java.io.*;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * Logger that also logs to a trace file in the plugin's metadata area.
- * 
- * @since 1.0.0
- */
-public class DefaultPluginTraceRenderer extends AbstractWorkBenchRenderer {
-
-	/**
-	 * Name of the trace file in the metadata area.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String PluginTraceFileName = "/.log"; //$NON-NLS-1$
-
-	private String fTraceFile = null;
-
-	private PrintWriter traceFile = null;
-
-	/**
-	 * DefaultUILogRenderer constructor.
-	 * 
-	 * @param logger
-	 */
-	public DefaultPluginTraceRenderer(Logger logger) {
-		super(logger);
-
-		fTraceFile = Platform.getStateLocation(fMyBundle).toString() + PluginTraceFileName;
-		(new File(fTraceFile)).delete(); // Start from fresh ... do not want to leak on disk space
-
-	}
-
-	private void closeTraceFile() {
-		if (traceFile == null)
-			return;
-		try {
-			traceFile.flush();
-			traceFile.close();
-		} finally {
-			traceFile = null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxyrender.AbstractWorkBenchRenderer#log(java.lang.String)
-	 */
-	public String log(String msg) {
-
-		System.out.println(msg);
-
-		openTraceFile();
-		if (traceFile != null) {
-			traceFile.println(msg);
-			closeTraceFile();
-		}
-		return fTraceFile;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.logger.proxyrender.AbstractWorkBenchRenderer#log(java.lang.String, java.util.logging.Level, boolean)
-	 */
-	protected void log(String msg, Level l, boolean loggedToWorkbench) {
-		if (!loggedToWorkbench || !consoleLogOn) {
-			if (l == Level.SEVERE)
-				System.err.println(msg);
-			else
-				System.out.println(msg);
-		}
-
-		openTraceFile();
-		if (traceFile != null) {
-			traceFile.println(msg);
-			closeTraceFile();
-		}
-	}
-
-	private void openTraceFile() {
-		try {
-			traceFile = new PrintWriter(new FileOutputStream(fTraceFile, true));
-		} catch (IOException e) {
-			// there was a problem opening the log file so log to the console
-			traceFile = null;
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java
deleted file mode 100644
index 9e40f90..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java
+++ /dev/null
@@ -1,123 +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
- *******************************************************************************/
-/*
- *  $RCSfile: EclipseLogger.java,v $
- *  $Revision: 1.4 $  $Date: 2005/08/24 21:10:34 $ 
- */
-package org.eclipse.jem.util.logger.proxyrender;
-
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
- 
-/**
- * Get an Eclipse logger. This gets a logger that knows it is for a plugin. 
- * 
- * For each plugin, the following can be specified in the .option file:
- * 		{plugin-id}/debug/logTrace
- * 			The values valid for this are "true", "false", or "default". If true then loggers will be set into
- * 			trace mode. This means everything logged (even those that are filtered out due to not meeting log level)
- * 			will be traced out. If the value is "true" they will be traced to the system console.  
- * 			If it is "default" or not set at all, then it will be the value in the "org.eclipse.jem.util/debug/logTrace" .options setting.
- * 			If not set there, then default value will be false.
- * 
- * 		{plugin-id}/debug/logTraceFile
- * 			The values valid for this are "true", "false", or "default". If true then loggers will trace to 
- * 			the system console AND to the ".log" file in the plugins work area in the metadata section of the workspace.
- * 			If "false" then not traced to a trace file. 
- * 			If it is "default" or not set at all, then it will be the value in the "org.eclipse.jem.util/debug/logTraceFile" .options setting.
- * 			If not set there, then default value will be false.
- * 
- * 		{plugin-id}.debug/logLevel
- * 			The values valid for this are the names from <code>java.util.logging.Level</code>, and "default". These
- * 			are the trace cutoff levels to use. For instance, if the level was SEVERE, then only level SEVERE msgs
- * 			are logged. The rest are skipped. Or if the level was WARNING, then only level SEVERE and WARNING are
- * 			logged.
- * 			If it is "default" or not set at all, then it will be the value in the "org.eclipse.jem.util/debug/logLevel" .options setting.
- * 			If not set there, then default value will be WARNING.
- * 
- * 
- * @since 1.0.0
- */
-public class EclipseLogger extends Logger {
-
-	public static final String DEBUG_TRACE_OPTION = "/debug/logtrace"; //$NON-NLS-1$
-	public static final String DEBUG_TRACE_FILE_OPTION = "/debug/logtracefile"; //$NON-NLS-1$
-	public static final String DEBUG_LOG_LEVEL_OPTION = "/debug/loglevel"; // The logging level to use when no Hyaedes. (which we don't support at this time). //$NON-NLS-1$
-	public static final String DEFAULT_OPTION = "default";	// If option value is this, then the value from WTP Common plugin options will be used for both logTrace and logLevel.	 //$NON-NLS-1$
-	
-	/**
-	 * Return a logger based upon the Plugin. 
-	 * @param plugin
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Logger getEclipseLogger(Plugin plugin) {
-		return getEclipseLogger(plugin.getBundle());
-	}
-	
-	/**
-	 * Return a logger based upon the bundle.
-	 * 
-	 * @param bundle
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Logger getEclipseLogger(Bundle bundle) {
-		String id = bundle.getSymbolicName();
-		Logger logger = getLoggerIfExists(id);
-		if (logger != null)
-			return logger;
-		
-		logger = getLogger(id);	// Create one, we will now customize it.
-		
-		String pluginOption = Platform.getDebugOption(id + DEBUG_TRACE_OPTION);
-		if (pluginOption == null || "default".equalsIgnoreCase(pluginOption)) //$NON-NLS-1$
-			pluginOption = Platform.getDebugOption(JEMUtilPlugin.getDefault().getBundle().getSymbolicName() + DEBUG_TRACE_OPTION);
-		boolean logTrace = "true".equalsIgnoreCase(pluginOption); //$NON-NLS-1$
-
-		pluginOption = Platform.getDebugOption(id + DEBUG_TRACE_FILE_OPTION);
-		if (pluginOption == null || "default".equalsIgnoreCase(pluginOption)) //$NON-NLS-1$
-			pluginOption = Platform.getDebugOption(JEMUtilPlugin.getDefault().getBundle().getSymbolicName() + DEBUG_TRACE_FILE_OPTION);
-		boolean logTraceFile = "true".equalsIgnoreCase(pluginOption); //$NON-NLS-1$
-		
-		pluginOption = Platform.getDebugOption(id + DEBUG_LOG_LEVEL_OPTION);
-		if (pluginOption == null || "default".equalsIgnoreCase(pluginOption)) //$NON-NLS-1$
-			pluginOption = Platform.getDebugOption(JEMUtilPlugin.getDefault().getBundle().getSymbolicName() + DEBUG_LOG_LEVEL_OPTION);
-		
-		Level logLevel = Level.WARNING;
-		if (pluginOption != null) {
-			try {
-				logLevel = Level.parse(pluginOption);
-			} catch (IllegalArgumentException e) {
-			}
-		}
-		
-		if (logTrace)
-			logger.setTraceMode(true);
-		logger.setLevel(logLevel);
-		if (!logTraceFile)
-			logger.setRenderer(new ConsoleLogRenderer(logger));
-		else
-			logger.setRenderer(new DefaultPluginTraceRenderer(logger));
-		
-		return logger;
-	}
-	
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java
deleted file mode 100644
index 972ecdd..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java
+++ /dev/null
@@ -1,26 +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
- *******************************************************************************/
-/*
- *  $RCSfile: IMsgLogger.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:04:14 $ 
- */
-package org.eclipse.jem.util.logger.proxyrender;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-/**
- * Interface for a message logger.
- * 
- * @since 1.0.0
- */
-public interface IMsgLogger {
-	public Logger getMsgLogger();
-}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/plugin/JEMUtilPlugin.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/plugin/JEMUtilPlugin.java
deleted file mode 100644
index 3e1731e..0000000
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/plugin/JEMUtilPlugin.java
+++ /dev/null
@@ -1,399 +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
- *******************************************************************************/
-/*
- *  $$RCSfile: JEMUtilPlugin.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2006/02/21 17:16:30 $$ 
- */
-package org.eclipse.jem.util.plugin;
-
-import java.io.File;
-import java.text.MessageFormat;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl;
-import org.eclipse.jem.internal.util.emf.workbench.WorkspaceResourceNotifier;
-import org.eclipse.jem.internal.util.emf.workbench.nls.EMFWorkbenchResourceHandler;
-import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
-import org.eclipse.jem.util.emf.workbench.ResourceHandler;
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * Plugin for EMFWorkbench utils.
- * 
- * @since 1.0.0
- */
-public class JEMUtilPlugin extends Plugin {
-
-	public static final String ID = "org.eclipse.jem.util"; //$NON-NLS-1$
-	
-	/**
-	 * Plugin id of this plugin.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String PLUGIN_ID = ID;	
-
-	/**
-	 * UI Context extension point.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String UI_CONTEXT_EXTENSION_POINT = "uiContextSensitiveClass"; //$NON-NLS-1$
-
-	/**
-	 * UITester element name.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String UI_TESTER_EXTENSION_POINT = "uiTester"; //$NON-NLS-1$
-	
-	/**
-	 * Protocol for workspace
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String WORKSPACE_PROTOCOL = "workspace"; //$NON-NLS-1$
-
-	/**
-	 * Protocol for platform uri's. i.e. "platform:/..."
-	 * 
-	 * @since 1.0.0
-	 *  
-	 */
-	public static final String PLATFORM_PROTOCOL = "platform"; //$NON-NLS-1$
-
-	/**
-	 * Resource indication in platform protocol. Indicates url is for a resource in the workspace. i.e. "platform:/resource/projectname/..."
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String PLATFORM_RESOURCE = "resource"; //$NON-NLS-1$
-
-	/**
-	 * Plugin indication in platform protocol. Indicates url is for a file/directory in the plugins area. i.e. "platform:/plugin/pluginid/..."
-	 * 
-	 * @since 1.0.0
-	 */
-	public static final String PLATFORM_PLUGIN = "plugin"; //$NON-NLS-1$
-
-	private static WorkspaceResourceNotifier sharedCache;
-
-	private static ResourceSet pluginResourceSet;
-
-	private static String[] GLOBAL_LOADING_PLUGIN_NAMES;
-
-	private static JEMUtilPlugin DEFAULT;
-
-	public JEMUtilPlugin() {
-		super();
-		DEFAULT = this;
-	}
-
-	/**
-	 * Get the workspace. Just use ResourcePlugin.getWorkspace() instead.
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static IWorkspace getWorkspace() {
-		return ResourcesPlugin.getWorkspace();
-	}
-
-	/**
-	 * Get the plugin instance.
-	 * 
-	 * @return plugin instance.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static JEMUtilPlugin getDefault() {
-		return DEFAULT;
-	}
-
-	/**
-	 * Gets the sharedCache.
-	 * <p>
-	 * This is not meant to be called by clients.
-	 * </p>
-	 * 
-	 * @return a WorkspaceResourceNotifier
-	 * @since 1.0.0
-	 */
-	public static WorkspaceResourceNotifier getSharedCache() {
-		if (sharedCache == null)
-			sharedCache = new WorkspaceResourceNotifier();
-		return sharedCache;
-	}
-
-	/**
-	 * Sets the sharedCache.
-	 * <p>
-	 * This is not meant to be called by clients.
-	 * </p>
-	 * 
-	 * @param sharedCache
-	 *            The sharedCache to set
-	 * @since 1.0.0
-	 */
-	public static void setSharedCache(WorkspaceResourceNotifier aSharedCache) {
-		sharedCache = aSharedCache;
-	}
-
-	/**
-	 * @deprecated use createIsolatedResourceSet(IProject)
-	 */
-	public static ResourceSet createIsolatedResourceSet() {
-		return null;
-	}
-
-	/**
-	 * Add an Adapter. You can use this api to listen for any shared resource being loaded or removed from any ProjectResourceSet in the Workbench
-	 * instead of trying to listen to each individual ProjectResourceSet.
-	 * 
-	 * @param adapter
-	 * 
-	 * @since 1.0.0
-	 */
-	public static void addWorkspaceEMFResourceListener(Adapter adapter) {
-		if (adapter != null && !getSharedCache().eAdapters().contains(adapter))
-			getSharedCache().eAdapters().add(adapter);
-	}
-
-	/**
-	 * Removes the adapter.
-	 * 
-	 * @param adapter
-	 * 
-	 * @see #addWorkspaceEMFResourceListener(Adapter)
-	 * @since 1.0.0
-	 */
-	public static void removeWorkspaceEMFResourceListener(Adapter adapter) {
-		if (adapter != null)
-			getSharedCache().eAdapters().remove(adapter);
-	}
-
-	/**
-	 * Is this plugin active.
-	 * 
-	 * @return <code>true</code> if active
-	 * 
-	 * @since 1.0.0
-	 */
-	public static boolean isActivated() {
-		Bundle bundle = Platform.getBundle(ID);
-		if (bundle != null)
-			return bundle.getState() == Bundle.ACTIVE;
-		return false;
-	}
-
-	/**
-	 * This method will be called when a WorkbenchContext is instantiated on an EMFNature.
-	 * <p>
-	 * This not meant to be called by clients.
-	 * </p>
-	 * 
-	 * @param aResourceSet
-	 * 
-	 * @see plugin.xml#ResourceHandlerExtension extension point.
-	 * @since 1.0.0
-	 */
-	public void addExtendedResourceHandlers(ProjectResourceSet aResourceSet) {
-		if (aResourceSet == null)
-			return;
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		IExtensionPoint pct = registry.getExtensionPoint(getBundle().getSymbolicName(), "ResourceHandlerExtension"); //$NON-NLS-1$
-		IExtension[] extension = pct.getExtensions();
-		IExtension config;
-		for (int l = 0; l < extension.length; ++l) {
-			config = extension[l];
-			IConfigurationElement[] cElems = config.getConfigurationElements();
-			ResourceHandler handler = null;
-			for (int i = 0; i < cElems.length; i++) {
-				try {
-					handler = (ResourceHandler) cElems[i].createExecutableExtension("run"); //$NON-NLS-1$
-
-				} catch (Exception ex) {
-					handler = null;
-				}
-				if (handler != null)
-					aResourceSet.add(handler);
-			}
-		}
-	}
-
-	/**
-	 * Delete the contents of the directory (and the directory if deleteRoot is true).
-	 * @param root
-	 * @param deleteRoot <code>true</code> to delete the root directory too.
-	 * @param monitor 
-	 * @return <code>true</code> if there was an error deleting anything.
-	 * 
-	 * @since 1.1.0
-	 */
-	public static boolean deleteDirectoryContent(File root, boolean deleteRoot, IProgressMonitor monitor) {
-		boolean error = false;
-		if (root.canRead()) {
-			if (root.isDirectory()) {
-				File[] files = root.listFiles();
-				monitor.beginTask(MessageFormat.format(EMFWorkbenchResourceHandler.getString("ProjectUtil_Delete_1"), new Object[] {root.getName()}), files.length+(deleteRoot ? 1 : 0)); //$NON-NLS-1$
-				for (int i = 0; i < files.length; i++) {
-					if (files[i].isDirectory())
-						error |= deleteDirectoryContent(files[i], true, new SubProgressMonitor(monitor, 1));
-					else {
-						error |= !files[i].delete();
-					}
-					monitor.worked(1);
-				}
-			} else {
-				monitor.beginTask(MessageFormat.format(EMFWorkbenchResourceHandler.getString("ProjectUtil_Delete_1"), new Object[] {root.getName()}), 1);				 //$NON-NLS-1$
-			}
-			if (deleteRoot) {
-				error |= !root.delete();
-				monitor.worked(1);
-			}
-			monitor.done();
-		} else {
-			error = true;
-		}
-		return error;
-	}
-	
-	/**
-	 * Add a clean resource changelistener.
-	 * @param listener
-	 * @param eventMask mask of event types to listen for in addition to ones that are necessary for clean. Use 0 if no additional ones.
-	 * 
-	 * @since 1.1.0
-	 */
-	public static void addCleanResourceChangeListener(CleanResourceChangeListener listener, int eventMask) {
-		// PRE_BUILD: Handle Clean.
-		// TODO Until https://bugs.eclipse.org/bugs/show_bug.cgi?id=101942 is fixed, we must do POST_BUILD, that will probably be sent because a clean will cause a build to occur which should cause a delta.
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, eventMask | IResourceChangeEvent.POST_BUILD);		
-	}
-	
-	/**
-	 * A resource listener that can be used in addition to listen for Clean requests and process them.
-	 * <p>
-	 * Use <code>{@link IResourceChangeEvent#PRE_BUILD}</code> when adding as listener to get the
-	 * clean events.
-	 * <p>
-	 * <b>Note</b> : TODO Until https://bugs.eclipse.org/bugs/show_bug.cgi?id=101942 is fixed, you must do POST_BUILD, that will probably be sent because a clean will cause a build to occur which should cause a delta.
-	 * @since 1.1.0
-	 */
-	public abstract static class CleanResourceChangeListener implements IResourceChangeListener {
-		
-		public void resourceChanged(IResourceChangeEvent event) {
-			// Subclasses can override this to handle more events than just clean.
-			if (event.getBuildKind() == IncrementalProjectBuilder.CLEAN_BUILD) {
-				if (event.getSource() instanceof IProject)
-					cleanProject((IProject) event.getSource());
-				else if (event.getSource() instanceof IWorkspace)
-					cleanAll();				
-			}
-		}
-
-		/**
-		 * Clear out the project.
-		 * @param project
-		 * 
-		 * @since 1.1.0
-		 */
-		protected abstract void cleanProject(IProject project);
-
-		/**
-		 * Clean all.
-		 * <p>
-		 * By default this will simply call a clean project on each open project. Subclasses should override and either
-		 * add more function to clear out non-project data and then call super. Or if they can handle all of the projects
-		 * in a faster way, then can completely handle this.
-		 * 
-		 * @since 1.1.0
-		 */
-		protected void cleanAll() {
-			IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-			for (int i = 0; i < projects.length; i++) {
-				IProject project = projects[i];
-				if (project.isOpen()) {
-					cleanProject(project);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Get the project resource set for the plugin (there is one for the whole system).
-	 * 
-	 * @return system-wide resource set.
-	 * @since 1.0.0
-	 */
-	public static ResourceSet getPluginResourceSet() {
-		if (pluginResourceSet == null)
-			pluginResourceSet = new ProjectResourceSetImpl(null);
-		return pluginResourceSet;
-	}
-
-	/**
-	 * Set the system-wide resource set.
-	 * 
-	 * @param set
-	 * @since 1.0.0
-	 */
-	public static void setPluginResourceSet(ResourceSet set) {
-		pluginResourceSet = set;
-	}
-
-	/**
-	 * Get the global loading plugin names.
-	 * <p>
-	 * This is not meant to be called by clients.
-	 * </p>
-	 * 
-	 * @return
-	 * 
-	 * @since 1.0.0
-	 */
-	public static String[] getGlobalLoadingPluginNames() {
-		if (GLOBAL_LOADING_PLUGIN_NAMES == null)
-			GLOBAL_LOADING_PLUGIN_NAMES = readGlobalLoadingPluginNames();
-		return GLOBAL_LOADING_PLUGIN_NAMES;
-	}
-
-	/**
-	 * Get the Logger for this plugin.
-	 * 
-	 * @return logger for this plugin.
-	 * 
-	 * @since 1.0.0
-	 */
-	public static Logger getLogger() {
-		return Logger.getLogger(ID);
-	}
-
-	private static String[] readGlobalLoadingPluginNames() {
-		IExtensionRegistry reg = Platform.getExtensionRegistry();
-		IExtensionPoint exPoint = reg.getExtensionPoint(ID, "globalPluginResourceLoad"); //$NON-NLS-1$
-		IExtension[] extensions = exPoint.getExtensions();
-		String[] names = new String[extensions.length];
-		if (extensions.length > 0) {
-			for (int i = 0; i < extensions.length; i++)
-				names[i] = extensions[i].getContributor().getName();
-		}
-		return names;
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.classpath b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.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.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.cvsignore b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.project b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.project
deleted file mode 100644
index 5e29c82..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.perfmsr.core</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/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/PERFMSR.README.txt b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/PERFMSR.README.txt
deleted file mode 100644
index 3186a36..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/PERFMSR.README.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is a stub plugin for perfmsr. It is here just so that org.eclipse.jem.util can compile.
-
-It should not be an open project during normal usage. Whenever any of the files in this project
-are changed, "perfmsr.jardesc" should be used to create the new changed appropriate jar. Do this by:
-
-1) Select perfmsr.jardesc
-2) On popup menu select "Create JAR"
-3) Hit "Finish"
-4) Commit all changes to CVS.
-5) Go to org.eclipse.jem.util project, select the org.eclipse.perfmsr.core.stub folder
-   and select Replace->Latest from HEAD. This will cause your just committed changes
-   from step 4 to be put into org.eclipse.jem.util and will be picked up for that
-   plugin to compile against.
-6) Either close or delete the org.eclipse.perfmsr.core.stuf project from the workspace.
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/about.html b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/about.html
deleted file mode 100644
index f9f238e..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/about.html
+++ /dev/null
@@ -1,32 +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>30th March, 2004</p>	
-<h3>License</h3>
-<p>Eclipse.org 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>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the EPL, any Contributions, as defined in the EPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the EPL and can be made available to others under the terms of the EPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the EPL (&quot;Other License&quot;), any modifications, enhancements and/or
-other code and/or documentation (&quot;Modifications&quot;) uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License.  In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the EPL and such Modifications can be made available to others under the terms of
-the EPL.</p>
-
-<p><b>Version:</b> v20040624a
-
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/build.properties b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/build.properties
deleted file mode 100644
index 3a4db57..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 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 = plugin.xml,\
-               plugin.properties,\
-               *.jar
-source.perfmsr.jar = src/
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jar b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jar
deleted file mode 100644
index 1ebba8f..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jardesc b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jardesc
deleted file mode 100644
index d48e223..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/perfmsr.jardesc
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jardesc>
-    <jar path="org.eclipse.perfmsr.core.stub/perfmsr.jar"/>
-    <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.perfmsr.core.stub/perfmsr.jardesc" exportErrors="true" exportWarnings="true" overwrite="false" saveDescription="true" useSourceFolders="false"/>
-    <manifest generateManifest="true" manifestLocation="/VEScrapProject/MANIFEST.mf" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
-        <sealing sealJar="false">
-            <packagesToSeal/>
-            <packagesToUnSeal/>
-        </sealing>
-    </manifest>
-    <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false">
-        <javaElement handleIdentifier="=org.eclipse.perfmsr.core.stub/src"/>
-    </selectedElements>
-</jardesc>
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.properties b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.properties
deleted file mode 100644
index 5720eeb..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 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
-###############################################################################
-Plugin.name=Performance Monitor
-
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.xml b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.xml
deleted file mode 100644
index 596926d..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/plugin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-   id="org.eclipse.perfmsr.core"
-   name="%Plugin.name"
-   version="3.0.0"
-   provider-name="Eclipse.org"
-   class="org.eclipse.perfmsr.core.PerfMsrCorePlugin">
-
-   <runtime>
-      <library name="perfmsr.jar"><export name="*"/></library>
-   </runtime>
-   
-   <requires>
-      <import plugin="org.eclipse.core.runtime"/>
-   </requires>
-</plugin>
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/IPerformanceMonitor.java b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/IPerformanceMonitor.java
deleted file mode 100644
index bd992c7..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/IPerformanceMonitor.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 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.perfmsr.core;
-
-/**
- * Take snapshots of the various performance counters.
- * ************* This is just a stub of the real interface to get org.eclipse.jem.util 
- *               to compile. It is not usable by itself. ****************************
- */
-public interface IPerformanceMonitor
-{
-	/**
-	 * These constants control how much information is gathered for a particular snapshot.
-	 * They are or'ed together and passed into the snapshot method.  
-	 */
-	interface Types
-	{
-		/** 
-		 * 1 - Write out the performance counters from the operating system. These
-		 * include working set, peak working set, elapsed time, user time, and 
-		 * kernel time.
-		 */
-		int OperatingSystemCounters		= 1;
-		
-		/**
-		 * 2 - Write out the global performance info. This includes things like the total
-		 * committed memory for the entire system.
-		 * 
-		 * This function depends on the GetPerformanceInfo() function being available in
-		 * the Windows psapi.dll. This is available in XP but is usually not available
-		 * in Win/2000. If it is not available then this function throws an UnsupportedOperationException.
-		 */
-		int GlobalSystemCounters		= 2;
-		
-		/**
-		 * 4 - Write out the size of the Java Heap.
-		 */
-		int JavaHeapSize				= 4;
-
-		/**
-		 * 8 - Write out how much of the Java heap is being used. This calls the 
-		 * garbage collector so it may skew timing results.
-		 */
-		int JavaHeapUsed				= 8;
-		
-		/**
-		 * 16 - The plugin startup and size information.
-		 */
-		int PluginInfo					= 16;
-		
-		/** 0xffff - Everything. */
-		int All							= 0xffff;	
-	}
-	
-	/**
-	 * Add some more "extra" variations. 
-	 * 
-	 * The variations that are in effect are made up of these extra variations plus any variations
-	 * that may have been set with the setVar() method.
-	 * 
-	 * @param varList a comma separated list of variations
-	 */
-	public void addVarAppend(String varList);
-	
-	/**
-	 * Set the driver name. 
-	 * 
-	 * @param driver a label that identifies the driver that is being tested. If it is a WSAD
-	 * driver, this will usually be set by the extension.
-	 */
-	public void setDriver(String driver);
-	
-	/**
-	 * Set the location of the performance measurement file, that is the place where
-	 * the measurements are stored.
-	 * 
-	 * @param logFile the file name of where the log should be written. Usually this is fully qualified
-	 * path name. For example "x:\logs\timer.xml".
-	 */
-	public void setLogFile(String logFile);
-	
-	/**
-	 * Set the performance monitor to be on or off. If it is off then most of the other 
-	 * operations will no-op.
-	 * 
-	 * The default is for the performance monitor to be off unless it's special environment variable is set. 
-	 * When called from the UI, the UI should call this to make sure that it is on.
-	 */
-	public void setIsOn(boolean isOn);
-	
-	/**
-	 * Sets the test case number for this measurement run.
-	 *  
-	 * @param testd test case identifier
-	 */
-	public void setTestd(int testd);
-	
-	/**
-	 * Sets the test case name. If will cause a new test case to be created if it does not already exist.
-	 * 
-	 * @param testName a simple (short) test case name. In the case of JUnit test cases, it would usually 
-	 * be the JUnit name.
-	 */
-	public void setTestName(String testName);
-	
-	/**
-	 * Set the variations that are in effect.
-	 * 
-	 * @param var a comma delimited string of variation numbers
-	 */
-	public void setVar(String var);
-	
-	/**
-	 * Set the upload host
-	 * 
-	 * @param host DNS name of the upload host
-	 */
-	public void setUploadHost(String host);
-	
-	/**
-	 * Set the upload port
-	 * 
-	 * @param port upload port
-	 */
-	public void setUploadPort(int port);
-	
-	/**
-	 * Set the upload userid
-	 * 
-	 * @param userid
-	 */
-	public void setUploadUserid(String userid);
-	
-	/**
-	 * Take a snapshot of some default performance measurements.
-	 * 
-	 * @param step this identifies the step that the snapshot is for
-	 */
-	void snapshot(int step);
-	
-	/**
-	 * Take a snapshot of the selected performance measurements.
-	 * 
-	 * @param step this identifies the step that the snapshot is for
-	 * 
-	 * @param types This controls which measurements are selected. It is an or'd together
-	 * list of the IPerformanceMonitor.Types constants.
-	 * 
-	 * @see IPerformanceMonitor.Types 
-	 */
-	void snapshot(int step, int types);
-	
-	/**
-	 * Write the comment to the performance measurement file.
-	 * 
-	 * @param comment
-	 */
-	void writeComment(String comment);
-	
-	/**
-	 * Upload the results to the server. This causes the file to be
-	 * closed, and the monitor to be placed into the finished state.
-	 * 
-	 * This method can only be called if the uploadhost, uploadport and uploaduserid
-	 * have been configured before hand.
-	 * 
-	 * @param description an optional description (it can be null)
-	 * 
-	 * @return some status information
-	 */
-	public Upload.Status upload(String description);
-//	
-//	/**
-//	 * Upload the results to the server. This causes the file to be
-//	 * closed, and the monitor to be placed into the finished state.
-//	 * 
-//	 * @param host the host name that the file is being sent to
-//	 * @param port the port on the host
-//	 * @param userid the userid that is doing the upload
-//	 * @param description an optional description (it can be null)
-//	 * 
-//	 * @return some status information
-//	 */
-//	Upload.Status upload(String host, int port, String userid, String description);
-
-
-}
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/PerfMsrCorePlugin.java b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/PerfMsrCorePlugin.java
deleted file mode 100644
index 2b86e9e..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/PerfMsrCorePlugin.java
+++ /dev/null
@@ -1,31 +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
- *******************************************************************************/
-/*
- *  $RCSfile: PerfMsrCorePlugin.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:06:47 $ 
- */
-package org.eclipse.perfmsr.core;
-
-import org.eclipse.core.runtime.Plugin;
- 
-
-/**
- * ************* This is just a stub of the real class to get org.eclipse.jem.util 
- *               to compile. It is not usable by itself. ****************************
- * @since 1.0.0
- */
-public class PerfMsrCorePlugin extends Plugin {
-	
-	public static IPerformanceMonitor getPerformanceMonitor(boolean bool) {
-		return null;
-	}
-
-}
diff --git a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/Upload.java b/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/Upload.java
deleted file mode 100644
index c412f52..0000000
--- a/plugins/org.eclipse.jem.util/org.eclipse.perfmsr.core.stub/src/org/eclipse/perfmsr/core/Upload.java
+++ /dev/null
@@ -1,27 +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
- *******************************************************************************/
-/*
- *  $RCSfile: Upload.java,v $
- *  $Revision: 1.2 $  $Date: 2005/02/15 23:06:47 $ 
- */
-package org.eclipse.perfmsr.core;
- 
-
-/**
- * Upload.
- * ************* This is just a stub of the real interface to get org.eclipse.jem.util 
- *               to compile. It is not usable by itself. ****************************
- */
-public interface Upload {
-	public static class Status {
-		public boolean success;
-	}
-}
diff --git a/plugins/org.eclipse.jem.util/plugin.properties b/plugins/org.eclipse.jem.util/plugin.properties
deleted file mode 100644
index a53db6a..0000000
--- a/plugins/org.eclipse.jem.util/plugin.properties
+++ /dev/null
@@ -1,18 +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
-###############################################################################
-#
-# $Source: /cvsroot/webtools/common.move/webtools.common.git/plugins/org.eclipse.jem.util/plugin.properties,v $
-# $Revision: 1.2 $  $Date: 2005/02/15 23:07:45 $
-#
-
-
-pluginName=Java EMF Model Utilities
-providerName = Eclipse.org
diff --git a/plugins/org.eclipse.jem.util/plugin.xml b/plugins/org.eclipse.jem.util/plugin.xml
deleted file mode 100644
index 591be42..0000000
--- a/plugins/org.eclipse.jem.util/plugin.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-
-    
-<!-- Extension point to register ResourceHandlers that will always be added to 
-	new WorkbenchContexts -->
-   <extension-point id="ResourceHandlerExtension" name="ResourceHandlerExtension"/>
-   <extension-point id="globalPluginResourceLoad" name="Global Plugin Resource Load"/>
-   <extension-point id="nature_registration" name="EMF Nature registration"/>
-   <extension-point id="internalWorkbenchContextFactory" name="Internal Workbench Context Factory"/>
-   <extension-point id="uiContextSensitiveClass" name="UI Context Sensitive Class" schema="schema/uiContextSensitiveClass.exsd"/>
-   <extension-point id="uiTester" name="UI Tester" schema="schema/uiTester.exsd"/>   
-   
-</plugin>
diff --git a/plugins/org.eclipse.jem.util/property_files/emfworkbench.properties b/plugins/org.eclipse.jem.util/property_files/emfworkbench.properties
deleted file mode 100644
index cad9483..0000000
--- a/plugins/org.eclipse.jem.util/property_files/emfworkbench.properties
+++ /dev/null
@@ -1,18 +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
-###############################################################################
-EMFWorkbenchContextBase_ERROR_0=IWAE0003E Method not yet implemented.
-EMFWorkbenchContextBase_ERROR_1=IWAE0005E Project can not be null.
-EMFWorkbenchContextBase_ERROR_2=IWAE0006E Attempt to create resource set with null project
-EMFNatureRegistry_ERROR_0=IWAE0007E Duplicate EMF nature registration for id: {0}
-EMFWorkbenchContextFactory_UI_0=The project should not be null.
-EMFWorkbenchContextFactory_UI_1=The project \"{0}\" is not accessible.
-
-ProjectUtil_Delete_1=Deleting \"{0}\".
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/schema/uiContextSensitiveClass.exsd b/plugins/org.eclipse.jem.util/schema/uiContextSensitiveClass.exsd
deleted file mode 100644
index 7bcbfeb..0000000
--- a/plugins/org.eclipse.jem.util/schema/uiContextSensitiveClass.exsd
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jem.util">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.jem.util" id="uiContextSensitiveClass" name="UI Context Sensitive Class"/>
-      </appInfo>
-      <documentation>
-         Edit models provide a framework for managing a set of EMF resources within a unit of work.  For example, a workspace operation may affect a change to multiple EMF resources. Edit models provide basic services such as loads, saves (when necessary), and validate edit for the managed resources.  Edit models are reference counted, therefore a single instance of an edit model can be shared by more than one operation or editor.  By declaring an edit model, a plugin provider enables other components to contribute resources to be managed by that edit model.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="uiContextSensitiveClass" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-         <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>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="uiContextSensitiveClass">
-      <annotation>
-         <documentation>
-            An extension point that defines an instance of a class and its appropriate context (UI or Headless)
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="key" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The key that should be used to create an instance of the Context Sensitive super class/interface.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="className" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A concrete implementation for either a UI or Headless context.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="context" use="required">
-            <annotation>
-               <documentation>
-                  One of &quot;UI&quot; or &quot;Headless&quot;
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="UI">
-                  </enumeration>
-                  <enumeration value="Headless">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         6.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         &lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;extension&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id=&quot;context.Sensitive.Class.workingCopyManager&quot;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name=&quot;Working&amp;nbsp;Copy&amp;nbsp;Manager&amp;nbsp;-&amp;nbsp;UI&amp;nbsp;Context&amp;nbsp;Class&quot;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point=&quot;com.ibm.wtp.common.ui.ContextSensitiveClass&quot;&amp;gt;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;uiContextSensitiveClass&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context=&quot;UI&quot;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key=&quot;workingCopyManager&quot;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;className=&quot;com.ibm.wtp.common.ui.WTPUIWorkingCopyManager&quot;&amp;gt;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/uiContextSensitiveClass&amp;gt;&lt;br&gt;
-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/extension&amp;gt;&lt;br&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         See &lt;code&gt;org.eclipse.jem.util.UIContextDetermination&lt;/code&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) IBM 2003.
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.jem.util/schema/uiTester.exsd b/plugins/org.eclipse.jem.util/schema/uiTester.exsd
deleted file mode 100644
index 48d74fc..0000000
--- a/plugins/org.eclipse.jem.util/schema/uiTester.exsd
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jem.util">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.jem.util" id="uiTester" name="UI Tester"/>
-      </appInfo>
-      <documentation>
-         Edit models provide a framework for managing a set of EMF resources within a unit of work.  For example, a workspace operation may affect a change to multiple EMF resources. Edit models provide basic services such as loads, saves (when necessary), and validate edit for the managed resources.  Edit models are reference counted, therefore a single instance of an edit model can be shared by more than one operation or editor.  By declaring an edit model, a plugin provider enables other components to contribute resources to be managed by that edit model.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="uiTester"/>
-         </sequence>
-         <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>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="uiTester">
-      <annotation>
-         <documentation>
-            The declaration for an edit model to be used in the workspace.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="className" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A unique identifier for the edit model.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         6.0
-      </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>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.wst.common.core/.classpath b/plugins/org.eclipse.wst.common.core/.classpath
deleted file mode 100644
index 202d634..0000000
--- a/plugins/org.eclipse.wst.common.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src-search"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.wst.common.core/.cvsignore b/plugins/org.eclipse.wst.common.core/.cvsignore
deleted file mode 100644
index 60463af..0000000
--- a/plugins/org.eclipse.wst.common.core/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-build.xml
diff --git a/plugins/org.eclipse.wst.common.core/.options b/plugins/org.eclipse.wst.common.core/.options
deleted file mode 100644
index 2e5ed2a..0000000
--- a/plugins/org.eclipse.wst.common.core/.options
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.common.search/perf=false
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.core/.project b/plugins/org.eclipse.wst.common.core/.project
deleted file mode 100644
index 6bb12ef..0000000
--- a/plugins/org.eclipse.wst.common.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common.core</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/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 7406de6..0000000
--- a/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,59 +0,0 @@
-#Mon Jan 30 23:40:52 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-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.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=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-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=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-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=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index c68ceb4..0000000
--- a/plugins/org.eclipse.wst.common.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Mon Jan 30 19:45:41 EST 2006
-eclipse.preferences.version=1
-internal.default.compliance=default
diff --git a/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF
deleted file mode 100644
index d70d59c..0000000
--- a/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: WST Common Core Plug-in
-Bundle-SymbolicName: org.eclipse.wst.common.core; singleton:=true
-Bundle-Version: 1.0.100.qualifier
-Bundle-Activator: org.eclipse.wst.common.core.search.SearchPlugin
-Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.core.search,
- org.eclipse.wst.common.core.search.document,
- org.eclipse.wst.common.core.search.internal;x-internal:=true,
- org.eclipse.wst.common.core.search.pattern,
- org.eclipse.wst.common.core.search.scope,
- org.eclipse.wst.common.core.search.util
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.core.expressions
-Eclipse-AutoStart: true
diff --git a/plugins/org.eclipse.wst.common.core/build.properties b/plugins/org.eclipse.wst.common.core/build.properties
deleted file mode 100644
index 6c41c35..0000000
--- a/plugins/org.eclipse.wst.common.core/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src-search/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               schema/
diff --git a/plugins/org.eclipse.wst.common.core/component.xml b/plugins/org.eclipse.wst.common.core/component.xml
deleted file mode 100644
index 3e9239c..0000000
--- a/plugins/org.eclipse.wst.common.core/component.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" 
-  name="org.eclipse.wst.common.core">
-  <component-depends unrestricted="true"></component-depends>
-  <plugin id="org.eclipse.wst.common.core" fragment="false" />
-</component>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.core/plugin.xml b/plugins/org.eclipse.wst.common.core/plugin.xml
deleted file mode 100644
index c82f6a0..0000000
--- a/plugins/org.eclipse.wst.common.core/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="searchParticipants" name="%searchParticipants" />      
-</plugin>
-
-
diff --git a/plugins/org.eclipse.wst.common.core/schema/searchParticipants.exsd b/plugins/org.eclipse.wst.common.core/schema/searchParticipants.exsd
deleted file mode 100644
index 367c943..0000000
--- a/plugins/org.eclipse.wst.common.core/schema/searchParticipants.exsd
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.search" id="searchParticipants" name="%searchPArticipants"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-         </sequence>
-         <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>
-
-   <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>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/ISearchOptions.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/ISearchOptions.java
deleted file mode 100644
index 33305e5..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/ISearchOptions.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search;
-
-/**
- * This interface provides values that can be used in the map of search options passed
- * to
- * {@link SearchEngine#search(org.eclipse.wst.common.core.search.pattern.SearchPattern, SearchRequestor, org.eclipse.wst.common.core.search.scope.SearchScope, java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
- * SearchEngine.search()}.
- * <p>
- * Note that not all search participants will provide specialized behavior based on
- * use of these search options.
- * <p>
- * Also note that individual search participants may support additional options not
- * listed here. These search options should be formed so that a search participant can
- * safely ignore any that it does not understand.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public interface ISearchOptions {
-
-	/**
-	 * Search option specifying a trade-off choice between search performance and
-	 * completeness.
-	 */
-	public static final String PRIORITY_OPTION = "org.eclipse.wst.common.core.search.PRIORITY"; //$NON_NLS_1$
-	/**
-	 * Choice for the {@link #PRIORITY_OPTION} search option that emphasizes
-	 * performance at the possible expense of accuracy. This value should be used for
-	 * all search calls made on the user interface thread. In some cases, search
-	 * results may not be complete because of inaccuracies caused by timing windows.
-	 */
-	public static final String PRIORITY_VALUE_TIMELINESS = "FAST_SEARCH"; //$NON_NLS_1$
-	/**
-	 * Choice for the {@link #PRIORITY_OPTION} search option that emphasizes
-	 * accuracy at the possible expense of timeliness. This value should never be used
-	 * for search calls made on the user interface thread, because some search
-	 * participants may choose to use time-consuming background processing to return a
-	 * complete set of matches.
-	 */
-	public static final String PRIORITY_VALUE_COMPLETENESS = "COMPLETE_SEARCH"; //$NON_NLS_1$
-	/**
-	 * Default choice for the {@link #PRIORITY_OPTION} search option.
-	 */
-	public static final String PRIORITY_VALUE_DEFAULT = PRIORITY_VALUE_TIMELINESS;
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchEngine.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchEngine.java
deleted file mode 100644
index ff0eeca..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchEngine.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.wst.common.core.search.document.SearchDocumentSet;
-import org.eclipse.wst.common.core.search.internal.Messages;
-import org.eclipse.wst.common.core.search.internal.SearchDocumentSetImpl;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-
-/**
- * The {@link SearchEngine} class provides a generic way of searching for information
- * without the need of knowing how or where that information is stored. The results
- * returned by a search could be scattered in a number of files or stored in an index.
- * Examples of the information you can search for include element declarations and
- * references, references between files, and use of qualifiers.
- * <p>
- * The search can be limited to a specified search scope, or the entire workspace can
- * be searched. Search matches are returned to the specified {@link SearchRequestor}.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class SearchEngine implements ISearchOptions
-{
-
-	/**
-	 * Searches for matches of a given search pattern using a specified set of search
-	 * participants and search scope. Search patterns can be created using factory
-	 * methods and encapsulate the description of the information to be searched for
-	 * (for example, element declarations of a specified type, in a case sensitive
-	 * manner).
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param requestor
-	 *            Callback object to notify with the results of the search (each match
-	 *            is reported to {@link SearchRequestor#acceptSearchMatch(SearchMatch)})
-	 * @param participants
-	 *            The search participants that will conduct the search
-	 * @param scope
-	 *            Optional search scope to limit the source of search candidates;
-	 *            specify <code>null</code> to search the entire workspace
-	 * @param searchOptions
-	 *            Optional map of options and values defining behavior of the search;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @param monitor
-	 *            Optional progress monitor used to report work completed
-	 * @exception CoreException
-	 *            if the search fails
-	 */
-	public void search(SearchPattern pattern, SearchRequestor requestor,
-			SearchParticipant[] participants, SearchScope scope, Map searchOptions,
-			IProgressMonitor monitor) throws CoreException
-	{
-
-		if (monitor != null && monitor.isCanceled())
-			throw new OperationCanceledException();
-
-		/* initialize progress monitor */
-		if (monitor != null)
-			monitor.beginTask(Messages.engine_searching, 100);
-
-		try
-		{
-			// requestor.beginReporting();
-            SearchDocumentSet set = new SearchDocumentSetImpl();
-            SearchScope[] scopeArray = new SearchScope[participants.length];
-			for (int i = 0, l = participants == null ? 0 : participants.length; i < l; i++)
-			{
-				if (monitor != null && monitor.isCanceled())
-					throw new OperationCanceledException();
-
-				SearchParticipant participant = participants[i];
-				SubProgressMonitor subMonitor = monitor == null ? null
-						: new SubProgressMonitor(monitor, 1000);
-				if (subMonitor != null)
-					subMonitor.beginTask("", 1000); //$NON-NLS-1$
-				try
-				{
-					if (subMonitor != null)
-						subMonitor.subTask(Messages.bind(
-								Messages.engine_searching_locatingDocuments,
-								new String[]
-								{ participant.getDescription() }));
-					participant.beginSearching(pattern, searchOptions);
-					// requestor.enterParticipant(participant);
-					// participant creates it's own search scope 
-					SearchScope newScope =
-						participant.selectDocumentLocations(pattern, scope, searchOptions, monitor);
-                    scopeArray[i] = newScope;
-					// participant creates search documents based on it's search scope
-					participant.createSearchDocuments(set, pattern, newScope, searchOptions, subMonitor);
-                }
-                catch(Exception e)
-                {                  
-                }
-			}
-            for (int i = 0, l = participants == null ? 0 : participants.length; i < l; i++)
-            {        
-                if (monitor != null && monitor.isCanceled())                                  
-                    throw new OperationCanceledException();
-                
-                SearchParticipant participant = participants[i];
-                SubProgressMonitor subMonitor = monitor == null ? null
-                    : new SubProgressMonitor(monitor, 1000);                     
-                if (subMonitor != null && subMonitor.isCanceled())
-                    throw new OperationCanceledException();
-                try
-                {
-                // locate index matches if any (note that all search matches
-                // could have been issued during index querying)
-                if (subMonitor != null)
-                    subMonitor.subTask(Messages.bind(
-                            Messages.engine_searching_matching,
-                            new String[]
-                            { participant.getDescription() }));
-                // a search document set should contain enough info to reduce the search scope even further 
-                // before finding precize locations
-                participant.locateMatches(set, pattern, scopeArray[i], requestor, searchOptions, subMonitor);
-                }
-                finally
-                {
-                  // requestor.exitParticipant(participant);
-                  participant.doneSearching(pattern, searchOptions);
-                }                
-            }    
-		} finally
-		{
-			// requestor.endReporting();
-			if (monitor != null)
-				monitor.done();
-		}
-	}
-
-	/**
-	 * Searches for matches of a given search pattern. Search patterns can be created
-	 * using factory methods and encapsulate the description of the information to be
-	 * searched for (for example, element declarations of a specified type, in a case
-	 * sensitive manner).
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param requestor
-	 *            Callback object to notify with the results of the search (each match
-	 *            is reported to {@link SearchRequestor#acceptSearchMatch(SearchMatch)})
-	 * @param scope
-	 *            Optional search scope to limit the source of search candidates;
-	 *            specify <code>null</code> to search the entire workspace
-	 * @param searchOptions
-	 *            Optional map of options and values defining behavior of the search;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @param monitor
-	 *            Optional progress monitor used to report work completed
-	 * @exception CoreException
-	 *            if the search fails
-	 */
-	public void search(SearchPattern pattern, SearchRequestor requestor,
-			SearchScope scope, Map searchOptions, IProgressMonitor monitor)
-			throws CoreException
-	{
-		SearchParticipant[] participants =
-			getApplicableParticipants(pattern, searchOptions);
-        System.out.println("participants = " + participants.length);
-		search(pattern, requestor, participants, scope, searchOptions, monitor);
-	}
-
-	/**
-	 * Queries the set of participants that support searches described by the
-	 * specified search pattern and options.
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param searchOptions
-	 *            Optional map of options and values defining behavior of the search;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @return Array of applicable search participants
-	 */
-	public SearchParticipant[] getApplicableParticipants(SearchPattern pattern,
-			Map searchOptions)
-	{
-		return SearchPlugin.getDefault().loadSearchParticipants(pattern, searchOptions);
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchMatch.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchMatch.java
deleted file mode 100644
index 4890fc5..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchMatch.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-
-/**
- * A search match represents the result of a search query.
- * <p>
- * This class is intended to be instantiated and subclassed by clients.
- * </p>
- * <p>
- * <b>Note:</b> 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.
- * </p>
- * 
- * @see SearchEngine#search(SearchPattern, SearchParticipant[], ISearchScope,
- *      SearchRequestor, org.eclipse.core.runtime.IProgressMonitor)
- */
-public class SearchMatch implements IAdaptable
-{
-
-	/**
-	 * Optional resource of the element
-	 */
-	IFile file; // resource where match is found
-
-	/**
-	 * The offset the match starts at, or -1 if unknown
-	 */
-	int offset;
-
-	/**
-	 * The length the length of the match, or -1 if unknown
-	 */
-	int length;
-
-	/**
-	 * Optional element that encloses or corresponds to the match
-	 */
-	Object object;
-
-	/**
-	 * Creates a new search match.
-	 * 
-	 * @param element
-	 *            the element that encloses or corresponds to the match, or
-	 *            <code>null</code> if none
-	 * @param offset
-	 *            the offset the match starts at, or -1 if unknown
-	 * @param length
-	 *            the length of the match, or -1 if unknown
-	 * @param participant
-	 *            the search participant that created the match
-	 * @param resource
-	 *            the resource of the element, or <code>null</code> if none
-	 */
-	public SearchMatch(Object element, int offset, int length, IFile resource)
-	{
-		this.object = element;
-		this.offset = offset;
-		this.length = length;
-		this.file = resource;
-	}
-
-	public IFile getFile()
-	{
-		return file;
-	}
-
-	public void setFile(IFile file)
-	{
-		this.file = file;
-	}
-
-	public int getLength()
-	{
-		return length;
-	}
-
-	public void setLength(int length)
-	{
-		this.length = length;
-	}
-
-	// issue (cs/eb) holding objects is a bit odd, since it implies the object's
-	// life span
-	// is the same as the SearchMatch. What happens when an object is deleted?
-	// does the SearchMatch get deleted? Aren't coordinates good enough?
-	// at the very least we should document that using this field has some
-	// consequences
-	/**
-	 * (eb) see comments for {@link #setObject(Object)}
-	 */
-	public Object getObject()
-	{
-		return object;
-	}
-
-	/**
-	 * @param object
-	 *            Object is an instance of some part of the model that represent
-	 *            the content that was searched. It may require to calculate
-	 *            some additional information that may be required by the tools
-	 *            through {@link #getObject()) (e.g. XML node namespace,
-	 *            nessesary to obtain the prefix for the refactoring tool).
-	 *            <p>
-	 *            There should be no danger here of preventing the object from
-	 *            garbage collection because instances of the search matches
-	 *            supposed to be short lived. {@link SearchMatch} is usually
-	 *            collected by {@link SearchRequestor} which itself is lived for
-	 *            the time of the search and then discarded or re-initialized.
-	 *            Usually the tool that requested a search extracts the
-	 *            information from the collected {@link SearchMatch} and after
-	 *            that {@link SearchMatch} could be garbage collected, releasing
-	 *            object that they hold to.
-	 *            </p>
-	 */
-	public void setObject(Object object)
-	{
-		this.object = object;
-	}
-
-	public int getOffset()
-	{
-		return offset;
-	}
-
-	public void setOffset(int offset)
-	{
-		this.offset = offset;
-	}
-
-	public Object getAdapter(Class adapter)
-	{
-		return Platform.getAdapterManager().getAdapter(this, adapter);
-	}
-    
-    public Map map = new HashMap(); 
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchParticipant.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchParticipant.java
deleted file mode 100644
index 95a0446..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchParticipant.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search;
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.core.search.document.SearchDocument;
-import org.eclipse.wst.common.core.search.document.SearchDocumentSet;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-
-/**
- * <p>
- * A search participant describes a particular extension to a generic search
- * mechanism, permitting combined search actions which will involve all required
- * participants.
- * </p>
- * <p>
- * When there is a need to search a document that has some mixed content, then
- * using a one participant will not be enough. E.g. for the searching of the JSP
- * content, a JSP participant needs to create {@link SearchDocument} that
- * contain Java compilation unit and then pass it to the default Java search
- * participant of the Java Search Engine. The same with XML: when there is an
- * XML content that default search participant could not process, but it is
- * required to be search on, a new search participant needs to be defined. That
- * search participant would know how create search document from the content and
- * then it can call default XML search participant.
- * </p>
- * <p>
- * Passing its own {@link SearchRequestor} this participant can then map the
- * match positions back to the original contents, create its own matches and
- * report them to the original requestor.
- * </p>
- * <p>
- * <b>Note:</b> 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.
- * </p>
- * 
- */
-public abstract class SearchParticipant implements ISearchOptions 
-{
-
-	protected static final boolean debugPerf = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.wst.common.core/perf")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	protected String id;
-	/**
-	 * Creates a new search participant.
-	 */
-	protected SearchParticipant()
-	{
-		// do nothing
-	}
-
-	/**
-	 * Callback method allowing a search participant to indicate whether it supports
-	 * the specified search pattern and options.
-	 * <p>
-	 * If this method returns <code>true</code>, the participant will participate in
-	 * finding matches for the search defined by the search pattern. In this case, the
-	 * search pattern and options will be passed to the following methods of the
-	 * search participant:
-	 * <ol>
-	 * <li>{@link #beginSearching(SearchPattern, Map)}
-	 * <li>{@link #selectDocumentLocations(SearchPattern, SearchScope, Map, IProgressMonitor)}
-	 * <li>{@link #createSearchDocuments(SearchDocumentSet, SearchPattern, SearchScope, Map, IProgressMonitor)}
-	 * <li>{@link #locateMatches(SearchDocumentSet, SearchPattern, SearchScope, SearchRequestor, Map, IProgressMonitor)}
-	 * <li>{@link #doneSearching(SearchPattern, Map)}
-	 * </ol>
-	 * <p>
-	 * If this method returns <code>false</code>, none of the above methods will be
-	 * called, and the search participant contributes no matches for the search
-	 * requrest.
-	 * <p>
-	 * A search participant should only participate in a search when in understands
-	 * the search pattern. Unrecognized search options, however, can be ignored.
-	 * <p>
-	 * This method returns <code>false</code> by default. As a result, subclasses must
-	 * override this method to participate in any searches.
-	 * @param pattern The pattern describing the information to search for
-	 * @param searchOptions Map of options and values defining behavior of the search;
-	 *         <code>null</code> if no options are specified;
-	 *         some options and values are provided by {@link ISearchOptions}
-	 * @return <code>true</code> if the search participant will participate in the
-	 *         search request; <code>false</code> otherwise
-	 */
-	 public abstract boolean isApplicable(SearchPattern pattern, Map searchOptions);
-
-	/**
-	 * Notification that this participant's help is needed in a search.
-	 * <p>
-	 * This method should be re-implemented in subclasses that need to do
-	 * something when the participant is needed in a search.
-	 * </p>
-	 * @param pattern The pattern describing the information to search for
-	 * @param searchOptions Map of options and values defining behavior of the search;
-	 *         <code>null</code> if no options are specified;
-	 *         some options and values are provided by {@link ISearchOptions}
-	 */
-	public void beginSearching(SearchPattern pattern, Map searchOptions)
-	{
-		// do nothing
-	}
-
-	/**
-	 * Notification that this participant's help is no longer needed.
-	 * <p>
-	 * This method should be re-implemented in subclasses that need to do
-	 * something when the participant is no longer needed in a search.
-	 * </p>
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param searchOptions
-	 *            Map of options and values defining behavior of the search;
-	 *            <code>null</code> if no options are specified;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 */
-	public void doneSearching(SearchPattern pattern, Map searchOptions)
-	{
-		// do nothing
-	}
-	
-	/**
-	 * Returns a displayable name of this search participant.
-	 * <p>
-	 * This method should be re-implemented in subclasses that need to display a
-	 * meaningfull name.
-	 * </p>
-	 * 
-	 * @return the displayable name of this search participant
-	 */
-	public String getDescription()
-	{
-		return "Search participant"; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns a search document for the given path. The given document path is
-	 * a string that uniquely identifies the document. Most of the time it is a
-	 * workspace-relative path, but it can also be a file system path, or a path
-	 * inside a zip file.
-	 * <p>
-	 * Implementors of this method can either create an instance of their own
-	 * subclass of {@link SearchDocument} or return an existing instance of such
-	 * a subclass.
-	 * </p>
-	 * 
-	 * @param documentPath
-	 *            the path of the document.
-	 * @return a search document
-	 */
-	public abstract SearchDocument createSearchDocument(String documentPath);
-
-	/**
-	 * Locates the matches in the given documents. This method should be called
-	 * by the other search participant or search client once it has
-	 * pre-processed documents and delegating search to this search participant.
-	 * @param documentSet
-	 *            The documents to locate matches in
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param scope
-	 *            Search scope to limit the source of search candidates;
-	 *            <code>null</code> indicates that the entire workspace is to be
-	 *            searched
-	 * @param requestor
-	 *            Callback object to notify with the results of the search (each match
-	 *            is reported to {@link SearchRequestor#acceptSearchMatch(SearchMatch)})
-	 * @param searchOptions
-	 *            Map of options and values defining behavior of the search;
-	 *            <code>null</code> if no options are specified;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @param monitor
-	 *            Progress monitor used to report work completed; <code>null</code>
-	 *            if no progress needs to be reported
-	 * @throws CoreException
-	 *            If the requestor had problem accepting one of the matches
-	 */
-	public abstract void locateMatches(SearchDocumentSet documentSet,
-			SearchPattern pattern, SearchScope scope,
-			SearchRequestor requestor, Map searchOptions, IProgressMonitor monitor)
-			throws CoreException;
-
-	/**
-	 * 
-	 * @param document
-	 * @param pattern
-	 */
-	public abstract void populateSearchDocument(SearchDocument document,
-			SearchPattern pattern);
-
-	/**
-	 * Returns the collection of document locations to consider when performing
-	 * the given search query in the given scope. The search engine calls this
-	 * method before locating matches.
-	 * <p>
-	 * An document location represents a path workspace to the file with the
-	 * content that has potential matches
-	 * </p>
-	 * <p>
-	 * Clients are not expected to call this method.
-	 * </p>
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param scope
-	 *            Search scope to limit the source of search candidates;
-	 *            <code>null</code> indicates that the entire workspace is to be
-	 *            searched
-	 * @param searchOptions
-	 *            Map of options and values defining behavior of the search;
-	 *            <code>null</code> if no options are specified;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @param monitor
-	 *            Progress monitor used to report work completed; <code>null</code>
-	 *            if no progress needs to be reported
-	 * @return the collection of document paths to consider
-	 */
-	public SearchScope selectDocumentLocations(SearchPattern pattern,
-			SearchScope scope, Map searchOptions, IProgressMonitor monitor)
-	{	
-		return scope;
-	}
-
-	/**
-	 * <p>
-	 * This method calls the following methods for each file in the search scope:
-	 * <ol>
-	 * <li>{@link #createSearchDocument(String)}
-	 * <li>{@link #populateSearchDocument(SearchDocument, SearchPattern)}
-	 * </ol>
-	 * @param documentSet
-	 *            The documents to locate matches in
-	 * @param pattern
-	 *            The pattern describing the information to search for
-	 * @param scope
-	 *            Search scope to limit the source of search candidates;
-	 *            <code>null</code> indicates that the entire workspace is to be
-	 *            searched
-	 * @param searchOptions
-	 *            Map of options and values defining behavior of the search;
-	 *            <code>null</code> if no options are specified;
-	 *            some options and values are provided by {@link ISearchOptions}
-	 * @param monitor
-	 *            Progress monitor used to report work completed; <code>null</code>
-	 *            if no progress needs to be reported
-	 */
-	public void createSearchDocuments(SearchDocumentSet documentSet,
-			SearchPattern pattern, SearchScope scope, Map searchOptions,
-			IProgressMonitor monitor)
-	{
-		Assert.isNotNull(id, "The SearchPartipants id has not been initalized");
-		IFile[] files = scope.enclosingFiles();
-		
-		for (int i = 0; i < files.length; i++)
-		{
-			String location = files[i].getLocation().toString();
-			SearchDocument document = documentSet.getSearchDocument(location, id);
-			if(document == null && id != null){
-				documentSet.putSearchDocument(id, document = createSearchDocument(location));
-			}
-			populateSearchDocument(document, pattern); 
-			
-		}
-
-	}	
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java
deleted file mode 100644
index cf7a9fc..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.wst.common.core.search.internal.SearchParticipantRegistry;
-import org.eclipse.wst.common.core.search.internal.SearchParticipantRegistryReader;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class SearchPlugin extends Plugin implements ISearchOptions
-{
-
-	private SearchParticipantRegistry searchParticipantRegistry;
-
-	// The shared instance.
-	private static SearchPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public SearchPlugin()
-	{
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception
-	{
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception
-	{
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static SearchPlugin getDefault()
-	{
-		return plugin;
-	}
-
-	private SearchParticipantRegistry getSearchParticipantRegistry()
-	{
-		if (searchParticipantRegistry == null)
-		{
-			searchParticipantRegistry = new SearchParticipantRegistry();
-			new SearchParticipantRegistryReader(searchParticipantRegistry)
-					.readRegistry();
-		}
-		return searchParticipantRegistry;
-	}
-
-
-	public SearchParticipant getSearchParticipant(String id)
-	{
-		return getSearchParticipantRegistry().getSearchParticipant(id);
-	}
-
-	/**
-	 * Returns the registered search participants that support the specified search
-	 * pattern and options, loading and creating the search participants if necessary.
-	 * @param pattern The pattern representing a search request
-	 * @param searchOptions Map of options and values defining behavior of the search;
-	 *         <code>null</code> if no options are specified;
-	 *         some options and values are provided by {@link ISearchOptions}
-	 * @return Array of search participants that support the specified search request 
-	 */
-	SearchParticipant[] loadSearchParticipants(SearchPattern pattern, Map searchOptions)
-	{
-		return getSearchParticipantRegistry().getParticipants(pattern, searchOptions);
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchRequestor.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchRequestor.java
deleted file mode 100644
index 460b589..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchRequestor.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Collects the results from a search engine query. Clients implement a subclass
- * to pass to <code>SearchEngine.search</code> and implement the
- * {@link #acceptSearchMatch(SearchMatch)} method.
- * <p>
- * The subclasses of the SearchRequestor could collected search matches, filter,
- * sort and group them. It's up to the client to pass the required extension of
- * the SearchRequestor to the search engine.
- * </p>
- * <p>
- * <b>Note:</b> 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.
- * </p>
- * 
- * @see SearchEngine
- */
-public abstract class SearchRequestor
-{
-
-	/**
-	 * Accepts the given search match.
-	 * 
-	 * @param match
-	 *            the found match
-	 * @throws CoreException
-	 */
-	public abstract void acceptSearchMatch(SearchMatch match)
-			throws CoreException;
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentDeclarationEntry.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentDeclarationEntry.java
deleted file mode 100644
index f193937..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentDeclarationEntry.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-
-/**
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class ComponentDeclarationEntry extends Entry
-{
-	QualifiedName metaName;
-    QualifiedName name;
-
-	public QualifiedName getName()
-	{
-		return name;
-	}
-
-	public void setName(QualifiedName name)
-	{
-		this.name = name;
-	}
-
-  public QualifiedName getMetaName()
-  {
-    return metaName;
-  }
-
-  public void setMetaName(QualifiedName metaName)
-  {
-    this.metaName = metaName;
-  }
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentReferenceEntry.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentReferenceEntry.java
deleted file mode 100644
index d532f26..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/ComponentReferenceEntry.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-
-/**
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class ComponentReferenceEntry extends Entry
-{
-	QualifiedName name;
-
-	public QualifiedName getName()
-	{
-		return name;
-	}
-
-	public void setName(QualifiedName name)
-	{
-		this.name = name;
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/Entry.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/Entry.java
deleted file mode 100644
index acd10a6..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/Entry.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-/**
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class Entry
-{
-  String key;
-  String category;
-
-	public Entry()
-{
-	super();
-	
-}
-
-	public String getCategory()
-	{
-		return category;
-	}
-
-	
-
-	public String getKey()
-	{
-		return key;
-	}
-
-	public void setCategory(String category)
-	{
-		this.category = category;
-	}
-
-	public void setKey(String key)
-	{
-		this.key = key;
-	}
-
-	
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/FileReferenceEntry.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/FileReferenceEntry.java
deleted file mode 100644
index 2789503..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/FileReferenceEntry.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-/**
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class FileReferenceEntry extends Entry
-{
-	String relativeFilePath;
-    String resolvedURI;
-	String publicIdentifier;
-
-	public String getPublicIdentifier()
-	{
-		return publicIdentifier;
-	}
-
-	public void setPublicIdentifier(String publicIdentifier)
-	{
-		this.publicIdentifier = publicIdentifier;
-	}
-
-	public String getRelativeFilePath()
-	{
-		return relativeFilePath;
-	}
-
-	public void setRelativeFilePath(String relativeFilePath)
-	{
-		this.relativeFilePath = relativeFilePath;
-	}
-
-  public String getResolvedURI()
-  {
-    return resolvedURI;
-  }
-
-  public void setResolvedURI(String resolvedURI)
-  {
-    this.resolvedURI = resolvedURI;
-  }
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocument.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocument.java
deleted file mode 100644
index 6417d54..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocument.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-import org.eclipse.wst.common.core.search.SearchParticipant;
-import org.eclipse.wst.common.core.search.SearchRequestor;
-
-/**
- * A search document encapsulates a content to be searched in. A search
- * participant creates a search document based on the file locations to locate
- * matches.
- * <p>
- * This class is intended to be subclassed by clients.
- * </p>
- * issue (cs/eb) does a search participant always create a SearchDocument?
- * 
- * <p>
- * SearchParticipant or search client create search documents for the search
- * pass where precise locations of the matches will be determined by calling
- * {@link SearchParticipan#locateMatches}
- * </p>
- * <p>
- * SearchParticipant knows how to create search document that it can process.
- * </p>
- * <p>
- * The intent of the separation of the {@link SearchDocument} from the
- * {@link SearchParticipant} is to enable the other search participants to
- * process parts of the document. For example, if XML document has a fragment
- * that it can not process, e.g. Java, then XML participant would create
- * SearchDocument for that fragment which contains Java compilation unit, and
- * pass it to the Java search participant. Passing its own
- * {@link SearchRequestor} this participant can then map the match positions
- * back to the original contents, create its own matches and report them to the
- * original requestor.
- * </p>
- * <p>
- * <b>Note:</b> 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.
- * </p>
- * 
- * @see SearchParticipant
- */
-public abstract class SearchDocument
-{
-
-	private String documentPath;
-	private SearchParticipant participant; 
-
-	/**
-	 * Creates a new search document. The given document path is a string that
-	 * uniquely identifies the document. Most of the time it is a
-	 * workspace-relative path, but it can also be a file system path, or a path
-	 * inside a zip file.
-	 * 
-	 * @param documentPath
-	 *            the path to the document, or <code>null</code> if none
-	 */
-	protected SearchDocument(String documentPath, SearchParticipant participant)
-	{
-		this.documentPath = documentPath;
-		this.participant = participant;
-	}
-
-	public abstract Entry[] getEntries(String category, String key, int matchRule);
-
-	/**
-	 * Returns the model of this document. Model may be different from actual
-	 * resource at corresponding document path due to preprocessing.
-	 * <p>
-	 * This method must be implemented in subclasses.
-	 * </p>
-	 * 
-	 * @return the model of this document, or <code>null</code> if none
-	 */
-	public abstract Object getModel();
-	
-	
-	/**
-	 * Returns the participant that created this document.
-	 * 
-	 * @return the participant that created this document
-	 */
-	public final SearchParticipant getParticipant() {
-		return this.participant;
-	}
-	
-	
-//	 this class represents a collection of information
-//	 that has been produced by a search participant
-//	 typically after a file has been processed
-//	 an Entry is typically course grained info that results from the SearchParticipants
-//	 first step ... and is used to compute more accurate SearchMatches during a SearchParticipants 2nd step
-
-	/**
-	 * Returns the path to the original document.
-	 * 
-	 * @return the path to the document
-	 */
-	public final String getPath()
-	{
-		return this.documentPath;
-	} 
-	
-	public abstract void putEntry(Entry entry);
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocumentSet.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocumentSet.java
deleted file mode 100644
index 4a9e068..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/document/SearchDocumentSet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.document;
-
-/**
- * The class is used to manage a set of search documents
- * that have been constructed by various participants
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public abstract class SearchDocumentSet
-{
-  public abstract SearchDocument getSearchDocument(String resourcePath, String participantId);
-  public abstract SearchDocument[] getSearchDocuments(String participantId);
-  public abstract void putSearchDocument(String participantId, SearchDocument document);
-  public abstract SearchDocument _tempGetSearchDocumetn(String resourcePath); 
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/Messages.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/Messages.java
deleted file mode 100644
index cc3522b..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/Messages.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-// issue (cs) is this a UI issue?  where does the framework need to expose stings?
-public class Messages extends NLS
-{
-
-	private static final String BUNDLE_NAME = "org.eclipse.wst.common.core.internal.messages";//$NON-NLS-1$
-
-	public static String engine_searching;
-
-	public static String engine_searching_locatingDocuments;
-
-	public static String engine_searching_matching;
-
-	private Messages()
-	{
-		// Do not instantiate
-	}
-
-	static
-	{
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchDocumentSetImpl.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchDocumentSetImpl.java
deleted file mode 100644
index 31d2ad9..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchDocumentSetImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.common.core.search.document.SearchDocument;
-import org.eclipse.wst.common.core.search.document.SearchDocumentSet;
-
-public class SearchDocumentSetImpl extends SearchDocumentSet
-{
-    public Map documentPathMap = new HashMap(); //path --> documetn
-	Map documentMap = new HashMap();  // participantId - > list (document)
-	
-	public SearchDocumentSetImpl()
-	{
-		super();
-	}
-    
-    public SearchDocument _tempGetSearchDocumetn(String resourcePath)
-    {      
-       return (SearchDocument)documentPathMap.get(resourcePath);      
-    }
-    
-    public SearchDocument getSearchDocument(String resourcePath, String participantId)
-	{
-		if(resourcePath == null){
-			return null;
-		}
-		SearchDocument[] documents = getSearchDocuments(participantId);
-		for (int i = 0; i < documents.length; i++)
-		{
-			SearchDocument document = documents[i];
-			if(resourcePath.equals(document.getPath())){
-				return document;
-			}
-		}
-		return null;
-	}
-
-	public SearchDocument[] getSearchDocuments(String participantId)
-	{
-		
-		Object object = documentMap.get(participantId);
-		List documentList = null;
-		if(object instanceof List){
-			documentList = (List)object;
-		}
-		else{
-			documentMap.put(participantId, documentList = new ArrayList());
-		}
-		return (SearchDocument[]) documentList.toArray(new SearchDocument[documentList.size()]);
-		
-	}
-
-	public void putSearchDocument(String participantId, SearchDocument document)
-	{
-		Object object = documentMap.get(participantId);
-		List documentList = null;
-		if(object instanceof List){
-			documentList = (List)object;
-		}
-		else{
-			documentMap.put(participantId, documentList = new ArrayList());
-		}
-		documentList.add(document);
-        documentPathMap.put(document.getPath(), document);
-	}
-
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantDescriptor.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantDescriptor.java
deleted file mode 100644
index dadf3e3..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantDescriptor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.internal;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.ExpressionTagNames;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.internal.expressions.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.wst.common.core.search.SearchParticipant;
-
-public class SearchParticipantDescriptor
-{
-
-	private IConfigurationElement fElement;
-
-	private SearchParticipant participant;
-
-	public SearchParticipantDescriptor(IConfigurationElement element)
-	{
-		this.fElement = element;
-	}
-
-	public SearchParticipant getSearchParticipant()
-	{
-		if (participant == null)
-		{
-			try
-			{
-				participant = (SearchParticipant) fElement
-						.createExecutableExtension("class"); //$NON-NLS-1$
-			} catch (Exception e)
-			{
-				// e.printStackTrace();
-			}
-		}
-		return participant;
-	}
-
-	public boolean matches(IEvaluationContext context) throws CoreException
-	{
-		IConfigurationElement[] elements = fElement
-				.getChildren(ExpressionTagNames.ENABLEMENT);
-		if (elements.length == 0)
-			return false;
-		Assert.isTrue(elements.length == 1);
-		Expression exp = ExpressionConverter.getDefault().perform(elements[0]);
-		return convert(exp.evaluate(context));
-	}
-
-	private boolean convert(EvaluationResult eval)
-	{
-		if (eval == EvaluationResult.FALSE)
-			return false;
-		return true;
-	}
-
-	/**
-	 * @deprecated No replacement
-	 */
-	public String[] getSupportedContentTypes()
-	{
-		return new String[0];
-	}
-
-	/**
-	 * @deprecated No replacement
-	 */
-	public void addSupportedContentTypeId(String contentTypeId)
-	{
-	}
-	
-	public String getElementId(){
-		return fElement.getAttribute("id");
-		
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistry.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistry.java
deleted file mode 100644
index a169e91..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistry.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.core.search.SearchParticipant;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-
-public class SearchParticipantRegistry
-{
-
-	protected Map idMap = new HashMap(); // maps searchParticipant id to a
-											// searchParticipant descriptor
-
-	public SearchParticipantRegistry()
-	{
-	}
-
-	public void putSearchParticipant(String id,
-			SearchParticipantDescriptor searchParticipantDescriptor)
-	{
-		idMap.put(id, searchParticipantDescriptor);
-	}
-
-	public String[] getSearchParticipantIds()
-	{
-		Set ids = idMap.keySet();
-		return (String[]) ids.toArray(new String[ids.size()]);
-	}
-
-	public Collection getSearchParticipants()
-	{
-		return idMap.values();
-	}
-
-
-	public SearchParticipant getSearchParticipant(String id)
-	{
-		SearchParticipantDescriptor searchParticipantDescriptor = null;
-		if (id != null)
-		{
-			searchParticipantDescriptor = (SearchParticipantDescriptor) idMap
-					.get(id);
-		}
-		return searchParticipantDescriptor != null ? searchParticipantDescriptor
-				.getSearchParticipant()
-				: null;
-
-	}
-
-	public SearchParticipant[] getParticipants(SearchPattern pattern, Map searchOptions)
-	{
-
-		EvaluationContext evalContext = createEvaluationContext(pattern);
-		List result = new ArrayList();
-		for (Iterator iter = getSearchParticipants().iterator(); iter.hasNext();)
-		{
-			SearchParticipantDescriptor descriptor = (SearchParticipantDescriptor) iter
-					.next();
-			try
-			{
-				if (descriptor.matches(evalContext))
-				{
-					try
-					{
-						SearchParticipant participant = descriptor
-								.getSearchParticipant();
-						if (!SearchParticipant.class.isInstance(participant))
-							throw new ClassCastException();
-						if (participant.isApplicable(pattern, searchOptions))
-						{
-							result.add(participant);
-						}
-					} catch (ClassCastException e)
-					{
-						iter.remove();
-					}
-				}
-
-			} catch (CoreException e)
-			{
-				iter.remove();
-			}
-
-		}
-
-		return (SearchParticipant[]) result
-				.toArray(new SearchParticipant[result.size()]);
-	}
-
-	private static EvaluationContext createEvaluationContext(
-			SearchPattern pattern)
-	{
-		EvaluationContext result = new EvaluationContext(null, pattern);
-		result.addVariable("pattern", pattern); //$NON-NLS-1$
-		return result;
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistryReader.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistryReader.java
deleted file mode 100644
index 7757ce3..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/SearchParticipantRegistryReader.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-
-public class SearchParticipantRegistryReader
-{
-	protected static final String EXTENSION_POINT_ID = "searchParticipants"; //$NON-NLS-1$
-
-	protected static final String TAG_NAME = "searchParticipant"; //$NON-NLS-1$
-
-	protected static final String ATT_CLASS = "class"; //$NON-NLS-1$
-
-	protected static final String ATT_ID = "id"; //$NON-NLS-1$
-
-	protected String pluginId, extensionPointId;
-
-	protected SearchParticipantRegistry registry;
-
-	public SearchParticipantRegistryReader(SearchParticipantRegistry registry)
-	{
-		this.registry = registry;
-	}
-
-	public void readRegistry()
-	{
-		String bundleid = "org.eclipse.wst.common.core"; //$NON-NLS-1$
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(bundleid, EXTENSION_POINT_ID);
-		if (point != null)
-		{
-			IConfigurationElement[] elements = point.getConfigurationElements();
-			for (int i = 0; i < elements.length; i++)
-			{
-				readElement(elements[i]);
-			}
-		}
-	}
-
-	protected void readElement(IConfigurationElement element)
-	{
-		if (element.getName().equals(TAG_NAME))
-		{
-			String contributorClass = element.getAttribute(ATT_CLASS);
-			String id = element.getAttribute(ATT_ID);
-			if (id != null)
-			{
-				if (contributorClass != null)
-				{
-					SearchParticipantDescriptor descriptor = new SearchParticipantDescriptor(
-							element);
-					registry.putSearchParticipant(id, descriptor);
-				}
-			}
-		}
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/messages.properties b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/messages.properties
deleted file mode 100644
index e3a01a8..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/internal/messages.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 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
-###############################################################################
-### Search messages.
-
-engine_searching = Searching...
-engine_searching_locatingDocuments = {0}: locate search documents...
-engine_searching_matching = {0}: locate matches...
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentDeclarationPattern.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentDeclarationPattern.java
deleted file mode 100644
index 16f3ffe..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentDeclarationPattern.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-/**
- *
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class ComponentDeclarationPattern extends ComponentSearchPattern
-{
-
-	public ComponentDeclarationPattern(QualifiedName name,
-			QualifiedName metaName, int matchRule)
-	{
-		super(null, name, metaName, matchRule);
-
-	}
-
-	public ComponentDeclarationPattern(QualifiedName name,
-			QualifiedName metaName)
-	{
-		super(null, name, metaName);
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentReferencePattern.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentReferencePattern.java
deleted file mode 100644
index 2f1e101..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentReferencePattern.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class ComponentReferencePattern extends ComponentSearchPattern
-{
-
-	public ComponentReferencePattern(IFile file, QualifiedName elementQName,
-			QualifiedName typeQName, int matchRule)
-	{
-		super(file, elementQName, typeQName, matchRule);
-
-	}
-
-	public ComponentReferencePattern(IFile file, QualifiedName elementQName,
-			QualifiedName typeQName)
-	{
-		super(file, elementQName, typeQName);
-
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentSearchPattern.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentSearchPattern.java
deleted file mode 100644
index 4741a10..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/ComponentSearchPattern.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * This class defines generic component pattern. Usually there are two types of
- * component search patterns: pattern for component declaration and for
- * component definition.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public abstract class ComponentSearchPattern extends SearchPattern
-{
-
-	QualifiedName name;
-
-	QualifiedName metaName;
-
-	IFile file; // (optional) location where component is defined
-
-	public ComponentSearchPattern(IFile file, QualifiedName elementQName,
-			QualifiedName typeQName, int matchRule)
-	{
-		super(matchRule);
-		this.file = file;
-		name = elementQName;
-		metaName = typeQName;
-
-	}
-
-	public ComponentSearchPattern(IFile file, QualifiedName elementQName,
-			QualifiedName typeQName)
-	{
-
-		this.file = file;
-		name = elementQName;
-		metaName = typeQName;
-
-	}
-
-	public IFile getFile()
-	{
-		return file;
-	}
-
-	public QualifiedName getMetaName()
-	{
-		return metaName;
-	}
-
-	public QualifiedName getName()
-	{
-		return name;
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/FileReferencePattern.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/FileReferencePattern.java
deleted file mode 100644
index 27c1165..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/FileReferencePattern.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- *
- */
-public class FileReferencePattern extends SearchPattern
-{
-
-	IFile file;
-
-	public FileReferencePattern(IFile file)
-	{
-		this.file = file;
-	}
-
-	public FileReferencePattern(IFile file, int matchRule)
-	{
-		super(matchRule);
-		this.file = file;
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/QualifiedName.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/QualifiedName.java
deleted file mode 100644
index 0f7ab17..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/QualifiedName.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-/**
- * This data class represents a qualified name, consisting of a local name and a
- * qualifier
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-// issue (cs) should this go in the 'matching' package (BTW... rename
-// matching->pattern)
-public class QualifiedName
-{
-
-	private String qualifier;
-
-	private String name;
-
-	private static final String NS_DELIM_1 = "{"; //$NON-NLS-1$
-
-	private static final String NS_DELIM_2 = "}"; //$NON-NLS-1$
-
-	/**
-	 * Constructor Creates a qualified name from a namespace and local name.
-	 * 
-	 * @param namespace
-	 * @param localName
-	 */
-	public QualifiedName(String namespace, String localName)
-	{
-
-		super();
-
-		this.qualifier = namespace;
-		if (namespace != null && namespace.length() == 0)
-		{
-			this.qualifier = null;
-		}
-		if (this.qualifier != null && this.qualifier.length() == 0)
-		{
-			this.qualifier = null;
-		}
-
-		this.name = localName;
-		if (localName != null && localName.length() == 0)
-		{
-			this.name = null;
-		}
-
-	}
-
-	/**
-	 * Returns the namespace component of the qualified name.
-	 * 
-	 * @return The namespace; <code>null</code> if none is specified
-	 */
-	public String getNamespace()
-	{
-		return this.qualifier;
-	}
-
-	/**
-	 * Returns the local name component of the qualified name.
-	 * 
-	 * @return The local name; <code>null</code> if none is specified
-	 */
-	public String getLocalName()
-	{
-		return this.name;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj)
-	{
-		boolean isEqual = false;
-		if (this == obj)
-		{
-		  isEqual = true;
-		}
-		else
-		{	
-		  if (obj instanceof QualifiedName)
-		  {
-			QualifiedName that = (QualifiedName) obj;
-		    isEqual = isMatch(this.getNamespace(), that.getNamespace()) &&
-		              isMatch(this.getLocalName(), that.getLocalName());	
-		  }  
-		}
-		return isEqual;
-	}
-	
-	protected boolean isMatch(String a, String b)
-	{
-	  return a != null ? a.equals(b) : a == b;
-	}	
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode()
-	{
-		int hash = 0;
-		if (this.qualifier != null)
-		{
-			hash += this.qualifier.hashCode();
-		}
-		if (this.name != null)
-		{
-			hash += this.name.hashCode();
-		}
-		return hash;
-	}
-
-	/**
-	 * Returns a string representation of the qualified name, of the form:
-	 * {namespace}localname. If no namespace is specified, the string has the
-	 * form: {}localname. Note that the string format may change in the future.
-	 * 
-	 * @return The string value
-	 */
-	public String toString()
-	{
-
-		return appendStrings(new String[]
-		{ NS_DELIM_1, // {
-				this.qualifier, NS_DELIM_2, // }
-				this.name });
-
-	}
-
-	/**
-	 * Factory-like method to create a QName object from the string form of a
-	 * QName. The string must have the same format as returned by
-	 * QName.toString().
-	 * 
-	 * @param qnameString -
-	 *            String form of a QName
-	 * @return The created QName object created from the specified string
-	 * @throws IllegalArgumentException -
-	 *             Missing namespace delimiters
-	 */
-	public static QualifiedName valueOf(String qnameString)
-			throws IllegalArgumentException
-	{
-
-		String namespace = null;
-		String localName = null;
-		if (qnameString == null || qnameString.length() == 0)
-		{
-			// Both namespace and local name are null.
-		} else if (qnameString.startsWith(NS_DELIM_1))
-		{
-			// The QName has the notation specifying a namespace.
-			int index = qnameString.indexOf(NS_DELIM_2);
-			if (index == -1)
-			{
-				// The end delimiter for the namespace was not found. The QName
-				// string
-				// is malformed.
-				throw new IllegalArgumentException(
-						"qnameString = " + qnameString); //$NON-NLS-1$
-			}
-			namespace = qnameString.substring(1, index);
-			localName = qnameString.substring(index + 1);
-		} else
-		{
-			// Assume no namespace is specified and the string is a local name.
-			localName = qnameString;
-		}
-		return new QualifiedName(namespace, localName);
-
-	}
-
-	/**
-	 * Creates a single string by appending together an array of strings,
-	 * skipping null strings.
-	 * 
-	 * @param strings -
-	 *            Strings to be appended together
-	 * @return Resulting string
-	 */
-	public static String appendStrings(String[] strings)
-	{
-
-		String result = null;
-		if (strings != null)
-		{
-			StringBuffer tokenBuffer = new StringBuffer();
-			int maxCount = strings.length;
-			String string;
-			for (int i = 0; i < maxCount; i++)
-			{
-				string = strings[i];
-				if (string != null && string.length() > 0)
-				{
-					tokenBuffer.append(string);
-				}// if
-			}// for
-			result = tokenBuffer.toString();
-		}// if
-		return result;
-
-	}// appendStrings()
-
-}// class QName
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/SearchPattern.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/SearchPattern.java
deleted file mode 100644
index df0aaf6..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/pattern/SearchPattern.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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
- *******************************************************************************/
-
-package org.eclipse.wst.common.core.search.pattern;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-
-/**
- * A search defines how search results are found.
- * 
- * This class is intended to be subclassed by clients.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public abstract class SearchPattern implements IAdaptable
-{
-
-	/**
-	 * Match rule: The search pattern matches the search result only if cases
-	 * are the same. Can be combined to previous rules, e.g.
-	 * {@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}
-	 */
-	public static final int R_CASE_SENSITIVE = 8;
-
-	// Rules for pattern matching: (exact, prefix, pattern) [ | case sensitive]
-	/**
-	 * Match rule: The search pattern matches exactly the search result, that
-	 * is, the source of the search result equals the search pattern.
-	 */
-	public static final int R_EXACT_MATCH = 0;
-
-	/**
-	 * Match rule: The search pattern contains one or more wild cards ('*')
-	 * where a wild-card can replace 0 or more characters in the search result.
-	 */
-	public static final int R_PATTERN_MATCH = 2;
-
-	/**
-	 * Match rule: The search pattern is a prefix of the search result.
-	 */
-	public static final int R_PREFIX_MATCH = 1;
-
-	/**
-	 * Match rule: The search pattern contains a regular expression.
-	 */
-	public static final int R_REGEXP_MATCH = 4;
-
-	private int matchRule;
-
-	public SearchPattern()
-	{
-		this.matchRule = R_EXACT_MATCH | R_CASE_SENSITIVE;
-	}
-
-	public SearchPattern(int matchRule)
-	{
-		this.matchRule = matchRule;
-
-	}
-
-	public final int getMatchRule()
-	{
-		return this.matchRule;
-	}
-
-	public Object getAdapter(Class adapter)
-	{
-		return Platform.getAdapterManager().getAdapter(this, adapter);
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ContentTypeSearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ContentTypeSearchScope.java
deleted file mode 100644
index 4e25eb8..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ContentTypeSearchScope.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.internal.content.ContentTypeManager;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-
-/**
- * Scope that has filterers files based on content types. It can limit other
- * scopes with the given file content types.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class ContentTypeSearchScope extends SearchScopeImpl
-{
-
-	private List validContentIds = new ArrayList();
-
-	public ContentTypeSearchScope(SearchScope scope, String[] validContentTypes)
-	{
-		if (validContentTypes != null)
-		{
-			for (int i = 0; i < validContentTypes.length; i++)
-			{
-				this.validContentIds.add(validContentTypes[i]);
-			}
-		}
-		if (scope.enclosingFiles() != null)
-		{
-			for (int i = 0; i < scope.enclosingFiles().length; i++)
-			{
-				IFile file = (IFile) scope.enclosingFiles()[i];
-				acceptFile(file);
-			}
-		}
-
-	}
-
-	protected boolean acceptFile(IFile file)
-	{
-
-		if (file == null)
-		{
-			return false;
-		} else
-		{
-			try
-			{
-				IContentDescription description = file.getContentDescription();
-				if (description != null)
-				{
-					IContentType contentType = description.getContentType();
-					if (contentType != null)
-					{
-						// TODO use IContentType.isKindOf
-						for (Iterator iter = validContentIds.iterator(); iter
-								.hasNext();)
-						{
-							String contentId = (String) iter.next();
-							IContentType supportedContentType = ContentTypeManager
-									.getInstance().getContentType(contentId);
-							if (supportedContentType != null)
-							{
-								if (contentType.isKindOf(supportedContentType))
-								{
-									files.add(file);
-									projects.add(file.getProject());
-									return true;
-								}
-							}
-
-						}
-
-					}
-				}
-			} catch (CoreException e)
-			{
-				// ignore the file
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ProjectSearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ProjectSearchScope.java
deleted file mode 100644
index 12ace71..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/ProjectSearchScope.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-
-/**
- *
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class ProjectSearchScope extends SearchScopeImpl
-{
-
-	/**
-	 * Creates a scope that ecloses workspace path and eclosing project
-	 * 
-	 * @param workspacePath -
-	 *            path to the resource in the workspace, e.g.
-	 *            /MyProject/MyFile.xml
-	 */
-	public ProjectSearchScope(IPath workspacePath)
-	{
-		super();
-		initialize(workspacePath);
-
-	}
-
-	protected void initialize(IPath workspacePath)
-	{
-		IResource resource = ResourcesPlugin.getWorkspace().getRoot()
-				.findMember(workspacePath);
-		if (resource != null)
-		{
-			IProject project = resource.getProject();
-			traverseContainer(project);
-		}
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScope.java
deleted file mode 100644
index 1dd3efd..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScope.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * A <code>SearchScope</code> defines where search result should be found by a
- * <code>SearchEngine</code> (e.g. project, workspace).
- * 
- * Clients must pass an instance of this class to the <code>search(...)</code>
- * methods. Such an instance can be created using the following factory methods
- * on <code>SearchScope</code>: <code>newSearchScope(IResource[])</code>,
- * <code>newWorkspaceScope()</code>
- * 
- * The default implementaion of the search scope has no filter, and at creation
- * does not contain any files, It could accept any workspace file.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public abstract class SearchScope
-{
-	/**
-	 * Returns the path to the workspace files that belong in this search scope.
-	 * (see <code>IResource.getFullPath()</code>). For example,
-	 * /MyProject/MyFile.txt
-	 * 
-	 * @return an array of files in the workspace that belong to this scope.
-	 */
-	public abstract IFile[] enclosingFiles();
-
-
-
-	
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScopeImpl.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScopeImpl.java
deleted file mode 100644
index 33c4c69..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SearchScopeImpl.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- *
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class SearchScopeImpl extends SearchScope
-{
-
-	protected List files = new ArrayList();
-
-	protected HashSet projects = new HashSet();
-
-	public SearchScopeImpl()
-	{
-		super();
-	}
-
-	/**
-	 * Checks whether the resource at the given path is belongs to this scope.
-	 * Resource path could be added to the scope, if scope conditions are met.
-	 * if {@link ISearchScope.encloses(String resourcePath)} returns false and
-	 * then this method is called and returns true, next call to
-	 * {@link ISearchScope.eclipses(String resourcePath)} should return true.
-	 * 
-	 * @param file -
-	 *            workspace file
-	 * @return whether the resource is enclosed by this scope
-	 */
-	protected boolean acceptFile(IFile file)
-	{
-		if (file == null)
-		{
-			return false;
-		}
-		files.add(file);
-		projects.add(file.getProject());
-		return true;
-
-	}
-
-	/**
-	 * Checks whether the resource at the given path is enclosed by this scope.
-	 * 
-	 * @param resourcePath -
-	 *            workspace relative resource path
-	 * @return whether the resource is enclosed by this scope
-	 */
-	protected boolean encloses(String resourcePath)
-	{
-		IResource resource = ResourcesPlugin.getWorkspace().getRoot()
-				.findMember(resourcePath);
-		if (resource == null)
-			return false;
-		return (files.contains(resource));
-	}
-
-	/**
-	 * Returns the path to the workspace files that belong in this search scope.
-	 * (see <code>IResource.getFullPath()</code>). For example,
-	 * /MyProject/MyFile.txt
-	 * 
-	 * @return an array of files in the workspace that belong to this scope.
-	 */
-	public IFile[] enclosingFiles()
-	{
-		if (files == null)
-			return new IFile[0];
-		return (IFile[]) files.toArray(new IFile[files.size()]);
-	}
-
-	/**
-	 * Returns the paths to the enclosing projects for this search scope. (see
-	 * <code>IResource.getFullPath()</code>). For example, /MyProject
-	 * 
-	 * @return an array of paths to the enclosing projects.
-	 */
-	protected IProject[] enclosingProjects()
-	{
-
-		return (IProject[]) projects.toArray(new IProject[projects.size()]);
-
-	}
-	
-	protected void traverseContainer(IContainer container)
-	{
-
-		IResourceVisitor visitor = new IResourceVisitor()
-		{
-			public boolean visit(IResource resource)
-			{
-				if (resource.getType() == IResource.FILE)
-					acceptFile((IFile) resource);
-				return true;
-			}
-		};
-		try
-		{
-			container.accept(visitor);
-		} catch (CoreException e)
-		{
-			// ignore resource
-		}
-
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SelectionSearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SelectionSearchScope.java
deleted file mode 100644
index 4ffcd3e..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/SelectionSearchScope.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-
-/**
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class SelectionSearchScope extends SearchScopeImpl
-{
-
-	protected IResource[] resources;
-
-	/**
-	 * Creates a scope that ecloses workspace path and eclosing project
-	 * 
-	 * @param workspacePath -
-	 *            path to the resource in the workspace, e.g.
-	 *            /MyProject/MyFile.xml
-	 */
-	public SelectionSearchScope(IResource[] resources)
-	{
-		super();
-		this.resources = resources;
-		initialize();
-
-	}
-
-	protected void initialize()
-	{
-		if (resources == null)
-			return;
-		for (int index = 0; index < resources.length; index++)
-		{
-			IResource resource = resources[index];
-			if (resource != null)
-			{
-				if (resource.getType() == IResource.FOLDER)
-				{
-					traverseContainer((IFolder) resource);
-				} else if (resource.getType() == IResource.FILE)
-				{
-					acceptFile((IFile) resource);
-				}
-			}
-
-		}
-
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkingSetSearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkingSetSearchScope.java
deleted file mode 100644
index cab1a19..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkingSetSearchScope.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *     
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * This class is required to wrap the content of an IWorkingSet.
- * We can't use IWorkingSet directly because it's part of an eclipse.ui
- * component. Therefore, we need to create this object as a surrogate.
- * <br>
- * Usage: We get the array IAdaptable[] of the IWorkingSet object and use this
- * array as argument for all methods of this class including the constructor.
- */
-public class WorkingSetSearchScope extends SearchScopeImpl{
-	
-	/**
-	 * Creates an empty scope when no resources is given.
-	 */
-	public WorkingSetSearchScope(){
-		super();
-	}
-  
-	/**
-	 * Intended to be used with an IWorkingSet
-	 * <br>
-	 * For example:
-	 * <pre>
-	 * IWorkingSet oneWorkingSet;
-	 * ...
-	 * IAdaptable[] elements = oneWorkingSet.getElements();
-	 * WorkingSetSearchScope scope = new WorkingSetSearchScope(elements);
-	 * </pre>
-	 */
-	public WorkingSetSearchScope(IAdaptable[] elements)
-	{
-		super();
-		addElementsOfWorkingSet(elements);
-	}
-	
-	/**
-	 * Intended to be used with an IWorkingSet
-	 * <br>
-	 * For example:
-	 * <pre>
-	 * WorkingSetSearchScope scope = ..; 
-	 * ...
-	 * IWorkingSet anotherWorkingSet; 
-	 * IAdaptable[] elements = anotherWorkingSet.getElements();
-	 * scope.addAWorkingSetToScope(elements);
-	 * </pre>
-	 */
-	public void addAWorkingSetToScope(IAdaptable[] elements){
-		addElementsOfWorkingSet(elements);
-	}
-	
-	private void addElementsOfWorkingSet(IAdaptable[] elements){
-		for (int j = 0; j < elements.length; j++){
-			IContainer container = (IContainer) elements[j].getAdapter(IContainer.class);
-			if ( container != null ){
-				traverseContainer(container);
-			}
-			else{
-				IFile aFile = (IFile) elements[j].getAdapter(IFile.class);
-				if ( aFile != null)
-					acceptFile(aFile);
-			}
-		}
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkspaceSearchScope.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkspaceSearchScope.java
deleted file mode 100644
index e01c201..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/scope/WorkspaceSearchScope.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.scope;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-
-/**
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-public class WorkspaceSearchScope extends SearchScopeImpl
-{
-
-	protected IResource currentResource;
-
-	/**
-	 * Creates a scope that ecloses workspace path and eclosing project
-	 * 
-	 * @param workspacePath -
-	 *            path to the resource in the workspace, e.g.
-	 *            /MyProject/MyFile.xml
-	 */
-	public WorkspaceSearchScope()
-	{
-		super();
-		initialize();
-
-	}
-
-	protected void initialize()
-	{
-		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-		traverseContainer(root);
-
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/util/CollectingSearchRequestor.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/util/CollectingSearchRequestor.java
deleted file mode 100644
index d227f93..0000000
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/util/CollectingSearchRequestor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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
- *******************************************************************************/
-package org.eclipse.wst.common.core.search.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.core.search.SearchMatch;
-import org.eclipse.wst.common.core.search.SearchRequestor;
-
-/**
- * Collects the results returned by a <code>ISearchEngine</code>.
- * 
- * <p>
- * <b>Note:</b> 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.
- * </p>
- */
-// issue should you move this to a util package? what does jdt do?
-public class CollectingSearchRequestor extends SearchRequestor
-{
-	private ArrayList fFound;
-
-	public CollectingSearchRequestor()
-	{
-		fFound = new ArrayList();
-	}
-
-	/**
-	 * @return a List of {@link SearchMatch}es (not sorted)
-	 */
-	public List/* <SearchMatch> */getResults()
-	{
-		return fFound;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.core.search.internal.provisional.SearchRequestor#acceptSearchMatch(org.eclipse.wst.common.search.internal.provisional.SearchMatch)
-	 */
-	public void acceptSearchMatch(SearchMatch match) throws CoreException
-	{
-		fFound.add(match);
-
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
index 90346d3..472cff0 100644
--- a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Utilities
 Bundle-SymbolicName: org.eclipse.wst.common.emf; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.internal.emf.plugin;x-internal:=true,
- org.eclipse.wst.common.internal.emf.resource;x-internal:=true,
- org.eclipse.wst.common.internal.emf.utilities;x-internal:=true
+Export-Package: .,
+ org.eclipse.wst.common.internal.emf.plugin,
+ org.eclipse.wst.common.internal.emf.resource,
+ org.eclipse.wst.common.internal.emf.utilities
 Require-Bundle: org.eclipse.emf.ecore.xmi,
  org.eclipse.wst.common.frameworks,
  org.eclipse.core.runtime,
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
index c5c7287..b36737f 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
@@ -125,8 +125,6 @@
 	protected void initChildTranslators() {
 
 		List children = new ArrayList();
-		// TODO come up with translator extension mechanism
-		//children.add(AnnotationsTranslator.INSTANCE);
 		children.addAll(Arrays.asList(fTranslator.getChildren(getTarget(), fRenderer.getVersionID())));
 
 		VariableTranslatorFactory factory = fTranslator.getVariableTranslatorFactory();
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
index cd4208b..83b9e6d 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
@@ -12,15 +12,19 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.wst.common.internal.emf.utilities.IDUtil;
 
 public class ReferencedXMIResourceImpl extends CompatibilityXMIResourceImpl implements ReferencedResource {
@@ -33,7 +37,70 @@
 	private int editReferenceCount = 0;
 	protected boolean isNew = true;
 	protected boolean forceRefresh;
+	
+	  public static class ESynchronizedAdapterList extends EAdapterList
+	  {
+		  
+		  public Object mutex;
 
+	    public ESynchronizedAdapterList(Notifier notifier) {
+			super(notifier);
+			mutex = this;
+		}
+
+		public boolean add(Object object)
+	    {
+	    synchronized (mutex) {return super.add(object);}
+	    }
+
+	    public void add(int index, Object object)
+	    {
+	    synchronized (mutex) {super.add(index, object);}
+	    }
+
+	    public boolean addAll(Collection collection)
+	    {
+	    synchronized (mutex) {return super.addAll(collection);}
+	    }
+
+	    public boolean remove(Object object)
+	    {
+	    synchronized (mutex) {return super.remove(object);}
+	    }
+
+	    public Object remove(int index)
+	    {
+	    synchronized (mutex) {return super.remove(index);}
+	    }
+
+	    public boolean removeAll(Collection collection)
+	    {
+	    synchronized (mutex) {return super.removeAll(collection);}
+	    }
+
+	    public void clear()
+	    {
+	     synchronized (mutex) {super.clear();};
+	    }
+
+
+	    public Object set(int index, Object object)
+	    {
+	    synchronized (mutex) {return super.set(index, object);}
+	    }
+
+	    public void move(int newPosition, Object object)
+	    {
+	    synchronized (mutex) {super.move(newPosition, object);}
+	    }
+
+	    public Object move(int newPosition, int oldPosition)
+	    {
+	    synchronized (mutex) {return super.move(newPosition, oldPosition);}
+	    }
+	  }
+
+	 
 	/**
 	 * ReferencableXMIResourceImpl constructor comment.
 	 */
@@ -291,6 +358,7 @@
 			eNotify(notification);
 		}
 	}
+	
 
 	/**
 	 * @see com.ibm.etools.emf.workbench.ReferencedResource#wasReverted()
@@ -298,4 +366,21 @@
 	public boolean wasReverted() {
 		return false;
 	}
+	
+	public EList eAdapters()
+	  {
+	    if (eAdapters == null)
+	    {
+	      eAdapters =  new ESynchronizedAdapterList(this);
+	    }
+	    return eAdapters;
+	  }
+
+
+	public void eNotify(Notification notification) {
+		synchronized (eAdapters()) {
+			super.eNotify(notification);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
index 685181c..d36e3cf 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
@@ -171,7 +171,7 @@
 
 	public Translator(String domNameAndPath, EStructuralFeature aFeature, EClass eClass) {
 		this(domNameAndPath, aFeature);
-		setEMFClass(eClass);
+		setEMFClass(emfClass);
 	}
 
 	public Translator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath path) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
index a404cea..2b6ac51 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
@@ -167,6 +167,9 @@
 	public static void unload(EObject root) {
 		Resource res = root.eResource();
 		EObject container = root.eContainer();
+		/* Making sure the proxy is created first before unloading */
+		if (root != null && res != null)
+			becomeProxy(root, res);
 		if (container == null)
 			if (res != null)
 				res.getContents().remove(root);
@@ -175,8 +178,7 @@
 				if (feature != null)
 					eUnsetOrRemove(container, feature, root);
 			}
-		if (root != null && res != null)
-			becomeProxy(root, res);
+		
 	}
 
 	/**
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
index f89b747..d5d9e9a 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Workbench Edit Plug-in
 Bundle-SymbolicName: org.eclipse.wst.common.emfworkbench.integration; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.internal.emfworkbench;x-internal:=true,
- org.eclipse.wst.common.internal.emfworkbench.edit;x-internal:=true,
- org.eclipse.wst.common.internal.emfworkbench.integration;x-internal:=true,
- org.eclipse.wst.common.internal.emfworkbench.validateedit;x-internal:=true
+Export-Package: .,
+ org.eclipse.wst.common.internal.emfworkbench,
+ org.eclipse.wst.common.internal.emfworkbench.edit,
+ org.eclipse.wst.common.internal.emfworkbench.integration,
+ org.eclipse.wst.common.internal.emfworkbench.validateedit
 Require-Bundle: org.eclipse.wst.common.frameworks,
  org.eclipse.jem.util,
  org.eclipse.emf.edit,
@@ -19,6 +20,5 @@
  org.eclipse.core.resources,
  org.eclipse.xsd,
  org.eclipse.wst.validation,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.core.expressions
+ org.eclipse.wst.common.project.facet.core
 Eclipse-AutoStart: true
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.xml b/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.xml
index adb8868..f27b788 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.xml
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.xml
@@ -24,14 +24,4 @@
         selectionType="org.eclipse.emf.ecore.EObject"/>
    </extension>
    
-   <extension point="org.eclipse.core.expressions.propertyTesters">
-    <propertyTester
-      id="org.eclipse.wst.common.internal.emfworkbench.EmfPackagePropertyTester"
-      type="org.eclipse.emf.ecore.EObject"
-      namespace="org.eclipse.wst.common.emfworkbench.integration"
-      properties="emfPackage"
-      class="org.eclipse.wst.common.internal.emfworkbench.EmfPackagePropertyTester">
-    </propertyTester>
-  </extension>
-   
 </plugin>
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFAdapterFactory.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFAdapterFactory.java
new file mode 100644
index 0000000..546c695
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFAdapterFactory.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 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
+ *******************************************************************************/
+/*
+ * Created on Feb 25, 2004
+ *  
+ */
+package org.eclipse.wst.common.internal.emfworkbench;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+
+/**
+ * @author mdelder
+ *  
+ */
+public class EMFAdapterFactory implements IAdapterFactory {
+
+	protected static final Class IPROJECT_CLASS = IProject.class;
+	protected static final Class IRESOURCE_CLASS = IResource.class;
+	protected static final Class IFILE_CLASS = IFile.class;
+	protected static final Class EOBJECT_CLASS = EObject.class;
+
+	/**
+	 *  
+	 */
+	public EMFAdapterFactory() {
+		super();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	public Object getAdapter(Object adaptableObject, Class adapterType) {
+		if (adaptableObject instanceof EObject) {
+			if (adapterType == IFILE_CLASS || adapterType == IRESOURCE_CLASS)
+				return WorkbenchResourceHelper.getFile((EObject) adaptableObject);
+			else if (adapterType == IPROJECT_CLASS)
+				return ProjectUtilities.getProject((EObject) adaptableObject);
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class[] getAdapterList() {
+		return new Class[]{IPROJECT_CLASS, IRESOURCE_CLASS, IFILE_CLASS};
+	}
+
+}
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EmfPackagePropertyTester.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EmfPackagePropertyTester.java
deleted file mode 100644
index c685199..0000000
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EmfPackagePropertyTester.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.eclipse.wst.common.internal.emfworkbench;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.emf.ecore.EObject;
-
-public class EmfPackagePropertyTester extends PropertyTester {
-
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if (receiver == null || !(receiver instanceof EObject) || expectedValue == null || !(expectedValue instanceof String))
-			return false;
-		
-		EObject eObject = (EObject) receiver;
-		String emfPackage = (String)expectedValue;
-		return emfPackage.equals(eObject.eClass().getEPackage().getNsURI());
-	}
-
-}
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
index 0ef3ce8..dda3581 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
@@ -73,6 +73,8 @@
 		private IFile file;
 		private long synchronizationStamp;
 		protected ResourceSet previousResourceSet;
+		public static final int FILE_NOT_LOADED = 0;
+		public static final int FILE_INACCESSIBLE = -1;
 
 		public boolean isAdapterForType(Object type) {
 			return ADAPTER_KEY.equals(type);
@@ -102,14 +104,14 @@
 		 */
 		private void handleURIChanged() {
 			file = null;
-			synchronizationStamp = 0;
+			synchronizationStamp = FILE_NOT_LOADED;
 		}
 
 		public IFile getFile() {
 			//First test to see if we should reset the file.
 			if (file != null && (!file.isAccessible() || previousResourceSet != getResourceSet())) {
 				file = null;
-				synchronizationStamp = 0;
+				synchronizationStamp = FILE_NOT_LOADED;
 			}
 			if (file == null) {
 				if (isPlatformResourceURI(getURI())) {
@@ -118,6 +120,9 @@
 					//we should not be here anymore.
 					file = internalGetFile(getResource());
 				}
+				if(null!= file && !file.isAccessible()){
+					synchronizationStamp = FILE_INACCESSIBLE;
+				}
 				previousResourceSet = getResourceSet();
 			}
 			return file;
@@ -152,7 +157,7 @@
 				return true;
 			if (!getFile().isSynchronized(IResource.DEPTH_ZERO))
 				return false;
-			if (synchronizationStamp == 0)
+			if (synchronizationStamp == FILE_NOT_LOADED)
 				return true;
 			return synchronizationStamp == computeModificationStamp(getFile());
 
@@ -176,7 +181,7 @@
 
 		public void handleUnloaded() {
 			file = null;
-			synchronizationStamp = 0;
+			synchronizationStamp = FILE_NOT_LOADED;
 		}
 
 		public void handleLoaded() {
@@ -222,7 +227,7 @@
 
 	public static long getSynchronizationStamp(ReferencedResource res) {
 		FileAdapter adapter = getFileAdapter(res);
-		return adapter == null ? 0 : adapter.getSynchronizationStamp();
+		return adapter == null ? FileAdapter.FILE_NOT_LOADED : adapter.getSynchronizationStamp();
 	}
 
 	public static void setSynhronizationStamp(ReferencedResource res, long stamp) {
@@ -244,7 +249,7 @@
 	public static void cacheSynchronizationStamp(ReferencedResource refResource) {
 		if (refResource != null) {
 			FileAdapter adapter = getFileAdapter(refResource);
-			if (adapter != null && adapter.getSynchronizationStamp() <= 0)
+			if (adapter != null && adapter.getSynchronizationStamp() <= FileAdapter.FILE_NOT_LOADED)
 				adapter.setSynchronizationStamp(computeModificationStamp(refResource));
 		}
 	}
@@ -255,12 +260,15 @@
 
 	public static long computeModificationStamp(ReferencedResource resource) {
 		FileAdapter adapter = getFileAdapter(resource);
-		return adapter == null ? 0 : computeModificationStamp(adapter.getFile());
+		return adapter == null ? FileAdapter.FILE_NOT_LOADED : computeModificationStamp(adapter.getFile());
 	}
 
 	public static long computeModificationStamp(IFile file) {
 		if (file == null)
-			return 0;
+			return FileAdapter.FILE_NOT_LOADED;
+		if(!file.isAccessible()){
+			return FileAdapter.FILE_INACCESSIBLE;
+		}
 		long currentStamp = file.getModificationStamp();
 		IPath path = file.getLocation();
 		if (path != null)
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EMFWorkbenchEditPlugin.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EMFWorkbenchEditPlugin.java
index 234fe1d..e32854b 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EMFWorkbenchEditPlugin.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EMFWorkbenchEditPlugin.java
@@ -13,11 +13,15 @@
 import java.io.FileNotFoundException;
 
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil;
+import org.eclipse.wst.common.internal.emfworkbench.EMFAdapterFactory;
 import org.eclipse.wst.common.internal.emfworkbench.PassthruResourceSet;
 import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
 import org.osgi.framework.BundleContext;
@@ -64,6 +68,9 @@
 			}
 		});
 		WorkbenchResourceHelper.initializeFileAdapterFactory();
+
+		IAdapterManager manager = Platform.getAdapterManager();
+		manager.registerAdapters(new EMFAdapterFactory(), EObject.class);
 	}
 
 	public static ResourceSet createIsolatedResourceSet(IProject project) {
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
index 35a3474..aaf902e 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
@@ -29,6 +29,11 @@
 import org.eclipse.core.resources.IResourceChangeEvent;
 import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.WrappedException;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -120,12 +125,32 @@
 		}
 	}
 
-	protected void acceptDelta(IResourceChangeEvent event) {
-		IResourceDelta delta = event.getDelta();
-		// search for changes to any projects using a visitor
+	protected void acceptDelta(final IResourceChangeEvent event) {
+
+		final IResourceDelta delta = event.getDelta();
+
+		if (ResourcesPlugin.getWorkspace().isTreeLocked()) {
+			primAcceptDelta(delta, event);
+		}
+		else {
+			IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+				public void run(IProgressMonitor monitor) throws CoreException {
+					primAcceptDelta(delta, event);
+				}
+			};
+			try {
+				ResourcesPlugin.getWorkspace().run(runnable, project, IWorkspace.AVOID_UPDATE, null);
+			} catch (CoreException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+	}
+
+	private void primAcceptDelta(IResourceDelta delta, IResourceChangeEvent event) {
 		if (delta != null) {
 			try {
-				delta.accept(this);
+				delta.accept(ResourceSetWorkbenchEditSynchronizer.this);
 			} catch (Exception e) {
 				Logger.getLogger().logError(e);
 			}
@@ -255,6 +280,7 @@
 	}
 
 	protected Resource getResource(IFile aFile) {
+		
 		return resourceSet.getResource(URI.createPlatformResourceURI(aFile.getFullPath().toString()), false);
 	}
 
diff --git a/plugins/org.eclipse.wst.common.environment/.options b/plugins/org.eclipse.wst.common.environment/.options
index 07f6325..b293015 100644
--- a/plugins/org.eclipse.wst.common.environment/.options
+++ b/plugins/org.eclipse.wst.common.environment/.options
@@ -19,7 +19,3 @@
 
 # Turn on web service ant tracing
 org.eclipse.wst.common.environment/trace/ws_ant=true
-
-# Turn on web service detailed command engine tracing
-org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine=true
-
diff --git a/plugins/org.eclipse.wst.common.environment/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.environment/META-INF/MANIFEST.MF
index 4ba1309..9966579 100644
--- a/plugins/org.eclipse.wst.common.environment/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.environment/META-INF/MANIFEST.MF
@@ -2,17 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.environment
-Bundle-Version: 1.0.100.qualifier
-Bundle-Activator: org.eclipse.wst.common.internal.environment.plugin.EnvironmentPlugin
+Bundle-Version: 1.0.0.qualifier
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.environment,
- org.eclipse.wst.common.environment.uri,
- org.eclipse.wst.common.internal.environment.eclipse;x-internal:=true,
- org.eclipse.wst.common.internal.environment.plugin;x-internal:=true,
- org.eclipse.wst.common.internal.environment.relative;x-internal:=true,
- org.eclipse.wst.common.internal.environment.uri.file;x-internal:=true
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.osgi.util
+Export-Package: org.eclipse.wst.common.environment,
+ org.eclipse.wst.common.environment.uri
 Bundle-Vendor: %providerName
-Eclipse-AutoStart: true 
diff --git a/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/eclipse/EclipseLog.java b/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/eclipse/EclipseLog.java
index e1d75e6..ef48ab5 100644
--- a/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/eclipse/EclipseLog.java
+++ b/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/eclipse/EclipseLog.java
@@ -1,34 +1,28 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004 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
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060221   100364 pmoogk@ca.ibm.com - Peter Moogk
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.wst.common.internal.environment.eclipse;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.wst.common.environment.ILog;
-import org.eclipse.wst.common.internal.environment.plugin.EnvironmentPlugin;
 
 public class EclipseLog implements org.eclipse.wst.common.environment.ILog 
 {
-	private org.eclipse.core.runtime.ILog logger;
-	
-	public EclipseLog() 
-	{
-		Plugin plugin = EnvironmentPlugin.getInstance();
-		
-    logger = plugin.getLog();
+//	private Logger logger;
+	public EclipseLog() {
+		/*
+		logger = Logger.getLogger("org.eclipse.wst.command.env");
+		// logger.setLogFileName("env.log");
+		logger.setLevel(Level.INFO); // log all levels for now
+		*/
 	}
 	
 	/**
@@ -51,46 +45,28 @@
 	 * @see org.eclipse.wst.common.environment.ILog#log(int, int, java.lang.Object, java.lang.String, java.lang.Object)
 	 */
 	public void log(int severity, int messageNum, Object caller,
-			String method, Object object) 
-	{
+			String method, Object object) {
 		
 		if (isEnabled()) {
 			switch (severity) {
 				case ILog.ERROR :
-				{
 					if (isEnabled("error"))
-					{
-						String message = getMessageNumString(messageNum) + "E "
+						System.out.println(getMessageNumString(messageNum) + "E "
 							+ caller + "::" + method + ": object="
-							+ object;
-						log( severity, message, null );
-					}
+							+ object);
 					break;
-				}
-				
 				case ILog.WARNING :
-				{
 					if (isEnabled("warning"))
-					{
-						String message = getMessageNumString(messageNum)
+						System.out.println(getMessageNumString(messageNum)
 								+ "W " + caller + "::" + method
-								+ ": object=" + object;
-						log( severity, message, null );
-					}
+								+ ": object=" + object);
 					break;
-				}
-				
 				case ILog.INFO :
-				{
 					if (isEnabled("info"))
-					{
-						String message = getMessageNumString(messageNum) + "I "
+						System.out.println(getMessageNumString(messageNum) + "I "
 								+ caller + "::" + method + ": object="
-								+ object;
-						log( severity, message, null );
-					}
+								+ object);
 					break;
-				}
 			}
 		}
 		
@@ -116,27 +92,21 @@
 	 * @see org.eclipse.wst.common.environment.ILog#log(int, java.lang.String, int, java.lang.Object, java.lang.String, java.lang.Object)
 	 */
 	public void log(int severity, String option, int messageNum,
-			Object caller, String method, Object object) 
-	{
+			Object caller, String method, Object object) {
 		if (isEnabled(option))
-		{
-			String message = getMessageNumString(messageNum) + "I " + caller
-					+ "::" + method + ": object=" + object;
-			log(severity, message, null );
-		}	
+			System.out.println(getMessageNumString(messageNum) + "I " + caller
+					+ "::" + method + ": object=" + object);
 	}
 	
 	/**
 	 * @see org.eclipse.wst.common.environment.ILog#log(int, java.lang.String, int, java.lang.Object, java.lang.String, java.lang.Throwable)
 	 */
 	public void log(int severity, String option, int messageNum,
-			Object caller, String method, Throwable throwable) 
-	{
-		if (isEnabled(option)) 
-		{
-			String message = getMessageNumString(messageNum) + "I " + caller
-					+ "::" + method;
-			log( severity, message, throwable );
+			Object caller, String method, Throwable throwable) {
+		if (isEnabled(option)) {
+			System.out.println(getMessageNumString(messageNum) + "I " + caller
+					+ "::" + method);
+			throwable.printStackTrace();
 		}
 	}
 	
@@ -144,9 +114,8 @@
 	 * @see org.eclipse.wst.common.environment.ILog#log(int, java.lang.String, int, java.lang.Object, java.lang.String, org.eclipse.core.runtime.IStatus)
 	 */
 	public void log(int severity, String option, int messageNum,
-			Object caller, String method, IStatus status) 
-	{
-		logger.log( status );
+			Object caller, String method, IStatus status) {
+		log(severity, option, messageNum, caller, method, (Object)status);
 	}
 	
 	private String getMessageNumString(int messageNum) {
@@ -156,10 +125,4 @@
 		messageNumString += (new Integer(messageNum)).toString();
 		return messageNumString;
 	}
-	
-	private void log( int severity, String message, Throwable exc )
-	{
-		Status status = new Status( severity, "id", 0, message, exc );
-		logger.log( status );
-	}
 }
diff --git a/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/plugin/EnvironmentPlugin.java b/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/plugin/EnvironmentPlugin.java
deleted file mode 100644
index 4330459..0000000
--- a/plugins/org.eclipse.wst.common.environment/src/org/eclipse/wst/common/internal/environment/plugin/EnvironmentPlugin.java
+++ /dev/null
@@ -1,45 +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
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060221   100364 pmoogk@ca.ibm.com - Peter Moogk
- *******************************************************************************/
-package org.eclipse.wst.common.internal.environment.plugin;
-
-
-import org.eclipse.core.runtime.Plugin;
-
-/**
-* This is the plugin class for the org.eclipse.wst.common.internal.environment.plugin.EnvironmentPlugin.
-*/
-public class EnvironmentPlugin extends Plugin
-{	
-	/**
-	 * The instance of this plugin.
-	 */
-	private static EnvironmentPlugin instance;
-
-	/**
-	 * Constructor for use by the Eclipse platform only.
-	 */
-	public EnvironmentPlugin()
-	{
-		super();
-		instance = this;
-	}
-	
-	/**
-	 * Returns the instance of this plugin.
-	 */
-	static public EnvironmentPlugin getInstance ()
-	{
-		return instance;
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
index f921c14..dd735e1 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
@@ -3,14 +3,13 @@
 Bundle-Name: WTP UI Plug-in
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.wst.common.frameworks.ui; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.frameworks.internal.datamodel.ui;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.dialog.ui;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.eclipse.ui;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.operation.extensionui;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.ui;x-internal:=true
+Export-Package: .,
+ org.eclipse.wst.common.frameworks.internal.datamodel.ui,
+ org.eclipse.wst.common.frameworks.internal.operation.extensionui,
+ org.eclipse.wst.common.frameworks.internal.ui
 Require-Bundle: org.eclipse.ui.ide,
  org.eclipse.core.resources,
  org.eclipse.ui,
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties b/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
index ca89d48..26c45ec 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
@@ -30,7 +30,7 @@
 WizardPageExtensionManager_UI_3=Editor does not allow page insertions
 WizardPageExtensionManager_UI_4=Parent Class Not Found Error: {0} \r\n for attribute: {1} in plugin {2} \r\nPage not created
 Delete_UI_0=Delete
-Name_=Project name:
+Name_=Project Name:
 Browse_=Browse...
 Project_location_=Project Location:
 MULTIPLE_MODULE_PREF_TEXT=Allow Multiple modules per project
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
index a97c5a4..de7e0e2 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
@@ -234,15 +234,11 @@
 	}
 
 	protected void storeDefaultSettings() {
-		pageGroupManager.storeDefaultSettings(this);
+		IWizardPage[] pages = getPages();
+		for (int i = 0; i < pages.length; i++)
+			storeDefaultSettings(pages[i], i);
 	}
 
-	public void storeDefaultSettings(IWizardPage page){
-		if (page instanceof DataModelWizardPage)
-			((DataModelWizardPage) page).storeDefaultSettings();
-	}
-	
-	
 	/**
 	 * Subclasses may override if they need to do something special when storing the default
 	 * settings for a particular page.
@@ -251,7 +247,8 @@
 	 * @param pageIndex
 	 */
 	protected void storeDefaultSettings(IWizardPage page, int pageIndex) {
-		storeDefaultSettings(page);
+		if (page instanceof DataModelWizardPage)
+			((DataModelWizardPage) page).storeDefaultSettings();
 	}
 
 	/**
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/NewProjectGroup.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/NewProjectGroup.java
index 0296b41..cac9244 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/NewProjectGroup.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/NewProjectGroup.java
@@ -103,7 +103,7 @@
 		projectGroup.setLayout(layout);
 		projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 		projectGroup.setFont(font);
-		projectGroup.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectContentsLabel);
+		projectGroup.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectContentsGroupLabel);
 
 		final Button useDefaultsButton = new Button(projectGroup, SWT.CHECK | SWT.RIGHT);
 		useDefaultsButton.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_useDefaultLabel);
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/PageGroupManager.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/PageGroupManager.java
index 458e469..b754528 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/PageGroupManager.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/PageGroupManager.java
@@ -27,7 +27,6 @@
 import org.eclipse.wst.common.frameworks.internal.DataModelManager;
 import org.eclipse.wst.common.frameworks.internal.OperationListener;
 import org.eclipse.wst.common.frameworks.internal.OperationManager;
-import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.IDMPageGroup;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.IDMPageGroupHandler;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.IDMPageHandler;
@@ -160,10 +159,10 @@
 		}
 	}
 
-	public void reset() {
+	public void reset(){
 		pageGroupStack.clear();
 	}
-
+	
 	public IWizardPage getCurrentPage() {
 		IWizardPage page = null;
 
@@ -171,7 +170,7 @@
 			StackEntry topEntry = (StackEntry) pageGroupStack.peek();
 			int pageIndex = topEntry.getTopPageIndex();
 
-			page = pageIndex == -1 ? null : (IWizardPage) topEntry.pageGroupEntry.getPages().get(pageIndex);
+			page = pageIndex == -1 ? null : (IWizardPage)topEntry.pageGroupEntry.getPages().get(pageIndex);
 		}
 
 		return page;
@@ -426,8 +425,8 @@
 				List pages = pageGroupEntry.getPages();
 
 				int pageIndex = getTopPageIndex();
-				String pageId = pageIndex == -1 ? null : ((IWizardPage) pages.get(pageIndex)).getName();
-				String expectedId = pageIndex + 1 >= pages.size() ? null : ((IWizardPage) pages.get(pageIndex + 1)).getName();
+				String pageId = pageIndex == -1 ? null : ((IWizardPage)pages.get(pageIndex)).getName();
+				String expectedId = pageIndex + 1 >= pages.size() ? null : ((IWizardPage)pages.get(pageIndex + 1)).getName();
 				String newPageId = null;
 
 				try {
@@ -549,7 +548,7 @@
 			int result = -1;
 
 			List pages = getPages();
-
+			
 			if (pages.isEmpty() || pageId == null)
 				return -1;
 
@@ -573,7 +572,7 @@
 
 			List pages = getPages();
 			for (int index = 0; index < pages.size(); index++) {
-				if (((IWizardPage) pages.get(index)).getName().equals(pageId)) {
+				if (((IWizardPage)pages.get(index)).getName().equals(pageId)) {
 					result = index;
 					break;
 				}
@@ -581,24 +580,5 @@
 
 			return result;
 		}
-
-		public boolean isInitialized() {
-			return initialized;
-		}
-	}
-
-	public void storeDefaultSettings(DataModelWizard wizard) {
-		Iterator pageGroups = groupTable.values().iterator();
-		while (pageGroups.hasNext()) {
-			PageGroupEntry pageGroup = (PageGroupEntry) pageGroups.next();
-			if (pageGroup.isInitialized()) {
-				Iterator pages = pageGroup.getPages().iterator();
-				while (pages.hasNext()) {
-					IWizardPage page = (IWizardPage) pages.next();
-					wizard.storeDefaultSettings(page);
-				}
-			}
-		}
-
 	}
 }
diff --git a/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
index a10a9e4..6f695f4 100644
--- a/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.wst.common.frameworks
 Bundle-SymbolicName: org.eclipse.wst.common.frameworks; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin
 Bundle-Vendor: %provider
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.frameworks.datamodel,
+Export-Package: .,
+ org.eclipse.wst.common.frameworks.datamodel,
  org.eclipse.wst.common.frameworks.datamodel.properties,
- org.eclipse.wst.common.frameworks.internal;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.activities;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.datamodel;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.enablement;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.enablement.nonui;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.operations;x-internal:=true,
- org.eclipse.wst.common.frameworks.internal.plugin;x-internal:=true
+ org.eclipse.wst.common.frameworks.internal,
+ org.eclipse.wst.common.frameworks.internal.activities,
+ org.eclipse.wst.common.frameworks.internal.datamodel,
+ org.eclipse.wst.common.frameworks.internal.enablement,
+ org.eclipse.wst.common.frameworks.internal.enablement.nonui,
+ org.eclipse.wst.common.frameworks.internal.operations,
+ org.eclipse.wst.common.frameworks.internal.plugin
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.core.runtime,
  org.eclipse.core.commands,
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/datamodel/IDataModel.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/datamodel/IDataModel.java
index 7c37928..1d4a14e 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/datamodel/IDataModel.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/datamodel/IDataModel.java
@@ -59,6 +59,7 @@
  * 
  * @see org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider
  * @see org.eclipse.wst.common.frameworks.datamodel.DataModelFactory
+ * @see org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation
  * 
  * @since 1.0
  */
@@ -89,12 +90,14 @@
 	 * Returns the default operation to execute against this IDataModel.
 	 * </p>
 	 * <p>
-	 * An IDataModel implementor defines this in IDataModelProvider.
+	 * An IDataModel implementor defines this in IDataModelProvider. If the IDataModelProvider does
+	 * not define an operation, an empty operation will be returned; <code>null</code> will never
+	 * be returned.
 	 * </p>
 	 * 
 	 * @see IDataModelProvider#getDefaultOperation()
 	 * 
-	 * @return the default operation
+	 * @return the default operation or an empty operation; never <code>null</code>.
 	 */
 	public IDataModelOperation getDefaultOperation();
 
@@ -118,7 +121,7 @@
 	 * This method should not be called by clients.
 	 * </p>
 	 * 
-	 * @return a List of Objects adaptable to IProject
+	 * @return a List of Objects adaptable to IProject or an empty list; never <code>null</code>.
 	 * 
 	 * @see IDataModelProvider#getExtendedContext()
 	 */
@@ -178,8 +181,8 @@
 
 	/**
 	 * <p>
-	 * A convenience method for getting ints. If the property is set then this method is equavalent
-	 * to:
+	 * A convenience method for getting ints. If the property is set or has a default value then
+	 * this method is equavalent to:
 	 * </p>
 	 * <p>
 	 * <code>((Integer)getProperty(propertyName)).intValue();</code>
@@ -199,8 +202,8 @@
 
 	/**
 	 * <p>
-	 * A convenience method for getting booleans. If the property is set then this method is
-	 * equavalent to:
+	 * A convenience method for getting booleans. If the property is set or has a default value then
+	 * this method is equavalent to:
 	 * </p>
 	 * <p>
 	 * <code>((Boolean)getProperty(propertyName)).booleanValue();</code>
@@ -220,11 +223,11 @@
 
 	/**
 	 * <p>
-	 * A convenience method for getting Strings. If the property is set then this method is
-	 * equavalent to:
+	 * A convenience method for getting Strings. If the property is set or has a default value then
+	 * this method is equavalent to:
 	 * </p>
 	 * <p>
-	 * <code>(String)getProperty(propertyName)</code>
+	 * <code>(String)getProperty(propertyName);</code>
 	 * </p>
 	 * <p>
 	 * <code>""</code> is returned if a call to getProperty(propertyName) returns
@@ -242,7 +245,7 @@
 	 * {@link #getProperty(String)} will return the same propertyValue.
 	 * </p>
 	 * <p>
-	 * When a propertyValue other than <code>null</code> is set, then the property is considered
+	 * When a propertyValue other than <code>null</code> is set, the property is considered
 	 * "set" (see {@link #isPropertySet(String)}), conversly, a propertyValue of <code>null</code>
 	 * is considered "unset".
 	 * </p>
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/ProjectCreationDataModelProviderNew.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/ProjectCreationDataModelProviderNew.java
index eb3b29b..4c683c3 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/ProjectCreationDataModelProviderNew.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/ProjectCreationDataModelProviderNew.java
@@ -66,8 +66,10 @@
 			return Boolean.TRUE;
 		} else if (USER_DEFINED_LOCATION.equals(propertyName)) {
 			return ""; //$NON-NLS-1$
-		} else if (propertyName.equals(PROJECT_DESCRIPTION))
+		} else if (propertyName.equals(PROJECT_DESCRIPTION)){
 			return getProjectDescription();
+		}
+		
 		return super.getDefaultProperty(propertyName);
 	}
 
@@ -129,14 +131,14 @@
 		}
 		if (propertyName.equals(PROJECT_LOCATION) || propertyName.equals(PROJECT_NAME)) {
 			String projectName = getStringProperty(PROJECT_NAME);
-
+			
 			String projectLoc = ""; //$NON-NLS-1$
 			if( getBooleanProperty(USE_DEFAULT_LOCATION )){
 				projectLoc = getDefaultLocation();
 			}else{
 				projectLoc = getStringProperty(PROJECT_LOCATION);
 			}
-			return validateExisting(projectName, projectLoc);			
+			return validateExisting(projectName, projectLoc);
 		}
 		return OK_STATUS;
 	}
@@ -182,9 +184,9 @@
 		if (!status.isOK())
 			return status;
 		IProject project = ProjectUtilities.getProject( name );
-		if (project.exists()){
-			return WTPCommonPlugin.createErrorStatus(WTPCommonPlugin.getResourceString(WTPCommonMessages.PROJECT_EXISTS_SAMENAME_ERROR, new Object[]{name}));
-		}
+		if (project.exists())
+			return WTPCommonPlugin.createErrorStatus(WTPCommonPlugin.getResourceString(WTPCommonMessages.PROJECT_EXISTS_ERROR, new Object[]{name}));
+
 		if (!WTPPlugin.isPlatformCaseSensitive()) {
 			// now look for a matching case variant in the tree
 			IResource variant = ((Resource) project).findExistingResourceVariant(project.getFullPath());
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
index 9c59c3a..80f12da 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
@@ -48,5 +48,4 @@
     public static final String MODULE_EXISTS_ERROR = "38"; //$NON-NLS-1$
 	public static final String SOURCEFOLDER_EMPTY = "39"; //$NON-NLS-1$
 	public static final String WEBCONTENTFOLDER_EMPTY = "40"; //$NON-NLS-1$
-	public static final String PROJECT_EXISTS_SAMENAME_ERROR = "PROJECT_EXISTS_SAMENAME_ERROR"; //$NON-NLS-1$
 }
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonPlugin.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonPlugin.java
index c2a4934..377e7f9 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonPlugin.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonPlugin.java
@@ -74,14 +74,6 @@
 	public static IStatus createWarningStatus(String message) {
 		return createWarningStatus(message, null);
 	}
-	
-	/**
-	 * @param string
-	 * @return
-	 */
-	public static IStatus createCancelStatus(String message) {
-		return createCancelStatus(message, null);
-	}	
 
 	/**
 	 * @param string
@@ -98,14 +90,6 @@
 	public static IStatus createErrorStatus(String message, Throwable exception) {
 		return new Status(IStatus.ERROR, PLUGIN_ID, -1, message, exception);
 	}
-	
-	/**
-	 * @param string
-	 * @return
-	 */
-	public static IStatus createCancelStatus(String message, Throwable exception) {
-		return new Status(IStatus.CANCEL, PLUGIN_ID, -1, message, exception);
-	}	
 
 	/**
 	 * Returns the string from the plugin's resource bundle, or 'key' if not found.
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties b/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
index 5ac6350..f6db565 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
+++ b/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
@@ -50,4 +50,3 @@
 40=Enter Web content Folder
 41=Project names cannot end with white space.
 42=Resource already exists with a different case.
-PROJECT_EXISTS_SAMENAME_ERROR=A project already exists with this name.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
index ad9b58a..ba7acb1 100644
--- a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
@@ -3,18 +3,18 @@
 Bundle-Name: Modulecore Plug-in
 Bundle-Vendor: %provider
 Bundle-SymbolicName: org.eclipse.wst.common.modulecore; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.common.componentcore.internal.ModulecorePlugin
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.componentcore,
  org.eclipse.wst.common.componentcore.datamodel,
  org.eclipse.wst.common.componentcore.datamodel.properties,
- org.eclipse.wst.common.componentcore.internal;x-internal:=true,
- org.eclipse.wst.common.componentcore.internal.builder;x-internal:=true,
- org.eclipse.wst.common.componentcore.internal.impl;x-internal:=true,
- org.eclipse.wst.common.componentcore.internal.operation;x-internal:=true,
- org.eclipse.wst.common.componentcore.internal.resources;x-internal:=true,
- org.eclipse.wst.common.componentcore.internal.util;x-internal:=true,
+ org.eclipse.wst.common.componentcore.internal,
+ org.eclipse.wst.common.componentcore.internal.builder,
+ org.eclipse.wst.common.componentcore.internal.impl,
+ org.eclipse.wst.common.componentcore.internal.operation,
+ org.eclipse.wst.common.componentcore.internal.resources,
+ org.eclipse.wst.common.componentcore.internal.util,
  org.eclipse.wst.common.componentcore.resources
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.wst.common.frameworks,
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
index b8ab1ba..2d350b0 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
@@ -321,9 +321,7 @@
 
 	public IStatus validate(String propertyName) {
 		if (FACET_PROJECT_NAME.equals(propertyName)) {
-			//return validate(IProjectCreationPropertiesNew.PROJECT_NAME);
-			IDataModel projModel = model.getNestedModel(NESTED_PROJECT_DM);
-			return projModel.validateProperty(IProjectCreationPropertiesNew.PROJECT_NAME);			
+			return validate(IProjectCreationPropertiesNew.PROJECT_NAME);
 		}
 		return super.validate(propertyName);
 	}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/ICreateReferenceComponentsDataModelProperties.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/ICreateReferenceComponentsDataModelProperties.java
index 2da4f50..78f3cb2 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/ICreateReferenceComponentsDataModelProperties.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/ICreateReferenceComponentsDataModelProperties.java
@@ -15,7 +15,7 @@
     /**
      * Required, type IVirtualComponent
      */	
-	public static final String SOURCE_COMPONENT = "ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT"; //$NON-NLS-1$
+	public static final String SOURCE_COMPONENT = "ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT";
 	
     /**
      * Required, type ArrayList, ArrayList  should contain list of IVirtualComponent
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
index 57cd781..6d8552a 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
@@ -303,16 +303,4 @@
 		}
 		
 	}
-	
-	public void dispose() {
-		//Remove the listener from the faceted project
-		try {
-			IFacetedProject facetProj = ProjectFacetsManager.create(getComponentProject());
-			if (facetProj != null)
-				facetProj.removeListener(this);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		super.dispose();
-	}
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
index 760f1e8..2fdfb39 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
@@ -1,7 +1,7 @@
 /**
  * <copyright></copyright>
  * 
- * $Id: ComponentResource.java,v 1.4 2006/01/11 18:40:31 cbridgha Exp $
+ * $Id: ComponentResource.java,v 1.3.2.1 2006/01/10 19:16:57 cbridgha Exp $
  */
 package org.eclipse.wst.common.componentcore.internal;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
index 4f3dd35..011f2c7 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
@@ -1,19 +1,21 @@
 /*******************************************************************************
- * 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
- *******************************************************************************/
+ * 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
+ ******************************************************************************/
 package org.eclipse.wst.common.componentcore.internal;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -25,6 +27,8 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.componentcore.datamodel.ProjectMigratorDataModelProvider;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IProjectMigratorDataModelProperties;
@@ -34,128 +38,198 @@
 import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 
+
 public class ModuleMigratorManager {
 
 	private static HashMap managerCache = new HashMap();
+
 	private static HashSet migrated = new HashSet();
+
 	private boolean migrating;
+
 	private HashSet moved = new HashSet();
+
 	public ModuleMigratorManager() {
 		super();
 	}
+
 	public static ModuleMigratorManager getManager(IProject proj) {
-		ModuleMigratorManager manager = (ModuleMigratorManager)managerCache.get(proj);
+		ModuleMigratorManager manager = (ModuleMigratorManager) managerCache.get(proj);
 		if (manager == null) {
 			manager = new ModuleMigratorManager();
-			managerCache.put(proj,manager);
+			managerCache.put(proj, manager);
 		}
 		return manager;
 	}
+	
+	
+
 	private void migrateComponentsIfNecessary(IProject project, boolean multiComps) {
 		if (multiComps) {
 			setupAndMigrateComponentProject(project);
 		} else {
-	        	  
-	        	  IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
-			      for (int i = 0; i < projects.length; i++) {
-						IProject proj = projects[i];
-						setupAndMigrateComponentProject(proj);
-			      }
+			IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
+			for (int i = 0; i < projects.length; i++) {
+				IProject proj = projects[i];
+				setupAndMigrateComponentProject(proj);
+			}
 		}
-						
-		
 	}
+
+	private IStatus validateEdit(IResource aRes) {
+
+		ISchedulingRule validateEditRule = null;
+		IStatus status;
+		IFile[] validateFiles;
+		try {
+			if (aRes.getType() == IResource.FILE )
+				validateFiles = new IFile[] {(IFile)aRes};
+			else
+				validateFiles = getAllContainerFiles((IContainer)aRes);
+			IWorkspace workspace = aRes.getWorkspace();
+			validateEditRule = workspace.getRuleFactory().validateEditRule(validateFiles);
+			Platform.getJobManager().beginRule(validateEditRule, null);
+			status = workspace.validateEdit(validateFiles, null);
+			if (!status.isOK()) {
+				StringBuffer validateString = new StringBuffer();
+				for (int i = 0; i < validateFiles.length; i++) {
+					IFile file = validateFiles[i];
+					validateString.append('\n');
+					validateString.append(file.getProjectRelativePath());
+				}
+				Logger.getLogger().logWarning("During project migration on: " + aRes.getProject() + " validate edit failed on files: " + validateString.toString());
+			}
+			} finally {
+			if (validateEditRule != null) {
+				Platform.getJobManager().endRule(validateEditRule);
+			}
+		}
+		return status;
+
+	}
+
 	private void setupAndMigrateComponentProject(IProject proj) {
 		migrated.add(proj);
 		IDataModel dm = DataModelFactory.createDataModel(new ProjectMigratorDataModelProvider());
-		dm.setStringProperty(IProjectMigratorDataModelProperties.PROJECT_NAME,proj.getName());
+		dm.setStringProperty(IProjectMigratorDataModelProperties.PROJECT_NAME, proj.getName());
 		try {
-			dm.getDefaultOperation().execute(null,null);
+			dm.getDefaultOperation().execute(null, null);
 		} catch (ExecutionException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 	}
+
 	public synchronized void migrateOldMetaData(IProject aProject, final boolean multiComps) throws CoreException {
 		migrating = true;
 		IWorkspaceRunnableWithStatus workspaceRunnable = new IWorkspaceRunnableWithStatus(aProject) {
+
 			public void run(IProgressMonitor pm) throws CoreException {
-				IProject aProj = (IProject)this.getInfo();
+				IProject aProj = (IProject) this.getInfo();
 				try {
 					if (aProj.isAccessible() && ModuleCoreNature.isFlexibleProject(aProj)) {
 						if (aProj.findMember(".wtpmodules") != null) {
 							if (!moved.contains(aProj))
 								moveOldMetaDataFile();
-						} else moved.add(aProj);
-						if (needsComponentMigration(aProj,multiComps))
-							migrateComponentsIfNecessary(aProj,multiComps);
+						} else
+							moved.add(aProj);
+						if (needsComponentMigration(aProj, multiComps))
+							migrateComponentsIfNecessary(aProj, multiComps);
 					}
 				} finally {
 					migrating = false;
 				}
 			}
 
-			private boolean needsComponentMigration(IProject aProj,boolean multiComps) throws CoreException {
-				
-			boolean needs = !migrated.contains(aProj);
-			if (multiComps)
-				return (needs && multiComps);
-			else
-				return (aProj.findMember(".settings/.component") != null) && 
-						(ProjectFacetsManager.create(aProj) == null) && needs;
+			private boolean needsComponentMigration(IProject aProj, boolean multiComps) throws CoreException {
+
+				boolean needs = !migrated.contains(aProj);
+				if (multiComps)
+					return (needs && multiComps);
+				else
+					return (aProj.findMember(".settings/.component") != null) && (ProjectFacetsManager.create(aProj) == null) && needs;
 			}
 		};
-		
-		ResourcesPlugin.getWorkspace().run(workspaceRunnable, null,IWorkspace.AVOID_UPDATE,null);
-		
-		
-		
-		
+
+		ResourcesPlugin.getWorkspace().run(workspaceRunnable, null, IWorkspace.AVOID_UPDATE, null);
 	}
+
 	private void moveMetaDataFile(IProject project) {
 		IResource oldfile = project.findMember(".wtpmodules");
 		if (oldfile != null && oldfile.exists()) {
-			
+
 			try {
-					IFolder settingsFolder = project.getFolder(".settings");
-					if (!settingsFolder.exists())
-						settingsFolder.create(true,true,null);
-					oldfile.move(new Path(".settings/.component"),true,null);
+				if (!validateEdit((IFile)oldfile).isOK()) return;
+				IFolder settingsFolder = project.getFolder(".settings");
+				if (!settingsFolder.exists())
+					settingsFolder.create(true, true, null);
+				oldfile.move(new Path(".settings/.component"), true, null);
 			} catch (CoreException e) {
-				Platform.getLog(ModulecorePlugin.getDefault().getBundle()).log(new Status(IStatus.ERROR, ModulecorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
+				Platform.getLog(ModulecorePlugin.getDefault().getBundle()).log(
+						new Status(IStatus.ERROR, ModulecorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
 			}
 		}
 	}
+
 	private void moveOldMetaDataFile() {
-//		WorkspaceJob job = new WorkspaceJob("Migrating metadata")
-//	      {
-//	        
-//	        public IStatus runInWorkspace(IProgressMonitor monitor)
-//	        {
-	          try
-	          {
-	        	IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
-	      		for (int i = 0; i < projects.length; i++) {
-	      			IProject project = projects[i];
-	      			if (!moved.contains(project))
-		      			moveMetaDataFile(project);
-	      				IFolder depFolder = project.getFolder(".deployables");
-	      				if (depFolder.exists())
-	      					depFolder.delete(true,null);
-		      			project.refreshLocal(IResource.DEPTH_INFINITE,null);
-		      			moved.add(project);
-	      			}
-	      		
-	          } catch (Exception e) {
-	          }
-//	          return Status.OK_STATUS;
-//	        }
-//	      };
-//	      job.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
-//	      job.schedule();
+
+		try {
+			IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
+			for (int i = 0; i < projects.length; i++) {
+				IProject project = projects[i];
+				if (!moved.contains(project))
+					moveMetaDataFile(project);
+				IFolder depFolder = project.getFolder(".deployables");
+				if (depFolder.exists()) {
+					if (!validateEdit(depFolder).isOK()) return;
+					depFolder.delete(true, null);
+				}
+				project.refreshLocal(IResource.DEPTH_INFINITE, null);
+				moved.add(project);
+			}
+
+		} catch (Exception e) {
+		}
+
 	}
+
 	protected boolean isMigrating() {
 		return migrating;
 	}
 
+	private List collectFiles(IResource[] members, List result) throws CoreException {
+		// recursively collect files for the given members
+		for (int i = 0; i < members.length; i++) {
+			IResource res = members[i];
+			if (res instanceof IFolder) {
+				collectFiles(((IFolder) res).members(), result);
+			} else if (res instanceof IFile) {
+				result.add(res);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * List of all files in the project.
+	 * <p>
+	 * Note: A more efficient way to do this is to use {@link IResource#accept(org.eclipse.core.resources.IResourceProxyVisitor, int)}
+	 * 
+	 * @param 1.0.0
+	 * @return list of files in the project
+	 * 
+	 * @see IResource#accept(org.eclipse.core.resources.IResourceProxyVisitor, int)
+	 * @since 1.0.0
+	 */
+	private IFile[] getAllContainerFiles(IContainer container) {
+		List result = new ArrayList();
+		if (container == null)
+			return new IFile[0];
+		try {
+			result = collectFiles(container.members(), result);
+		} catch (CoreException e) {
+		}
+		return (IFile[])result.toArray(new IFile[result.size()]);
+	}
+
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
index 9427d22..132f488 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
@@ -120,7 +120,7 @@
 		}
 		return modelRoot;
 	}
-    
+	
 	/**
 	 * This method is used to remove spurrious redundant entries from the .component file
 	 * 
@@ -185,9 +185,10 @@
 			} finally {
 				res = (XMIResource) getPrimaryResource();
 				if ((res == null) || (res != null && res.getContents().isEmpty())) {
-					if (res != null)
+					if (res != null) {
 						removeResource(res);
-					return null;
+					}
+					res = null;
 				}
 			}
 		}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
index e6b15d4..d173b49 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
@@ -79,7 +79,7 @@
 
 	public static final Class ADAPTER_TYPE = StructureEdit.class;
 
-	static String MODULE_META_FILE_NAME = ".settings/.component"; //$NON-NLS-1$
+	public static String MODULE_META_FILE_NAME = ".settings/.component"; //$NON-NLS-1$
 
 	private final static ComponentcoreFactory COMPONENT_FACTORY = ComponentcoreFactory.eINSTANCE;
 	private static final ComponentResource[] NO_RESOURCES = new ComponentResource[0];
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentCoreURIConverter.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentCoreURIConverter.java
index 1b94880..217de91 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentCoreURIConverter.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentCoreURIConverter.java
@@ -121,9 +121,9 @@
 			IFile aFile = WorkbenchResourceHelper.getPlatformFile(uri);
 			
 			if (aFile != null) {
-				IVirtualComponent component = findComponent(aFile);
+				IVirtualComponent component = ComponentCore.createComponent(getContainingProject());
 				if (component != null) {
-					IProject fileProject = aFile.getProject();
+					IProject fileProject = getContainingProject();
 					//If it is not in the same project then just return the URI as is.
 					if (resourceSetSynchronizer.getProject() == fileProject)
 						return getArchiveRelativeURI(aFile,component.getRootFolder().getUnderlyingFolder());
@@ -147,5 +147,10 @@
 		return null;
 	}
 
+	
+	protected IProject getContainingProject() {
+		return containingProject;
+	}
+
 
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentResourceImpl.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentResourceImpl.java
index 9147466..6b96ae1 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentResourceImpl.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ComponentResourceImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: ComponentResourceImpl.java,v 1.3 2006/01/11 18:40:31 cbridgha Exp $
+ * $Id: ComponentResourceImpl.java,v 1.2.2.1 2006/01/10 19:16:57 cbridgha Exp $
  */
 package org.eclipse.wst.common.componentcore.internal.impl;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
index 71b0576..7454537 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
@@ -166,7 +166,7 @@
 	}
 	
 	public static boolean isClassPathURI(URI uri){
-		if(uri!=null && PlatformURLModuleConnection.CLASSPATH.equals(uri.segment(0) )){
+		if(uri !=null && PlatformURLModuleConnection.CLASSPATH.equals(uri.segment(0) )){
 			return true;
 		}
 		return false;
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeNode.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeNode.java
index 3a89977..0eda447 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeNode.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeNode.java
@@ -281,7 +281,7 @@
 	/* package */IPathProvider getPathProvider() {
 		return pathProvider;
 	}
-	
+
 	public Map getChildren() {
 		return children;
 	}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeRoot.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeRoot.java
index c2d5a33..a27f757 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeRoot.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ResourceTreeRoot.java
@@ -51,16 +51,19 @@
 					}
 					break;
 				case Notification.REMOVE:
-					resource = (ComponentResource) msg.getNewValue();
-					if(resource != null)
+					resource = (ComponentResource) msg.getOldValue();
+					if(resource != null){
 						resource.eAdapters().remove(getResourcePathListenerAdapter());
+						removeChild(resource);
+					}
 					break;
 				case Notification.REMOVE_MANY:
-					List removedValues = (List) msg.getNewValue();
+					List removedValues = (List) msg.getOldValue();
 					if (removedValues != null) {
 						for (int i = 0; i < removedValues.size(); i++) {
 							resource = (ComponentResource) removedValues.get(i);
 							resource.eAdapters().remove(getResourcePathListenerAdapter());
+							removeChild(resource);
 						}
 					}
 					break;
@@ -103,7 +106,7 @@
 						addChild(resource);
 					break; 
 				}
-			}
+			} 
 		}
 	}
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPModulesInit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPModulesInit.java
index 3865a93..4548d97 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPModulesInit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPModulesInit.java
@@ -10,9 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.common.componentcore.internal.impl;
 
-import org.eclipse.emf.ecore.EFactory;
 import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.wst.common.componentcore.internal.ComponentcoreFactory;
 import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
 import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRendererFactory;
 import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
@@ -69,9 +67,6 @@
 			public EPackage getEPackage() {
 				return ComponentcorePackage.eINSTANCE;
 			}
-			public EFactory getEFactory() {
-				return ComponentcoreFactory.eINSTANCE;
-			}
 		});
 	}
 	
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WorkbenchComponentImpl.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WorkbenchComponentImpl.java
index 61eb596..767d76f 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WorkbenchComponentImpl.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WorkbenchComponentImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: WorkbenchComponentImpl.java,v 1.8 2006/01/28 21:02:06 cbridgha Exp $
+ * $Id: WorkbenchComponentImpl.java,v 1.7.2.1 2006/01/25 15:01:18 cbridgha Exp $
  */
 package org.eclipse.wst.common.componentcore.internal.impl;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/CreateReferenceComponentsOp.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/CreateReferenceComponentsOp.java
index fd1659d..51d23b1 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/CreateReferenceComponentsOp.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/CreateReferenceComponentsOp.java
@@ -78,16 +78,11 @@
 	}
 
 	private boolean srcComponentContainsReference(IVirtualComponent sourceComp, IVirtualComponent comp) {
-		if (sourceComp == null || comp == null)
-			return false;
 		IVirtualReference[] existingReferences = sourceComp.getReferences();
-		if (existingReferences!= null) {
-			for (int i = 0; i < existingReferences.length; i++) {
-				if(existingReferences[i]!=null && existingReferences[i].getReferencedComponent() != null ){
-					if (existingReferences[i].getReferencedComponent().getProject()!=null && comp.getProject()!=null) {
-						if(existingReferences[i].getReferencedComponent().getProject().equals(comp.getProject()))
-							return true;
-					}
+		for (int i = 0; i < existingReferences.length; i++) {
+			if( existingReferences[i].getReferencedComponent() != null ){
+				if(existingReferences[i].getReferencedComponent().getProject().equals(comp.getProject())){
+					return true;
 				}
 			}
 		}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
index a62fd98..4ca483e 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
@@ -41,6 +41,8 @@
 
 public class FacetProjectCreationOperation extends AbstractDataModelOperation {
 
+	protected boolean runtimeAdded = false;
+	
 	public FacetProjectCreationOperation() {
 		super();
 	}
@@ -94,10 +96,8 @@
 			if (!fixedFacets.isEmpty()) {
 				facetProj.setFixedProjectFacets(fixedFacets);
 			}
-			IRuntime runtime = (IRuntime) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
-			IRuntime existingRuntime = facetProj.getRuntime();
-			if (runtime != null && (existingRuntime == null || !runtime.equals(existingRuntime))) {
-				facetProj.setRuntime(runtime, null);
+			if (runtimeAdded) {
+				IRuntime runtime = (IRuntime) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
 				addDefaultFacets(facetProj,runtime.getDefaultFacets( fixedFacets ));
 			}
 
@@ -132,7 +132,7 @@
 		}
 		
 	}
-
+	
 	public IFacetedProject createProject(IProgressMonitor monitor) throws CoreException {
 		IProject project = ProjectUtilities.getProject((String) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME));
 		IFacetedProject facetProj = null;
@@ -143,9 +143,16 @@
 			IPath locationPath = null == location ? null : new Path(location);
 			facetProj = ProjectFacetsManager.create(model.getStringProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME), locationPath, monitor);
 		}
+		IRuntime runtime = (IRuntime) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
+		IRuntime existingRuntime = facetProj.getRuntime();
+		if (runtime != null && (existingRuntime == null || !runtime.equals(existingRuntime))) {
+			facetProj.setRuntime(runtime, null);
+			runtimeAdded = true;
+		}
 		return facetProj;
 	}
 
+	
 	private static void addDefaultFacetsInProject(IFacetedProject facetProj, Set defaultFacets) {
 		Set actions = new HashSet();
 		for (Iterator iter = defaultFacets.iterator(); iter.hasNext();) {
@@ -187,14 +194,15 @@
 			}
 		}
 		
-		try {
-			fixedFacets.addAll(facetProj.getFixedProjectFacets());
-			facetProj.setFixedProjectFacets(fixedFacets);
+		try{
+			if (!fixedFacets.isEmpty()) {
+					facetProj.setFixedProjectFacets(fixedFacets);
+			}
 		
 			if (runtime != null ) {
 				addDefaultFacetsInProject(facetProj,runtime.getDefaultFacets( fixedFacets ));
 			}
-		} catch(CoreException e){
+		}catch(CoreException e){
 			Logger.getLogger().logError(e);
 			throw new ExecutionException(e.getMessage(), e);			
 		}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
index 0787829..e5e12b4 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
@@ -24,6 +24,7 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
@@ -66,7 +67,7 @@
 					String deployPath = model.getStringProperty( ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH );
 					IPath path = new Path( deployPath );
 					
-					if( ref.getRuntimePath() != null && path != null && ref.getRuntimePath().equals( path )){
+					if( ref != null && ref.getRuntimePath() != null && path != null && ref.getRuntimePath().equals( path )){
 						removeRefereneceInComponent(sourceComp,sourceComp.getReference(comp.getName()));
 						IProject targetProject = comp.getProject();
 						targetprojectList.add(targetProject);
@@ -85,13 +86,7 @@
 	}
 
 	protected void removeRefereneceInComponent(IVirtualComponent component, IVirtualReference reference) {
-		List refList = new ArrayList();
-		IVirtualReference[] refArray = component.getReferences();
-		for (int i = 0; i < refArray.length; i++) {
-			if (refArray[i].getReferencedComponent() != null && !refArray[i].getReferencedComponent().equals(reference.getReferencedComponent()))
-				refList.add(refArray[i]);
-		}
-		component.setReferences((IVirtualReference[]) refList.toArray(new IVirtualReference[refList.size()]));
+		((VirtualComponent)component.getComponent()).removeReference(reference);
 	}
 
 	public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
index bba03d6..24d9c0e 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
@@ -65,7 +65,7 @@
 
 		String archivePathString = archiveLocation.substring(4, archiveLocation.length());
 		archiveType	= archiveLocation.substring(0, archiveLocation.length() - archivePathString.length() -1);
-		archivePath = new  Path(archivePathString);
+		archivePath = new  Path(archivePathString).makeRelative();
 	}
 
 	public IVirtualComponent getComponent() {
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
index aad550e..a986059 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
@@ -423,4 +423,54 @@
 			result[i] = ComponentCore.createComponent(handles[i]);
 		return result;
 	}
+	
+	/**
+	 * Remove the associated ReferencedComponent for the virtual reference from the workbench component 
+	 * associated with this virtual component
+	 * 
+	 * @param aReference
+	 */
+	public void removeReference(IVirtualReference aReference) {
+		StructureEdit core = null;
+		try {
+			core = StructureEdit.getStructureEditForWrite(getProject());
+			if (core == null || aReference == null)
+				return;
+			WorkbenchComponent component = core.getComponent();
+			ReferencedComponent refComponent = getWorkbenchReferencedComponent(aReference, component);
+			if (component != null && refComponent != null)
+				component.getReferencedComponents().remove(refComponent);
+		} finally {
+			if(core != null) {
+				core.saveIfNecessary(null);
+				core.dispose();
+			}
+		}	
+	}
+	
+	/**
+	 * Return the associated structure edit ReferencedComponent object for the given IVirtualReference based on the handle
+	 * and module URI.
+	 * 
+	 * @param aReference
+	 * @param core
+	 * @return ReferencedComponent
+	 */
+	protected ReferencedComponent getWorkbenchReferencedComponent(IVirtualReference aReference, WorkbenchComponent component) {
+		if (aReference == null || aReference.getReferencedComponent() == null || component == null)
+			return null;
+		List referencedComponents = component.getReferencedComponents();
+		for (int i=0; i<referencedComponents.size(); i++) {
+			ReferencedComponent ref = (ReferencedComponent) referencedComponents.get(i);
+			if (!aReference.getReferencedComponent().isBinary()) {
+				if (ref.getHandle().equals(ModuleURIUtil.fullyQualifyURI(aReference.getReferencedComponent().getProject())))
+					return ref;	
+			} 
+			else {
+				if (ref.getHandle().equals(ModuleURIUtil.archiveComponentfullyQualifyURI(aReference.getReferencedComponent().getName())))
+					return ref;
+			}	
+		}
+		return null;
+	}
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualContainer.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualContainer.java
index f07ab73..e3c376d 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualContainer.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualContainer.java
@@ -245,7 +245,7 @@
 		StructureEdit moduleCore = null;
 		try {
 			IContainer resource = null;
-			if (aProjectRelativeLocation.isRoot()) {
+			if (aProjectRelativeLocation.isRoot() || aProjectRelativeLocation.isEmpty()) {
 				resource = getProject();
 			} else {
 				resource = getProject().getFolder(aProjectRelativeLocation);
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualReference.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualReference.java
index da023c3..9b49be6 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualReference.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualReference.java
@@ -14,9 +14,7 @@
 
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.ecore.EObject;
 import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
 import org.eclipse.wst.common.componentcore.internal.DependencyType;
 import org.eclipse.wst.common.componentcore.internal.ReferencedComponent;
@@ -104,38 +102,5 @@
 	public IVirtualComponent getReferencedComponent() { 
 		return referencedComponent;
 	}
-	
-	/**
-	 * This is a helper method to update the actual referenceComponent on the .component file for this virtual reference.
-	 */
-	public void setReferencedComponent(IVirtualComponent aReferencedComponent, EObject dependentObject) {
-		if (aReferencedComponent == null)
-			return;
-		StructureEdit enclosingCore = null;
-		StructureEdit refCore = null;
-		try {
-			enclosingCore = StructureEdit.getStructureEditForWrite(enclosingComponent.getProject());
-			refCore = StructureEdit.getStructureEditForWrite(referencedComponent.getProject());
-			WorkbenchComponent enclosingComp = enclosingCore.getComponent();
-			WorkbenchComponent refComp = refCore.getComponent();
-			ReferencedComponent actualReferencedComponent = enclosingCore.findReferencedComponent(enclosingComp, refComp);
-			if (actualReferencedComponent != null) {
-				referencedComponent = aReferencedComponent;
-				if(!referencedComponent.isBinary())
-					actualReferencedComponent.setHandle(ModuleURIUtil.fullyQualifyURI(referencedComponent.getProject()));
-				else
-					actualReferencedComponent.setHandle(ModuleURIUtil.archiveComponentfullyQualifyURI(referencedComponent.getName()));
-				actualReferencedComponent.setDependentObject(dependentObject);
-			}
-		} finally {
-			if (enclosingCore != null) {
-				enclosingCore.saveIfNecessary(new NullProgressMonitor());
-				enclosingCore.dispose();
-			}
-			if (refCore != null) {
-				refCore.saveIfNecessary(new NullProgressMonitor());
-				refCore.dispose();
-			}
-		}
-	}
+
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ArtifactEditAdapterFactory.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ArtifactEditAdapterFactory.java
index a37da71..8a1ebf4 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ArtifactEditAdapterFactory.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ArtifactEditAdapterFactory.java
@@ -26,6 +26,7 @@
 import org.eclipse.wst.common.internal.emfworkbench.edit.EditModelRegistry;
 import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
 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;
 
 /**
@@ -65,9 +66,12 @@
 					String[] editModelIDs = EditModelRegistry.getInstance().getRegisteredEditModelIDs();
 					for (int i=0; i<editModelIDs.length; i++) {
 						try {
-							EditModel editModel = nature.getExistingEditModel(editModelIDs[i],params,edit.isReadOnly());
-							if (editModel !=null)
-								return editModel;
+							IProjectFacet facet = ProjectFacetsManager.getProjectFacet(editModelIDs[i]);
+							if (facet != null && facetedProject.hasProjectFacet(facet)) {
+								EditModel editModel = nature.getExistingEditModel(editModelIDs[i],params,edit.isReadOnly());
+								if (editModel !=null)
+									return editModel;
+							}
 						} catch (Exception e) {
 							continue;
 						}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
index 8de671e..1cfefa5 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
@@ -285,5 +285,4 @@
 		IVirtualComponent comp = ComponentCore.createComponent(project);
 		comp.setMetaProperty(IModuleConstants.CONTEXTROOT, contextRoot);
 	}
-
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/WTPModulesTranslator.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/WTPModulesTranslator.java
index b75e78b..4f5f383 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/WTPModulesTranslator.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/WTPModulesTranslator.java
@@ -30,6 +30,13 @@
 		super(PROJECT_MODULES, ComponentcorePackage.eINSTANCE.getProjectComponents());
 	}	
 	
+//	public void setMOFValue(Notifier owner, Object value, int newIndex) {		
+//		super.setMOFValue(owner, value, newIndex);
+//		EObject target = ((EObject)value);
+//		IProject project = ProjectUtilities.getProject(target);
+//		if(project != null)
+//			target.eSet(ComponentcorePackage.eINSTANCE.getProjectComponents_ProjectName(), project.getName());
+//	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.common.internal.emf.resource.Translator#getChildren(java.lang.Object, int)
 	 */
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualReference.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualReference.java
index ba9a53a..688cf12 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualReference.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualReference.java
@@ -12,7 +12,6 @@
 
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.emf.ecore.EObject;
 import org.eclipse.wst.common.componentcore.internal.DependencyType;
 
 /**
@@ -87,10 +86,5 @@
 	 * @return the referenced component.
 	 */
 	public IVirtualComponent getReferencedComponent();
-	
-	/**
-	 * Set the referenced component that is "targeted" by the reference and will be absorbed by the enclosing component. 
-	 * @param referencedComponent
-	 */
-	public void setReferencedComponent(IVirtualComponent referencedComponent, EObject dependentObject);
+
 }
diff --git a/plugins/org.eclipse.wst.common.ui/.classpath b/plugins/org.eclipse.wst.common.ui/.classpath
index c3e9bee..751c8f2 100644
--- a/plugins/org.eclipse.wst.common.ui/.classpath
+++ b/plugins/org.eclipse.wst.common.ui/.classpath
@@ -3,6 +3,5 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src-search"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 6830385..0000000
--- a/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,59 +0,0 @@
-#Mon Jan 30 23:41:58 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-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.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=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-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=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-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=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 48a6a5c..0000000
--- a/plugins/org.eclipse.wst.common.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Mon Jan 30 23:11:49 EST 2006
-eclipse.preferences.version=1
-internal.default.compliance=default
diff --git a/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
index 32fefe8..c49d712 100644
--- a/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
@@ -1,24 +1,20 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
+Bundle-Name: Eclipse Base UI extensions
 Bundle-SymbolicName: org.eclipse.wst.common.ui; singleton:=true
-Bundle-Version: 1.0.100.qualifier
-Bundle-Activator: org.eclipse.wst.common.ui.internal.UIPlugin
-Bundle-Vendor: %pluginProvider
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.core.internal.compatibility.PluginActivator
+Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.ui.internal;x-internal:=true,
- org.eclipse.wst.common.ui.internal.dialogs;x-internal:=true,
- org.eclipse.wst.common.ui.internal.dnd;x-internal:=true,
- org.eclipse.wst.common.ui.internal.search;x-internal:=true,
- org.eclipse.wst.common.ui.internal.viewers;x-internal:=true,
+Export-Package: org.eclipse.wst.common.ui.internal,
+ org.eclipse.wst.common.ui.internal.dialogs,
+ org.eclipse.wst.common.ui.internal.dnd,
+ org.eclipse.wst.common.ui.internal.viewers,
  org.eclipse.wst.common.ui.provisional.editors
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.core.runtime.compatibility,
  org.eclipse.ui.ide,
  org.eclipse.ui,
  org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.search,
- org.eclipse.wst.common.core,
- org.eclipse.jface.text,
- org.eclipse.ui.workbench.texteditor
-Eclipse-LazyStart: true
+ org.eclipse.core.resources
+Eclipse-AutoStart: true
+Plugin-Class: org.eclipse.wst.common.ui.internal.UIPlugin
diff --git a/plugins/org.eclipse.wst.common.ui/build.properties b/plugins/org.eclipse.wst.common.ui/build.properties
index 450648e..36e8b2c 100644
--- a/plugins/org.eclipse.wst.common.ui/build.properties
+++ b/plugins/org.eclipse.wst.common.ui/build.properties
@@ -4,7 +4,6 @@
                META-INF/,\
                about.html
 jars.compile.order = .
-source.. = src/,\
-           src-search/
+source.. = src/
 output.. = bin/
 src.includes = component.xml
diff --git a/plugins/org.eclipse.wst.common.ui/plugin.properties b/plugins/org.eclipse.wst.common.ui/plugin.properties
index b56b65c..eb3402d 100644
--- a/plugins/org.eclipse.wst.common.ui/plugin.properties
+++ b/plugins/org.eclipse.wst.common.ui/plugin.properties
@@ -1,7 +1,3 @@
-! Plugin properties
-pluginName               = Eclipse Base UI extensions
-pluginProvider           = Eclipse.org
-
 ! SelectSingleFilePage and SelectMultiFilePage
 _UI_LABEL_SOURCE_FILES   = Workbench Files
 _UI_LABEL_SELECTED_FILES = Selected Files
diff --git a/plugins/org.eclipse.wst.common.ui/plugin.xml b/plugins/org.eclipse.wst.common.ui/plugin.xml
index 69952c5..11cd5ea 100644
--- a/plugins/org.eclipse.wst.common.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.common.ui/plugin.xml
@@ -2,14 +2,7 @@
 <?eclipse version="3.0"?>
 <plugin>
 
-  <extension-point id="exampleProjectCreationWizard" name="Example Project Creation Wizard" schema="schema/exampleProjectCreationWizard.exsd"/>
-  <extension
-	point="org.eclipse.search.searchResultViewPages">
-	<viewPage
-		id="org.eclipse.wst.common.ui.internal.search.SearchResultPage"
-		searchResultClass="org.eclipse.wst.common.ui.internal.search.SearchResult"
-		class="org.eclipse.wst.common.ui.internal.search.SearchResultPage">
-	</viewPage>
-  </extension>
- 
+     <extension-point id="exampleProjectCreationWizard" name="Example Project Creation Wizard" schema="schema/exampleProjectCreationWizard.exsd"/>
+  
+
 </plugin>
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java
deleted file mode 100644
index db2fc2b..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java
+++ /dev/null
@@ -1,181 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.search.internal.ui.Messages;
-import org.eclipse.search.internal.ui.SearchMessages;
-import org.eclipse.search.ui.IQueryListener;
-import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.search.ui.ISearchResult;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.wst.common.core.search.SearchEngine;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-
-
-public abstract class AbstractSearchQuery implements ISearchQuery {
-	
-	protected String fPattern;
-	protected SearchScope fScope;
-	protected SearchResult fResult;
-	protected String fScopeDescription;
-
-	public AbstractSearchQuery(String pattern, SearchScope scope, String scopeDescription) {
-		super();
-		fPattern= pattern;
-		fScope= scope;
-		fScopeDescription= scopeDescription;
-	}
-
-	public boolean canRerun() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean canRunInBackground() {
-		return true;
-	}
-
-	public String getLabel() {
-		return SearchMessages.FileSearchQuery_label; 
-	}
-
-	public ISearchResult getSearchResult() {
-		if (fResult == null) {
-			fResult= new SearchResult(this);
-			new SearchResultUpdater(fResult);
-		}
-		return fResult;
-	}
-	
-	public String getResultLabel(int nMatches) {
-		if (nMatches == 1) {
-			if (fPattern.length() > 0) {
-				Object[] args= { fPattern, fScopeDescription };
-				return Messages.format(SearchMessages.FileSearchQuery_singularLabel, args); 
-			}
-			Object[] args= { "", fScopeDescription };
-			return Messages.format(SearchMessages.FileSearchQuery_singularLabel_fileNameSearch, args); 
-		}
-		if (fPattern.length() > 0) {
-			Object[] args= { fPattern, new Integer(nMatches), fScopeDescription }; //$NON-NLS-1$
-			return Messages.format(SearchMessages.FileSearchQuery_pluralPattern, args); 
-		}
-		Object[] args= { "", new Integer(nMatches), fScopeDescription }; //$NON-NLS-1$
-		return Messages.format(SearchMessages.FileSearchQuery_pluralPattern_fileNameSearch, args); 
-	
-	
-	}
-
-	public IStatus run(IProgressMonitor pm) throws OperationCanceledException {
-		final SearchResult textResult= (SearchResult) getSearchResult();
-		textResult.removeAll();
-		SearchQueryResultCollector collector= new SearchQueryResultCollector(textResult);
-		String searchString= fPattern;
-		if (searchString.trim().equals(String.valueOf('*'))) {
-			searchString= new String();
-		}
-		String message= SearchMessages.TextSearchEngine_statusMessage; 
-		MultiStatus status= new MultiStatus(NewSearchUI.PLUGIN_ID, IStatus.OK, message, null);
-		
-		SearchEngine searchEngine = new SearchEngine();
-	
-		QualifiedName typeName = QualifiedName.valueOf(searchString);
-		
-		try {
-            SearchPattern pattern = createSearchPattern(typeName);
-            searchEngine.search(pattern, collector, fScope, null, new NullProgressMonitor());
-		} catch (CoreException e) {
-			status.add(e.getStatus());
-		}
-	
-		return status;
-
-	}
-    
-    protected abstract SearchPattern createSearchPattern(QualifiedName typeName);
-	
-	public class SearchResultUpdater implements IResourceChangeListener, IQueryListener {
-		SearchResult fResult;
-
-		public SearchResultUpdater(SearchResult result) {
-			fResult= result;
-			NewSearchUI.addQueryListener(this);
-			ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
-		}
-
-		public void resourceChanged(IResourceChangeEvent event) {
-			IResourceDelta delta= event.getDelta();
-			if (delta != null)
-				handleDelta(delta);
-		}
-
-		protected void handleDelta(IResourceDelta d) {
-			try {
-				d.accept(new IResourceDeltaVisitor() {
-					public boolean visit(IResourceDelta delta) throws CoreException {
-						switch (delta.getKind()) {
-							case IResourceDelta.ADDED :
-								return false;
-							case IResourceDelta.REMOVED :
-								IResource res= delta.getResource();
-								if (res instanceof IFile) {
-									Match[] matches= fResult.getMatches(res);
-									fResult.removeMatches(matches);
-								}
-								break;
-							case IResourceDelta.CHANGED :
-								// handle changed resource
-								break;
-						}
-						return true;
-					}
-				});
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}
-
-		public void queryAdded(ISearchQuery query) {
-			// don't care
-		}
-
-		public void queryRemoved(ISearchQuery query) {
-			if (fResult.equals(query.getSearchResult())) {
-				ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
-				NewSearchUI.removeQueryListener(this);
-			}
-		}
-		
-		public void queryStarting(ISearchQuery query) {
-			// don't care
-		}
-
-		public void queryFinished(ISearchQuery query) {
-			// don't care
-		}
-    }	
-}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/ISearchConstants.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/ISearchConstants.java
deleted file mode 100644
index 0bc1403..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/ISearchConstants.java
+++ /dev/null
@@ -1,38 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-public interface ISearchConstants {
-	
-	/**
-	 * The search result is a declaration.
-	 * Can be used in conjunction with any of the nature of searched elements
-	 * so as to better narrow down the search.
-	 */
-	public static int DECLARATIONS= 0;
-
-
-	/**
-	 * The search result is a reference.
-	 * Can be used in conjunction with any of the nature of searched elements
-	 * so as to better narrow down the search.
-	 * References can contain implementers since they are more generic kind
-	 * of matches.
-	 */
-	public static int REFERENCES= 1;
-
-	/**
-	 * The search result is a declaration, or a reference.
-	 * Can be used in conjunction with any of the nature of searched elements
-	 * so as to better narrow down the search.
-	 */
-	public static int ALL_OCCURRENCES= 2;
-}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java
deleted file mode 100644
index 3079c3d..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java
+++ /dev/null
@@ -1,145 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class SearchMessages extends NLS {
-
-	private static final String BUNDLE_NAME= "org.eclipse.wst.common.search.test.ui.SearchMessages";//$NON-NLS-1$
-
-	private SearchMessages() {
-		// Do not instantiate
-	}
-
-	public static String SearchLabelProvider_exact_singular;
-	public static String SearchLabelProvider_exact_noCount;
-	public static String SearchLabelProvider_exact_and_potential_plural;
-	public static String SearchLabelProvider_potential_singular;
-	public static String SearchLabelProvider_potential_noCount;
-	public static String SearchLabelProvider_potential_plural;
-	public static String SearchLabelProvider_exact_plural;
-	public static String group_search;
-	public static String group_declarations;
-	public static String group_references;
-	public static String group_readReferences;
-	public static String group_writeReferences;
-	public static String group_implementors;
-	public static String group_occurrences;
-	public static String group_occurrences_quickMenu_noEntriesAvailable;
-	public static String Search_Error_search_title;
-	public static String Search_Error_search_message;
-	public static String Search_Error_search_notsuccessful_message;
-	public static String Search_Error_javaElementAccess_title;
-	public static String Search_Error_javaElementAccess_message;
-	public static String Search_Error_search_notsuccessful_title;
-	public static String Search_Error_openEditor_title;
-	public static String Search_Error_openEditor_message;
-	public static String Search_Error_codeResolve;
-	public static String SearchElementSelectionDialog_title;
-	public static String SearchElementSelectionDialog_message;
-	public static String SearchPage_searchFor_label;
-	public static String SearchPage_searchFor_type;
-	public static String SearchPage_searchFor_method;
-	public static String SearchPage_searchFor_field;
-	public static String SearchPage_searchFor_package;
-	public static String SearchPage_searchFor_constructor;
-	public static String SearchPage_limitTo_label;
-	public static String SearchPage_limitTo_declarations;
-	public static String SearchPage_limitTo_implementors;
-	public static String SearchPage_limitTo_references;
-	public static String SearchPage_limitTo_allOccurrences;
-	public static String SearchPage_limitTo_readReferences;
-	public static String SearchPage_limitTo_writeReferences;
-	public static String SearchPage_expression_label;
-	public static String SearchPage_expression_caseSensitive;
-	public static String SearchUtil_workingSetConcatenation;
-	public static String Search_FindDeclarationAction_label;
-	public static String Search_FindDeclarationAction_tooltip;
-	public static String Search_FindDeclarationsInProjectAction_label;
-	public static String Search_FindDeclarationsInProjectAction_tooltip;
-	public static String Search_FindDeclarationsInWorkingSetAction_label;
-	public static String Search_FindDeclarationsInWorkingSetAction_tooltip;
-	public static String Search_FindHierarchyDeclarationsAction_label;
-	public static String Search_FindHierarchyDeclarationsAction_tooltip;
-	public static String Search_FindImplementorsAction_label;
-	public static String Search_FindImplementorsAction_tooltip;
-	public static String Search_FindImplementorsInProjectAction_label;
-	public static String Search_FindImplementorsInProjectAction_tooltip;
-	public static String Search_FindImplementorsInWorkingSetAction_label;
-	public static String Search_FindImplementorsInWorkingSetAction_tooltip;
-	public static String Search_FindReferencesAction_label;
-	public static String Search_FindReferencesAction_tooltip;
-	public static String Search_FindReferencesAction_BinPrimConstWarnDialog_title;
-	public static String Search_FindReferencesAction_BinPrimConstWarnDialog_message;
-	public static String Search_FindReferencesInProjectAction_label;
-	public static String Search_FindReferencesInProjectAction_tooltip;
-	public static String Search_FindReferencesInWorkingSetAction_label;
-	public static String Search_FindReferencesInWorkingSetAction_tooltip;
-	public static String Search_FindHierarchyReferencesAction_label;
-	public static String Search_FindHierarchyReferencesAction_tooltip;
-	public static String Search_FindReadReferencesAction_label;
-	public static String Search_FindReadReferencesAction_tooltip;
-	public static String Search_FindReadReferencesInProjectAction_label;
-	public static String Search_FindReadReferencesInProjectAction_tooltip;
-	public static String Search_FindReadReferencesInWorkingSetAction_label;
-	public static String Search_FindReadReferencesInWorkingSetAction_tooltip;
-	public static String Search_FindReadReferencesInHierarchyAction_label;
-	public static String Search_FindReadReferencesInHierarchyAction_tooltip;
-	public static String Search_FindWriteReferencesAction_label;
-	public static String Search_FindWriteReferencesAction_tooltip;
-	public static String Search_FindWriteReferencesInProjectAction_label;
-	public static String Search_FindWriteReferencesInProjectAction_tooltip;
-	public static String Search_FindWriteReferencesInWorkingSetAction_label;
-	public static String Search_FindWriteReferencesInWorkingSetAction_tooltip;
-	public static String Search_FindWriteReferencesInHierarchyAction_label;
-	public static String Search_FindWriteReferencesInHierarchyAction_tooltip;
-	public static String Search_FindOccurrencesInFile_shortLabel;
-	public static String Search_FindOccurrencesInFile_label;
-	public static String Search_FindOccurrencesInFile_tooltip;
-	public static String FindOccurrencesEngine_noSource_text;
-	public static String FindOccurrencesEngine_cannotParse_text;
-	public static String OccurrencesFinder_no_element;
-	public static String OccurrencesFinder_no_binding;
-	public static String OccurrencesFinder_searchfor;
-	public static String OccurrencesFinder_label_singular;
-	public static String OccurrencesFinder_label_plural;
-	public static String ExceptionOccurrencesFinder_no_exception;
-	public static String ExceptionOccurrencesFinder_searchfor;
-	public static String ExceptionOccurrencesFinder_label_singular;
-	public static String ExceptionOccurrencesFinder_label_plural;
-	public static String ImplementOccurrencesFinder_invalidTarget;
-	public static String ImplementOccurrencesFinder_searchfor;
-	public static String ImplementOccurrencesFinder_label_singular;
-	public static String ImplementOccurrencesFinder_label_plural;
-	public static String WorkspaceScope;
-	public static String WorkingSetScope;
-	public static String SelectionScope;
-	public static String EnclosingProjectsScope;
-	public static String EnclosingProjectScope;
-	public static String ProjectScope;
-	public static String HierarchyScope;
-	public static String SearchParticipant_error_noID;
-	public static String SearchParticipant_error_noNature;
-	public static String SearchParticipant_error_noClass;
-	public static String SearchParticipant_error_classCast;
-	public static String TextSearchLabelProvider_matchCountFormat;
-	public static String FiltersDialog_title;
-	public static String FiltersDialog_filters_label;
-	public static String FiltersDialog_description_label;
-	public static String FiltersDialog_limit_label;
-	public static String FiltersDialog_limit_error;
-	public static String FiltersDialogAction_label;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, SearchMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties
deleted file mode 100644
index cd3fea0..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties
+++ /dev/null
@@ -1,258 +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
-###############################################################################
-
-SearchLabelProvider_exact_singular={0} (1 match)
-SearchLabelProvider_exact_noCount={0}
-SearchLabelProvider_exact_and_potential_plural={0} ({1} matches: {2} exact, {3} potential)
-SearchLabelProvider_potential_singular={0} (potential match)
-SearchLabelProvider_potential_noCount={0} (potential match)
-SearchLabelProvider_potential_plural={0} ({1} potential matches)
-SearchLabelProvider_exact_plural={0} ({1} matches)
-
-group_search=S&earch
-group_declarations= Dec&larations
-group_references= Re&ferences
-group_readReferences= &Read Access
-group_writeReferences= &Write Access
-group_implementors= &Implementors
-group_occurrences= Occurre&nces in File
-group_occurrences_quickMenu_noEntriesAvailable= <no entries available>
-
-Search_Error_search_title=Search Error
-Search_Error_search_message=The search operation has reported problems
-Search_Error_search_notsuccessful_message=The search operation has reported problems
-Search_Error_javaElementAccess_title=Search Error
-Search_Error_javaElementAccess_message=An error occurred while accessing a Java element
-
-Search_Error_search_notsuccessful_title=Search
-
-Search_Error_openEditor_title=Search Error
-Search_Error_openEditor_message=Could not open the editor
-
-Search_Error_codeResolve= Code resolve error
-
-SearchElementSelectionDialog_title=Search
-SearchElementSelectionDialog_message=Select the element to search for.
-
-SearchPage_searchFor_label= Search For
-SearchPage_searchFor_type= &Type
-SearchPage_searchFor_method= &Method
-SearchPage_searchFor_field= &Field
-SearchPage_searchFor_package= &Package
-SearchPage_searchFor_constructor= Co&nstructor
-
-SearchPage_limitTo_label= Limit To
-SearchPage_limitTo_declarations= Dec&larations
-SearchPage_limitTo_implementors= &Implementors
-SearchPage_limitTo_references= &References
-SearchPage_limitTo_allOccurrences= All &Occurrences
-SearchPage_limitTo_readReferences= Read A&ccess
-SearchPage_limitTo_writeReferences= Writ&e Access
-
-SearchPage_expression_label= Se&arch string (* = any string, ? = any character):
-SearchPage_expression_caseSensitive= Case sens&itive
-
-SearchPage_searchJRE_label=Search the JRE s&ystem libraries
-
-# Concatenate two working set names e.g. "Source, Lib"
-SearchUtil_workingSetConcatenation= {0}, {1}
-
-Search_FindDeclarationAction_label= &Workspace
-Search_FindDeclarationAction_tooltip= Search for Declarations of the Selected Element in the Workspace
-
-Search_FindDeclarationsInProjectAction_label= &Project
-Search_FindDeclarationsInProjectAction_tooltip= Search for Declarations of the Selected Element in Resources in the Enclosing Project of the Selected Element
-
-Search_FindDeclarationsInWorkingSetAction_label= Working &Set...
-Search_FindDeclarationsInWorkingSetAction_tooltip= Search for Declarations of the Selected Element in a Working Set
-
-Search_FindHierarchyDeclarationsAction_label= &Hierarchy
-Search_FindHierarchyDeclarationsAction_tooltip= Search for Declarations of the Selected Element in its Hierarchy
-
-Search_FindImplementorsAction_label= &Workspace
-Search_FindImplementorsAction_tooltip= Search for Implementors of the Selected Interface
-
-Search_FindImplementorsInProjectAction_label= &Project
-Search_FindImplementorsInProjectAction_tooltip= Search for Implementors of the Selected Interface in Resources in the Enclosing Project of the Selected Element
-
-Search_FindImplementorsInWorkingSetAction_label= Working &Set...
-Search_FindImplementorsInWorkingSetAction_tooltip= Search for Implementors of the Selected Interface in a Working Set
-
-Search_FindReferencesAction_label= &Workspace
-Search_FindReferencesAction_tooltip= Search for References to the Selected Element in the Workspace
-
-Search_FindReferencesAction_BinPrimConstWarnDialog_title= Search for References to a Binary Constant
-Search_FindReferencesAction_BinPrimConstWarnDialog_message= Matches to this constant will only be discovered in source files and binary files where the constant value is not inlined.
-
-Search_FindReferencesInProjectAction_label= &Project
-Search_FindReferencesInProjectAction_tooltip= Search for References to the Selected Element in Resources in the Enclosing Project of the Selected Element
-
-Search_FindReferencesInWorkingSetAction_label= Working &Set...
-Search_FindReferencesInWorkingSetAction_tooltip= Search for References to the Selected Element in a Working Set
-
-Search_FindHierarchyReferencesAction_label= &Hierarchy
-Search_FindHierarchyReferencesAction_tooltip= Search for References of the Selected Element in its Hierarchy
-
-Search_FindReadReferencesAction_label= &Workspace
-Search_FindReadReferencesAction_tooltip= Search for Read References to the Selected Element in the Workspace
-
-Search_FindReadReferencesInProjectAction_label= &Project
-Search_FindReadReferencesInProjectAction_tooltip= Search for Read References to the Selected Element in Resources in the Enclosing Project of the Selected Element
-
-Search_FindReadReferencesInWorkingSetAction_label= Working &Set...
-Search_FindReadReferencesInWorkingSetAction_tooltip= Search for Read References to the Selected Element in a Working Set
-
-Search_FindReadReferencesInHierarchyAction_label= &Hierarchy
-Search_FindReadReferencesInHierarchyAction_tooltip= Search for Read References of the Selected Element in its Hierarchy
-
-Search_FindWriteReferencesAction_label= &Workspace
-Search_FindWriteReferencesAction_tooltip= Search for Write References to the Selected Element in the Workspace
-
-Search_FindWriteReferencesInProjectAction_label= &Project
-Search_FindWriteReferencesInProjectAction_tooltip= Search for Write References to the Selected Element in Resources in the Enclosing Project of the Selected Element
-
-Search_FindWriteReferencesInWorkingSetAction_label= Working &Set...
-Search_FindWriteReferencesInWorkingSetAction_tooltip= Search for Write References to the Selected Element in a Working Set
-
-Search_FindWriteReferencesInHierarchyAction_label= &Hierarchy
-Search_FindWriteReferencesInHierarchyAction_tooltip= Search for Write References of the Selected Element in its Hierarchy
-
-Search_FindOccurrencesInFile_shortLabel= &Identifier
-Search_FindOccurrencesInFile_label= I&dentifiers in File
-Search_FindOccurrencesInFile_tooltip= Find Occurrences of the Selected Element in the Editor
-
-FindOccurrencesEngine_noSource_text= No source available. To perform this operation you need to attach source.
-FindOccurrencesEngine_cannotParse_text= Cannot analyze the compilation unit or class file.
-
-OccurrencesFinder_no_element= Cannot search for the current selection. Please select a valid Java element name.
-OccurrencesFinder_no_binding= Selected Java element is unknown.
-OccurrencesFinder_searchfor=Search for Occurrences in File
-# The first argument will be replaced by the element name and the second one by the file name
-OccurrencesFinder_label_singular=''{0}'' - 1 occurrence in ''{1}''
-# The first argument will be replaced by the element name, the second by the count and the last by the file name
-OccurrencesFinder_label_plural=''{0}'' - {1} occurrences in ''{2}''
-
-ExceptionOccurrencesFinder_no_exception= Cannot search for current selection. Please select an exception.
-ExceptionOccurrencesFinder_searchfor= Search for Exception Occurrences
-
-# The first argument will be replaced by the element name and the second one by the file name
-ExceptionOccurrencesFinder_label_singular=''{0}'' - 1 exception occurrence in ''{1}''
-# The first argument will be replaced by the element name, the second by the count and the last by the file name
-ExceptionOccurrencesFinder_label_plural=''{0}'' - {1} exception occurrences in ''{2}''
-
-ImplementOccurrencesFinder_invalidTarget= Cannot search for current selection. Please select a type behind 'implements' or 'extends'.
-ImplementOccurrencesFinder_searchfor= Search for Implement Occurrences
-
-# The first argument will be replaced by the element name and the second one by the file name
-ImplementOccurrencesFinder_label_singular=''{0}'' - 1 implement occurrence in ''{1}''
-# The first argument will be replaced by the element name, the second by the count and the last by the file name
-ImplementOccurrencesFinder_label_plural=''{0}'' - {1} implement occurrences in ''{2}''
-
-
-# The first argument will be replaced by the pattern and the second by the scope
-JavaSearchOperation_singularDeclarationsPostfix=''{0}'' - 1 declaration in {1}
-JavaSearchOperation_singularReferencesPostfix=''{0}'' - 1 reference in {1}
-JavaSearchOperation_singularReadReferencesPostfix=''{0}'' - 1 read reference in {1}
-JavaSearchOperation_singularWriteReferencesPostfix=''{0}'' - 1 write reference in {1}
-JavaSearchOperation_singularImplementorsPostfix=''{0}'' - 1 implementor in {1}
-JavaSearchOperation_singularOccurrencesPostfix=''{0}'' - 1 occurrence in {1}
-
-JavaSearchOperation_pluralDeclarationsPostfix=''{0}'' - {1} declarations in {2}
-JavaSearchOperation_pluralReferencesPostfix=''{0}'' - {1} references in {2}
-JavaSearchOperation_pluralReadReferencesPostfix=''{0}'' - {1} read references in {2}
-JavaSearchOperation_pluralWriteReferencesPostfix=''{0}'' - {1} write references in {2}
-JavaSearchOperation_pluralImplementorsPostfix=''{0}'' - {1} implementors in {2}
-JavaSearchOperation_pluralOccurrencesPostfix=''{0}'' - {1} occurrences in {2}
-JavaElementAction_typeSelectionDialog_title=Search
-JavaElementAction_typeSelectionDialog_message=&Select the type to search:
-JavaElementAction_error_open_message=An exception occurred while opening the type.
-
-JavaElementAction_operationUnavailable_title= Operation Unavailable
-JavaElementAction_operationUnavailable_generic= The operation is unavailable on the current selection. Please select a valid Java element name.
-JavaElementAction_operationUnavailable_field= The operation is unavailable on the current selection. Please select the name of a field or local variable.
-JavaElementAction_operationUnavailable_interface= The operation is unavailable on the current selection. Please select the name of an interface.
-
-WorkspaceScope= workspace
-WorkingSetScope= working set ''{0}''
-SelectionScope= selection
-EnclosingProjectsScope= projects {0}, ...
-EnclosingProjectScope= project {0}
-ProjectScope= project {0}
-HierarchyScope= hierarchy of ''{0}''
-
-JavaSearchResultPage_sortByName=Name
-JavaSearchResultPage_sortByPath=Path
-JavaSearchResultPage_open_editor_error_title=Open Element
-JavaSearchResultPage_open_editor_error_message=Opening element failed.
-JavaSearchResultPage_sortByParentName=Parent Name
-JavaSearchResultPage_filtered_message={0} (Filtered)
-JavaSearchResultPage_sortBylabel=Sort By
-JavaSearchResultPage_error_marker=Could not create marker
-
-JavaSearchResultPage_groupby_project=Project
-JavaSearchResultPage_groupby_project_tooltip=Group by Project
-JavaSearchResultPage_groupby_package=Package
-JavaSearchResultPage_groupby_package_tooltip=Group by Package
-JavaSearchResultPage_filteredWithCount_message={0} ({1} matches filtered from view)
-JavaSearchResultPage_groupby_file=File
-JavaSearchResultPage_groupby_file_tooltip=Group by File
-JavaSearchResultPage_groupby_type=Type
-JavaSearchResultPage_groupby_type_tooltip=Group by Type
-
-JavaSearchQuery_task_label=Searching
-JavaSearchQuery_label=Java Search
-JavaSearchQuery_error_unsupported_pattern=Unsupported search pattern: "{0}"
-JavaSearchQuery_status_ok_message=Found {0} matches.
-
-JavaSearchQuery_error_participant_estimate=An error occurred while estimating progress data
-JavaSearchQuery_error_participant_search=An error occurred during participant search
-
-SearchParticipant_error_noID=Missing id attribute on search participant extension {0}
-SearchParticipant_error_noNature=Missing nature attribute on search participant {0}
-SearchParticipant_error_noClass=Missing class attribute on search participant {0}
-SearchParticipant_error_classCast=Search participant doesn't implement IQueryParticipant
-
-
-MatchFilter_ImportFilter_name=Imports
-MatchFilter_ImportFilter_actionLabel=Filter &Imports
-MatchFilter_ImportFilter_description=Filters matches that are in import statements
-
-
-MatchFilter_WriteFilter_name=Writes
-MatchFilter_WriteFilter_actionLabel=Filter &Writes
-MatchFilter_WriteFilter_description=Filters matches that are write accesses
-
-MatchFilter_ReadFilter_name=Reads
-MatchFilter_ReadFilter_actionLabel=Filter &Reads
-MatchFilter_ReadFilter_description=Filters matches that are not write accesses
-
-MatchFilter_JavadocFilter_name=Javadoc
-MatchFilter_JavadocFilter_actionLabel=Filter &Javadoc
-MatchFilter_JavadocFilter_description=Filters matches that are inside Javadoc comments
-
-MatchFilter_ErasureFilter_name=Incompatible type arguments
-MatchFilter_ErasureFilter_actionLabel=Filter In&compatible
-MatchFilter_ErasureFilter_description=Filters parameterized type matches that are not assignment compatible with the search pattern
-
-MatchFilter_InexactFilter_name=Inexact type arguments
-MatchFilter_InexactFilter_actionLabel=Filter Ine&xact
-MatchFilter_InexactFilter_description=Filters parameterized type matches where the type arguments don't exactly match the search pattern's type arguments
-
-MethodExitsFinder_no_return_type_selected=No return type selected
-
-TextSearchLabelProvider_matchCountFormat={0} ({1} matches)
-
-FiltersDialog_title=Java Search Filters
-FiltersDialog_filters_label=Select the &matches to exclude from the search results:
-FiltersDialog_description_label=Filter Description:
-FiltersDialog_limit_label=&Limit top level elements in Java search view to:
-FiltersDialog_limit_error=Element limit must be a positive number
-FiltersDialogAction_label=Fi&lters...
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchQueryResultCollector.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchQueryResultCollector.java
deleted file mode 100644
index 91d234a..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchQueryResultCollector.java
+++ /dev/null
@@ -1,33 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.wst.common.core.search.SearchMatch;
-import org.eclipse.wst.common.core.search.SearchRequestor;
-
-class SearchQueryResultCollector extends SearchRequestor {
-	
-	private SearchResult fSearchResult;
-
-	
-	protected SearchQueryResultCollector(SearchResult result){
-		super();
-		fSearchResult= result;
-	}
-
-	public void acceptSearchMatch(SearchMatch match) throws CoreException {
-		Match aMatch = new Match(match.getFile(), match.getOffset(), match.getLength());
-		fSearchResult.addMatch(aMatch);
-		
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java
deleted file mode 100644
index c26fb9c..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java
+++ /dev/null
@@ -1,82 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.search.internal.ui.SearchPluginImages;
-import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-import org.eclipse.search.ui.text.IEditorMatchAdapter;
-import org.eclipse.search.ui.text.IFileMatchAdapter;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-
-public class SearchResult extends AbstractTextSearchResult implements IEditorMatchAdapter, IFileMatchAdapter {
-	private final Match[] EMPTY_ARR= new Match[0];
-	
-	private AbstractSearchQuery fQuery;
-
-	public SearchResult(AbstractSearchQuery job) {
-		fQuery= job;
-	}
-	public ImageDescriptor getImageDescriptor() {
-		return SearchPluginImages.DESC_OBJ_TSEARCH_DPDN;
-	}
-	public String getLabel() {
-		return fQuery.getResultLabel(getMatchCount());
-	}
-	public String getTooltip() {
-		return getLabel();
-	}
-
-	public Match[] computeContainedMatches(AbstractTextSearchResult result, IFile file) {
-		return getMatches(file);
-	}
-
-	public IFile getFile(Object element) {
-		if (element instanceof IFile)
-			return (IFile)element;
-		return null;
-	}
-
-	public boolean isShownInEditor(Match match, IEditorPart editor) {
-		IEditorInput ei= editor.getEditorInput();
-		if (ei instanceof IFileEditorInput) {
-			IFileEditorInput fi= (IFileEditorInput) ei;
-			return match.getElement().equals(fi.getFile());
-		}
-		return false;
-	}
-	
-	public Match[] computeContainedMatches(AbstractTextSearchResult result, IEditorPart editor) {
-		IEditorInput ei= editor.getEditorInput();
-		if (ei instanceof IFileEditorInput) {
-			IFileEditorInput fi= (IFileEditorInput) ei;
-			return getMatches(fi.getFile());
-		}
-		return EMPTY_ARR;
-	}
-
-	public ISearchQuery getQuery() {
-		return fQuery;
-	}
-	
-	public IFileMatchAdapter getFileMatchAdapter() {
-		return this;
-	}
-	
-	public IEditorMatchAdapter getEditorMatchAdapter() {
-		return this;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java
deleted file mode 100644
index c343931..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java
+++ /dev/null
@@ -1,380 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import java.text.Collator;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.util.DelegatingDragAdapter;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.search.internal.ui.SearchMessages;
-import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.internal.ui.SearchPreferencePage;
-import org.eclipse.search.internal.ui.text.EditorOpener;
-import org.eclipse.search.internal.ui.text.FileLabelProvider;
-import org.eclipse.search.internal.ui.text.FileSearchQuery;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
-import org.eclipse.search.internal.ui.text.ResourceTransferDragAdapter;
-import org.eclipse.search.internal.ui.text.SortAction;
-import org.eclipse.search.ui.IContextMenuConstants;
-import org.eclipse.search.ui.ISearchResultViewPart;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionContext;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.ActionGroup;
-import org.eclipse.ui.actions.OpenFileAction;
-import org.eclipse.ui.actions.OpenWithMenu;
-import org.eclipse.ui.dialogs.PropertyDialogAction;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.part.IShowInTargetList;
-import org.eclipse.ui.part.ResourceTransfer;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.wst.common.ui.internal.UIPlugin;
-
-
-public class SearchResultPage extends AbstractTextSearchViewPage implements IAdaptable {
-	
-	public static class DecoratorIgnoringViewerSorter extends ViewerSorter {
-		private final ILabelProvider fLabelProvider;
-
-		public DecoratorIgnoringViewerSorter(ILabelProvider labelProvider) {
-			super(null); // lazy initialization
-			fLabelProvider= labelProvider;
-		}
-		
-	    public int compare(Viewer viewer, Object e1, Object e2) {
-	        String name1= fLabelProvider.getText(e1);
-	        String name2= fLabelProvider.getText(e2);
-	        if (name1 == null)
-	            name1 = "";//$NON-NLS-1$
-	        if (name2 == null)
-	            name2 = "";//$NON-NLS-1$
-	        return getCollator().compare(name1, name2);
-	    }
-	    
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ViewerSorter#getCollator()
-		 */
-		public final Collator getCollator() {
-			if (collator == null) {
-				collator= Collator.getInstance();
-			}
-			return collator;
-		}
-	}
-	
-	private static final String KEY_SORTING= "org.eclipse.search.resultpage.sorting"; //$NON-NLS-1$
-
-	private ActionGroup fActionGroup;
-	private IFileSearchContentProvider fContentProvider;
-	private int fCurrentSortOrder;
-	private SortAction fSortByNameAction;
-	private SortAction fSortByPathAction;
-	
-	private EditorOpener fEditorOpener= new EditorOpener();
-
-		
-	private static final String[] SHOW_IN_TARGETS= new String[] { IPageLayout.ID_RES_NAV };
-	private  static final IShowInTargetList SHOW_IN_TARGET_LIST= new IShowInTargetList() {
-		public String[] getShowInTargetIds() {
-			return SHOW_IN_TARGETS;
-		}
-	};
-
-	private IPropertyChangeListener fPropertyChangeListener;
-	
-	public SearchResultPage() {
-		// TODO
-		//fSortByNameAction= new SortAction(SearchMessages.FileSearchPage_sort_name_label, this, FileLabelProvider.SHOW_LABEL_PATH); 
-		//fSortByPathAction= new SortAction(SearchMessages.FileSearchPage_sort_path_label, this, FileLabelProvider.SHOW_PATH_LABEL); 
-
-		fPropertyChangeListener= new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (SearchPreferencePage.LIMIT_TABLE.equals(event.getProperty()) || SearchPreferencePage.LIMIT_TABLE_TO.equals(event.getProperty()))
-					if (getViewer() instanceof TableViewer) {
-						getViewPart().updateLabel();
-						getViewer().refresh();
-					}
-			}
-		};
-		SearchPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(fPropertyChangeListener);
-		
-}
-	
-	public StructuredViewer getViewer() {
-		return super.getViewer();
-	}
-	
-	private void addDragAdapters(StructuredViewer viewer) {
-		Transfer[] transfers= new Transfer[] { ResourceTransfer.getInstance() };
-		int ops= DND.DROP_COPY | DND.DROP_LINK;
-		
-		DelegatingDragAdapter adapter= new DelegatingDragAdapter();
-		adapter.addDragSourceListener(new ResourceTransferDragAdapter(viewer));
-		
-		viewer.addDragSupport(ops, transfers, adapter);
-	}	
-
-	protected void configureTableViewer(TableViewer viewer) {
-		viewer.setUseHashlookup(true);
-		FileLabelProvider innerLabelProvider= new FileLabelProvider(this, fCurrentSortOrder);
-		viewer.setLabelProvider(new DecoratingLabelProvider(innerLabelProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
-		viewer.setContentProvider(new SearchResultTableContentProvider(this));
-		viewer.setSorter(new DecoratorIgnoringViewerSorter(innerLabelProvider));
-		fContentProvider= (IFileSearchContentProvider) viewer.getContentProvider();
-		addDragAdapters(viewer);
-	}
-
-	protected void configureTreeViewer(TreeViewer viewer) {
-		viewer.setUseHashlookup(true);
-		FileLabelProvider innerLabelProvider= new FileLabelProvider(this, FileLabelProvider.SHOW_LABEL);
-		viewer.setLabelProvider(new DecoratingLabelProvider(innerLabelProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
-		viewer.setContentProvider(new SearchResultTreeContentProvider(viewer));
-		viewer.setSorter(new DecoratorIgnoringViewerSorter(innerLabelProvider));
-		fContentProvider= (IFileSearchContentProvider) viewer.getContentProvider();
-		addDragAdapters(viewer);
-	}
-
-	protected void showMatch(Match match, int offset, int length, boolean activate) throws PartInitException {
-		IFile file= (IFile) match.getElement();
-		IWorkbenchPage wbPage= UIPlugin.getActivePage();
-		IEditorPart editor= IDE.openEditor(wbPage, (IFile) match.getElement(), activate);
-		if (offset != 0 && length != 0) {
-			if (editor instanceof ITextEditor) {
-				ITextEditor textEditor= (ITextEditor) editor;
-				textEditor.selectAndReveal(offset, length);
-			} else if (editor != null) {
-				showWithMarker(editor, file, offset, length);
-			}
-		}
-	}
-	
-	private void showWithMarker(IEditorPart editor, IFile file, int offset, int length) throws PartInitException {
-		IMarker marker= null;
-		try {
-			marker= file.createMarker(NewSearchUI.SEARCH_MARKER);
-			HashMap attributes= new HashMap(4);
-			attributes.put(IMarker.CHAR_START, new Integer(offset));
-			attributes.put(IMarker.CHAR_END, new Integer(offset + length));
-			marker.setAttributes(attributes);
-			IDE.gotoMarker(editor, marker);
-		} catch (CoreException e) {
-			throw new PartInitException(SearchMessages.FileSearchPage_error_marker, e); 
-		} finally {
-			if (marker != null)
-				try {
-					marker.delete();
-				} catch (CoreException e) {
-					// ignore
-				}
-		}
-	}
-
-	protected void fillContextMenu(IMenuManager mgr) {
-		super.fillContextMenu(mgr);
-		addSortActions(mgr);
-		fActionGroup.setContext(new ActionContext(getSite().getSelectionProvider().getSelection()));
-		fActionGroup.fillContextMenu(mgr);
-		FileSearchQuery query= (FileSearchQuery) getInput().getQuery();
-	
-	}
-	
-	
-	private void addSortActions(IMenuManager mgr) {
-		if (getLayout() != FLAG_LAYOUT_FLAT)
-			return;
-		MenuManager sortMenu= new MenuManager(SearchMessages.FileSearchPage_sort_by_label); 
-		sortMenu.add(fSortByNameAction);
-		sortMenu.add(fSortByPathAction);
-		
-		fSortByNameAction.setChecked(fCurrentSortOrder == fSortByNameAction.getSortOrder());
-		fSortByPathAction.setChecked(fCurrentSortOrder == fSortByPathAction.getSortOrder());
-		
-		mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, sortMenu);
-	}
-
-	public void setViewPart(ISearchResultViewPart part) {
-		super.setViewPart(part);
-		fActionGroup= new NewTextSearchActionGroup(part);
-	}
-	
-	public void dispose() {
-		fActionGroup.dispose();
-		SearchPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
-		super.dispose();
-	}
-
-	protected void elementsChanged(Object[] objects) {
-		if (fContentProvider != null)
-			fContentProvider.elementsChanged(objects);
-	}
-
-	protected void clear() {
-		if (fContentProvider != null)
-			fContentProvider.clear();
-	}
-
-	public void setSortOrder(int sortOrder) {
-		fCurrentSortOrder= sortOrder;
-		DecoratingLabelProvider lpWrapper= (DecoratingLabelProvider) getViewer().getLabelProvider();
-		((FileLabelProvider) lpWrapper.getLabelProvider()).setOrder(sortOrder);
-		getViewer().refresh();
-		getSettings().put(KEY_SORTING, fCurrentSortOrder);
-	}
-	
-	public void restoreState(IMemento memento) {
-		super.restoreState(memento);
-		try {
-			fCurrentSortOrder= getSettings().getInt(KEY_SORTING);
-		} catch (NumberFormatException e) {
-			//fCurrentSortOrder= fSortByNameAction.getSortOrder();
-		}
-		if (memento != null) {
-			Integer value= memento.getInteger(KEY_SORTING);
-			if (value != null)
-				fCurrentSortOrder= value.intValue();
-		}
-	}
-	public void saveState(IMemento memento) {
-		super.saveState(memento);
-		memento.putInteger(KEY_SORTING, fCurrentSortOrder);
-	}
-	
-	public Object getAdapter(Class adapter) {
-		if (IShowInTargetList.class.equals(adapter)) {
-			return SHOW_IN_TARGET_LIST;
-		}
-		return null;
-	}
-	
-	public String getLabel() {
-		String label= super.getLabel();
-		StructuredViewer viewer= getViewer();
-		if (viewer instanceof TableViewer) {
-			TableViewer tv= (TableViewer) viewer;
-
-			AbstractTextSearchResult result= getInput();
-			if (result != null) {
-				int itemCount= ((IStructuredContentProvider) tv.getContentProvider()).getElements(getInput()).length;
-				int fileCount= getInput().getElements().length;
-				if (itemCount < fileCount) {
-					String format= SearchMessages.FileSearchPage_limited_format; 
-					return MessageFormat.format(format, new Object[]{label, new Integer(itemCount), new Integer(fileCount)});
-				}
-			}
-		}
-		return label;
-	}
-	
-	class NewTextSearchActionGroup extends ActionGroup {
-
-		private ISelectionProvider fSelectionProvider;		
-		private IWorkbenchPage fPage;
-		private OpenFileAction fOpenAction;
-		private PropertyDialogAction fOpenPropertiesDialog;
-
-		public NewTextSearchActionGroup(IViewPart part) {
-			Assert.isNotNull(part);
-			IWorkbenchPartSite site= part.getSite();
-			fSelectionProvider= site.getSelectionProvider();
-			fPage= site.getPage();
-			fOpenPropertiesDialog= new PropertyDialogAction(site, fSelectionProvider);
-			fOpenAction= new OpenFileAction(fPage);
-			ISelection selection= fSelectionProvider.getSelection();
-
-			if (selection instanceof IStructuredSelection)
-				fOpenPropertiesDialog.selectionChanged((IStructuredSelection)selection);
-			else
-				fOpenPropertiesDialog.selectionChanged(selection);
-			
-		}
-		
-		public void fillContextMenu(IMenuManager menu) {
-			// view must exist if we create a context menu for it.
-			
-			ISelection selection= getContext().getSelection();
-			if (selection instanceof IStructuredSelection) {
-				addOpenWithMenu(menu, (IStructuredSelection) selection);
-				if (fOpenPropertiesDialog != null && fOpenPropertiesDialog.isEnabled() && selection != null &&fOpenPropertiesDialog.isApplicableForSelection((IStructuredSelection) selection))
-					menu.appendToGroup(IContextMenuConstants.GROUP_PROPERTIES, fOpenPropertiesDialog);
-			}
-				
-		}
-		
-		private void addOpenWithMenu(IMenuManager menu, IStructuredSelection selection) {
-			if (selection == null || selection.size() != 1)
-				return;
-		
-			Object o= selection.getFirstElement();
-		
-			if (!(o instanceof IAdaptable))
-				return; 
-		
-			fOpenAction.selectionChanged(selection);
-			menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, fOpenAction);
-		
-			// Create menu
-			IMenuManager submenu= new MenuManager(SearchMessages.OpenWithMenu_label); 
-			submenu.add(new OpenWithMenu(fPage, (IAdaptable)o));
-		
-			// Add the submenu.
-			menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, submenu);
-		}
-
-		/* (non-Javadoc)
-		 * Method declared in ActionGroup
-		 */
-		public void fillActionBars(IActionBars actionBar) {
-			super.fillActionBars(actionBar);
-			setGlobalActionHandlers(actionBar);
-		}
-		
-		private void setGlobalActionHandlers(IActionBars actionBars) {
-			actionBars.setGlobalActionHandler(ActionFactory.PROPERTIES.getId(), fOpenPropertiesDialog);		
-		}
-	}	
-
-
-}
-
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java
deleted file mode 100644
index 981b3b5..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java
+++ /dev/null
@@ -1,78 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.search.internal.ui.SearchPreferencePage;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-
-public class SearchResultTableContentProvider implements IStructuredContentProvider, IFileSearchContentProvider {
-	
-	private final Object[] EMPTY_ARR= new Object[0];
-	
-	private SearchResultPage fPage;
-	private AbstractTextSearchResult fResult;
-
-	public SearchResultTableContentProvider(SearchResultPage page) {
-		fPage= page;
-	}
-	
-	public void dispose() {
-		// nothing to do
-	}
-	
-	public Object[] getElements(Object inputElement) {
-		if (inputElement instanceof SearchResult) {
-			Object[] elements= ((SearchResult)inputElement).getElements();
-			int tableLimit= SearchPreferencePage.getTableLimit();
-			if (SearchPreferencePage.isTableLimited() && elements.length > tableLimit) {
-				Object[] shownElements= new Object[tableLimit];
-				System.arraycopy(elements, 0, shownElements, 0, tableLimit);
-				return shownElements;
-			}
-			return elements;
-		}
-		return EMPTY_ARR;
-	}
-	
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		if (newInput instanceof SearchResult) {
-			fResult= (SearchResult) newInput;
-		}
-	}
-	
-	public void elementsChanged(Object[] updatedElements) {
-		TableViewer viewer= getViewer();
-		boolean tableLimited= SearchPreferencePage.isTableLimited();
-		for (int i= 0; i < updatedElements.length; i++) {
-			if (fResult.getMatchCount(updatedElements[i]) > 0) {
-				if (viewer.testFindItem(updatedElements[i]) != null)
-					viewer.update(updatedElements[i], null);
-				else {
-					if (!tableLimited || viewer.getTable().getItemCount() < SearchPreferencePage.getTableLimit())
-						viewer.add(updatedElements[i]);
-				}
-			} else
-				viewer.remove(updatedElements[i]);
-		}
-	}
-
-	private TableViewer getViewer() {
-		return (TableViewer) fPage.getViewer();
-	}
-	
-	public void clear() {
-		getViewer().refresh();
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java
deleted file mode 100644
index a3ca289..0000000
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java
+++ /dev/null
@@ -1,168 +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
- *******************************************************************************/
-package org.eclipse.wst.common.ui.internal.search;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-
-
-public class SearchResultTreeContentProvider implements ITreeContentProvider, IFileSearchContentProvider {
-
-	private final Object[] EMPTY_ARR= new Object[0];
-
-	private AbstractTextSearchResult fResult;
-	private AbstractTreeViewer fTreeViewer;
-	private Map fChildrenMap;
-	
-	SearchResultTreeContentProvider(AbstractTreeViewer viewer) {
-		fTreeViewer= viewer;
-	}
-	
-	public Object[] getElements(Object inputElement) {
-		return getChildren(inputElement);
-	}
-	
-	public void dispose() {
-		// nothing to do
-	}
-	
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		if (newInput instanceof SearchResult) {
-			initialize((SearchResult) newInput);
-		}
-	}
-	
-
-	protected synchronized void initialize(AbstractTextSearchResult result) {
-		fResult= result;
-		fChildrenMap= new HashMap();
-		if (result != null) {
-			Object[] elements= result.getElements();
-			for (int i= 0; i < elements.length; i++) {
-				insert(elements[i], false);
-			}
-		}
-	}
-
-	protected void insert(Object child, boolean refreshViewer) {
-		Object parent= getParent(child);
-		while (parent != null) {
-			if (insertChild(parent, child)) {
-				if (refreshViewer)
-					fTreeViewer.add(parent, child);
-			} else {
-				if (refreshViewer)
-					fTreeViewer.refresh(parent);
-				return;
-			}
-			child= parent;
-			parent= getParent(child);
-		}
-		if (insertChild(fResult, child)) {
-			if (refreshViewer)
-				fTreeViewer.add(fResult, child);
-		}
-	}
-
-	/**
-	 * returns true if the child already was a child of parent.
-	 * 
-	 * @param parent
-	 * @param child
-	 * @return Returns <code>trye</code> if the child was added
-	 */
-	private boolean insertChild(Object parent, Object child) {
-		Set children= (Set) fChildrenMap.get(parent);
-		if (children == null) {
-			children= new HashSet();
-			fChildrenMap.put(parent, children);
-		}
-		return children.add(child);
-	}
-
-	protected void remove(Object element, boolean refreshViewer) {
-		// precondition here:  fResult.getMatchCount(child) <= 0
-	
-		if (hasChildren(element)) {
-			if (refreshViewer)
-				fTreeViewer.refresh(element);
-		} else {
-			if (fResult.getMatchCount(element) == 0) {
-				fChildrenMap.remove(element);
-				Object parent= getParent(element);
-				if (parent != null) {
-					removeFromSiblings(element, parent);
-					remove(parent, refreshViewer);
-				} else {
-					removeFromSiblings(element, fResult);
-					if (refreshViewer)
-						fTreeViewer.refresh();
-				}
-			} else {
-				if (refreshViewer) {
-					fTreeViewer.refresh(element);
-				}
-			}
-		}
-	}
-
-	private void removeFromSiblings(Object element, Object parent) {
-		Set siblings= (Set) fChildrenMap.get(parent);
-		if (siblings != null) {
-			siblings.remove(element);
-		}
-	}
-
-	public Object[] getChildren(Object parentElement) {
-		Set children= (Set) fChildrenMap.get(parentElement);
-		if (children == null)
-			return EMPTY_ARR;
-		return children.toArray();
-	}
-
-	public boolean hasChildren(Object element) {
-		return getChildren(element).length > 0;
-	}
-
-	public synchronized void elementsChanged(Object[] updatedElements) {
-		for (int i= 0; i < updatedElements.length; i++) {
-			if (fResult.getMatchCount(updatedElements[i]) > 0)
-				insert(updatedElements[i], true);
-			else
-				remove(updatedElements[i], true);
-		}
-	}
-
-	public void clear() {
-		initialize(fResult);
-		fTreeViewer.refresh();
-	}
-
-	public Object getParent(Object element) {
-		if (element instanceof IProject)
-			return null;
-		if (element instanceof IResource) {
-			IResource resource = (IResource) element;
-			return resource.getParent();
-		}
-		return null;
-	}
-}
diff --git a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/internal/UIPlugin.java b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/internal/UIPlugin.java
index c06c011..978fc3e 100644
--- a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/internal/UIPlugin.java
+++ b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/internal/UIPlugin.java
@@ -19,17 +19,18 @@
 
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
+
+
 /**
  * The main plugin class to be used in the desktop.
  */
@@ -45,6 +46,11 @@
 		plugin = this;
 	}
 	
+	public UIPlugin(IPluginDescriptor descriptor) {
+		super(descriptor);
+		plugin = this;
+	}
+	
 	/**
 	 * Returns the shared instance.
 	 */
@@ -157,15 +163,4 @@
 		// TODO Auto-generated method stub
 		super.stop(context);
 	}
-    
-    public static IWorkbenchPage getActivePage() {
-        return getDefault().internalGetActivePage();
-    }
-    
-    private IWorkbenchPage internalGetActivePage() {
-        IWorkbenchWindow window= getWorkbench().getActiveWorkbenchWindow();
-        if (window == null)
-            return null;
-        return getWorkbench().getActiveWorkbenchWindow().getActivePage();
-    }    
 }
diff --git a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageEditorSite.java b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageEditorSite.java
index ee280ca..da78acd 100644
--- a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageEditorSite.java
+++ b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageEditorSite.java
@@ -18,9 +18,6 @@
 import org.eclipse.ui.part.MultiPageEditorPart;
 import org.eclipse.ui.part.MultiPageEditorSite;
 
-/**
- * @deprecated - No longer necessary as of 3.2M3.
- */
 public class PostMultiPageEditorSite extends MultiPageEditorSite {
 	/**
 	 * The post selection change listener, initialized lazily;
diff --git a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageSelectionProvider.java b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageSelectionProvider.java
index 3a4f908..acdf9df 100644
--- a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageSelectionProvider.java
+++ b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostMultiPageSelectionProvider.java
@@ -19,9 +19,6 @@
 import org.eclipse.ui.part.MultiPageEditorPart;
 import org.eclipse.ui.part.MultiPageSelectionProvider;
 
-/**
- * @deprecated - No longer necessary as of 3.2M3.
- */
 public class PostMultiPageSelectionProvider extends MultiPageSelectionProvider implements IPostSelectionProvider {
 	private ListenerList postListeners;
 
diff --git a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostSelectionMultiPageEditorPart.java b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostSelectionMultiPageEditorPart.java
index bcd2f07..00da77b 100644
--- a/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostSelectionMultiPageEditorPart.java
+++ b/plugins/org.eclipse.wst.common.ui/src/org/eclipse/wst/common/ui/provisional/editors/PostSelectionMultiPageEditorPart.java
@@ -23,8 +23,6 @@
  * listeners. This part was created as a workaround for
  * https://bugs.eclipse.org/bugs/show_bug.cgi?id=108324 and will be removed
  * once WTP is building on a platform milestone that includes a fix.
- * 
- * @deprecated - No longer necessary as of 3.2M3.
  */
 public abstract class PostSelectionMultiPageEditorPart extends MultiPageEditorPart {
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
diff --git a/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
index 289398d..2caa0e9 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@
 Bundle-Activator: org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.uriresolver.internal;x-internal:=true,
- org.eclipse.wst.common.uriresolver.internal.provisional;x-internal:=true,
- org.eclipse.wst.common.uriresolver.internal.util;x-internal:=true
+Export-Package: org.eclipse.wst.common.uriresolver.internal,
+ org.eclipse.wst.common.uriresolver.internal.provisional,
+  org.eclipse.wst.common.uriresolver.internal.util
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources
 Eclipse-AutoStart: true
diff --git a/plugins/org.eclipse.wst.internet.cache/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.internet.cache/META-INF/MANIFEST.MF
index fbb83ba..957cd87 100644
--- a/plugins/org.eclipse.wst.internet.cache/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.internet.cache/META-INF/MANIFEST.MF
@@ -11,5 +11,4 @@
  org.eclipse.wst.common.uriresolver,
  org.eclipse.core.resources
 Eclipse-AutoStart: true
-Export-Package: org.eclipse.wst.internet.cache.internal;x-friends:="org.eclipse.wst.internet.cache.tests",
- org.eclipse.wst.internet.cache.internal.preferences;x-internal:=true
+Export-Package: org.eclipse.wst.internet.cache.internal;x-friends:="org.eclipse.wst.internet.cache.tests"
diff --git a/plugins/org.eclipse.wst.validation.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.validation.ui/META-INF/MANIFEST.MF
index 536f29a..abc5772 100644
--- a/plugins/org.eclipse.wst.validation.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.validation.ui/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Validation Framework UI
 Bundle-SymbolicName: org.eclipse.wst.validation.ui; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.validation.internal.ui.plugin.ValidationUIPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.validation.internal.ui;x-internal:=true,
- org.eclipse.wst.validation.internal.ui.plugin;x-internal:=true
+Export-Package: .,
+ org.eclipse.wst.validation.internal.ui,
+ org.eclipse.wst.validation.internal.ui.plugin
 Require-Bundle: org.eclipse.ui.ide,
  org.eclipse.core.resources,
  org.eclipse.ui,
@@ -16,6 +17,5 @@
  org.eclipse.core.runtime,
  org.eclipse.wst.common.frameworks,
  org.eclipse.wst.validation,
- org.eclipse.jem.util,
- org.eclipse.ui.forms
+ org.eclipse.jem.util
 Eclipse-AutoStart: true
diff --git a/plugins/org.eclipse.wst.validation.ui/build.properties b/plugins/org.eclipse.wst.validation.ui/build.properties
index 4ce34bd..caced11 100644
--- a/plugins/org.eclipse.wst.validation.ui/build.properties
+++ b/plugins/org.eclipse.wst.validation.ui/build.properties
@@ -10,10 +10,9 @@
 ###############################################################################
 bin.includes = .,\
                plugin.xml,\
+               plugin.properties,\
                META-INF/,\
-               about.html,\
-               icons/,\
-               plugin.properties
+               about.html
 source.. = validateui/,\
                                 property_files/
 output.. = bin/
diff --git a/plugins/org.eclipse.wst.validation.ui/icons/fail_tbl.gif b/plugins/org.eclipse.wst.validation.ui/icons/fail_tbl.gif
deleted file mode 100644
index 07dcaee..0000000
--- a/plugins/org.eclipse.wst.validation.ui/icons/fail_tbl.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.wst.validation.ui/icons/ok_tbl.gif b/plugins/org.eclipse.wst.validation.ui/icons/ok_tbl.gif
deleted file mode 100644
index 5f91634..0000000
--- a/plugins/org.eclipse.wst.validation.ui/icons/ok_tbl.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.wst.validation.ui/plugin.xml b/plugins/org.eclipse.wst.validation.ui/plugin.xml
index bbabc9f..eedab8f 100644
--- a/plugins/org.eclipse.wst.validation.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.validation.ui/plugin.xml
@@ -9,9 +9,8 @@
 <!-- By saying "adaptable=true", this item will appear on both IProject and IJavaProject -->
    <extension
          point="org.eclipse.ui.popupMenus">
-      <objectContribution
-            adaptable="true"
-            objectClass="org.eclipse.core.resources.IResource"
+      <viewerContribution 
+            targetID="#CommonNavigatorPopupMenu"
             id="ValidationMenuAction">
          <action
                label="%VBF_UI_POPUP_RUNVALIDATION"
@@ -20,7 +19,7 @@
                enablesFor="+"
                id="ValidationAction">
          </action>
-      </objectContribution>      
+      </viewerContribution>
    </extension>
   
 
diff --git a/plugins/org.eclipse.wst.validation.ui/property_files/validate_ui.properties b/plugins/org.eclipse.wst.validation.ui/property_files/validate_ui.properties
index 7bd1de3..36173e0 100644
--- a/plugins/org.eclipse.wst.validation.ui/property_files/validate_ui.properties
+++ b/plugins/org.eclipse.wst.validation.ui/property_files/validate_ui.properties
@@ -59,8 +59,8 @@
 PREF_BUTTON_OVERRIDE=Allow projects to override these preference settings
 PREF_BUTTON_FULL=Run validation when you manually build a project
 PREF_BUTTON_AUTO=Run validation automatically when you save changes to a resource
-PREF_BUTTON_ENABLEALL=Enable All
-PREF_BUTTON_DISABLEALL=Disable All
+PREF_BUTTON_SELECTALL=Select All
+PREF_BUTTON_DESELECTALL=Deselect All
 PREF_VALLIST_TITLE=The selected validators will run when validation is performed:
 PREF_LBL_MAXMSGS=Maximum number of validation messages on a project
 PREF_ERROR_INT=IWAE0001E The number of validation messages must be a positive integer.
@@ -107,9 +107,6 @@
 VBF_UI_CLOSE=Close
 VBF_UI_STATUS=Status
 VBF_UI_RESCANCELLED=Validation was cancelled on {0}.
-DISABLE_VALIDATION=Suspend all validators
-INFO=This preference applies to the projects that have org.eclipse.wst.validation.validationbuilder defined.Validators are run on the projects based on the filters defined in the org.eclipse.wst.validation.validator extension point.
-
 #
 # End Validation Builder Framework UI Strings
 #
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ContextIds.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ContextIds.java
index b4b36f0..ab3e337 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ContextIds.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ContextIds.java
@@ -32,7 +32,7 @@
 
 	public static final String VALIDATION_PREFERENCE_PAGE = PREFIX + ".jvgp0000"; //$NON-NLS-1$
 	public static final String VALIDATION_PREFERENCE_PAGE_OVERRIDE = PREFIX + ".jvgp0005"; //$NON-NLS-1$
-	public static final String VALIDATION_PREFERENCE_PAGE_DISABLE_ALL_ENABLED = PREFIX + ".jvgp0010"; //$NON-NLS-1$
+	public static final String VALIDATION_PREFERENCE_PAGE_REBUILD_ENABLED = PREFIX + ".jvgp0010"; //$NON-NLS-1$
 	//	public static final String VALIDATION_PREFERENCE_PAGE_REBUILD_DISABLED = PREFIX +
 	// ".jvgp0011"; //$NON-NLS-1$
 	public static final String VALIDATION_PREFERENCE_PAGE_AUTO_ENABLED = PREFIX + ".jvgp0020"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ResourceConstants.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ResourceConstants.java
index f945278..ac4b244 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ResourceConstants.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ResourceConstants.java
@@ -61,8 +61,8 @@
 
 	public static final String VBF_UI_POPUP_RUNVALIDATION = "%VBF_UI_POPUP_RUNVALIDATION"; //$NON-NLS-1$
 
-	/* package */static final String PREF_BUTTON_ENABLEALL = "PREF_BUTTON_ENABLEALL"; //$NON-NLS-1$
-	/* package */static final String PREF_BUTTON_DISABLEALL = "PREF_BUTTON_DISABLEALL"; //$NON-NLS-1$
+	/* package */static final String PREF_BUTTON_SELECTALL = "PREF_BUTTON_SELECTALL"; //$NON-NLS-1$
+	/* package */static final String PREF_BUTTON_DESELECTALL = "PREF_BUTTON_DESELECTALL"; //$NON-NLS-1$
 	/* package */static final String PREF_VALLIST_TITLE = "PREF_VALLIST_TITLE"; //$NON-NLS-1$
 	/* package */static final String PREF_BUTTON_AUTO = "PREF_BUTTON_AUTO"; //$NON-NLS-1$
 	/* package */static final String PREF_BUTTON_OVERRIDE = "PREF_BUTTON_OVERRIDE"; //$NON-NLS-1$
@@ -86,7 +86,4 @@
 	/* package */static final String VBF_UI_CLOSE = "VBF_UI_CLOSE"; //$NON-NLS-1$
 	/* package */static final String VBF_UI_STATUS = "VBF_UI_STATUS"; //$NON-NLS-1$
 	/* package */static final String VBF_UI_RESCANCELLED = "VBF_UI_RESCANCELLED"; //$NON-NLS-1$
-	
-	/* package */static final String DISABLE_VALIDATION = "DISABLE_VALIDATION"; //$NON-NLS-1$
-	static final String INFO = "INFO"; //$NON-NLS-1$
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationJob.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationJob.java
deleted file mode 100644
index 860dfe7..0000000
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationJob.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.validation.internal.ui;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-
-public class ValidationJob extends Job {
-
-
-	private Map projects = null;
-	public ValidationJob(String name) {
-		super(name);
-	}
-
-
-	public void setProjectsMap(Map projects){
-		this.projects = projects;
-	}
-
-
-	protected IStatus run(IProgressMonitor monitor) {
-
-		return null;
-	}
-}
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationMenuAction.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationMenuAction.java
index 5983cf7..035a218 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationMenuAction.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationMenuAction.java
@@ -23,15 +23,15 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceVisitor;
+import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Display;
@@ -44,7 +44,8 @@
 import org.eclipse.wst.validation.internal.ProjectConfiguration;
 import org.eclipse.wst.validation.internal.ValidationRegistryReader;
 import org.eclipse.wst.validation.internal.ValidationSelectionHandlerRegistryReader;
-import org.eclipse.wst.validation.internal.operations.ManualValidatorsOperation;
+import org.eclipse.wst.validation.internal.operations.EnabledIncrementalValidatorsOperation;
+import org.eclipse.wst.validation.internal.operations.EnabledValidatorsOperation;
 import org.eclipse.wst.validation.internal.operations.ValidatorManager;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
 import org.eclipse.wst.validation.internal.ui.plugin.ValidationUIPlugin;
@@ -241,58 +242,6 @@
 	 * @param window
 	 *            the desktop window passed by the action proxy
 	 */
-//	public void run(IAction action) {
-//		ValidateAction vaction = null;
-//		if (action instanceof ValidateAction) {
-//			vaction = (ValidateAction) action;
-//		}
-//		final Map projects = loadSelected(vaction, false);
-//		if ((projects == null) || (projects.size() == 0)) {
-//			return;
-//		}
-//		final ProgressAndTextDialog dialog = new ProgressAndTextDialog(getShell());
-//		try {
-//			IRunnableWithProgress runnable = ValidationUIPlugin.getRunnableWithProgress(new IWorkspaceRunnable() {
-//				public void run(IProgressMonitor monitor) {
-//					validate(monitor, projects, dialog);
-//				}
-//			});
-//			// validate all EJBs in this project
-//			dialog.run(true, true, runnable); // fork, cancelable.
-//		} catch (InvocationTargetException exc) {
-//			Logger logger = WTPUIPlugin.getLogger();
-//			if (logger.isLoggingLevel(Level.SEVERE)) {
-//				LogEntry entry = ValidationUIPlugin.getLogEntry();
-//				entry.setSourceID("ValidationMenuAction.run(IAction)"); //$NON-NLS-1$
-//				entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL);
-//				entry.setTargetException(exc);
-//				logger.write(Level.SEVERE, entry);
-//				if (exc.getTargetException() != null) {
-//					entry.setTargetException(exc.getTargetException());
-//					logger.write(Level.SEVERE, entry);
-//				}
-//			}
-//			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL);
-//			dialog.addText(internalErrorMessage);
-//		} catch (InterruptedException exc) {
-//			// User cancelled validation
-//		} catch (Throwable exc) {
-//			Logger logger = WTPUIPlugin.getLogger();
-//			if (logger.isLoggingLevel(Level.SEVERE)) {
-//				LogEntry entry = ValidationUIPlugin.getLogEntry();
-//				entry.setSourceID("ValidationMenuAction.run(IAction)"); //$NON-NLS-1$
-//				entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL);
-//				entry.setTargetException(exc);
-//				logger.write(Level.SEVERE, entry);
-//			}
-//			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL);
-//			dialog.addText(internalErrorMessage);
-//		} finally {
-//			_selectedResources.clear();
-//		}
-//	}
-	
-	
 	public void run(IAction action) {
 		ValidateAction vaction = null;
 		if (action instanceof ValidateAction) {
@@ -302,35 +251,52 @@
 		if ((projects == null) || (projects.size() == 0)) {
 			return;
 		}
-
-		ValidationJob validationop = new ValidationJob("Running Validation"){ //$NON-NLS-1$
-			protected IStatus run(IProgressMonitor monitor) {
-				final Map projectsMap = projects;
-				IStatus stat = validate(monitor, projectsMap);	
-				_selectedResources.clear();
-				return stat;
+		final ProgressAndTextDialog dialog = new ProgressAndTextDialog(getShell());
+		try {
+			IRunnableWithProgress runnable = ValidationUIPlugin.getRunnableWithProgress(new IWorkspaceRunnable() {
+				public void run(IProgressMonitor monitor) {
+					validate(monitor, projects, dialog);
+				}
+			});
+			// validate all EJBs in this project
+			dialog.run(true, true, runnable); // fork, cancelable.
+		} catch (InvocationTargetException exc) {
+			Logger logger = WTPUIPlugin.getLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationUIPlugin.getLogEntry();
+				entry.setSourceID("ValidationMenuAction.run(IAction)"); //$NON-NLS-1$
+				entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL);
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+				if (exc.getTargetException() != null) {
+					entry.setTargetException(exc.getTargetException());
+					logger.write(Level.SEVERE, entry);
+				}
 			}
-		};
-		validationop.setProjectsMap(projects);
-		validationop.setRule(ResourcesPlugin.getWorkspace().getRoot());
-		validationop.setUser(true);
-		validationop.schedule();
-
-
-//		try {
-//			validate(monitor, projects );
-//		}  finally {
-//			_selectedResources.clear();
-//		}
+			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL);
+			dialog.addText(internalErrorMessage);
+		} catch (InterruptedException exc) {
+			// User cancelled validation
+		} catch (Throwable exc) {
+			Logger logger = WTPUIPlugin.getLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationUIPlugin.getLogEntry();
+				entry.setSourceID("ValidationMenuAction.run(IAction)"); //$NON-NLS-1$
+				entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL);
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+			}
+			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL);
+			dialog.addText(internalErrorMessage);
+		} finally {
+			_selectedResources.clear();
+		}
 	}
-	
-	private IStatus validate(final IProgressMonitor monitor, final Map projects) {
+
+	void validate(final IProgressMonitor monitor, final Map projects, ProgressAndTextDialog dialog) {
 		boolean cancelled = false; // Was the operation cancelled?
 		Iterator iterator = projects.keySet().iterator();
 		while (iterator.hasNext()) {
-			
-			if ( monitor.isCanceled() )
-				return new Status(IStatus.CANCEL, "org.eclipse.wst.validation", 0, "OK", null);;
 			IProject project = (IProject) iterator.next();
 			if (project == null) {
 				continue;
@@ -338,81 +304,34 @@
 			try {
 				if (cancelled) {
 					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESCANCELLED, new String[]{project.getName()});
-					monitor.setTaskName(message);
+					dialog.addText(message);
 					continue;
 				}
 				if (!project.isOpen()) {
 					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_CLOSED_PROJECT, new String[]{project.getName()});
-					monitor.setTaskName(message);
+					dialog.addText(message);
 					continue;
 				}
-				performValidation(monitor, projects, project);
+				performValidation(monitor, projects, dialog, project);
 			} catch (OperationCanceledException exc) {
 				// When loading file deltas, if the operation has been
 				// cancelled, then
 				// resource.accept throws an OperationCanceledException.
 				cancelled = true;
 				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESCANCELLED, new String[]{project.getName()});
-				monitor.setTaskName(message);
+				dialog.addText(message);
 			} catch (Throwable exc) {
-				logException(monitor, project, exc);
+				logException(dialog, project, exc);
 			}
 		}
-		return new Status(IStatus.OK, "org.eclipse.wst.validation", 0, "OK", null);
 	}
-	
-//	void validate(final IProgressMonitor monitor, final Map projects, ProgressAndTextDialog dialog) {
-//		boolean cancelled = false; // Was the operation cancelled?
-//		Iterator iterator = projects.keySet().iterator();
-//		while (iterator.hasNext()) {
-//			IProject project = (IProject) iterator.next();
-//			if (project == null) {
-//				continue;
-//			}
-//			try {
-//				if (cancelled) {
-//					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESCANCELLED, new String[]{project.getName()});
-//					dialog.addText(message);
-//					continue;
-//				}
-//				if (!project.isOpen()) {
-//					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_CLOSED_PROJECT, new String[]{project.getName()});
-//					dialog.addText(message);
-//					continue;
-//				}
-//				performValidation(monitor, projects, dialog, project);
-//			} catch (OperationCanceledException exc) {
-//				// When loading file deltas, if the operation has been
-//				// cancelled, then
-//				// resource.accept throws an OperationCanceledException.
-//				cancelled = true;
-//				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESCANCELLED, new String[]{project.getName()});
-//				dialog.addText(message);
-//			} catch (Throwable exc) {
-//				logException(dialog, project, exc);
-//			}
-//		}
-//	}
 
 	/**
 	 * @param dialog
 	 * @param project
 	 * @param exc
 	 */
-//	private void logException(ProgressAndTextDialog dialog, IProject project, Throwable exc) {
-//		Logger logger = WTPUIPlugin.getLogger();
-//		if (logger.isLoggingLevel(Level.SEVERE)) {
-//			LogEntry entry = ValidationUIPlugin.getLogEntry();
-//			entry.setSourceID("ValidationMenuAction.validate"); //$NON-NLS-1$
-//			entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL);
-//			entry.setTargetException(exc);
-//			logger.write(Level.SEVERE, entry);
-//		}
-//		String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PROJECT, new String[]{project.getName()});
-//		dialog.addText(internalErrorMessage);
-//	}
-//	
-	private void logException(IProgressMonitor monitor, IProject project, Throwable exc) {
+	private void logException(ProgressAndTextDialog dialog, IProject project, Throwable exc) {
 		Logger logger = WTPUIPlugin.getLogger();
 		if (logger.isLoggingLevel(Level.SEVERE)) {
 			LogEntry entry = ValidationUIPlugin.getLogEntry();
@@ -422,8 +341,8 @@
 			logger.write(Level.SEVERE, entry);
 		}
 		String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PROJECT, new String[]{project.getName()});
-		monitor.setTaskName(internalErrorMessage);
-	}	
+		dialog.addText(internalErrorMessage);
+	}
 
 	/**
 	 * @param monitor
@@ -432,53 +351,12 @@
 	 * @param project
 	 * @throws CoreException
 	 */
-//	private void performValidation(final IProgressMonitor monitor, final Map projects, ProgressAndTextDialog dialog, IProject project) throws CoreException {
-//		// Even if the "maximum number of messages" message is on
-//		// the task list,
-//		// run validation, because some messages may have been
-//		// fixed
-//		// and there may be space for more messages.
-//		List changedResources = (List) projects.get(project);
-//		IResource[] resources = null;
-//		if (changedResources != null) {
-//			resources = new IResource[changedResources.size()];
-//			changedResources.toArray(resources);
-//		}
-//		try {
-//			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-//			if (prjp.numberOfEnabledValidators() > 0) {
-//				checkProjectConfiguration(monitor, dialog, project, resources, prjp);
-//			} else {
-//				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_NO_VALIDATORS_ENABLED, new String[]{project.getName()});
-//				dialog.addText(message);
-//			}
-//		} catch (InvocationTargetException exc) {
-//			Logger logger = ValidationPlugin.getPlugin().getLogger();
-//			if (logger.isLoggingLevel(Level.SEVERE)) {
-//				LogEntry entry = ValidationPlugin.getLogEntry();
-//				entry.setSourceIdentifier("ValidationMenuAction::run"); //$NON-NLS-1$
-//				entry.setTargetException(exc);
-//				logger.write(Level.SEVERE, entry);
-//				if (exc.getTargetException() != null) {
-//					entry.setTargetException(exc);
-//					logger.write(Level.SEVERE, entry);
-//				}
-//			}
-//		}
-//	}
-
-	
-	private IStatus performValidation(final IProgressMonitor monitor, final Map projects,
-				 IProject project) throws CoreException {
+	private void performValidation(final IProgressMonitor monitor, final Map projects, ProgressAndTextDialog dialog, IProject project) throws CoreException {
 		// Even if the "maximum number of messages" message is on
 		// the task list,
 		// run validation, because some messages may have been
 		// fixed
 		// and there may be space for more messages.
-		
-		if ( monitor.isCanceled() )
-			return new Status(IStatus.CANCEL, "org.eclipse.wst.validation", 0, "OK", null);
-		
 		List changedResources = (List) projects.get(project);
 		IResource[] resources = null;
 		if (changedResources != null) {
@@ -487,11 +365,11 @@
 		}
 		try {
 			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-			if (prjp.numberOfManualEnabledValidators() > 0) {
-				checkProjectConfiguration(monitor, project, resources, prjp);
+			if (prjp.numberOfEnabledValidators() > 0) {
+				checkProjectConfiguration(monitor, dialog, project, resources, prjp);
 			} else {
 				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_NO_VALIDATORS_ENABLED, new String[]{project.getName()});
-				monitor.setTaskName(message);
+				dialog.addText(message);
 			}
 		} catch (InvocationTargetException exc) {
 			Logger logger = ValidationPlugin.getPlugin().getLogger();
@@ -506,9 +384,8 @@
 				}
 			}
 		}
-		return new Status(IStatus.OK, "org.eclipse.wst.validation", 0, "OK", null);
 	}
-	
+
 	/**
 	 * @param monitor
 	 * @param dialog
@@ -518,89 +395,37 @@
 	 * @throws InvocationTargetException
 	 * @throws CoreException
 	 */
-//	private void checkProjectConfiguration(final IProgressMonitor monitor, ProgressAndTextDialog dialog, IProject project, IResource[] resources, ProjectConfiguration prjp) throws InvocationTargetException, CoreException {
-//		boolean successful = true; // Did the operation
-//		// complete
-//		// successfully?
-//		EnabledValidatorsOperation validOp = null;
-//		if (resources == null) {
-//			validOp = new EnabledValidatorsOperation(project,prjp.runAsync());
-//		} else {
-//			validOp = new EnabledIncrementalValidatorsOperation(resources, project, prjp.runAsync());
-//		}
-//		if (validOp.isNecessary(monitor)) {
-//			
-//			ValidationOperationJob validationJob = new ValidationOperationJob("ValidationOperation");
-//			validationJob.setValidationOperation( validOp );
-//			validationJob.setUser( true );
-//			//validationJob.setRule(rule);
-//			validationJob.schedule();
-//			
-//			final IStatus stat = validationJob.getResult();
-//			if( !stat.isOK() ){
-//				successful = false;
-//			}
-//			//ResourcesPlugin.getWorkspace().run(validOp, monitor);
-//			
-//		} else {
-//			if (resources == null) {
-//				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_PRJNEEDINPUT, new String[]{project.getName()});
-//				dialog.addText(message);
-//			} else {
-//				for (int i = 0; i < resources.length; i++) {
-//					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESNEEDINPUT, new String[]{resources[i].getFullPath().toString()});
-//					dialog.addText(message);
-//				}
-//			}
-//		}
-//		if (successful) {
-//			performSucessful(dialog, project, resources);
-//		} else {
-//			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PROJECT, new String[]{project.getName()});
-//			dialog.addText(internalErrorMessage);
-//		}
-//	}
-
-	
-	private IStatus checkProjectConfiguration(final IProgressMonitor monitor,
-				IProject project, IResource[] resources, ProjectConfiguration prjp) throws InvocationTargetException, CoreException {
+	private void checkProjectConfiguration(final IProgressMonitor monitor, ProgressAndTextDialog dialog, IProject project, IResource[] resources, ProjectConfiguration prjp) throws InvocationTargetException, CoreException {
 		boolean successful = true; // Did the operation
 		// complete
 		// successfully?
-		if ( monitor.isCanceled() )
-			new Status(IStatus.CANCEL, "org.eclipse.wst.validation", 0, "OK", null);
-		
-		ManualValidatorsOperation validOp = null;
-		validOp = new ManualValidatorsOperation(project);
-//		if (resources == null) {
-//			validOp = new ManualValidatorsOperation(project);
-//		} else {
-//			validOp = new ManualEnabledIncrementalValidatorsOperation(resources, project,false);
-//		}
+		EnabledValidatorsOperation validOp = null;
+		if (resources == null) {
+			validOp = new EnabledValidatorsOperation(project,prjp.runAsync());
+		} else {
+			validOp = new EnabledIncrementalValidatorsOperation(resources, project, prjp.runAsync());
+		}
 		if (validOp.isNecessary(monitor)) {
-			validOp.run(monitor);
-			//ResourcesPlugin.getWorkspace().run(validOp, monitor);
-			
+			ResourcesPlugin.getWorkspace().run(validOp, monitor);
 		} else {
 			if (resources == null) {
 				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_PRJNEEDINPUT, new String[]{project.getName()});
-				monitor.setTaskName(message);
+				dialog.addText(message);
 			} else {
 				for (int i = 0; i < resources.length; i++) {
 					String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESNEEDINPUT, new String[]{resources[i].getFullPath().toString()});
-					monitor.setTaskName(message);
+					dialog.addText(message);
 				}
 			}
 		}
 		if (successful) {
-			performSucessful(monitor, project, resources);
+			performSucessful(dialog, project, resources);
 		} else {
 			String internalErrorMessage = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PROJECT, new String[]{project.getName()});
-			monitor.setTaskName(internalErrorMessage);
+			dialog.addText(internalErrorMessage);
 		}
-		return new Status(IStatus.OK, "org.eclipse.wst.validation", 0, "OK", null);
 	}
-	
+
 	/*public IWorkbenchContext getWorkbenchContext() {
 		if(workbenchContext == null)
 			workbenchContext = new WorkbenchContext();
@@ -612,37 +437,21 @@
 	 * @param project
 	 * @param resources
 	 */
-//	private void performSucessful(ProgressAndTextDialog dialog, IProject project, IResource[] resources) {
-//		boolean limitExceeded = ValidatorManager.getManager().wasValidationTerminated(project);
-//		if (limitExceeded) {
-//			String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_MAX_REPORTED, new String[]{project.getName()});
-//			dialog.addText(message);
-//		} else if (resources == null) {
-//			String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_PRJVALIDATED, new String[]{project.getName()});
-//			dialog.addText(message);
-//		} else {
-//			for (int i = 0; i < resources.length; i++) {
-//				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESVALIDATED, new String[]{resources[i].getFullPath().toString()});
-//				dialog.addText(message);
-//			}
-//		}
-//	}
-	
-	private void performSucessful(final IProgressMonitor monitor, IProject project, IResource[] resources) {
+	private void performSucessful(ProgressAndTextDialog dialog, IProject project, IResource[] resources) {
 		boolean limitExceeded = ValidatorManager.getManager().wasValidationTerminated(project);
 		if (limitExceeded) {
 			String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_MAX_REPORTED, new String[]{project.getName()});
-			monitor.setTaskName(message);
+			dialog.addText(message);
 		} else if (resources == null) {
 			String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_PRJVALIDATED, new String[]{project.getName()});
-			monitor.setTaskName(message);
+			dialog.addText(message);
 		} else {
 			for (int i = 0; i < resources.length; i++) {
 				String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_RESVALIDATED, new String[]{resources[i].getFullPath().toString()});
-				monitor.setTaskName(message);
+				dialog.addText(message);
 			}
 		}
-	}	
+	}
 
 	/**
 	 * Selection in the desktop has changed. Plugin provider can use it to change the availability
@@ -687,9 +496,7 @@
 						// the plugin has already been activated.
 						try {
 							ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfigurationWithoutMigrate(project);
-							if( !prjp.isDisableAllValidation() ){
-								count += prjp.numberOfManualValidators();
-							}							
+							count += prjp.numberOfEnabledValidators();
 						} catch (InvocationTargetException exc) {
 							Logger logger = ValidationPlugin.getPlugin().getLogger();
 							if (logger.isLoggingLevel(Level.SEVERE)) {
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPreferencePage.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPreferencePage.java
index f72775e..ff9caf3 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPreferencePage.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPreferencePage.java
@@ -11,8 +11,6 @@
 package org.eclipse.wst.validation.internal.ui;
 
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.logging.Level;
 
 import org.eclipse.core.resources.IProject;
@@ -21,22 +19,17 @@
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -44,8 +37,6 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.MessageBox;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IWorkbench;
@@ -55,6 +46,7 @@
 import org.eclipse.wst.validation.internal.ConfigurationManager;
 import org.eclipse.wst.validation.internal.GlobalConfiguration;
 import org.eclipse.wst.validation.internal.ProjectConfiguration;
+import org.eclipse.wst.validation.internal.ValidationConfiguration;
 import org.eclipse.wst.validation.internal.ValidatorMetaData;
 import org.eclipse.wst.validation.internal.operations.ValidatorManager;
 import org.eclipse.wst.validation.internal.ui.plugin.ValidationUIPlugin;
@@ -67,825 +59,695 @@
 	private IValidationPage _pageImpl = null;
 
 	/**
- * Initially, this interface was created as an abstract class, and getControl() was implemented.
- * (getProject() could also have been implemented in the abstract class.) However, at runtime, a
- * NullPointerException was thrown; the inner class had lost its pointer to its enclosing class.
- * After some experimentation, I discovered that if I changed the parent to an interface, the
- * enclosing class could be found. (Merely moving the AValidationPage into its own file was
- * insufficient.)
- */
-public interface IValidationPage {
-	public Composite createPage(Composite parent) throws InvocationTargetException;
-
-	public boolean performOk() throws InvocationTargetException;
-
-	public boolean performDefaults() throws InvocationTargetException;
-
-	public Composite getControl();
-
-	public void dispose();
-
-	public void loseFocus(); // Page is losing focus (event notification)
-
-	public void gainFocus(); // Page is gaining focus (event notification)
-}
-
-public class InvalidPage implements IValidationPage {
-	private Composite page = null;
-
-	private Composite composite = null;
-	private GridLayout layout = null;
-	private Label messageLabel = null;
-
-	public InvalidPage(Composite parent) {
-		page = createPage(parent);
-	}
-
-	/**
-	 * This page is added to the Properties guide if some internal problem occurred; for
-	 * example, the highlighted item in the workbench is not an IProject (according to this
-	 * page's plugin.xml, this page is only valid when an IProject is selected).
+	 * Initially, this interface was created as an abstract class, and getControl() was implemented.
+	 * (getProject() could also have been implemented in the abstract class.) However, at runtime, a
+	 * NullPointerException was thrown; the inner class had lost its pointer to its enclosing class.
+	 * After some experimentation, I discovered that if I changed the parent to an interface, the
+	 * enclosing class could be found. (Merely moving the AValidationPage into its own file was
+	 * insufficient.)
 	 */
-	public Composite createPage(Composite parent) {
-		// Don't create the default and apply buttons.
-		noDefaultAndApplyButton();
+	public interface IValidationPage {
+		public Composite createPage(Composite parent) throws InvocationTargetException;
 
-		final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
-		sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite = new Composite(sc1, SWT.NONE);
-		sc1.setContent(composite);
-		layout = new GridLayout();
-		composite.setLayout(layout);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ContextIds.VALIDATION_PROPERTIES_PAGE);
+		public boolean performOk() throws InvocationTargetException;
 
-		messageLabel = new Label(composite, SWT.NONE);
-		messageLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INVALID_REGISTER));
+		public boolean performDefaults() throws InvocationTargetException;
 
-		composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+		public Composite getControl();
 
-		return composite;
+		public void dispose();
+
+		public void loseFocus(); // Page is losing focus (event notification)
+
+		public void gainFocus(); // Page is gaining focus (event notification)
 	}
 
-	public boolean performDefaults() {
-		return true;
-	}
+	public class InvalidPage implements IValidationPage {
+		private Composite page = null;
 
-	/**
-	 * Since this page occurs under invalid circumstances, there is nothing to save.
-	 */
-	public boolean performOk() {
-		return true;
-	}
+		private Composite composite = null;
+		private GridLayout layout = null;
+		private Label messageLabel = null;
 
-	public Composite getControl() {
-		return page;
-	}
+		public InvalidPage(Composite parent) {
+			page = createPage(parent);
+		}
 
-	public void dispose() {
-		messageLabel.dispose();
-		//			layout.dispose();
-		composite.dispose();
-	}
-
-	public void loseFocus() {
-		// This page does not depend on the contents of any other page in the wizard, so do
-		// nothing.
-	}
-
-	public void gainFocus() {
-		// This page does not depend on the contents of any other page in the wizard, so do
-		// nothing.
-	}
-}
-
-private class NoValidatorsPage implements IValidationPage {
-	private Composite page = null;
-	private Composite composite = null;
-	private GridLayout layout = null;
-	private GridData data = null;
-	private Label messageLabel = null;
-
-	public NoValidatorsPage(Composite parent) {
-		page = createPage(parent);
-	}
-
-	/**
-	 * This page is created if an IProject is selected, but that project has no validators
-	 * configured (i.e., the page is valid, but an empty list.)
-	 */
-	public Composite createPage(Composite parent) {
-		// Don't create the default and apply buttons.
-		noDefaultAndApplyButton();
-
-		// top level group
-		final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
-		sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite = new Composite(sc1, SWT.NONE);
-		sc1.setContent(composite);
-		layout = new GridLayout();
-		composite.setLayout(layout);
-		data = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
-		composite.setLayoutData(data);
-
-		messageLabel = new Label(composite, SWT.NONE);
-		messageLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_NO_VALIDATORS_INSTALLED));
-
-		composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
-
-		return composite;
-	}
-
-
-	/**
-	 * Since there are no validators, there is nothing to save.
-	 */
-	public boolean performOk() {
-		return true;
-	}
-
-	public boolean performDefaults() {
-		return true;
-	}
-
-	public Composite getControl() {
-		return page;
-	}
-
-	public void dispose() {
-		messageLabel.dispose();
-		//			layout.dispose();
-		//			data.dispose();
-		composite.dispose();
-	}
-
-	public void loseFocus() {
-		// This page does not depend on the contents of any other page in the wizard, so do
-		// nothing.
-	}
-
-	public void gainFocus() {
-		// This page does not depend on the contents of any other page in the wizard, so do
-		// nothing.
-	}
-}
-
-private class ValidatorListPage implements IValidationPage {
-	private Composite page = null;
-
-	private Composite composite = null;
-	TableViewer validatorList = null;
-	private Button enableAllButton = null;
-	private Button disableAllButton = null;
-	private Label emptyRowPlaceholder = null;
-	Button disableAllValidation = null;
-	Button overrideButton = null;
-	private Label listLabel = null;
-	private String[] columnProperties;
-	private CellEditor[] columnEditors;
-	private String[] COMBO_VALUES = new String[] {"Enabled","Disabled"};
-	private static final int ENABLED_INT = 0;
-	private static final int DISABLED_INT = 1;
-	private Table validatorsTable;
-	private static final String VALIDATORS = "validators"; //$NON-NLS-1$
-	private static final String MANUAL_CHECK = "manualCheck";//$NON-NLS-2$
-	private static final String BUILD_CHECK = "buildCheck";//$NON-NLS-2$
-	private static final int VALUE_NOT_FOUND = -1;
-	private static final int MANUAL_COL = 1;
-	private static final int BUILD_COL = 2;
-
-	GlobalConfiguration pagePreferences = null; // the values currently on the page, but not
-	// necessarily stored yet. Package visibility
-	// for the widget listeners (the compiler would
-	// have to create a synthetic accessor method in
-	// order to access this field)
-	//private boolean _isAutoBuildEnabled; // initialized in the constructor
-	private ValidatorMetaData[] _oldVmd = null; // Cache the enabled validators so that, if
-	// there is no change to this list, the
-	// expensive task list update can be avoided
-	private boolean _allow = false; // Cache the value of the prefence "allow projects to
-
-	// override" so that, when OK is clicked, we can determine
-	// if "allow" has changed or not.
-
-	/**
-	 * This class is provided for the CheckboxTableViewer in the
-	 * ValidationPropertiesPage$ValidatorListPage class.
-	 */
-	public class ValidationContentProvider implements IStructuredContentProvider {
 		/**
-		 * Disposes of this content provider. This is called by the viewer when it is disposed.
+		 * This page is added to the Properties guide if some internal problem occurred; for
+		 * example, the highlighted item in the workbench is not an IProject (according to this
+		 * page's plugin.xml, this page is only valid when an IProject is selected).
 		 */
+		public Composite createPage(Composite parent) {
+			// Don't create the default and apply buttons.
+			noDefaultAndApplyButton();
+
+			final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+			sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
+			composite = new Composite(sc1, SWT.NONE);
+			sc1.setContent(composite);
+			layout = new GridLayout();
+			composite.setLayout(layout);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ContextIds.VALIDATION_PROPERTIES_PAGE);
+
+			messageLabel = new Label(composite, SWT.NONE);
+			messageLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INVALID_REGISTER));
+
+			composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+			return composite;
+		}
+
+		public boolean performDefaults() {
+			return true;
+		}
+
+		/**
+		 * Since this page occurs under invalid circumstances, there is nothing to save.
+		 */
+		public boolean performOk() {
+			return true;
+		}
+
+		public Composite getControl() {
+			return page;
+		}
+
 		public void dispose() {
-			//dispose
+			messageLabel.dispose();
+			//			layout.dispose();
+			composite.dispose();
+		}
+
+		public void loseFocus() {
+			// This page does not depend on the contents of any other page in the wizard, so do
+			// nothing.
+		}
+
+		public void gainFocus() {
+			// This page does not depend on the contents of any other page in the wizard, so do
+			// nothing.
+		}
+	}
+
+	private class NoValidatorsPage implements IValidationPage {
+		private Composite page = null;
+		private Composite composite = null;
+		private GridLayout layout = null;
+		private GridData data = null;
+		private Label messageLabel = null;
+
+		public NoValidatorsPage(Composite parent) {
+			page = createPage(parent);
 		}
 
 		/**
-		 * Returns the elements to display in the viewer when its input is set to the given
-		 * element. These elements can be presented as rows in a table, items in a list, etc.
-		 * The result is not modified by the viewer.
-		 * 
-		 * @param inputElement
-		 *            the input element
-		 * @return the array of elements to display in the viewer
+		 * This page is created if an IProject is selected, but that project has no validators
+		 * configured (i.e., the page is valid, but an empty list.)
 		 */
-		public java.lang.Object[] getElements(Object inputElement) {
-			if (inputElement instanceof ValidatorMetaData[]) {
-				// The Collection is the Collection which is returned by ValidatorManager's
-				// getConfiguredValidatorMetaData(IProject) call.
-				// This Collection is set to be the input of the CheckboxTableViewer in
-				// ValidationPropertiesPage$ValidatorListPage's createPage(Composite)
-				// method.
-				return (ValidatorMetaData[]) inputElement;
+		public Composite createPage(Composite parent) {
+			// Don't create the default and apply buttons.
+			noDefaultAndApplyButton();
+
+			// top level group
+			final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+			sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
+			composite = new Composite(sc1, SWT.NONE);
+			sc1.setContent(composite);
+			layout = new GridLayout();
+			composite.setLayout(layout);
+			data = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
+			composite.setLayoutData(data);
+
+			messageLabel = new Label(composite, SWT.NONE);
+			messageLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_NO_VALIDATORS_INSTALLED));
+
+			composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+			return composite;
+		}
+
+
+		/**
+		 * Since there are no validators, there is nothing to save.
+		 */
+		public boolean performOk() {
+			return true;
+		}
+
+		public boolean performDefaults() {
+			return true;
+		}
+
+		public Composite getControl() {
+			return page;
+		}
+
+		public void dispose() {
+			messageLabel.dispose();
+			//			layout.dispose();
+			//			data.dispose();
+			composite.dispose();
+		}
+
+		public void loseFocus() {
+			// This page does not depend on the contents of any other page in the wizard, so do
+			// nothing.
+		}
+
+		public void gainFocus() {
+			// This page does not depend on the contents of any other page in the wizard, so do
+			// nothing.
+		}
+	}
+
+	private class ValidatorListPage implements IValidationPage {
+		private Composite page = null;
+
+		private Composite composite = null;
+		CheckboxTableViewer validatorList = null;
+		private Button selectAllButton = null;
+		private Button deselectAllButton = null;
+		private Label emptyRowPlaceholder = null;
+		Button valWhenBuildButton = null;
+		Button valWhenAutoBuildButton = null;
+		private Text maxValProblemsField = null;
+		private Label maxValProblemsFieldLabel = null;
+		Button overrideButton = null;
+		private Label listLabel = null;
+
+		GlobalConfiguration pagePreferences = null; // the values currently on the page, but not
+		// necessarily stored yet. Package visibility
+		// for the widget listeners (the compiler would
+		// have to create a synthetic accessor method in
+		// order to access this field)
+		private boolean _isAutoBuildEnabled; // initialized in the constructor
+		private ValidatorMetaData[] _oldVmd = null; // Cache the enabled validators so that, if
+		// there is no change to this list, the
+		// expensive task list update can be avoided
+		private boolean _allow = false; // Cache the value of the prefence "allow projects to
+
+		// override" so that, when OK is clicked, we can determine
+		// if "allow" has changed or not.
+
+		/**
+		 * This class is provided for the CheckboxTableViewer in the
+		 * ValidationPropertiesPage$ValidatorListPage class.
+		 */
+		public class ValidationContentProvider implements IStructuredContentProvider {
+			/**
+			 * Disposes of this content provider. This is called by the viewer when it is disposed.
+			 */
+			public void dispose() {
+				//dispose
 			}
-			return new Object[0];
+
+			/**
+			 * Returns the elements to display in the viewer when its input is set to the given
+			 * element. These elements can be presented as rows in a table, items in a list, etc.
+			 * The result is not modified by the viewer.
+			 * 
+			 * @param inputElement
+			 *            the input element
+			 * @return the array of elements to display in the viewer
+			 */
+			public java.lang.Object[] getElements(Object inputElement) {
+				if (inputElement instanceof ValidatorMetaData[]) {
+					// The Collection is the Collection which is returned by ValidatorManager's
+					// getConfiguredValidatorMetaData(IProject) call.
+					// This Collection is set to be the input of the CheckboxTableViewer in
+					// ValidationPropertiesPage$ValidatorListPage's createPage(Composite)
+					// method.
+					return (ValidatorMetaData[]) inputElement;
+				}
+				return new Object[0];
+			}
+
+			/**
+			 * Notifies this content provider that the given viewer's input has been switched to a
+			 * different element.
+			 * <p>
+			 * A typical use for this method is registering the content provider as a listener to
+			 * changes on the new input (using model-specific means), and deregistering the viewer
+			 * from the old input. In response to these change notifications, the content provider
+			 * propagates the changes to the viewer.
+			 * </p>
+			 * 
+			 * @param viewer
+			 *            the viewer
+			 * @param oldInput
+			 *            the old input element, or <code>null</code> if the viewer did not
+			 *            previously have an input
+			 * @param newInput
+			 *            the new input element, or <code>null</code> if the viewer does not have
+			 *            an input
+			 */
+			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+				//do nothing
+			}
+
+
+
 		}
 
 		/**
-		 * Notifies this content provider that the given viewer's input has been switched to a
-		 * different element.
-		 * <p>
-		 * A typical use for this method is registering the content provider as a listener to
-		 * changes on the new input (using model-specific means), and deregistering the viewer
-		 * from the old input. In response to these change notifications, the content provider
-		 * propagates the changes to the viewer.
-		 * </p>
-		 * 
-		 * @param viewer
-		 *            the viewer
-		 * @param oldInput
-		 *            the old input element, or <code>null</code> if the viewer did not
-		 *            previously have an input
-		 * @param newInput
-		 *            the new input element, or <code>null</code> if the viewer does not have
-		 *            an input
+		 * This class is provided for ValidationPropertiesPage$ValidatorListPage's
+		 * checkboxTableViewer element.
 		 */
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			//do nothing
-		}
-
-
-
-	}
-
-	/**
-	 * This class is provided for ValidationPropertiesPage$ValidatorListPage's
-	 * checkboxTableViewer element.
-	 */
-	public class ValidationLabelProvider extends LabelProvider implements ITableLabelProvider {
-		/**
-		 * Override the LabelProvider's text, by customizing the text for a ValidatorMetaData
-		 * element.
-		 */
-		public String getText(Object element) {
-			if (element == null) {
-				return ""; //$NON-NLS-1$
-			} else if (element instanceof ValidatorMetaData) {
-				return ((ValidatorMetaData) element).getValidatorDisplayName();
-			} else {
-				return super.getText(element);
-			}
-		}
-
-		public Image getColumnImage(Object element, int columnIndex) {
-			if(columnIndex == 1) {
-				if(((ValidatorMetaData)element).isManualValidation())
-					return  ValidationUIPlugin.getPlugin().getImage("ok_tbl");
-				return ValidationUIPlugin.getPlugin().getImage("fail_tbl");
-			} else if(columnIndex == 2) {
-				if(((ValidatorMetaData)element).isBuildValidation())
-					return ValidationUIPlugin.getPlugin().getImage("ok_tbl");;
-				return ValidationUIPlugin.getPlugin().getImage("fail_tbl");
-			}
-			return null;
-		
-		}
-
-		public String getColumnText(Object element, int columnIndex) {
-			if(columnIndex == 0) {
-				return ((ValidatorMetaData) element).getValidatorDisplayName();
-			}
-			/*if(columnIndex == 1) {
-				if(((ValidatorMetaData)element).isManualValidation())
-					return COMBO_VALUES[0];
-				return COMBO_VALUES[1];	
-			} else if(columnIndex == 2) {
-				if(((ValidatorMetaData)element).isBuildValidation())
-					return COMBO_VALUES[0];
-				return COMBO_VALUES[1];
-			}*/
-			return null;
-		}
-	}
-
-	/**
-	 * This class is used to sort the CheckboxTableViewer elements.
-	 */
-	public class ValidationViewerSorter extends ViewerSorter {
-		/**
-		 * Returns a negative, zero, or positive number depending on whether the first element
-		 * is less than, equal to, or greater than the second element.
-		 * <p>
-		 * The default implementation of this method is based on comparing the elements'
-		 * categories as computed by the <code>category</code> framework method. Elements
-		 * within the same category are further subjected to a case insensitive compare of their
-		 * label strings, either as computed by the content viewer's label provider, or their
-		 * <code>toString</code> values in other cases. Subclasses may override.
-		 * </p>
-		 * 
-		 * @param viewer
-		 *            the viewer
-		 * @param e1
-		 *            the first element
-		 * @param e2
-		 *            the second element
-		 * @return a negative number if the first element is less than the second element; the
-		 *         value <code>0</code> if the first element is equal to the second element;
-		 *         and a positive number if the first element is greater than the second element
-		 */
-		public int compare(Viewer viewer, Object e1, Object e2) {
-			// Can't instantiate ViewerSorter because it's abstract, so use this
-			// inner class to represent it.
-			return super.compare(viewer, e1, e2);
-		}
-	}
-
-	public ValidatorListPage(Composite parent) throws InvocationTargetException {
-		//_isAutoBuildEnabled = ValidatorManager.getManager().isGlobalAutoBuildEnabled();
-		pagePreferences = new GlobalConfiguration(ConfigurationManager.getManager().getGlobalConfiguration()); // This
-		// represents the values on the page that haven't been persistedyet.
-		// Start with the last values that were persisted into the current page's starting values.
-		
-		_oldVmd = pagePreferences.getEnabledValidators(); // Cache the enabled validators so
-		// that, if there is no change to this
-		// list, the expensive task list
-		// update can be avoided
-		_allow = pagePreferences.canProjectsOverride();
-
-		page = createPage(parent);
-	}
-	
-	private void setupTableColumns(Table table, TableViewer viewer) {
-		TableColumn validatorColumn = new TableColumn(table, SWT.NONE);
-        validatorColumn.setText("Validator");
-        validatorColumn.setResizable(false);
-        validatorColumn.setWidth(240);
-        TableColumn manualColumn = new TableColumn(table, SWT.NONE);
-        manualColumn.setText("Manual");
-        manualColumn.setResizable(false);
-        manualColumn.setWidth(80);
-        TableColumn buildColumn = new TableColumn(table, SWT.NONE);
-        buildColumn.setText("Build");
-        buildColumn.setResizable(false);
-        buildColumn.setWidth(80);
-        setupCellModifiers(table, viewer);
-    }
-	private void setupCellModifiers(Table table, TableViewer viewer) {
-        columnProperties = new String[3];
-        columnProperties[0] = VALIDATORS; //$NON-NLS-1$
-        columnProperties[1] = MANUAL_CHECK;//$NON-NLS-2$
-        columnProperties[2] = BUILD_CHECK;//$NON-NLS-2$
-        viewer.setColumnProperties(columnProperties);
-        columnEditors = new CellEditor[table.getColumnCount()];
-        columnEditors[1] = new ComboBoxCellEditor(table,COMBO_VALUES, SWT.READ_ONLY);
-        columnEditors[2] = new ComboBoxCellEditor(table,COMBO_VALUES, SWT.READ_ONLY);
-        viewer.setCellEditors(columnEditors);
-    }
-
-	protected  void createDescriptionComposite(final Composite parent, final String description) {
-		Composite descriptionComp = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		descriptionComp.setLayout(layout);
-		descriptionComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		fillDescription(descriptionComp, description);
-	}
-	
-	private  void fillDescription(Composite c, String s) {
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalIndent = 5;
-		data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = 250;
-		Text text = new Text(c, SWT.MULTI | SWT.WRAP);
-		text.setLayoutData(data);
-		text.setTextLimit(80);
-		text.setEditable(false);
-		text.setText(s);
-	}
-	
-	
-	public Composite createPage(Composite parent) throws InvocationTargetException {
-		// top level group
-		final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
-		sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite = new Composite(sc1, SWT.NONE);
-		sc1.setContent(composite);
-		composite.setLayout(new GridLayout()); // use the layout's default preferences
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ContextIds.VALIDATION_PREFERENCE_PAGE);
-
-		Composite validatorGroup = new Composite(composite, SWT.NONE);
-
-		
-		GridLayout validatorGroupLayout = new GridLayout();
-		validatorGroupLayout.numColumns = 2;
-		validatorGroup.setLayout(validatorGroupLayout);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(validatorGroup, ContextIds.VALIDATION_PREFERENCE_PAGE);
-
-		GridData overrideData = new GridData(GridData.FILL_HORIZONTAL);
-		
-//		Font font = parent.getFont();
-//		Label projectLabel = new Label(validatorGroup, SWT.NONE);
-//		projectLabel.setFont(font);
-//		projectLabel.setText("This preference applies to the projects that have ModuleCoreNature"); //$NON-NLS-1$
-		
-		createDescriptionComposite(validatorGroup, ResourceHandler.getExternalizedMessage(ResourceConstants.INFO));
-				
-		
-		emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
-		emptyRowPlaceholder.setLayoutData(new GridData());
-		emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
-		emptyRowPlaceholder.setLayoutData(new GridData());		
-		
-		overrideData.horizontalSpan = 2;
-		overrideButton = new Button(validatorGroup, SWT.CHECK);
-		overrideButton.setLayoutData(overrideData);
-		overrideButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_OVERRIDE));
-		overrideButton.setEnabled(true);
-		overrideButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				pagePreferences.setCanProjectsOverride(overrideButton.getSelection());
-				try {
-					updateWidgets();
-				} catch (InvocationTargetException exc) {
-					displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+		public class ValidationLabelProvider extends LabelProvider {
+			/**
+			 * Override the LabelProvider's text, by customizing the text for a ValidatorMetaData
+			 * element.
+			 */
+			public String getText(Object element) {
+				if (element == null) {
+					return ""; //$NON-NLS-1$
+				} else if (element instanceof ValidatorMetaData) {
+					return ((ValidatorMetaData) element).getValidatorDisplayName();
+				} else {
+					return super.getText(element);
 				}
 			}
-		});
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(overrideButton, ContextIds.VALIDATION_PREFERENCE_PAGE_OVERRIDE);
+		}
 
-		emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
-		emptyRowPlaceholder.setLayoutData(new GridData());
-		
-		GridData disableValidationData = new GridData(GridData.FILL_HORIZONTAL);
-		disableValidationData.horizontalSpan = 2;
-		disableAllValidation = new Button(validatorGroup, SWT.CHECK);
-		disableAllValidation.setLayoutData(disableValidationData);
-		disableAllValidation.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.DISABLE_VALIDATION));
-		disableAllValidation.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				pagePreferences.setDisableAllValidation(disableAllValidation.getSelection());
-				disableAllValidation.setFocus();
-				validatorsTable.setEnabled(!disableAllValidation.getSelection());
-				enableAllButton.setEnabled(!disableAllValidation.getSelection());
-				disableAllButton.setEnabled(!disableAllValidation.getSelection());
+		/**
+		 * This class is used to sort the CheckboxTableViewer elements.
+		 */
+		public class ValidationViewerSorter extends ViewerSorter {
+			/**
+			 * Returns a negative, zero, or positive number depending on whether the first element
+			 * is less than, equal to, or greater than the second element.
+			 * <p>
+			 * The default implementation of this method is based on comparing the elements'
+			 * categories as computed by the <code>category</code> framework method. Elements
+			 * within the same category are further subjected to a case insensitive compare of their
+			 * label strings, either as computed by the content viewer's label provider, or their
+			 * <code>toString</code> values in other cases. Subclasses may override.
+			 * </p>
+			 * 
+			 * @param viewer
+			 *            the viewer
+			 * @param e1
+			 *            the first element
+			 * @param e2
+			 *            the second element
+			 * @return a negative number if the first element is less than the second element; the
+			 *         value <code>0</code> if the first element is equal to the second element;
+			 *         and a positive number if the first element is greater than the second element
+			 */
+			public int compare(Viewer viewer, Object e1, Object e2) {
+				// Can't instantiate ViewerSorter because it's abstract, so use this
+				// inner class to represent it.
+				return super.compare(viewer, e1, e2);
 			}
-		});
-		
-		emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
-		emptyRowPlaceholder.setLayoutData(new GridData());
+		}
 
-		listLabel = new Label(validatorGroup, SWT.NONE);
-		GridData listLabelData = new GridData(GridData.FILL_HORIZONTAL);
-		listLabelData.horizontalSpan = 2;
-		listLabel.setLayoutData(listLabelData);
-		listLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_VALLIST_TITLE));
+		public ValidatorListPage(Composite parent) throws InvocationTargetException {
+			_isAutoBuildEnabled = ValidatorManager.getManager().isGlobalAutoBuildEnabled();
+			pagePreferences = new GlobalConfiguration(ConfigurationManager.getManager().getGlobalConfiguration()); // This
+			// represents
+			// the
+			// values
+			// on
+			// the
+			// page
+			// that
+			// haven't
+			// been
+			// persisted
+			// yet.
+			// Start
+			// with
+			// the
+			// last
+			// values
+			// that
+			// were
+			// persisted
+			// into
+			// the
+			// current
+			// page's
+			// starting
+			// values.
+			_oldVmd = pagePreferences.getEnabledValidators(); // Cache the enabled validators so
+			// that, if there is no change to this
+			// list, the expensive task list
+			// update can be avoided
+			_allow = pagePreferences.canProjectsOverride();
 
-		validatorsTable = new Table(validatorGroup,SWT.BORDER);
-		TableLayout tableLayout = new TableLayout();
-		tableLayout.addColumnData(new ColumnWeightData(160, true));
-        tableLayout.addColumnData(new ColumnWeightData(80, true));
-        tableLayout.addColumnData(new ColumnWeightData(80, true));
-		validatorsTable.setHeaderVisible(true);
-		validatorsTable.setLinesVisible(true);
-        validatorsTable.setLayout(tableLayout);
-		
-		validatorList = new TableViewer(validatorsTable);
-        GridData validatorListData = new GridData(GridData.FILL_HORIZONTAL);
-		validatorListData.horizontalSpan = 2;
-		validatorsTable.setLayoutData(validatorListData);
-		validatorList.getTable().setLayoutData(validatorListData);
-		validatorList.setLabelProvider(new ValidationLabelProvider());
-		validatorList.setContentProvider(new ValidationContentProvider());
-		validatorList.setSorter(new ValidationViewerSorter());
-        setupTableColumns(validatorsTable,validatorList);
-		validatorList.setCellModifier(new ICellModifier() {
-			public boolean canModify(Object element, String property) {
-				ComboBoxCellEditor cellEditor = getComboBoxCellEditor(property);
-				if (cellEditor == null)
-					return false;
-				return true;
-			}
+			page = createPage(parent);
+		}
 
-			protected ComboBoxCellEditor getComboBoxCellEditor(String property) {
-				CellEditor cellEditor = getCellEditor(property);
-				if (cellEditor instanceof ComboBoxCellEditor)
-					return (ComboBoxCellEditor) cellEditor;
-				return null;
+		public Composite createPage(Composite parent) throws InvocationTargetException {
+			// top level group
+			final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+			sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
+			composite = new Composite(sc1, SWT.NONE);
+			sc1.setContent(composite);
+			composite.setLayout(new GridLayout()); // use the layout's default preferences
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ContextIds.VALIDATION_PREFERENCE_PAGE);
 
-			}
+			Composite validatorGroup = new Composite(composite, SWT.NONE);
+			GridLayout validatorGroupLayout = new GridLayout();
+			validatorGroupLayout.numColumns = 2;
+			validatorGroup.setLayout(validatorGroupLayout);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(validatorGroup, ContextIds.VALIDATION_PREFERENCE_PAGE);
 
-			protected int getPropertyIntValue(String property) {
-				if (columnProperties != null) {
-					for (int i = 0; i < columnProperties.length; i++) {
-						if (columnProperties[i].equals(property))
-							return i;
+			GridData overrideData = new GridData(GridData.FILL_HORIZONTAL);
+			overrideData.horizontalSpan = 2;
+			overrideButton = new Button(validatorGroup, SWT.CHECK);
+			overrideButton.setLayoutData(overrideData);
+			overrideButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_OVERRIDE));
+			overrideButton.setEnabled(true);
+			overrideButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setCanProjectsOverride(overrideButton.getSelection());
+					try {
+						updateWidgets();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 					}
 				}
-				return VALUE_NOT_FOUND;
-			}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(overrideButton, ContextIds.VALIDATION_PREFERENCE_PAGE_OVERRIDE);
 
-			protected CellEditor getCellEditor(String property) {
-				int comboCellEditorIndex = getPropertyIntValue(property);
-				if (comboCellEditorIndex == VALUE_NOT_FOUND)
-					return null;
-				return columnEditors[comboCellEditorIndex];
-			}
+			emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
+			emptyRowPlaceholder.setLayoutData(new GridData());
 
-			public Object getValue(Object element, String property) {
-				ValidatorMetaData data = (ValidatorMetaData) element;
-				if (property == MANUAL_CHECK) {
-					if (data.isManualValidation())
-						return new Integer(ENABLED_INT);
-					else
-						return new Integer(DISABLED_INT);
-
-				} else if (property == BUILD_CHECK) {
-					if (data.isBuildValidation())
-						return new Integer(ENABLED_INT);
-					else
-						return new Integer(DISABLED_INT);
+			GridData valWhenBuildData = new GridData(GridData.FILL_HORIZONTAL);
+			valWhenBuildData.horizontalSpan = 2;
+			valWhenBuildButton = new Button(validatorGroup, SWT.CHECK);
+			valWhenBuildButton.setLayoutData(valWhenBuildData);
+			valWhenBuildButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_FULL));
+			valWhenBuildButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setBuildValidate(valWhenBuildButton.getSelection());
+					valWhenBuildButton.setFocus();
 				}
-				return new Integer(VALUE_NOT_FOUND);
-			}
+			});
 
-			public void modify(Object element, String property, Object value) {
+			GridData valWhenAutoBuildData = new GridData(GridData.FILL_HORIZONTAL);
+			valWhenAutoBuildData.horizontalSpan = 2;
+			valWhenAutoBuildButton = new Button(validatorGroup, SWT.CHECK);
+			valWhenAutoBuildButton.setLayoutData(valWhenAutoBuildData);
+			valWhenAutoBuildButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_AUTO));
+			valWhenAutoBuildButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setAutoValidate(valWhenAutoBuildButton.getSelection());
+					valWhenAutoBuildButton.setFocus();
+				}
+			});
 
-				ValidatorMetaData data = (ValidatorMetaData) ((TableItem) element).getData();
-				int intValue = ((Integer) value).intValue();
-				if (property.equals(MANUAL_CHECK)) {
-					if (intValue == ENABLED_INT) {
-						data.setManualValidation(true);
-					} else if (intValue == DISABLED_INT) {
-						data.setManualValidation(false);
-					}
-				} else if (property.equals(BUILD_CHECK)) {
-					if (intValue == ENABLED_INT) {
-						data.setBuildValidation(true);
-					} else if (intValue == DISABLED_INT) {
-						data.setBuildValidation(false);
+			listLabel = new Label(validatorGroup, SWT.NONE);
+			GridData listLabelData = new GridData(GridData.FILL_HORIZONTAL);
+			listLabelData.horizontalSpan = 2;
+			listLabel.setLayoutData(listLabelData);
+			listLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_VALLIST_TITLE));
+
+			GridData validatorListData = new GridData(GridData.FILL_HORIZONTAL);
+			validatorListData.horizontalSpan = 2;
+			validatorList = CheckboxTableViewer.newCheckList(validatorGroup, SWT.BORDER);
+			validatorList.getTable().setLayoutData(validatorListData);
+			validatorList.setLabelProvider(new ValidationLabelProvider());
+			validatorList.setContentProvider(new ValidationContentProvider());
+			validatorList.setSorter(new ValidationViewerSorter());
+			validatorList.setInput(pagePreferences.getValidators());
+			validatorList.getTable().addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+					try {
+						updateWidgets();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 					}
 				}
-				validatorList.refresh();
-			}
-		});
-		validatorList.setInput(pagePreferences.getValidators());
-		
-		enableAllButton = new Button(validatorGroup, SWT.PUSH);
-		enableAllButton.setLayoutData(new GridData());
-		enableAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_ENABLEALL));
-		enableAllButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				try {
-					performEnableAll();
-				} catch (InvocationTargetException exc) {
-					displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+
+				public void widgetDefaultSelected(SelectionEvent e) {
+					try {
+						performDefaults();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
 				}
-			}
-		});
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(enableAllButton, ContextIds.VALIDATION_PREFERENCE_PAGE);
+			});
 
-		disableAllButton = new Button(validatorGroup, SWT.PUSH);
-		disableAllButton.setLayoutData(new GridData());
-		disableAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_DISABLEALL));
-		disableAllButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				try {
-					performDisableAll();
-				} catch (InvocationTargetException exc) {
-					displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+			selectAllButton = new Button(validatorGroup, SWT.PUSH);
+			selectAllButton.setLayoutData(new GridData());
+			selectAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_SELECTALL));
+			selectAllButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					try {
+						performSelectAll();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
 				}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(selectAllButton, ContextIds.VALIDATION_PREFERENCE_PAGE);
+
+			deselectAllButton = new Button(validatorGroup, SWT.PUSH);
+			deselectAllButton.setLayoutData(new GridData());
+			deselectAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_DESELECTALL));
+			deselectAllButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					try {
+						performDeselectAll();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
+				}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(deselectAllButton, ContextIds.VALIDATION_PREFERENCE_PAGE);
+
+			Composite buttonGroup = new Composite(composite, SWT.NONE);
+			GridLayout buttonGroupLayout = new GridLayout();
+			buttonGroupLayout.numColumns = 2;
+			buttonGroup.setLayout(buttonGroupLayout);
+			buttonGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+
+			maxValProblemsFieldLabel = new Label(buttonGroup, SWT.NONE);
+			maxValProblemsFieldLabel.setLayoutData(new GridData());
+			maxValProblemsFieldLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_LBL_MAXMSGS));
+
+			maxValProblemsField = new Text(buttonGroup, SWT.SINGLE | SWT.BORDER);
+			maxValProblemsField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			maxValProblemsField.addKeyListener(new KeyListener() {
+				/**
+				 * Sent when a key is pressed on the system keyboard.
+				 * 
+				 * @param e
+				 *            an event containing information about the key press
+				 */
+				public void keyPressed(KeyEvent e) {
+					//do nothing
+				}
+
+				/**
+				 * Sent when a key is released on the system keyboard.
+				 * 
+				 * @param e
+				 *            an event containing information about the key release
+				 */
+				public void keyReleased(KeyEvent e) {
+					try {
+						pagePreferences.setMaximumNumberOfMessages(checkInteger());
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
+				}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(maxValProblemsField, ContextIds.VALIDATION_PREFERENCE_PAGE_MAX_MESSAGES);
+
+			// Have to set the tab order or only the first checkbox in a Composite can
+			// be tab-ed to. (Seems to apply only to checkboxes. Have to use the arrow
+			// key to navigate the checkboxes.)
+			validatorGroup.setTabList(new Control[]{overrideButton, valWhenBuildButton, valWhenAutoBuildButton, validatorList.getTable(), selectAllButton, deselectAllButton});
+
+			updateWidgets();
+
+			composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+			return composite;
+		}
+
+		protected int checkInteger() throws InvocationTargetException {
+			GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
+			String text = maxValProblemsField.getText();
+			if (text == null) {
+				setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_ERROR_INT));
+				return gp.getMaximumNumberOfMessages();
 			}
-		});
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(disableAllButton, ContextIds.VALIDATION_PREFERENCE_PAGE);
+			try {
+				Integer tempInt = new Integer(text.trim());
 
-		Composite buttonGroup = new Composite(composite, SWT.NONE);
-		GridLayout buttonGroupLayout = new GridLayout();
-		buttonGroupLayout.numColumns = 2;
-		buttonGroup.setLayout(buttonGroupLayout);
-		buttonGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-		// Have to set the tab order or only the first checkbox in a Composite can
-		// be tab-ed to. (Seems to apply only to checkboxes. Have to use the arrow
-		// key to navigate the checkboxes.)
-		validatorGroup.setTabList(new Control[]{overrideButton, /*valWhenBuildButton, valWhenAutoBuildButton,*/ validatorList.getTable(), enableAllButton, disableAllButton});
+				// no exception? It's an int, then.
+				if (tempInt.intValue() <= 0) {
+					setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_ERROR_INT));
+					return gp.getMaximumNumberOfMessages();
+				}
+				setErrorMessage(null);
+				return Integer.valueOf(maxValProblemsField.getText().trim()).intValue();
+			} catch (NumberFormatException exc) {
+				setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_ERROR_INT));
+				return gp.getMaximumNumberOfMessages();
+			}
+		}
 
-		updateWidgets();
+		protected void updateWidgets() throws InvocationTargetException {
+			// Need to update even the widgets that do not change based on another
+			// widgets because of performDefaults(). If performDefaults() is selected,
+			// then the pagePreferences values are reset, and these widgets
+			// might also need to be updated.
+			overrideButton.setSelection(pagePreferences.canProjectsOverride());
 
-		composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+			maxValProblemsField.setText(String.valueOf(pagePreferences.getMaximumNumberOfMessages()));
 
-		return composite;
-	}
-	protected void updateWidgets() throws InvocationTargetException {
-		// Need to update even the widgets that do not change based on another
-		// widgets because of performDefaults(). If performDefaults() is selected,
-		// then the pagePreferences values are reset, and these widgets
-		// might also need to be updated.
-		updateTable();
-		updateAllWidgets();
-		updateHelp();
-	}
-	
-	protected void updateWidgetsForDefaults() throws InvocationTargetException {
-		updateTableForDefaults();
-		updateAllWidgets();
-		updateHelp();
-	}
+			updateTable();
 
-	/**
-	 * @throws InvocationTargetException
-	 */
-	private void updateAllWidgets() throws InvocationTargetException {
-		overrideButton.setSelection(pagePreferences.canProjectsOverride());
-		disableAllValidation.setSelection(pagePreferences.isDisableAllValidation());
-		validatorsTable.setEnabled(!disableAllValidation.getSelection());
-		enableAllButton.setEnabled(!disableAllValidation.getSelection());
-		disableAllButton.setEnabled(!disableAllValidation.getSelection());
-	}
+			boolean valEnabled = (pagePreferences.numberOfEnabledValidators() > 0);
+			valWhenBuildButton.setEnabled(valEnabled);
+			valWhenBuildButton.setSelection(pagePreferences.isBuildValidate() && valEnabled);
 
-	protected void updateTable() throws InvocationTargetException {
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
+			boolean incValEnabled = (pagePreferences.numberOfEnabledIncrementalValidators() > 0);
+			valWhenAutoBuildButton.setEnabled(_isAutoBuildEnabled && incValEnabled);
+			valWhenAutoBuildButton.setSelection(pagePreferences.isAutoValidate() && incValEnabled && _isAutoBuildEnabled);
+
+			updateHelp();
+		}
+
+		protected void updateTable() throws InvocationTargetException {
+			TableItem[] items = validatorList.getTable().getItems();
+			for (int i = 0; i < items.length; i++) {
 				TableItem item = items[i];
 				ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
 
 				// Should the validator be enabled? Read the user's preferences from last time,
 				// if they exist, and set from that. If they don't exist, use the Validator class'
 				// default value.
-				if (pagePreferences.isManualEnabled(vmd))
-					vmd.setManualValidation(true);
-				else
-					vmd.setManualValidation(false);
-				if (pagePreferences.isBuildEnabled(vmd))
-					vmd.setBuildValidation(true);
-				else
-					vmd.setBuildValidation(false);
-
-			}
-		validatorList.refresh();
-	}
-	
-	protected void updateTableForDefaults() throws InvocationTargetException {
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			TableItem item = items[i];
-			ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-
-			// Should the validator be enabled? Read the user's preferences from last time,
-			// if they exist, and set from that. If they don't exist, use the Validator class'
-			// default value.
-			if(pagePreferences.isEnabled(vmd)) {
-				vmd.setManualValidation(true);
-				vmd.setBuildValidation(true);
-			} else {
-				vmd.setManualValidation(false);
-				vmd.setBuildValidation(false);
+				validatorList.setChecked(vmd, pagePreferences.isEnabled(vmd));
 			}
 		}
-		validatorList.refresh();
-	}
-	
-	protected void enableManualAndBuildValues() {
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			TableItem item = items[i];
-			ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-			vmd.setManualValidation(true);
-			vmd.setBuildValidation(true);
-		}
-		validatorList.refresh();
-	}
-	
-	protected void disableManualAndBuildValues() {
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			TableItem item = items[i];
-			ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-			vmd.setManualValidation(false);
-			vmd.setBuildValidation(false);
-		}
-		validatorList.refresh();
-	}
-	
-	public boolean performOk() throws InvocationTargetException {
-		storeValues();
-		updateTaskList();
-		return true;
-	}
 
-	public boolean performDefaults() throws InvocationTargetException {
-		pagePreferences.resetToDefault();
-		updateWidgetsForDefaults();
-		getDefaultsButton().setFocus();
-		return true;
-	}
-
-	public boolean performEnableAll() throws InvocationTargetException {
-		setAllValidators(true);
-		pagePreferences.setEnabledValidators(getEnabledValidators());
-		enableManualAndBuildValues();
-		enableAllButton.setFocus();
-		return true;
-	}
-
-	/**
-	 * 
-	 */
-	private void setAllValidators(boolean bool) {
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-			validatorMetaData.setManualValidation(bool);
-			validatorMetaData.setBuildValidation(bool);
+		public boolean performOk() throws InvocationTargetException {
+			storeValues();
+			updateTaskList();
+			return true;
 		}
-	}
-	
-	public ValidatorMetaData[] getEnabledValidators() {
-		List enabledValidators = new ArrayList();
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-			if(validatorMetaData.isManualValidation() || validatorMetaData.isBuildValidation())
-				enabledValidators.add(validatorMetaData);
-		}
-		return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-	}
-	
-	public ValidatorMetaData[] getEnabledManualValidators() {
-		List enabledValidators = new ArrayList();
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-			if(validatorMetaData.isManualValidation())
-				enabledValidators.add(validatorMetaData);
-		}
-		return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-	
-	}
-	
-	public ValidatorMetaData[] getEnabledBuildValidators() {
-		List enabledValidators = new ArrayList();
-		TableItem[] items = validatorsTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-			if(validatorMetaData.isBuildValidation())
-				enabledValidators.add(validatorMetaData);
-		}
-		return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-	
-	}
 
-	public boolean performDisableAll() throws InvocationTargetException {
-		setAllValidators(false);
-		pagePreferences.setEnabledValidators(getEnabledValidators());
-		disableManualAndBuildValues();
-		disableAllButton.setFocus();
-		return true;
-	}
-
-	protected void updateHelp() {
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(disableAllValidation, ContextIds.VALIDATION_PREFERENCE_PAGE_DISABLE_ALL_ENABLED);
-	}
-
-	/*
-	 * Store the current values of the controls into the preference store.
-	 */
-	private void storeValues() throws InvocationTargetException {
-		pagePreferences.setCanProjectsOverride(overrideButton.getSelection());
-		
-		if (disableAllValidation.isEnabled()) {
-			pagePreferences.setDisableAllValidation(disableAllValidation.getSelection());
+		public boolean performDefaults() throws InvocationTargetException {
+			pagePreferences.resetToDefault();
+			updateWidgets();
+			checkInteger(); // clear the "max must be a positive integer" message if it exists
+			getDefaultsButton().setFocus();
+			return true;
 		}
-		//pagePreferences.setEnabledValidators(getEnabledValidators());
-		
-		pagePreferences.setEnabledManualValidators(getEnabledManualValidators());
-		
-		pagePreferences.setEnabledBuildValidators(getEnabledBuildValidators());
 
-		pagePreferences.passivate();
-		pagePreferences.store();
-		
-		// If the projects aren't allowed to override, clear their settings.
-		if (!pagePreferences.canProjectsOverride()) {
+		public boolean performSelectAll() throws InvocationTargetException {
+			validatorList.setAllChecked(true);
+			pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+			updateWidgets();
+			selectAllButton.setFocus();
+			return true;
+		}
+
+		public boolean performDeselectAll() throws InvocationTargetException {
+			validatorList.setAllChecked(false);
+			pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+			updateWidgets();
+			deselectAllButton.setFocus();
+			return true;
+		}
+
+		protected void updateHelp() {
+			// never disable this widget because users don't expect the preference page to alter
+			// based on workbench contents
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(valWhenBuildButton, ContextIds.VALIDATION_PREFERENCE_PAGE_REBUILD_ENABLED);
+
+			// never disable this widget because users don't expect the preference page to alter
+			// based on workbench contents
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(valWhenAutoBuildButton, ContextIds.VALIDATION_PREFERENCE_PAGE_AUTO_ENABLED);
+		}
+
+		/*
+		 * Store the current values of the controls into the preference store.
+		 */
+		private void storeValues() throws InvocationTargetException {
+			pagePreferences.setCanProjectsOverride(overrideButton.getSelection());
+
+			// If the manual build button is disabled because no validators are selected in the
+			// task list, don't overwrite the user's preference.
+			if (valWhenBuildButton.isEnabled()) {
+				pagePreferences.setBuildValidate(valWhenBuildButton.getSelection());
+			}
+
+			// If the auto build button is disabled because no validators are selected in the
+			// task list, or because auto-build is disabled, don't overwrite the user's preference.
+			if (valWhenAutoBuildButton.isEnabled()) {
+				pagePreferences.setAutoValidate(valWhenAutoBuildButton.getSelection());
+			}
+
+			pagePreferences.setMaximumNumberOfMessages(checkInteger());
+			pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+
+			pagePreferences.passivate();
+			pagePreferences.store();
+			// If the projects aren't allowed to override, clear their settings.
+			if (!pagePreferences.canProjectsOverride()) {
+				IWorkspace workspace = ResourcesPlugin.getWorkspace();
+				IProject[] projects = workspace.getRoot().getProjects();
+				for (int i = 0; i < projects.length; i++) {
+					IProject project = projects[i];
+					try {
+						if (project.isOpen()) {
+							if (ConfigurationManager.getManager().isMigrated(project)) {
+								ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
+								prjp.setDoesProjectOverride(false);
+								prjp.passivate();
+								prjp.store();
+							}
+						}
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
+				}
+			}
+
+		}
+
+		private void updateTaskList() {
 			IWorkspace workspace = ResourcesPlugin.getWorkspace();
 			IProject[] projects = workspace.getRoot().getProjects();
+			boolean allowChanged = (pagePreferences.canProjectsOverride() != _allow);
 			for (int i = 0; i < projects.length; i++) {
 				IProject project = projects[i];
 				try {
 					if (project.isOpen()) {
-						if (ConfigurationManager.getManager().isMigrated(project)) {
-							ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-							prjp.setDoesProjectOverride(false);
-							prjp.passivate();
-							prjp.store();
+						ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
+						if (!prjp.doesProjectOverride() && (prjp.hasEnabledValidatorsChanged(_oldVmd, allowChanged) || ValidatorManager.getManager().isMessageLimitExceeded(project))) {
+							// If the project used to override the preferences, and the preferences
+							// make that impossible now, then update the task list.
+							//
+							// If the preferences allow projects to override, and they don't, and if
+							// the validators have changed, then update the task list.
+							ValidatorManager.getManager().updateTaskList(project); // Do not remove
+							// the exceeded
+							// message; only
+							// ValidationOperation
+							// should do that
+							// because it's
+							// about to run
+							// validation. If
+							// the limit is
+							// increased,
+							// messages may
+							// still be
+							// missing, so
+							// don't remove
+							// the "messages
+							// may be
+							// missing"
+							// message.
 						}
 					}
 				} catch (InvocationTargetException exc) {
@@ -894,215 +756,191 @@
 			}
 		}
 
-	}
+		public Composite getControl() {
+			return page;
+		}
 
-	private void updateTaskList() {
-		IWorkspace workspace = ResourcesPlugin.getWorkspace();
-		IProject[] projects = workspace.getRoot().getProjects();
-		boolean allowChanged = (pagePreferences.canProjectsOverride() != _allow);
-		for (int i = 0; i < projects.length; i++) {
-			IProject project = projects[i];
+		public void dispose() {
+			listLabel.dispose();
+			overrideButton.dispose();
+			maxValProblemsField.dispose();
+			maxValProblemsFieldLabel.dispose();
+			valWhenAutoBuildButton.dispose();
+			valWhenBuildButton.dispose();
+			emptyRowPlaceholder.dispose();
+			deselectAllButton.dispose();
+			selectAllButton.dispose();
+			validatorList.getTable().dispose();
+			//			validatorList.dispose();
+			//			layout.dispose();
+			//			data.dispose();
+			composite.dispose();
+		}
+
+		public void loseFocus() {
+			// This page does not need to cache anything before it loses focus.
+		}
+
+		public void gainFocus() {
+			// This page depends on the Workbench Preference page, so update the value of the
+			// isAutoBuild (in case the workbench page's value has changed), and then update
+			// this page's widgets.
 			try {
-				if (project.isOpen()) {
-					ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-					if (!prjp.doesProjectOverride() && (prjp.hasEnabledValidatorsChanged(_oldVmd, allowChanged) || true)) {
-						// If the project used to override the preferences, and the preferences
-						// make that impossible now, then update the task list.
-						//
-						// If the preferences allow projects to override, and they don't, and if
-						// the validators have changed, then update the task list.
-						ValidatorManager.getManager().updateTaskList(project); // Do not remove
-						// the exceeded message; only ValidationOperation should do that
-						// because it's about to run validation. If the limit is increased, 
-						//messages may still be missing, so don't remove the "messages
-						// may be missing" message.
-					}
-				}
+				_isAutoBuildEnabled = ValidatorManager.getManager().isGlobalAutoBuildEnabled();
+				updateWidgets();
 			} catch (InvocationTargetException exc) {
 				displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 			}
 		}
 	}
 
-	public Composite getControl() {
-		return page;
-	}
-
-	public void dispose() {
-		listLabel.dispose();
-		overrideButton.dispose();
-		disableAllValidation.dispose();
-		emptyRowPlaceholder.dispose();
-		disableAllButton.dispose();
-		enableAllButton.dispose();
-		validatorList.getTable().dispose();
-		composite.dispose();
-	}
-
-	public void loseFocus() {
-		// This page does not need to cache anything before it loses focus.
-	}
-
-	public void gainFocus() {/*
-		// This page depends on the Workbench Preference page, so update the value of the
-		// isAutoBuild (in case the workbench page's value has changed), and then update
-		// this page's widgets.
+	/*
+	 * @see PreferencePage#createContents(Composite)
+	 */
+	protected Control createContents(Composite parent) {
 		try {
-			//_isAutoBuildEnabled = ValidatorManager.getManager().isGlobalAutoBuildEnabled();
-			updateWidgets();
+			GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
+			if (gp.numberOfValidators() == 0) {
+				_pageImpl = new NoValidatorsPage(parent);
+			} else {
+				try {
+					_pageImpl = new ValidatorListPage(parent);
+				} catch (InvocationTargetException exc) {
+					_pageImpl = new InvalidPage(parent);
+					displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+				} catch (Throwable exc) {
+					_pageImpl = new InvalidPage(parent);
+					displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+				}
+			}
 		} catch (InvocationTargetException exc) {
+			_pageImpl = new InvalidPage(parent);
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+		} catch (Throwable exc) {
+			_pageImpl = new InvalidPage(parent);
 			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 		}
-	*/}
-}
 
-/*
- * @see PreferencePage#createContents(Composite)
- */
-protected Control createContents(Composite parent) {
-	try {
-		GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
-		if (gp.numberOfValidators() == 0) {
-			_pageImpl = new NoValidatorsPage(parent);
+		return _pageImpl.getControl();
+	}
+
+	/*
+	 * @see IWorkbenchPreferencePage#init(IWorkbench)
+	 */
+	public void init(IWorkbench workbench) {
+		//init
+	}
+
+	protected void noDefaultAndApplyButton() {
+		super.noDefaultAndApplyButton();
+	}
+
+	/**
+	 * Performs special processing when this page's Defaults button has been pressed.
+	 * <p>
+	 * This is a framework hook method for sublcasses to do special things when the Defaults button
+	 * has been pressed. Subclasses may override, but should call <code>super.performDefaults</code>.
+	 * </p>
+	 */
+	protected void performDefaults() {
+		super.performDefaults();
+
+		try {
+			_pageImpl.performDefaults();
+		} catch (InvocationTargetException exc) {
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+		} catch (Throwable exc) {
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+		}
+	}
+
+	/**
+	 * When the user presses the "OK" or "Apply" button on the Properties Guide/Properties Page,
+	 * respectively, some processing is performed by this PropertyPage. If the page is found, and
+	 * completes successfully, true is returned. Otherwise, false is returned, and the guide doesn't
+	 * finish.
+	 */
+	public boolean performOk() {
+		try {
+			return _pageImpl.performOk();
+		} catch (InvocationTargetException exc) {
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+			return false;
+		} catch (Throwable exc) {
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+			return false;
+		}
+	}
+
+	/**
+	 * Since the pages are inner classes of a child PreferencePage, not a PreferencePage itself,
+	 * DialogPage's automatic disposal of its children's widgets cannot be used. Instead, dispose of
+	 * each inner class' widgets explicitly.
+	 */
+	public void dispose() {
+		super.dispose();
+		try {
+			if (_pageImpl != null) {
+				_pageImpl.dispose();
+			}
+		} catch (Throwable exc) {
+			displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+		}
+	}
+
+	private void logError(Throwable exc) {
+		Logger logger = WTPUIPlugin.getLogger();
+		if (logger.isLoggingLevel(Level.SEVERE)) {
+			LogEntry entry = ValidationUIPlugin.getLogEntry();
+			entry.setSourceIdentifier("ValidationPreferencePage.displayAndLogError"); //$NON-NLS-1$
+			entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL_PAGE);
+			entry.setTargetException(exc);
+			logger.write(Level.SEVERE, entry);
+
+			if (exc instanceof InvocationTargetException) {
+				if (((InvocationTargetException) exc).getTargetException() != null) {
+					entry.setTargetException(((InvocationTargetException) exc).getTargetException());
+					logger.write(Level.SEVERE, entry);
+				}
+			}
+		}
+	}
+
+	/**
+	 * package visibility because if this method is private, then the compiler needs to create a
+	 * synthetic accessor method for the internal classes, and that can have performance
+	 * implications.
+	 */
+	void displayAndLogError(String title, String message, Throwable exc) {
+		logError(exc);
+		displayMessage(title, message, org.eclipse.swt.SWT.ICON_ERROR);
+	}
+
+	private void displayMessage(String title, String message, int iIconType) {
+		MessageBox messageBox = new MessageBox(getShell(), org.eclipse.swt.SWT.OK | iIconType | org.eclipse.swt.SWT.APPLICATION_MODAL);
+		messageBox.setMessage(message);
+		messageBox.setText(title);
+		messageBox.open();
+	}
+
+	/**
+	 * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
+	 */
+	public void setVisible(boolean visible) {
+		super.setVisible(visible);
+		if (_pageImpl == null)
+			return;
+		if (visible) {
+			_pageImpl.gainFocus();
 		} else {
-			try {
-				_pageImpl = new ValidatorListPage(parent);
-			} catch (InvocationTargetException exc) {
-				_pageImpl = new InvalidPage(parent);
-				displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-			} catch (Throwable exc) {
-				_pageImpl = new InvalidPage(parent);
-				displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-			}
-		}
-	} catch (InvocationTargetException exc) {
-		_pageImpl = new InvalidPage(parent);
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-	} catch (Throwable exc) {
-		_pageImpl = new InvalidPage(parent);
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-	}
-
-	return _pageImpl.getControl();
-}
-
-/*
- * @see IWorkbenchPreferencePage#init(IWorkbench)
- */
-public void init(IWorkbench workbench) {
-	//init
-}
-
-protected void noDefaultAndApplyButton() {
-	super.noDefaultAndApplyButton();
-}
-
-/**
- * Performs special processing when this page's Defaults button has been pressed.
- * <p>
- * This is a framework hook method for sublcasses to do special things when the Defaults button
- * has been pressed. Subclasses may override, but should call <code>super.performDefaults</code>.
- * </p>
- */
-protected void performDefaults() {
-	super.performDefaults();
-
-	try {
-		_pageImpl.performDefaults();
-	} catch (InvocationTargetException exc) {
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-	} catch (Throwable exc) {
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-	}
-}
-
-/**
- * When the user presses the "OK" or "Apply" button on the Properties Guide/Properties Page,
- * respectively, some processing is performed by this PropertyPage. If the page is found, and
- * completes successfully, true is returned. Otherwise, false is returned, and the guide doesn't
- * finish.
- */
-public boolean performOk() {
-	try {
-		return _pageImpl.performOk();
-	} catch (InvocationTargetException exc) {
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-		return false;
-	} catch (Throwable exc) {
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-		return false;
-	}
-}
-
-/**
- * Since the pages are inner classes of a child PreferencePage, not a PreferencePage itself,
- * DialogPage's automatic disposal of its children's widgets cannot be used. Instead, dispose of
- * each inner class' widgets explicitly.
- */
-public void dispose() {
-	super.dispose();
-	try {
-		if (_pageImpl != null) {
-			_pageImpl.dispose();
-		}
-	} catch (Throwable exc) {
-		displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
-	}
-}
-
-private void logError(Throwable exc) {
-	Logger logger = WTPUIPlugin.getLogger();
-	if (logger.isLoggingLevel(Level.SEVERE)) {
-		LogEntry entry = ValidationUIPlugin.getLogEntry();
-		entry.setSourceIdentifier("ValidationPreferencePage.displayAndLogError"); //$NON-NLS-1$
-		entry.setMessageTypeIdentifier(ResourceConstants.VBF_EXC_INTERNAL_PAGE);
-		entry.setTargetException(exc);
-		logger.write(Level.SEVERE, entry);
-
-		if (exc instanceof InvocationTargetException) {
-			if (((InvocationTargetException) exc).getTargetException() != null) {
-				entry.setTargetException(((InvocationTargetException) exc).getTargetException());
-				logger.write(Level.SEVERE, entry);
-			}
+			_pageImpl.loseFocus();
 		}
 	}
-}
 
-/**
- * package visibility because if this method is private, then the compiler needs to create a
- * synthetic accessor method for the internal classes, and that can have performance
- * implications.
- */
-void displayAndLogError(String title, String message, Throwable exc) {
-	logError(exc);
-	displayMessage(title, message, org.eclipse.swt.SWT.ICON_ERROR);
-}
-
-private void displayMessage(String title, String message, int iIconType) {
-	MessageBox messageBox = new MessageBox(getShell(), org.eclipse.swt.SWT.OK | iIconType | org.eclipse.swt.SWT.APPLICATION_MODAL);
-	messageBox.setMessage(message);
-	messageBox.setText(title);
-	messageBox.open();
-}
-
-/**
- * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
- */
-public void setVisible(boolean visible) {
-	super.setVisible(visible);
-	if (_pageImpl == null)
-		return;
-	if (visible) {
-		_pageImpl.gainFocus();
-	} else {
-		_pageImpl.loseFocus();
+	/**
+	 * @see org.eclipse.jface.preference.PreferencePage#getDefaultsButton()
+	 */
+	protected Button getDefaultsButton() {
+		return super.getDefaultsButton();
 	}
-}
-
-/**
- * @see org.eclipse.jface.preference.PreferencePage#getDefaultsButton()
- */
-protected Button getDefaultsButton() {
-	return super.getDefaultsButton();
-}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPropertiesPage.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPropertiesPage.java
index 26279a9..36ff675 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPropertiesPage.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/ValidationPropertiesPage.java
@@ -12,52 +12,40 @@
 
 
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.logging.Level;
 
-import javax.swing.event.HyperlinkEvent;
-
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.MessageBox;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PreferencesUtil;
 import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
 import org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin;
 import org.eclipse.wst.validation.internal.ConfigurationManager;
 import org.eclipse.wst.validation.internal.GlobalConfiguration;
 import org.eclipse.wst.validation.internal.ProjectConfiguration;
+import org.eclipse.wst.validation.internal.ValidationConfiguration;
 import org.eclipse.wst.validation.internal.ValidatorMetaData;
 import org.eclipse.wst.validation.internal.operations.ValidatorManager;
 import org.eclipse.wst.validation.internal.ui.plugin.ValidationUIPlugin;
@@ -168,7 +156,7 @@
 		private GridLayout layout = null;
 		private GridData data = null;
 		private Label messageLabel = null;
-		
+
 		public NoValidatorsPage(Composite parent) {
 			page = createPage(parent);
 		}
@@ -227,28 +215,21 @@
 		GridLayout layout = null;
 		GridData data = null;
 		Label messageLabel = null;
-		TableViewer validatorList = null;
+		CheckboxTableViewer validatorList = null;
 		Button overrideGlobalButton = null;
-		Button disableAllValidation = null;
-		private Button enableAllButton = null;
-		private Button disableAllButton = null;
+		Button autoButton = null;
+		Button valWhenBuildButton = null;
+		Button selectAllButton = null;
+		Button deselectAllButton = null;
 		Label emptyRowPlaceholder = null;
-		private String[] columnProperties;
-		private CellEditor[] columnEditors;
-		private String[] COMBO_VALUES = new String[] {"Enabled","Disabled"};
-		private static final String ENABLED = "Enabled";
-		private static final String DISABLED = "Disabled";
-		private static final int ENABLED_INT = 0;
-		private static final int DISABLED_INT = 1;
-		private Table validatorsTable;
-		private static final String VALIDATORS = "validators"; //$NON-NLS-1$
-		private static final String MANUAL_CHECK = "manualCheck";//$NON-NLS-2$
-		private static final String BUILD_CHECK = "buildCheck";//$NON-NLS-2$
-		private static final int VALUE_NOT_FOUND = -1;
-		private static final int MANUAL_COL = 1;
-		private static final int BUILD_COL = 2;
-		private Label globalPrefLink = null;
+		Text maxValProblemsField = null;
+		Label maxValProblemsFieldLabel = null;
+
 		ProjectConfiguration pagePreferences = null;
+
+		// default values for the widgets, initialized in the constructor
+		private boolean isAutoBuildEnabled = false;
+		private boolean isBuilderConfigured = false;
 		private boolean canOverride = false;
 
 		private ValidatorMetaData[] oldVmd = null; // Cache the enabled validators so that, if there
@@ -320,7 +301,7 @@
 		 * This class is provided for ValidationPropertiesPage$ValidatorListPage's
 		 * checkboxTableViewer element.
 		 */
-		public class ValidationLabelProvider extends LabelProvider implements ITableLabelProvider {
+		public class ValidationLabelProvider extends LabelProvider {
 			/**
 			 * Override the LabelProvider's text, by customizing the text for a ValidatorMetaData
 			 * element.
@@ -334,36 +315,6 @@
 					return super.getText(element);
 				}
 			}
-			
-			public String getColumnText(Object element, int columnIndex) {
-				if(columnIndex == 0) {
-					return ((ValidatorMetaData) element).getValidatorDisplayName();
-				}
-				/*if(columnIndex == 1) {
-					if(((ValidatorMetaData)element).isManualValidation())
-						return ENABLED;
-					return DISABLED;	
-				} else if(columnIndex == 2) {
-					if(((ValidatorMetaData)element).isBuildValidation())
-						return ENABLED;
-					return DISABLED;
-				}*/
-				return null;
-			}
-
-			public Image getColumnImage(Object element, int columnIndex) {
-				if(columnIndex == 1) {
-					if(((ValidatorMetaData)element).isManualValidation())
-						return  ValidationUIPlugin.getPlugin().getImage("ok_tbl");
-					return ValidationUIPlugin.getPlugin().getImage("fail_tbl");
-				} else if(columnIndex == 2) {
-					if(((ValidatorMetaData)element).isBuildValidation())
-						return ValidationUIPlugin.getPlugin().getImage("ok_tbl");;
-					return ValidationUIPlugin.getPlugin().getImage("fail_tbl");
-				}
-				return null;
-			
-			}
 		}
 
 		/**
@@ -402,15 +353,37 @@
 			ConfigurationManager prefMgr = ConfigurationManager.getManager();
 			ValidatorManager vMgr = ValidatorManager.getManager();
 
-			pagePreferences = prefMgr.getProjectConfiguration(getProject()); // This
-			// represents the values on the page that haven't been persisted yet.
-			// Start with the last values that were persisted into the current
-			// page's starting values.
+			pagePreferences = new ProjectConfiguration(prefMgr.getProjectConfiguration(getProject())); // This
+			// represents
+			// the
+			// values
+			// on
+			// the
+			// page
+			// that
+			// haven't
+			// been
+			// persisted
+			// yet.
+			// Start
+			// with
+			// the
+			// last
+			// values
+			// that
+			// were
+			// persisted
+			// into
+			// the
+			// current
+			// page's
+			// starting
+			// values.
 
 			// store the default values for the widgets
 			canOverride = prefMgr.getGlobalConfiguration().canProjectsOverride();
-			//isAutoBuildEnabled = vMgr.isGlobalAutoBuildEnabled();
-			//isBuilderConfigured = ValidatorManager.doesProjectSupportBuildValidation(getProject());
+			isAutoBuildEnabled = vMgr.isGlobalAutoBuildEnabled();
+			isBuilderConfigured = ValidatorManager.doesProjectSupportBuildValidation(getProject());
 			oldVmd = pagePreferences.getEnabledValidators(); // Cache the enabled validators so
 			// that, if there is no change to this
 			// list, the expensive task list update
@@ -418,33 +391,6 @@
 
 			createPage(parent);
 		}
-		
-		private void setupTableColumns(Table table, TableViewer viewer) {
-			TableColumn validatorColumn = new TableColumn(table, SWT.NONE);
-	        validatorColumn.setText("Validator");
-	        validatorColumn.setResizable(false);
-	        validatorColumn.setWidth(240);
-	        TableColumn manualColumn = new TableColumn(table, SWT.NONE);
-	        manualColumn.setText("Manual");
-	        manualColumn.setResizable(false);
-	        manualColumn.setWidth(80);
-	        TableColumn buildColumn = new TableColumn(table, SWT.NONE);
-	        buildColumn.setText("Build");
-	        buildColumn.setResizable(false);
-	        buildColumn.setWidth(80);
-	        setupCellModifiers(table, viewer);
-	    }
-		private void setupCellModifiers(Table table, TableViewer viewer) {
-	        columnProperties = new String[3];
-	        columnProperties[0] = VALIDATORS; //$NON-NLS-1$
-	        columnProperties[1] = MANUAL_CHECK;//$NON-NLS-2$
-	        columnProperties[2] = BUILD_CHECK;//$NON-NLS-2$
-	        viewer.setColumnProperties(columnProperties);
-	        columnEditors = new CellEditor[table.getColumnCount()];
-	        columnEditors[1] = new ComboBoxCellEditor(table,COMBO_VALUES, SWT.READ_ONLY);
-	        columnEditors[2] = new ComboBoxCellEditor(table,COMBO_VALUES, SWT.READ_ONLY);
-	        viewer.setCellEditors(columnEditors);
-	    }
 
 		/**
 		 * This page is created if the current project has at least one validator configured on it.
@@ -456,53 +402,19 @@
 			page = new Composite(sc1, SWT.NONE);
 			sc1.setContent(page);
 			page.setLayout(new GridLayout()); // use the layout's default preferences
-			
+
 			Composite validatorGroup = new Composite(page, SWT.NONE);
 			GridLayout validatorGroupLayout = new GridLayout();
 			validatorGroupLayout.numColumns = 2;
 			validatorGroup.setLayout(validatorGroupLayout);
-			
-			Hyperlink link = new Hyperlink(validatorGroup,SWT.None);
-			GridData layout = new GridData(GridData.HORIZONTAL_ALIGN_END);
-			layout.horizontalSpan = 2;
-			link.setLayoutData(layout);
-			link.setUnderlined(true);
-			Color color = new Color(validatorGroup.getDisplay(),new RGB(0,0,255) );
-			link.setForeground(color);
-			link.setText("Configure Workspace Settings...");
-			link.addHyperlinkListener(new IHyperlinkListener() {
-				public static final String DATA_NO_LINK = "PropertyAndPreferencePage.nolink"; //$NON-NLS-1$
 
-				public void hyperlinkUpdate(HyperlinkEvent e) {
-				}
-
-				public void linkEntered(org.eclipse.ui.forms.events.HyperlinkEvent e) {
-				}
-
-				public void linkExited(org.eclipse.ui.forms.events.HyperlinkEvent e) {
-				}
-
-				public void linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent e) {
-					String id = getPreferencePageID();
-					PreferencesUtil.createPreferenceDialogOn(getShell(), id, new String[]{id}, DATA_NO_LINK).open();
-					try {
-						updateWidgets();
-					} catch (InvocationTargetException ie) {
-
-					}
-				}
-
-				private String getPreferencePageID() {
-					return "ValidationPreferencePage";
-				}
-			});
-			
-			GridData overrideData = new GridData(GridData.GRAB_HORIZONTAL);
+			GridData overrideData = new GridData(GridData.FILL_HORIZONTAL);
 			overrideData.horizontalSpan = 2;
 			overrideGlobalButton = new Button(validatorGroup, SWT.CHECK);
 			overrideGlobalButton.setLayoutData(overrideData);
 			overrideGlobalButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_BUTTON_OVERRIDE, new String[]{getProject().getName()}));
-			overrideGlobalButton.setFocus(); // must focus on something for F1 to have a topic to lanuch
+			overrideGlobalButton.setFocus(); // must focus on something for F1 to have a topic to
+			// launch
 			overrideGlobalButton.addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
 					pagePreferences.setDoesProjectOverride(overrideGlobalButton.getSelection());
@@ -513,29 +425,34 @@
 					}
 				}
 			});
-			
+
+
 			emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
 			emptyRowPlaceholder.setLayoutData(new GridData());
-			
-			GridData disableValidationData = new GridData(GridData.FILL_HORIZONTAL);
-			disableValidationData.horizontalSpan = 2;
-			disableAllValidation = new Button(validatorGroup, SWT.CHECK);
-			disableAllValidation.setLayoutData(disableValidationData);
-			disableAllValidation.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.DISABLE_VALIDATION));
-			disableAllValidation.addSelectionListener(new SelectionAdapter() {
+
+			GridData valWhenBuildData = new GridData(GridData.FILL_HORIZONTAL);
+			valWhenBuildData.horizontalSpan = 2;
+			valWhenBuildButton = new Button(validatorGroup, SWT.CHECK);
+			valWhenBuildButton.setLayoutData(valWhenBuildData);
+			valWhenBuildButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_BUTTON_FULL, new String[]{getProject().getName()}));
+			valWhenBuildButton.addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
-					pagePreferences.setDisableAllValidation(disableAllValidation.getSelection());
-					disableAllValidation.setFocus();
-					validatorsTable.setEnabled(!disableAllValidation.getSelection());
-					enableAllButton.setEnabled(!disableAllValidation.getSelection());
-					disableAllButton.setEnabled(!disableAllValidation.getSelection());
+					pagePreferences.setBuildValidate(valWhenBuildButton.getSelection());
+					valWhenBuildButton.setFocus();
 				}
 			});
-			
-			emptyRowPlaceholder = new Label(validatorGroup, SWT.NONE);
-			emptyRowPlaceholder.setLayoutData(new GridData());
 
-
+			GridData valWhenAutoBuildData = new GridData(GridData.FILL_HORIZONTAL);
+			valWhenAutoBuildData.horizontalSpan = 2;
+			autoButton = new Button(validatorGroup, SWT.CHECK);
+			autoButton.setLayoutData(valWhenAutoBuildData);
+			autoButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_LBL_AUTO_VALIDATE, new String[]{getProject().getName()}));
+			autoButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setAutoValidate(autoButton.getSelection());
+					autoButton.setFocus();
+				}
+			});
 
 			GridData listLabelData = new GridData(GridData.FILL_HORIZONTAL);
 			listLabelData.horizontalSpan = 2;
@@ -543,128 +460,55 @@
 			messageLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_LBL_DESC, new String[]{getProject().getName()}));
 			messageLabel.setLayoutData(listLabelData);
 
-			validatorsTable = new Table(validatorGroup,SWT.BORDER);
-			TableLayout tableLayout = new TableLayout();
-			tableLayout.addColumnData(new ColumnWeightData(160, true));
-	        tableLayout.addColumnData(new ColumnWeightData(80, true));
-	        tableLayout.addColumnData(new ColumnWeightData(80, true));
-			validatorsTable.setHeaderVisible(true);
-			validatorsTable.setLinesVisible(true);
-	        validatorsTable.setLayout(tableLayout);
-			
-			validatorList = new TableViewer(validatorsTable);
-	        GridData validatorListData = new GridData(GridData.FILL_HORIZONTAL);
+			GridData validatorListData = new GridData(GridData.FILL_HORIZONTAL);
 			validatorListData.horizontalSpan = 2;
-			validatorsTable.setLayoutData(validatorListData);
+			validatorList = CheckboxTableViewer.newCheckList(validatorGroup, SWT.BORDER);
 			validatorList.getTable().setLayoutData(validatorListData);
 			validatorList.setLabelProvider(new ValidationLabelProvider());
 			validatorList.setContentProvider(new ValidationContentProvider());
 			validatorList.setSorter(new ValidationViewerSorter());
-	        setupTableColumns(validatorsTable,validatorList);
-	        
-			validatorList.setCellModifier(new ICellModifier() {
-
-				public boolean canModify(Object element, String property) {
-					ComboBoxCellEditor cellEditor = getComboBoxCellEditor(property);
-					if (cellEditor == null)
-						return false;
-					return true;
-				}
-
-				protected ComboBoxCellEditor getComboBoxCellEditor(String property) {
-					CellEditor cellEditor = getCellEditor(property);
-					if (cellEditor instanceof ComboBoxCellEditor)
-						return (ComboBoxCellEditor) cellEditor;
-					return null;
-
-				}
-
-				protected int getPropertyIntValue(String property) {
-					if (columnProperties != null) {
-						for (int i = 0; i < columnProperties.length; i++) {
-							if (columnProperties[i].equals(property))
-								return i;
-						}
-					}
-					return VALUE_NOT_FOUND;
-				}
-
-				protected CellEditor getCellEditor(String property) {
-					int comboCellEditorIndex = getPropertyIntValue(property);
-					if (comboCellEditorIndex == VALUE_NOT_FOUND)
-						return null;
-					return columnEditors[comboCellEditorIndex];
-				}
-
-				public Object getValue(Object element, String property) {
-					ValidatorMetaData data = (ValidatorMetaData) element;
-					if (property == MANUAL_CHECK) {
-						if (data.isManualValidation())
-							return new Integer(ENABLED_INT);
-						else
-							return new Integer(DISABLED_INT);
-
-					} else if (property == BUILD_CHECK) {
-						if (data.isBuildValidation())
-							return new Integer(ENABLED_INT);
-						else
-							return new Integer(DISABLED_INT);
-					}
-					return new Integer(VALUE_NOT_FOUND);
-				}
-
-				public void modify(Object element, String property, Object value) {
-					ValidatorMetaData data = (ValidatorMetaData) ((TableItem) element).getData();
-					int intValue = ((Integer) value).intValue();
-					if (property.equals(MANUAL_CHECK)) {
-						if (intValue == ENABLED_INT) {
-							data.setManualValidation(true);
-						} else if (intValue == DISABLED_INT) {
-							data.setManualValidation(false);
-						}
-					} else if (property.equals(BUILD_CHECK)) {
-						if (intValue == ENABLED_INT) {
-							data.setBuildValidation(true);
-						} else if (intValue == DISABLED_INT) {
-							data.setBuildValidation(false);
-						}
-					}
-					validatorList.refresh();
-				}
-			});
-			
-			validatorList.setInput(pagePreferences.getValidators());
-			
-			enableAllButton = new Button(validatorGroup, SWT.PUSH);
-			GridData selectData = new GridData();
-			enableAllButton.setLayoutData(selectData);
-			enableAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_ENABLEALL));
-			enableAllButton.addSelectionListener(new SelectionAdapter() {
+			validatorList.getTable().addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
+					pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
 					try {
-						performEnableAll();
+						updateWidgets();
 					} catch (InvocationTargetException exc) {
 						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 					}
 				}
 			});
-			PlatformUI.getWorkbench().getHelpSystem().setHelp(enableAllButton, ContextIds.VALIDATION_PROPERTIES_PAGE);
+			validatorList.setInput(pagePreferences.getValidators());
+
+			selectAllButton = new Button(validatorGroup, SWT.PUSH);
+			GridData selectData = new GridData();
+			selectAllButton.setLayoutData(selectData);
+			selectAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_BUTTON_SELECTALL));
+			selectAllButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					try {
+						performSelectAll();
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
+				}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(selectAllButton, ContextIds.VALIDATION_PROPERTIES_PAGE);
 
 
 			GridData deselectData = new GridData();
-			disableAllButton = new Button(validatorGroup, SWT.PUSH);
-			disableAllButton.setLayoutData(deselectData);
-			disableAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PREF_BUTTON_DISABLEALL));
-			disableAllButton.addSelectionListener(new SelectionAdapter() {
+			deselectAllButton = new Button(validatorGroup, SWT.PUSH);
+			deselectAllButton.setLayoutData(deselectData);
+			deselectAllButton.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_BUTTON_DESELECTALL));
+			deselectAllButton.addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
 					try {
-						performDisableAll();
+						performDeselectAll();
 					} catch (InvocationTargetException exc) {
 						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
 					}
 				}
 			});
-			PlatformUI.getWorkbench().getHelpSystem().setHelp(disableAllButton, ContextIds.VALIDATION_PROPERTIES_PAGE);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(deselectAllButton, ContextIds.VALIDATION_PROPERTIES_PAGE);
 
 			Composite maxGroup = new Composite(page, SWT.NONE);
 			GridLayout maxGroupLayout = new GridLayout();
@@ -673,10 +517,45 @@
 			GridData maxGroupData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
 			maxGroup.setLayoutData(maxGroupData);
 
+			GridData maxLabel = new GridData();
+			maxValProblemsFieldLabel = new Label(maxGroup, SWT.NONE);
+			maxValProblemsFieldLabel.setLayoutData(maxLabel);
+			maxValProblemsFieldLabel.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_LBL_MAXMSSGS, new String[]{getProject().getName()}));
+
+			maxValProblemsField = new Text(maxGroup, SWT.SINGLE | SWT.BORDER);
+			GridData maxValProblemsData = new GridData(GridData.FILL_HORIZONTAL);
+			maxValProblemsField.setLayoutData(maxValProblemsData);
+			maxValProblemsField.addKeyListener(new KeyListener() {
+				/**
+				 * Sent when a key is pressed on the system keyboard.
+				 * 
+				 * @param e
+				 *            an event containing information about the key press
+				 */
+				public void keyPressed(KeyEvent e) {
+					//do nothing
+				}
+
+				/**
+				 * Sent when a key is released on the system keyboard.
+				 * 
+				 * @param e
+				 *            an event containing information about the key release
+				 */
+				public void keyReleased(KeyEvent e) {
+					try {
+						pagePreferences.setMaximumNumberOfMessages(checkInteger());
+					} catch (InvocationTargetException exc) {
+						displayAndLogError(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_TITLE), ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_INTERNAL_PAGE), exc);
+					}
+				}
+			});
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(maxValProblemsField, ContextIds.VALIDATION_PROPERTIES_PAGE_MAX_MESSAGES);
+
 			// Have to set the tab order or only the first checkbox in a Composite can
 			// be tab-ed to. (Seems to apply only to checkboxes. Have to use the arrow
 			// key to navigate the checkboxes.)
-			validatorGroup.setTabList(new Control[]{overrideGlobalButton, validatorList.getTable(), enableAllButton, disableAllButton});
+			validatorGroup.setTabList(new Control[]{overrideGlobalButton, valWhenBuildButton, autoButton, validatorList.getTable(), selectAllButton, deselectAllButton});
 
 			updateWidgets();
 
@@ -686,175 +565,105 @@
 		}
 
 		protected void updateTable() throws InvocationTargetException {
-			TableItem[] items = validatorsTable.getItems();
+			TableItem[] items = validatorList.getTable().getItems();
 			for (int i = 0; i < items.length; i++) {
 				TableItem item = items[i];
 				ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
 
 				// Should the validator be enabled? Read the user's preferences from last time,
 				// if they exist, and set from that. If they don't exist, use the Validator class'
-				if (pagePreferences.isManualEnabled(vmd))
-					vmd.setManualValidation(true);
-				else
-					vmd.setManualValidation(false);
-				
-				if (pagePreferences.isBuildEnabled(vmd))
-					vmd.setBuildValidation(true);
-				else
-					vmd.setBuildValidation(false);
+				// default value.
+				validatorList.setChecked(vmd, pagePreferences.isEnabled(vmd));
 			}
-			validatorList.refresh();
-		}
-		
-		protected void enableManualAndBuildValues() {
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				TableItem item = items[i];
-				ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-				vmd.setManualValidation(true);
-				vmd.setBuildValidation(true);
-			}
-			validatorList.refresh();
-		}
-		
-		protected void disableManualAndBuildValues() {
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				TableItem item = items[i];
-				ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-				vmd.setManualValidation(false);
-				vmd.setBuildValidation(false);
-			}
-			validatorList.refresh();
 		}
 
 		public boolean performDefaults() throws InvocationTargetException {
 			pagePreferences.resetToDefault();
 			updateWidgets();
+			checkInteger(); // clear the "max must be a positive integer" message if it exists
 			getDefaultsButton().setFocus();
 			return true;
 		}
 
-		public boolean performEnableAll() throws InvocationTargetException {
-			setAllValidators(true);
-			pagePreferences.setEnabledValidators(getEnabledValidators());
-			enableManualAndBuildValues();
-			enableAllButton.setFocus();
+		public boolean performSelectAll() throws InvocationTargetException {
+			validatorList.setAllChecked(true);
+			pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+			updateWidgets();
+			selectAllButton.setFocus();
 			return true;
 		}
 
-		public boolean performDisableAll() throws InvocationTargetException {
-			setAllValidators(false);
-			pagePreferences.setEnabledValidators(getEnabledValidators());
-			disableManualAndBuildValues();
-			disableAllButton.setFocus();
+		public boolean performDeselectAll() throws InvocationTargetException {
+			validatorList.setAllChecked(false);
+			pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
+			updateWidgets();
+			deselectAllButton.setFocus();
 			return true;
 		}
-		
-		public ValidatorMetaData[] getEnabledValidators() {
-			List enabledValidators = new ArrayList();
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-				if(validatorMetaData.isManualValidation() || validatorMetaData.isBuildValidation())
-					enabledValidators.add(validatorMetaData);
-			}
-			return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-		}
-		
-		public ValidatorMetaData[] getManualEnabledValidators() {
-			List enabledValidators = new ArrayList();
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-				if(validatorMetaData.isManualValidation())
-					enabledValidators.add(validatorMetaData);
-			}
-			return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-		}
-		
-		public ValidatorMetaData[] getBuildEnabledValidators() {
-			List enabledValidators = new ArrayList();
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-				if(validatorMetaData.isBuildValidation())
-					enabledValidators.add(validatorMetaData);
-			}
-			return (ValidatorMetaData[])enabledValidators.toArray(new ValidatorMetaData[enabledValidators.size()]);
-		}
 
-		
-		/**
-		 * 
-		 */
-		private void setAllValidators(boolean bool) {
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				ValidatorMetaData validatorMetaData = (ValidatorMetaData) items[i].getData();
-				validatorMetaData.setManualValidation(bool);
-				validatorMetaData.setBuildValidation(bool);
+		protected int checkInteger() throws InvocationTargetException {
+			ProjectConfiguration pc = ConfigurationManager.getManager().getProjectConfiguration(getProject());
+			String text = maxValProblemsField.getText();
+			if (text == null) {
+				setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_ERROR_INT));
+				return pc.getMaximumNumberOfMessages();
 			}
+			try {
+				Integer tempInt = new Integer(text.trim());
+
+				// no exception? It's an int, then.
+				if (tempInt.intValue() <= 0) {
+					setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_ERROR_INT));
+					return pc.getMaximumNumberOfMessages();
+				}
+				setErrorMessage(null);
+				return Integer.valueOf(maxValProblemsField.getText().trim()).intValue();
+			} catch (NumberFormatException exc) {
+				setErrorMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.PROP_ERROR_INT));
+				return pc.getMaximumNumberOfMessages();
+			}
+
 		}
 
 		void updateWidgets() throws InvocationTargetException {
 			// Since the setting of the "override" button enables/disables the other widgets on the
-			// page, update the enabled state of the other widgets from the "override" button.
-			updateTable();
-			updateAllWidgets();
-			
-		}
-		
-		protected void updateWidgetsForDefaults() throws InvocationTargetException {
-			updateTableForDefaults();
-			updateAllWidgets();
-		}
-		
-		private void updateAllWidgets() throws InvocationTargetException {
-			// Since the setting of the "override" button enables/disables the other widgets on the
-			// page, update the enabled state of the other widgets from the "override" button.
-			ConfigurationManager prefMgr = ConfigurationManager.getManager();
-			canOverride = prefMgr.getGlobalConfiguration().canProjectsOverride();
+			// page,
+			// update the enabled state of the other widgets from the "override" button.
 			boolean overridePreferences = canOverride && pagePreferences.doesProjectOverride();
+
 			overrideGlobalButton.setEnabled(canOverride);
 			overrideGlobalButton.setSelection(overridePreferences);
-			disableAllValidation.setEnabled(overridePreferences);
-			disableAllValidation.setSelection(pagePreferences.isDisableAllValidation());
-			if (overridePreferences)
-				enableDependentControls(!pagePreferences.isDisableAllValidation());
-			else
-				enableDependentControls(overridePreferences);
+
+			validatorList.getTable().setEnabled(overridePreferences);
+			validatorList.setAllGrayed(!overridePreferences);
+
+			selectAllButton.setEnabled(overridePreferences); // since help messsage isn't
+			// context-sensitive, it's set in the
+			// createPage method
+			deselectAllButton.setEnabled(overridePreferences);
+
+			maxValProblemsField.setEnabled(overridePreferences);
+			maxValProblemsField.setText(String.valueOf(pagePreferences.getMaximumNumberOfMessages()));
+
+			updateTable();
+
+			// Never check if builder is configured because if it isn't, the user needs to be able
+			// to add the builder via the instructions on the F1 infopops.
+			// In the case when the builder isn't configured, show the checkbox as enabled but
+			// cleared
+			// The only time that these two checkboxes are disabled is when no validators are
+			// enabled in the list.
+			boolean valEnabled = (pagePreferences.numberOfEnabledValidators() > 0);
+			valWhenBuildButton.setEnabled(overridePreferences && valEnabled);
+			valWhenBuildButton.setSelection(pagePreferences.isBuildValidate() && valEnabled && isBuilderConfigured);
+
+			boolean incValEnabled = (pagePreferences.numberOfEnabledIncrementalValidators() > 0);
+			autoButton.setEnabled(overridePreferences && isAutoBuildEnabled && incValEnabled);
+			autoButton.setSelection(pagePreferences.isAutoValidate() && incValEnabled && isAutoBuildEnabled && isBuilderConfigured);
+
 			updateHelp();
 		}
 
-		private void updateTableForDefaults() throws InvocationTargetException {
-			TableItem[] items = validatorsTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				TableItem item = items[i];
-				ValidatorMetaData vmd = (ValidatorMetaData) item.getData();
-
-				// Should the validator be enabled? Read the user's preferences from last time,
-				// if they exist, and set from that. If they don't exist, use the Validator class'
-				if(pagePreferences.isEnabled(vmd)) {
-					vmd.setManualValidation(true);
-					vmd.setBuildValidation(true);
-				} else {
-					vmd.setManualValidation(false);
-					vmd.setBuildValidation(false);
-				}
-			}
-			validatorList.refresh();
-		}
-
-		/**
-		 * @param overridePreferences
-		 */
-		private void enableDependentControls(boolean overridePreferences) {
-			validatorsTable.setEnabled(overridePreferences);
-			enableAllButton.setEnabled(overridePreferences); // since help messsage isn't
-			disableAllButton.setEnabled(overridePreferences);
-		}
-
 		protected void updateHelp() throws InvocationTargetException {
 			// Whenever a widget is disabled, it cannot get focus.
 			// Since it can't have focus, its context-sensitive F1 help can't come up.
@@ -865,7 +674,7 @@
 			// than the page F1, so this fudge doesn't remove any context-sensitive help
 			// from the table widget.
 
-			/*if (autoButton.getEnabled()) {
+			if (autoButton.getEnabled()) {
 				// set the table's help back to what it was
 				PlatformUI.getWorkbench().getHelpSystem().setHelp(validatorList.getTable(), ContextIds.VALIDATION_PROPERTIES_PAGE);
 				PlatformUI.getWorkbench().getHelpSystem().setHelp(autoButton, ContextIds.VALIDATION_PROPERTIES_PAGE_AUTO_ENABLED);
@@ -897,20 +706,20 @@
 				validatorList.getTable().setFocus();
 				PlatformUI.getWorkbench().getHelpSystem().setHelp(validatorList.getTable(), ContextIds.VALIDATION_PROPERTIES_PAGE_DISABLED_BUILD_NOVALSELECTED);
 			}
-*/
+
 			// if the override button is disabled, show its "to enable" text.
 			if (overrideGlobalButton.getEnabled()) {
 				// Do NOT set the table's help back to what it was.
 				// Only if auto-validate is enabled should the page go back.
 				boolean doesProjectSupportBuildValidation = ValidatorManager.doesProjectSupportBuildValidation(getProject());
 				GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
-				//boolean isPrefAuto = gp.isAutoValidate();
-				//boolean isPrefManual = gp.isBuildValidate();
+				boolean isPrefAuto = gp.isAutoValidate();
+				boolean isPrefManual = gp.isBuildValidate();
 				if (doesProjectSupportBuildValidation) {
 					// Project supports build validation, so it doesn't matter what the preferences
 					// are
 					PlatformUI.getWorkbench().getHelpSystem().setHelp(overrideGlobalButton, ContextIds.VALIDATION_PROPERTIES_PAGE_OVERRIDE_ENABLED);
-				} /*else if (!doesProjectSupportBuildValidation && (isPrefAuto && isPrefManual)) {
+				} else if (!doesProjectSupportBuildValidation && (isPrefAuto && isPrefManual)) {
 					// Project doesn't support build validation, and the user prefers both auto and
 					// manual build validation
 					PlatformUI.getWorkbench().getHelpSystem().setHelp(overrideGlobalButton, ContextIds.VALIDATION_PROPERTIES_PAGE_OVERRIDE_ENABLED_CANNOT_HONOUR_BOTH);
@@ -926,7 +735,7 @@
 					// Project doesn't support build validation, but that doesn't matter because the
 					// user prefers no build validation.
 					PlatformUI.getWorkbench().getHelpSystem().setHelp(overrideGlobalButton, ContextIds.VALIDATION_PROPERTIES_PAGE_OVERRIDE_ENABLED);
-				}*/
+				}
 			} else {
 				validatorList.getTable().setFocus();
 				// Preference page doesn't allow projects to override
@@ -941,14 +750,31 @@
 			pagePreferences.setDoesProjectOverride(overrideGlobalButton.getSelection());
 
 			if (pagePreferences.doesProjectOverride()) {
-				pagePreferences.setEnabledManualValidators(getManualEnabledValidators());
-				pagePreferences.setEnabledBuildValidators(getBuildEnabledValidators());
+				// project override = user's preference + does the global preference allow the
+				// project to override
+
+				// If the manual build button is disabled because no validators are selected in the
+				// task list, don't overwrite the user's preference.
+				if (valWhenBuildButton.isEnabled()) {
+					pagePreferences.setBuildValidate(valWhenBuildButton.getSelection());
+				}
+
+				// If the auto build button is disabled because no validators are selected in the
+				// task list, or because auto-build is disabled, don't overwrite the user's
+				// preference.
+				if (autoButton.isEnabled()) {
+					pagePreferences.setAutoValidate(autoButton.getSelection());
+				}
+
+				pagePreferences.setMaximumNumberOfMessages(checkInteger());
+				pagePreferences.setEnabledValidators(ValidationConfiguration.convertToArray(validatorList.getCheckedElements()));
 			} else {
 				pagePreferences.resetToDefault(); // If the project can't or doesn't override,
 				// update its values to match the global
 				// preference values.
 			}
-			pagePreferences.store();
+
+			pagePreferences.passivate();
 		}
 
 		/**
@@ -969,14 +795,59 @@
 			// recalculate the "can build be enabled" status because the builder may have
 			// been added in the addBuilder() call above.
 			// Also recalculate the values that depend on the isBuilderConfigured value.
-			//isBuilderConfigured = ValidatorManager.doesProjectSupportBuildValidation(getProject());
+			isBuilderConfigured = ValidatorManager.doesProjectSupportBuildValidation(getProject());
 
 			// Persist the values.
 			storeValues();
 
-			if (pagePreferences.hasEnabledValidatorsChanged(oldVmd, false)) { 
-				// false means that the preference "allow" value hasn't changed
-				ValidatorManager.getManager().updateTaskList(getProject()); 
+			if (autoButton.getSelection()) {
+				int enabledIncrementalValidators = pagePreferences.numberOfEnabledIncrementalValidators();
+				int enabledValidators = pagePreferences.numberOfEnabledValidators();
+				if (enabledValidators != enabledIncrementalValidators) {
+					// Then some of the enabled validators are not incremental
+					int iIconType = org.eclipse.swt.SWT.ICON_INFORMATION;
+					Display display = Display.getCurrent();
+					Shell shell = (display == null) ? null : display.getActiveShell();
+					MessageBox messageBox = new MessageBox(shell, org.eclipse.swt.SWT.OK | iIconType);
+					messageBox.setText(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_MSSGBOX_TITLE_NONINC));
+
+					ValidatorMetaData[] vmds = pagePreferences.getEnabledValidators();
+					StringBuffer buffer = new StringBuffer(NEWLINE_AND_TAB);
+					for (int i = 0; i < vmds.length; i++) {
+						ValidatorMetaData vmd = vmds[i];
+
+						if (!vmd.isIncremental()) {
+							buffer.append(vmd.getValidatorDisplayName());
+							buffer.append(NEWLINE_AND_TAB);
+						}
+					}
+					messageBox.setMessage(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_UI_AUTO_ON_NONINC, new String[]{buffer.toString()}));
+					messageBox.open();
+				}
+			}
+
+			if (pagePreferences.hasEnabledValidatorsChanged(oldVmd, false) || ValidatorManager.getManager().isMessageLimitExceeded(getProject())) { // false
+				// means
+				// that
+				// the
+				// preference
+				// "allow"
+				// value
+				// hasn't
+				// changed
+				ValidatorManager.getManager().updateTaskList(getProject()); // Do not remove the
+				// exceeded message;
+				// only
+				// ValidationOperation
+				// should do that
+				// because it's about to
+				// run validation. If
+				// the limit is
+				// increased, messages
+				// may still be missing,
+				// so don't remove the
+				// "messages may be
+				// missing" message.
 			}
 
 			return true;
@@ -989,9 +860,9 @@
 		private void addBuilder() {
 			if (overrideGlobalButton.getSelection()) { // do not add the builder unless the user
 				// overrides the preferences
-				/*if (autoButton.getSelection() || valWhenBuildButton.getSelection()) {
+				if (autoButton.getSelection() || valWhenBuildButton.getSelection()) {
 					ValidatorManager.addProjectBuildValidationSupport(getProject());
-				}*/
+				}
 			}
 		}
 
@@ -1000,8 +871,12 @@
 		}
 
 		public void dispose() {
-			enableAllButton.dispose();
-			disableAllButton.dispose();
+			maxValProblemsField.dispose();
+			maxValProblemsFieldLabel.dispose();
+			selectAllButton.dispose();
+			deselectAllButton.dispose();
+			autoButton.dispose();
+			valWhenBuildButton.dispose();
 			validatorList.getTable().dispose();
 			messageLabel.dispose();
 			//			layout.dispose();
diff --git a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/plugin/ValidationUIPlugin.java b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/plugin/ValidationUIPlugin.java
index 2674b33..f4121fe 100644
--- a/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/plugin/ValidationUIPlugin.java
+++ b/plugins/org.eclipse.wst.validation.ui/validateui/org/eclipse/wst/validation/internal/ui/plugin/ValidationUIPlugin.java
@@ -8,24 +8,16 @@
  **************************************************************************************************/
 package org.eclipse.wst.validation.internal.ui.plugin;
 
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.logging.Level;
 
 import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin;
 import org.eclipse.wst.validation.internal.operations.ValidationOperation;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
 
@@ -35,7 +27,6 @@
 
 	public final static String VALIDATION_PROP_FILE_NAME = "validate_ui"; //$NON-NLS-1$
 	public static final String VALIDATION_PLUGIN_ID = "org.eclipse.wst.validation.ui"; //$NON-NLS-1$
-	public static final String[] ICON_DIRS = new String[]{"icons"};
 
 	public ValidationUIPlugin() {
 		super();
@@ -104,59 +95,4 @@
 		super.start(context);
 		//	org.eclipse.wst.validation.internal.operations.ValidatorManager.setResourceUtilClass(org.eclipse.wst.validation.internal.operations.ui.UIResourceUtil.class);
 	}
-	
-	/**
-	 * Get a .gif from the image registry.
-	 */
-	public Image getImage(String key) {
-		ImageRegistry imageRegistry = getImageRegistry();
-		Image image = imageRegistry.get(key);
-		if (image == null || image.isDisposed()) {
-			ImageDescriptor descriptor = getImageDescriptor(key);
-			if (descriptor != null) {
-				image = descriptor.createImage();
-				imageRegistry.put(key, image);
-			}
-		}
-		return image;
-	}
-	
-	/**
-	 * This gets a .gif from the icons folder.
-	 */
-	public ImageDescriptor getImageDescriptor(String key) {
-		ImageDescriptor imageDescriptor = null;
-		URL gifImageURL = getImageURL(key);
-		if (gifImageURL != null)
-			imageDescriptor = ImageDescriptor.createFromURL(gifImageURL);
-		return imageDescriptor;
-	}
-	
-	/**
-	 * @param key
-	 * @return
-	 */
-	private URL getImageURL(String key) {
-		return ValidationUIPlugin.getImageURL(key, getBundle());
-	}
-	
-	/**
-	 * This gets a .gif from the icons folder.
-	 */
-	public static URL getImageURL(String key, Bundle bundle) {
-		String gif = "/" + key + ".gif"; //$NON-NLS-1$ //$NON-NLS-2$
-		IPath path = null;
-		for (int i = 0; i < ICON_DIRS.length; i++) {
-			path = new Path(ICON_DIRS[i]).append(gif);
-			if (Platform.find(bundle,path) == null)
-				continue;
-			try {
-				return new URL( bundle.getEntry("/"), path.toString()); //$NON-NLS-1$ 
-			} catch (MalformedURLException exception) {
-				exception.printStackTrace();
-				continue;
-			}
-		}
-		return null;
-	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
index a6f18d8..112bf4f 100644
--- a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
@@ -2,19 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Validation Framework
 Bundle-SymbolicName: org.eclipse.wst.validation; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.validation.internal.plugin.ValidationPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.validation.internal;x-internal:=true,
- org.eclipse.wst.validation.internal.core;x-internal:=true,
- org.eclipse.wst.validation.internal.operations;x-internal:=true,
- org.eclipse.wst.validation.internal.plugin;x-internal:=true,
- org.eclipse.wst.validation.internal.provisional;x-internal:=true,
- org.eclipse.wst.validation.internal.provisional.core;x-internal:=true
+Export-Package: .,
+ org.eclipse.wst.validation.internal,
+ org.eclipse.wst.validation.internal.core,
+ org.eclipse.wst.validation.internal.operations,
+ org.eclipse.wst.validation.internal.plugin,
+ org.eclipse.wst.validation.internal.provisional,
+ org.eclipse.wst.validation.internal.provisional.core
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.wst.common.frameworks,
  org.eclipse.jem.util,
- org.eclipse.core.runtime,
- org.eclipse.wst.common.project.facet.core
+ org.eclipse.core.runtime
 Eclipse-AutoStart: true
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationConstants.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationConstants.java
index 1510ce3..00d4b36 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationConstants.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationConstants.java
@@ -22,17 +22,16 @@
  * Only the validation framework should use this interface.
  */
 public interface ConfigurationConstants {
-	public static final String DISABLE_ALL_VALIDATION_SETTING = "disableAllValidation"; //$NON-NLS-1$ // boolean
-	///* package */static final String AUTO_SETTING = "autoValidate"; //$NON-NLS-1$ // boolean
-	///* package */static final String BUILD_SETTING = "runWhenBuild"; //$NON-NLS-1$ // boolean
+	/* package */static final String ASYNC_SETTING = "runAsync"; //$NON-NLS-1$ // boolean (Use the global preferences or override)
+	/* package */static final String AUTO_SETTING = "autoValidate"; //$NON-NLS-1$ // boolean
+	/* package */static final String BUILD_SETTING = "runWhenBuild"; //$NON-NLS-1$ // boolean
 
 	// Defaults for the preference and project values
 	
 	/* package */static String CURRENT_VERSION = (String) ValidationPlugin.getPlugin().getBundle().getHeaders().get(org.osgi.framework.Constants.BUNDLE_VERSION); //$NON-NLS-1$ // this is a constant, so it should be intern
 	/* package */static final boolean DEFAULT_ASYNC = true;
-	/* package */static final boolean DEFAULT_DISABLE_VALIDATION_SETTING = false;
-	///* package */static final boolean DEFAULT_AUTO_SETTING = true;
-	///* package */static final boolean DEFAULT_BUILD_SETTING = true;
+	/* package */static final boolean DEFAULT_AUTO_SETTING = true;
+	/* package */static final boolean DEFAULT_BUILD_SETTING = true;
 	/* package */static ValidatorMetaData[] DEFAULT_ENABLED_VALIDATORS = ValidationRegistryReader.getReader().getValidatorMetaDataArrayEnabledByDefault(); //$NON-NLS-1$ // store a copy here so that we don't modify the original and don't create a copy every time we need this value
 	/* package */static final int DEFAULT_MAXNUMMESSAGES = 50;
 	public static final int DEPTH_INFINITE = IResource.DEPTH_INFINITE;
@@ -44,8 +43,7 @@
 	// Even though the plugin.xml values are not used to create new Preference or Project markers,
 	// maintaining one local name ensures that there's no confusion writing the migration code.
 	// These are the QualifiedNames used to persist the user's settings.
-	/* package */static final String ENABLED_MANUAL_VALIDATORS = "enabledManualValidatorList"; //$NON-NLS-1$ // String
-	/* package */static final String ENABLED_BUILD_VALIDATORS = "enabledBuildValidatorList"; //$NON-NLS-1$ // String
+	/* package */static final String ENABLED_VALIDATORS = "enabledValidatorList"; //$NON-NLS-1$ // String
 	public static final String J2EE_PLUGIN_ID = "org.eclipse.jst.j2ee"; //$NON-NLS-1$ // For 4.03, this is the plugin id that the validation constants were declared in.
 	/* package */static final String MAXNUMMESSAGES = "maxNumMessages"; //$NON-NLS-1$ // integer
 	public static final String PLUGIN_ID = ValidationPlugin.PLUGIN_ID;
@@ -59,8 +57,6 @@
 	/* package */static final String PRJ_OVERRIDEGLOBAL = "overrideGlobalPreferences"; //$NON-NLS-1$ // boolean (Use the global preferences or override)
 
 	/* package */static final QualifiedName USER_PREFERENCE = new QualifiedName(PLUGIN_ID, "ValidationConfiguration"); //$NON-NLS-1$ // ValidationConfiguration for the IResource
-	/* package */static final QualifiedName USER_MANUAL_PREFERENCE = new QualifiedName(PLUGIN_ID, "ValidationManualConfiguration"); //$NON-NLS-1$ // ValidationConfiguration for the IResource
-	/* package */static final QualifiedName USER_BUILD_PREFERENCE = new QualifiedName(PLUGIN_ID, "ValidationBuildConfiguration"); //$NON-NLS-1$ // ValidationConfiguration for the IResource
 
 	// Validation message marker constants
 	/* package */static final String VALIDATION_MARKER = PLUGIN_ID + ".problemmarker"; //$NON-NLS-1$ // The extension which is used to add validation markers to the task list
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/GlobalConfiguration.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/GlobalConfiguration.java
index a1fef7d..cf9829f 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/GlobalConfiguration.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/GlobalConfiguration.java
@@ -64,8 +64,10 @@
 	}
 
 	public void resetToDefault() {
-		setDisableAllValidation(getDisableValidationDefault());
+		setAutoValidate(getAutoValidateDefault());
 		setEnabledValidators(getEnabledValidatorsDefault());
+		setMaximumNumberOfMessages(getMaximumNumberOfMessagesDefault());
+		setBuildValidate(getBuildValidateDefault());
 		setCanProjectsOverride(getCanProjectsOverrideDefault());
 	}
 
@@ -97,7 +99,7 @@
 		}
 	}
 
-	protected void load(IMarker[] marker) throws InvocationTargetException {
+	protected void load(IMarker[] marker) {
 		// The 5.0 preferences were stored in an IMarker, and the current.preferences are stored in
 		// PersistentProperties on the IResource.
 		// A 5.0 root can have no marker values if the preference page, properties page, and
@@ -113,20 +115,17 @@
 			IMarker rootMarker = marker[0]; // getMarker() has already checked that there's a marker
 			// in the array
 			ValidatorMetaData[] enabledValidators = null;
-//			String enabledValidatorsString = (String) getValue(rootMarker, ConfigurationConstants.ENABLED_VALIDATORS);
-//			if (enabledValidatorsString == null) {
-//				enabledValidators = ConfigurationConstants.DEFAULT_ENABLED_VALIDATORS;
-//			} else {
-//				enabledValidators = getStringAsEnabledElementsArray(enabledValidatorsString);
-//			}
-//
-//			setEnabledValidators(enabledValidators);
-			String enabledManualValidators = (String) getValue(rootMarker, ConfigurationConstants.ENABLED_MANUAL_VALIDATORS);
-			setEnabledManualValidators(getStringAsEnabledElementsArray(enabledManualValidators));
-			String enabledBuildValidators = (String) getValue(rootMarker, ConfigurationConstants.ENABLED_BUILD_VALIDATORS);
-			setEnabledManualValidators(getStringAsEnabledElementsArray(enabledBuildValidators));
-			if (enabledManualValidators.equals(null) || enabledBuildValidators.equals(null)) 
+			String enabledValidatorsString = (String) getValue(rootMarker, ConfigurationConstants.ENABLED_VALIDATORS);
+			if (enabledValidatorsString == null) {
 				enabledValidators = ConfigurationConstants.DEFAULT_ENABLED_VALIDATORS;
+			} else {
+				enabledValidators = getStringAsEnabledElementsArray(enabledValidatorsString);
+			}
+
+			setEnabledValidators(enabledValidators);
+			setAutoValidate(getValue(rootMarker, ConfigurationConstants.AUTO_SETTING, ConfigurationConstants.DEFAULT_AUTO_SETTING));
+			setBuildValidate(getValue(rootMarker, ConfigurationConstants.BUILD_SETTING, ConfigurationConstants.DEFAULT_BUILD_SETTING));
+			setMaximumNumberOfMessages(getValue(rootMarker, ConfigurationConstants.MAXNUMMESSAGES, ConfigurationConstants.DEFAULT_MAXNUMMESSAGES));
 			setCanProjectsOverride(getValue(rootMarker, ConfigurationConstants.PREF_PROJECTS_CAN_OVERRIDE, PREF_PROJECTS_CAN_OVERRIDE_DEFAULT));
 
 			root.getWorkspace().deleteMarkers(marker);
@@ -166,11 +165,10 @@
 			// If it's null, then super.deserialize has already called resetToDefault to initialize
 			// this instance.
 			int canOverrideIndex = storedConfiguration.indexOf(ConfigurationConstants.PREF_PROJECTS_CAN_OVERRIDE);
-			int disableAllValidationIndex = storedConfiguration.indexOf(ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING);
-			if (disableAllValidationIndex != -1) {
-				String canOverride = storedConfiguration.substring(0 + ConfigurationConstants.PREF_PROJECTS_CAN_OVERRIDE.length(), disableAllValidationIndex);
-				setCanProjectsOverride(Boolean.valueOf(canOverride).booleanValue());
-			}
+			int autoIndex = storedConfiguration.indexOf(ConfigurationConstants.AUTO_SETTING);
+
+			String canOverride = storedConfiguration.substring(canOverrideIndex + ConfigurationConstants.PREF_PROJECTS_CAN_OVERRIDE.length(), autoIndex);
+			setCanProjectsOverride(Boolean.valueOf(canOverride).booleanValue());
 		}
 	}
 
@@ -184,6 +182,4 @@
 		buffer.append(super.serialize());
 		return buffer.toString();
 	}
-
-	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ProjectConfiguration.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ProjectConfiguration.java
index 790c367..0e7d711 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ProjectConfiguration.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ProjectConfiguration.java
@@ -110,21 +110,6 @@
 		}
 		return super.getEnabledValidators();
 	}
-	
-	public ValidatorMetaData[] getManualEnabledValidators() throws InvocationTargetException  {
-		if (useGlobalPreference()) {
-			return extractProjectValidators(ConfigurationManager.getManager().getGlobalConfiguration().getManualEnabledValidators(), getResource());
-		}
-		return super.getManualEnabledValidators();
-	}
-	
-	public ValidatorMetaData[] getBuildEnabledValidators() throws InvocationTargetException {
-		if (useGlobalPreference()) {
-			return extractProjectValidators(ConfigurationManager.getManager().getGlobalConfiguration().getBuildEnabledValidators(), getResource());
-		}
-		return super.getBuildEnabledValidators();
-	}
-	
 
 	/**
 	 * @see org.eclipse.wst.validation.internal.operations.internal.preference.ValidationConfiguration#getDisabledValidators()
@@ -263,23 +248,56 @@
 	/**
 	 * If the preferences should be used then the preference settings are returned; otherwise return
 	 * the project settings.
-	 * @deprecated - message limit no longer used
 	 */
 	public int getMaximumNumberOfMessages() throws InvocationTargetException {
-		/*if (useGlobalPreference()) {
+		if (useGlobalPreference()) {
 			return ConfigurationManager.getManager().getGlobalConfiguration().getMaximumNumberOfMessages();
 		}
-		return super.getMaximumNumberOfMessages();*/
-		return -1;
+		return super.getMaximumNumberOfMessages();
+	}
+
+	/**
+	 * If the preferences should be used then the preference settings are returned; otherwise return
+	 * the project settings.
+	 */
+	public boolean isAutoValidate() throws InvocationTargetException {
+		if (useGlobalPreference()) {
+			return ConfigurationManager.getManager().getGlobalConfiguration().isAutoValidate();
+		}
+		return super.isAutoValidate();
+	}
+
+	/**
+	 * If the preferences should be used then the preference settings are returned; otherwise return
+	 * the project settings.
+	 */
+	public boolean isBuildValidate() throws InvocationTargetException {
+		if (useGlobalPreference()) {
+			return ConfigurationManager.getManager().getGlobalConfiguration().isBuildValidate();
+		}
+		return super.isBuildValidate();
+	}
+
+	/**
+	 * If the preferences should be used then the preference settings are returned; otherwise return
+	 * the project settings.
+	 */
+	public boolean runAsync() throws InvocationTargetException {
+		if (useGlobalPreference()) {
+			return ConfigurationManager.getManager().getGlobalConfiguration().runAsync();
+		}
+		return super.runAsync();
 	}
 
 	public void resetToDefault() throws InvocationTargetException {
 		// The default values of the project is whatever the preference values are
 		GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
 
-		setEnabledManualValidators(gp.getManualEnabledValidators());
-		setEnabledBuildValidators(gp.getBuildEnabledValidators());
-		
+		setAutoValidate(gp.isAutoValidate());
+		setEnabledValidators(gp.getEnabledValidators());
+		setMaximumNumberOfMessages(gp.getMaximumNumberOfMessages());
+		setBuildValidate(gp.isBuildValidate());
+
 		// except for this field, which is unique to the project preferences
 		setDoesProjectOverride(getDoesProjectOverrideDefault());
 	}
@@ -287,8 +305,14 @@
 	public void resetToDefaultForProjectDescriptionChange() throws InvocationTargetException {
 		// The default values of the project is whatever the preference values are
 		GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
-		setEnabledManualValidators(gp.getManualEnabledValidators());
-		setEnabledBuildValidators(gp.getBuildEnabledValidators());
+
+		setAutoValidate(gp.isAutoValidate());
+		setEnabledValidators(gp.getEnabledValidators());
+		setMaximumNumberOfMessages(gp.getMaximumNumberOfMessages());
+		setBuildValidate(gp.isBuildValidate());
+
+		// except for this field, which is unique to the project preferences
+		//setDoesProjectOverride(getDoesProjectOverrideDefault());
 	}
 
 	/**
@@ -360,29 +384,15 @@
 			// marker in the array
 			GlobalConfiguration gp = ConfigurationManager.getManager().getGlobalConfiguration();
 
-//			String enabledValStr = (String) getValue(prjMarker, ConfigurationConstants.ENABLED_VALIDATORS);
-//			ValidatorMetaData[] enabledVal = null;
-//			if (enabledValStr == null) {
-//				enabledVal = gp.getEnabledValidators();
-//			} else {
-//				enabledVal = getStringAsEnabledElementsArray(enabledValStr);
-//			}
-//			setEnabledValidators(enabledVal);
-			
-			ValidatorMetaData[] enabledManaualVal = null;
-			ValidatorMetaData[] enabledBuildVal = null;
-			String enabledManualValStr = (String) getValue(prjMarker, ConfigurationConstants.ENABLED_MANUAL_VALIDATORS);
-			String enabledBuildValStr = (String) getValue(prjMarker, ConfigurationConstants.ENABLED_BUILD_VALIDATORS);
+			String enabledValStr = (String) getValue(prjMarker, ConfigurationConstants.ENABLED_VALIDATORS);
 			ValidatorMetaData[] enabledVal = null;
-			if (enabledManualValStr.equals(null) || enabledBuildValStr.equals(null)) {
+			if (enabledValStr == null) {
 				enabledVal = gp.getEnabledValidators();
 			} else {
-				enabledManaualVal = getStringAsEnabledElementsArray(enabledManualValStr);
-				setEnabledManualValidators(enabledManaualVal);
-				enabledBuildVal = getStringAsEnabledElementsArray(enabledManualValStr);
-				setEnabledBuildValidators(enabledBuildVal);
+				enabledVal = getStringAsEnabledElementsArray(enabledValStr);
 			}
-			
+			setEnabledValidators(enabledVal);
+
 			String version = loadVersion(marker); // In 4.03, every project had its own validators &
 			// auto-validate settings.
 			Boolean boolVal = (Boolean) getValue(prjMarker, ConfigurationConstants.PRJ_OVERRIDEGLOBAL);
@@ -398,6 +408,28 @@
 			}
 			boolean override = doesProjectOverride();
 
+
+			boolVal = (Boolean) getValue(prjMarker, ConfigurationConstants.AUTO_SETTING);
+			if ((boolVal == null) || (!override)) {
+				setAutoValidate(gp.isAutoValidate());
+			} else {
+				setAutoValidate(boolVal.booleanValue());
+			}
+
+			boolVal = (Boolean) getValue(prjMarker, ConfigurationConstants.BUILD_SETTING);
+			if ((boolVal == null) || (!override)) {
+				setBuildValidate(gp.isBuildValidate());
+			} else {
+				setBuildValidate(boolVal.booleanValue());
+			}
+
+			Integer intVal = (Integer) getValue(prjMarker, ConfigurationConstants.MAXNUMMESSAGES);
+			if ((intVal == null) || (!override)) {
+				setMaximumNumberOfMessages(gp.getMaximumNumberOfMessages());
+			} else {
+				setMaximumNumberOfMessages(intVal.intValue());
+			}
+
 			getResource().getWorkspace().deleteMarkers(marker);
 		} catch (CoreException exc) {
 			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
@@ -486,19 +518,18 @@
 			resetToDefault();
 		} else if (storedConfiguration != null) {
 			int prjOverrideIndex = storedConfiguration.indexOf(ConfigurationConstants.PRJ_OVERRIDEGLOBAL);
-			int disableAllValidationIndex = storedConfiguration.indexOf(ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING);
-			int versionIndex = storedConfiguration.indexOf(ConfigurationConstants.VERSION);
-			if (disableAllValidationIndex != -1) {
-				String disableAllValidation = storedConfiguration.substring(disableAllValidationIndex + ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING.length(), versionIndex);
-				setDisableAllValidation(Boolean.valueOf(disableAllValidation).booleanValue());
+			int autoIndex = storedConfiguration.indexOf(ConfigurationConstants.AUTO_SETTING);
+
+			String prjOverride = null;
+			if (autoIndex < 0) {
+				// project doesn't override the global
+				prjOverride = storedConfiguration.substring(prjOverrideIndex + ConfigurationConstants.PRJ_OVERRIDEGLOBAL.length());
 			} else {
-				setDisableAllValidation(false);;
+				// project overrides the global, so retrieve the values
+				super.deserialize(storedConfiguration);
+				prjOverride = storedConfiguration.substring(prjOverrideIndex + ConfigurationConstants.PRJ_OVERRIDEGLOBAL.length(), autoIndex);
 			}
-			// project doesn't override the global
-			if (disableAllValidationIndex != -1) {
-				String prjOverride = storedConfiguration.substring(prjOverrideIndex + ConfigurationConstants.PRJ_OVERRIDEGLOBAL.length(), disableAllValidationIndex);
-				setDoesProjectOverride(Boolean.valueOf(prjOverride).booleanValue());
-			}
+			setDoesProjectOverride(Boolean.valueOf(prjOverride).booleanValue());
 		}
 	}
 
@@ -581,16 +612,4 @@
 		return super.getIncrementalValidators();
 	}
 
-	public int numberOfManualValidators() throws InvocationTargetException {
-		if (useGlobalPreference()) {
-			return ConfigurationManager.getManager().getGlobalConfiguration().numberOfManualEnabledValidators();
-		}
-		return super.numberOfManualEnabledValidators();
-	}
-	public boolean isDisableAllValidation() throws InvocationTargetException{
-		if (useGlobalPreference()) {
-			return ConfigurationManager.getManager().getGlobalConfiguration().isDisableAllValidation();
-		}
-		return super.isDisableAllValidation();
-	}	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/RegistryConstants.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/RegistryConstants.java
index ee6e106..aba5d1c 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/RegistryConstants.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/RegistryConstants.java
@@ -68,6 +68,4 @@
 	static final String MARKER_ID = "markerId"; //$NON-NLS-1$
 	static final String MARKER_ID_VALUE = "markerIdValue"; //$NON-NLS-1$
 	static final boolean DEP_VAL_VALUE_DEFAULT = false;
-	static final String FACET = "facet"; //$NON-NLS-1$
-	static final String FACET_ID ="facetId"; //$NON-NLS-1$
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
index 8a43d7c..a9b7847 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
@@ -11,13 +11,10 @@
 package org.eclipse.wst.validation.internal;
 
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.StringTokenizer;
@@ -41,14 +38,15 @@
  */
 public abstract class ValidationConfiguration {
 	private IResource _resource = null;
-	private boolean disableAllValidation = getDisableAllValidation();
+	private boolean _autoValidate = getAutoValidateDefault();
+	private boolean _buildValidate = getBuildValidateDefault();
+	private int _maxMessages = getMaximumNumberOfMessagesDefault();
 	private String _version = null;
 	private Map _validators = null; // Map of all validators (ValidatorMetaData) configured on the
 	// project or installed globally. The value is a Boolean; TRUE
 	// means that the VMD is enabled, FALSE means that the VMD is
 	// disabled.
-	private static HashMap manualValidators = null;
-	private static HashMap buildValidators = null;
+	private boolean _runAsync = getAsyncDefault();
 
 	public static String getEnabledElementsAsString(Set elements) {
 		if (elements == null) {
@@ -64,10 +62,6 @@
 		return buffer.toString();
 	}
 
-	private boolean getDisableAllValidation() {
-		return false;
-	}
-
 	public static String getEnabledElementsAsString(Object[] elements) {
 		StringBuffer buffer = new StringBuffer();
 		for (int i = 0; i < elements.length; i++) {
@@ -141,19 +135,35 @@
 	private void setResource(IResource resource) {
 		_resource = resource;
 	}
-	
-	public boolean isDisableAllValidation() throws InvocationTargetException {
-		return disableAllValidation;
+
+	public boolean isAutoValidate() throws InvocationTargetException {
+		return _autoValidate;
 	}
 
-	public void setDisableAllValidation(boolean allValidation) {
-		disableAllValidation = allValidation;
+	public void setAutoValidate(boolean auto) {
+		_autoValidate = auto;
+	}
+
+	public boolean isBuildValidate() throws InvocationTargetException {
+		return _buildValidate;
+	}
+
+	public void setBuildValidate(boolean build) {
+		_buildValidate = build;
+	}
+
+	public boolean runAsync() throws InvocationTargetException {
+		return _runAsync;
+	}
+
+	public void setAsync(boolean doRunInBackgroundThread) throws InvocationTargetException {
+		_runAsync = doRunInBackgroundThread;
 	}
 
 	public ValidatorMetaData[] getEnabledValidators() throws InvocationTargetException {
 		return getValidators(true);
 	}
-	
+
 	/**
 	 * If "incremental" is true, return the enabled incremental validators. If "incremental" is
 	 * false, return the enabled non-incremental validators.
@@ -167,7 +177,7 @@
 			Boolean bvalue = (Boolean) getValidatorMetaData().get(vmd);
 			if (bvalue.booleanValue() == true) {
 				// If the validator is enabled
-				if ((vmd.isIncremental() && incremental && vmd.isBuildValidation()) || (!vmd.isIncremental() && !incremental)) {
+				if ((vmd.isIncremental() && incremental) || (!vmd.isIncremental() && !incremental)) {
 					temp[count++] = vmd;
 				}
 			}
@@ -197,8 +207,7 @@
 				// If the validator is enabled
 				if (vmd == null)
 					continue;
-				
-				if (( vmd.isBuildValidation() && vmd.isFullBuild() && fullBuild) || (!vmd.isFullBuild() && !fullBuild)) {
+				if ((vmd.isFullBuild() && fullBuild) || (!vmd.isFullBuild() && !fullBuild)) {
 					if (!onlyReferenced || vmd.isDependentValidator())
 						temp[count++] = vmd;
 				}
@@ -227,37 +236,10 @@
 			all.put(vmds[i], Boolean.TRUE);
 		}
 	}
-	
-	public void setEnabledManualValidators(ValidatorMetaData[] vmds) throws InvocationTargetException {
-		List manualEnabledVMDList = Arrays.asList(vmds);
-		List allValidators = Arrays.asList(getValidators());
-		for(int i = 0; i < allValidators.size(); i++) {
-			ValidatorMetaData data = (ValidatorMetaData) allValidators.get(i);
-			if(manualEnabledVMDList.contains(data))
-				getManualEnabledValidatorsMap().put(data, new Boolean(true));
-			else
-				getManualEnabledValidatorsMap().put(data, new Boolean(false));
-			
-		}
-	}
-	
-	public void setEnabledBuildValidators(ValidatorMetaData[] vmds) throws InvocationTargetException {
-		List buildEnabledVMDList = Arrays.asList(vmds);
-		List allValidators = Arrays.asList(getValidators());
-		for(int i = 0; i < allValidators.size(); i++) {
-			ValidatorMetaData data = (ValidatorMetaData) allValidators.get(i);
-			if(buildEnabledVMDList.contains(data))
-				getBuildEnabledValidatorsMap().put(data, new Boolean(true));
-			else
-				getBuildEnabledValidatorsMap().put(data, new Boolean(false));
-			
-		}
-	}
 
 	private Map getValidatorMetaData() {
 		return _validators;
 	}
-	
 
 	public ValidatorMetaData[] getDisabledValidators() throws InvocationTargetException {
 		return getValidators(false);
@@ -283,54 +265,6 @@
 		System.arraycopy(temp, 0, result, 0, count);
 		return result;
 	}
-	
-	public ValidatorMetaData[] getManualEnabledValidators() throws InvocationTargetException {
-		HashMap map = getManualEnabledValidatorsMap();
-		Set set = getManualEnabledValidatorsMap().keySet();
-		if (!set.isEmpty()) {
-			Iterator it = set.iterator();
-			List enabledManualValidators = new ArrayList();
-			while (it.hasNext()) {
-				ValidatorMetaData data = (ValidatorMetaData) it.next();
-				Boolean obj = (Boolean) map.get(data);
-				if (obj != null && obj.booleanValue() == true) {
-					enabledManualValidators.add(data);
-				}
-			}
-			return (ValidatorMetaData[]) enabledManualValidators.toArray(new ValidatorMetaData[enabledManualValidators.size()]);
-		}
-		return getEnabledValidators();
-	}	
-	
-	public  ValidatorMetaData[] getBuildEnabledValidators() throws InvocationTargetException {
-		HashMap map = getBuildEnabledValidatorsMap();
-		Set set = getBuildEnabledValidatorsMap().keySet();
-		Iterator it = set.iterator();
-		List enabledBuildValidators = new ArrayList();
-		if (!set.isEmpty()) {
-			while (it.hasNext()) {
-				ValidatorMetaData data = (ValidatorMetaData) it.next();
-				Boolean obj = (Boolean) map.get(data);
-				if (obj != null && obj.booleanValue() == true) {
-					enabledBuildValidators.add(data);
-				}
-			}
-			return (ValidatorMetaData[]) enabledBuildValidators.toArray(new ValidatorMetaData[enabledBuildValidators.size()]);
-		}
-		return getEnabledValidators();
-	}
-	
-	public  HashMap getBuildEnabledValidatorsMap() {
-		if(buildValidators == null)
-			buildValidators = new HashMap();
-		return buildValidators;
-	}	
-	
-	public  HashMap getManualEnabledValidatorsMap() {
-		if(manualValidators == null)
-			manualValidators = new HashMap();
-		return manualValidators;
-	}	
 
 	/**
 	 * Return all incremental validators for this preference; either every installed validator
@@ -363,7 +297,7 @@
 	public ValidatorMetaData[] getValidators() throws InvocationTargetException {
 		return convertToArray(_validators.keySet());
 	}
-	
+
 	public void setValidators(ValidatorMetaData[] vmds) {
 		_validators.clear();
 		for (int i = 0; i < vmds.length; i++) {
@@ -372,8 +306,6 @@
 			_validators.put(vmds[i], (vmds[i].isEnabledByDefault() ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
-	
-	
 
 	/**
 	 * Returns the number of configured validators on the given project or installed validators in
@@ -416,13 +348,13 @@
 		return getDisabledValidators().length;
 	}
 
-	/*public int getMaximumNumberOfMessages() throws InvocationTargetException {
+	public int getMaximumNumberOfMessages() throws InvocationTargetException {
 		return _maxMessages;
 	}
 
 	public void setMaximumNumberOfMessages(int max) {
 		_maxMessages = max;
-	}*/
+	}
 
 	/**
 	 * The value returned from this method is guaranteed to be non-null.
@@ -495,6 +427,7 @@
 			if (getResource() == null) {
 				throw new InvocationTargetException(null, ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_NULLSAVE));
 			}
+
 			getResource().setSessionProperty(ConfigurationConstants.USER_PREFERENCE, this);
 		} catch (CoreException exc) {
 			throw new InvocationTargetException(exc, ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_SAVE, new String[]{getResource().getName()}));
@@ -559,10 +492,9 @@
 		if (getResource() == null) {
 			throw new InvocationTargetException(null, ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_NULLSAVE));
 		}
+
 		try {
 			getResource().setPersistentProperty(ConfigurationConstants.USER_PREFERENCE, serialize());
-			getResource().setPersistentProperty(ConfigurationConstants.USER_MANUAL_PREFERENCE, serializeManualSetting());
-			getResource().setPersistentProperty(ConfigurationConstants.USER_BUILD_PREFERENCE, serializeBuildSetting());
 		} catch (CoreException exc) {
 			throw new InvocationTargetException(exc, ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_SAVE, new String[]{getResource().getName()}));
 		}
@@ -715,47 +647,19 @@
 		try {
 			String storedConfiguration = resource.getPersistentProperty(ConfigurationConstants.USER_PREFERENCE);
 			deserialize(storedConfiguration);
-			String storedManualConfiguration = resource.getPersistentProperty(ConfigurationConstants.USER_MANUAL_PREFERENCE);
-			deserializeManual(storedManualConfiguration);
-			String storedBuildConfiguration = resource.getPersistentProperty(ConfigurationConstants.USER_BUILD_PREFERENCE);
-			deserializeBuild(storedBuildConfiguration);
 		} catch (CoreException exc) {
 			throw new InvocationTargetException(exc, ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_EXC_RETRIEVE, new String[]{getResource().getName()}));
 		}
 	}
 
-	private void deserializeBuild(String storedConfiguration) throws InvocationTargetException {
-		if (storedConfiguration == null || storedConfiguration.length() == 0) {
-			// Assume that the configuration has never been set (new workspace).
-			resetToDefault();
-			return;
-		}
-		int buildValidationIndex = storedConfiguration.indexOf(ConfigurationConstants.ENABLED_BUILD_VALIDATORS);
-
-		String manualValidation = storedConfiguration.substring(buildValidationIndex + ConfigurationConstants.ENABLED_BUILD_VALIDATORS.length(),storedConfiguration.length());
-		setEnabledBuildValidators(getStringAsEnabledElementsArray(manualValidation));
-	}
-
-	private void deserializeManual(String storedConfiguration) throws InvocationTargetException {
-		if (storedConfiguration == null || storedConfiguration.length() == 0) {
-			// Assume that the configuration has never been set (new workspace).
-			resetToDefault();
-			return;
-		}
-		int manualValidationIndex = storedConfiguration.indexOf(ConfigurationConstants.ENABLED_MANUAL_VALIDATORS);
-
-		String manualValidation = storedConfiguration.substring(manualValidationIndex + ConfigurationConstants.ENABLED_MANUAL_VALIDATORS.length(),storedConfiguration.length());
-		setEnabledManualValidators(getStringAsEnabledElementsArray(manualValidation));
-	}
-
 	protected void copyTo(ValidationConfiguration up) throws InvocationTargetException {
 		up.setVersion(getVersion());
 		up.setResource(getResource());
 		up.setValidators(getValidators());
-		up.setDisableAllValidation(isDisableAllValidation());
+		up.setAutoValidate(isAutoValidate());
+		up.setBuildValidate(isBuildValidate());
 		up.setEnabledValidators(getEnabledValidators());
-		up.setEnabledManualValidators(getManualEnabledValidators());
-		up.setEnabledBuildValidators(getBuildEnabledValidators());
+		up.setMaximumNumberOfMessages(getMaximumNumberOfMessages());
 	}
 
 	/**
@@ -790,26 +694,20 @@
 
 	protected String serialize() throws InvocationTargetException {
 		StringBuffer buffer = new StringBuffer();
-		buffer.append(ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING);
-		buffer.append(String.valueOf(isDisableAllValidation()));
+		buffer.append(ConfigurationConstants.AUTO_SETTING);
+		buffer.append(String.valueOf(isAutoValidate()));
+		buffer.append(ConfigurationConstants.BUILD_SETTING);
+		buffer.append(String.valueOf(isBuildValidate()));
+		buffer.append(ConfigurationConstants.MAXNUMMESSAGES);
+		buffer.append(String.valueOf(getMaximumNumberOfMessages()));
+		buffer.append(ConfigurationConstants.ASYNC_SETTING);
+		buffer.append(String.valueOf(runAsync()));
+		buffer.append(ConfigurationConstants.ENABLED_VALIDATORS);
+		buffer.append(getEnabledElementsAsString(getEnabledValidators()));
 		buffer.append(ConfigurationConstants.VERSION);
 		buffer.append(getVersion());
 		return buffer.toString();
 	}
-	
-	protected String serializeManualSetting() throws InvocationTargetException {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(ConfigurationConstants.ENABLED_MANUAL_VALIDATORS);
-		buffer.append(getEnabledElementsAsString(getManualEnabledValidators()));
-		return buffer.toString();
-	}
-	
-	protected String serializeBuildSetting() throws InvocationTargetException {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(ConfigurationConstants.ENABLED_BUILD_VALIDATORS);
-		buffer.append(getEnabledElementsAsString(getBuildEnabledValidators()));
-		return buffer.toString();
-	}
 
 	/**
 	 * Deserialize everything except the version number; the version is deserialized first, in the
@@ -821,19 +719,33 @@
 			resetToDefault();
 			return;
 		}
-		int disableAllValidationIndex = storedConfiguration.indexOf(ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING);
+
+		int autoIndex = storedConfiguration.indexOf(ConfigurationConstants.AUTO_SETTING);
+		int buildIndex = storedConfiguration.indexOf(ConfigurationConstants.BUILD_SETTING);
+		int maxIndex = storedConfiguration.indexOf(ConfigurationConstants.MAXNUMMESSAGES);
+		int asyncIndex = storedConfiguration.indexOf(ConfigurationConstants.ASYNC_SETTING);
+		int enabledIndex = storedConfiguration.indexOf(ConfigurationConstants.ENABLED_VALIDATORS);
 		int versionIndex = storedConfiguration.indexOf(ConfigurationConstants.VERSION);
-		if(disableAllValidationIndex != -1) {
-				String disableAllValidation = storedConfiguration.substring(disableAllValidationIndex + ConfigurationConstants.DISABLE_ALL_VALIDATION_SETTING.length(),versionIndex);
-				setDisableAllValidation(Boolean.valueOf(disableAllValidation).booleanValue());
-		} else {
-				setDisableAllValidation(false);;
-		}
-		
+
+		String auto = storedConfiguration.substring(autoIndex + ConfigurationConstants.AUTO_SETTING.length(), buildIndex);
+		String build = storedConfiguration.substring(buildIndex + ConfigurationConstants.BUILD_SETTING.length(), maxIndex);
+		String max = storedConfiguration.substring(maxIndex + ConfigurationConstants.MAXNUMMESSAGES.length(), asyncIndex);
+		String async = storedConfiguration.substring(asyncIndex + ConfigurationConstants.ASYNC_SETTING.length(), enabledIndex);
+		String enabled = storedConfiguration.substring(enabledIndex + ConfigurationConstants.ENABLED_VALIDATORS.length(), versionIndex);
+
+		setAutoValidate(Boolean.valueOf(auto).booleanValue());
+		setBuildValidate(Boolean.valueOf(build).booleanValue());
+		setMaximumNumberOfMessages(Integer.valueOf(max).intValue());
+		setAsync(Boolean.valueOf(async).booleanValue());
+		setEnabledValidators(getStringAsEnabledElementsArray(enabled));
 	}
 
-	public static boolean getDisableValidationDefault() {
-		return ConfigurationConstants.DEFAULT_DISABLE_VALIDATION_SETTING;
+	public static boolean getAutoValidateDefault() {
+		return ConfigurationConstants.DEFAULT_AUTO_SETTING;
+	}
+
+	public static boolean getBuildValidateDefault() {
+		return ConfigurationConstants.DEFAULT_BUILD_SETTING;
 	}
 
 	public static ValidatorMetaData[] getEnabledValidatorsDefault() {
@@ -851,28 +763,7 @@
 		return ConfigurationConstants.CURRENT_VERSION;
 	}
 
-	
-	public boolean isManualEnabled(ValidatorMetaData vmd) {
-		if (vmd == null) {
-			return false;
-		}
-		Boolean value = (Boolean) getManualEnabledValidatorsMap().get(vmd);
-		if (value == null) 
-			return false;
-		return value.booleanValue();
+	public static boolean getAsyncDefault() {
+		return ConfigurationConstants.DEFAULT_ASYNC;
 	}
-
-	public boolean isBuildEnabled(ValidatorMetaData vmd) {
-		if (vmd == null) {
-			return false;
-		}
-		Boolean value = (Boolean) getBuildEnabledValidatorsMap().get(vmd);
-		if (value == null) 
-			return false;
-		return value.booleanValue();
-	}
-	
-	public int numberOfManualEnabledValidators() throws InvocationTargetException {
-		return getManualEnabledValidators().length;
-	}	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationFactoryImpl.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationFactoryImpl.java
index b8ec7c3..058e8f8 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationFactoryImpl.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationFactoryImpl.java
@@ -26,8 +26,6 @@
 		return inst;
 	}
 
-
-
 	public IValidator getValidator(String validatorUniqueId) throws InstantiationException {
 		ValidationRegistryReader reader = ValidationRegistryReader.getReader();
 		return reader.getValidator(validatorUniqueId);
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
index d3c3c23..cbe0914 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
@@ -13,7 +13,6 @@
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -34,15 +33,12 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
-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.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 import org.eclipse.wst.validation.internal.operations.IRuleGroup;
 import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
 import org.eclipse.wst.validation.internal.provisional.core.IValidator;
 
+
 /**
  * ValidationRegistryReader is a singleton who reads the plugin registry for Validator extensions.
  * The read is done once (in the constructor), and the list of validators can be accessed by calling
@@ -156,10 +152,9 @@
 		// Build the cache with the identified project natures in validators'
 		// extensions.
 		ValidatorNameFilter[] projNatureIds = vmd.getProjectNatureFilters();
-		String[] facetFilters = vmd.getFacetFilters();
 		if (projNatureIds == null) {
-			if(facetFilters == null) 
-				add(UNKNOWN_PROJECT, vmd);
+			// Can run on any project
+			add(UNKNOWN_PROJECT, vmd);
 		} else {
 			boolean noneIncluded = true; // assume that the validator does not include any project
 			// natures
@@ -181,6 +176,7 @@
 			}
 		}
 	}
+
 	/**
 	 * Build the list of validators which are enabled by default.
 	 */
@@ -445,26 +441,11 @@
 	/**
 	 * Return the name of the marker ID associated with the IValidator.
 	 */
-	public String[] getMarkerIdsValue(IConfigurationElement element) {
+	public String getMarkerIdValue(IConfigurationElement element) {
 		IConfigurationElement[] markerId = element.getChildren(MARKER_ID);
 		if (markerId.length == 0)
 			return null;
-		String markerIds[] = new String[markerId.length];
-		for(int i = 0; i < markerIds.length; i++) {
-			markerIds[i] = markerId[i].getAttribute(MARKER_ID_VALUE);
-		}
-		return markerIds;
-	}
-	
-	public String[] getFacetIds(IConfigurationElement element) {
-		IConfigurationElement[] facets = element.getChildren(FACET);
-		if (facets.length == 0)
-			return null;
-		String[] facetIds = new String[facets.length];
-		for (int i = 0; i < facets.length; i++) {
-			facetIds[i] = facets[i].getAttribute(FACET_ID);
-		}
-		return facetIds;
+		return markerId[0].getAttribute(MARKER_ID_VALUE);
 	}
 
 	/**
@@ -855,11 +836,13 @@
 				entry.setText("IProject is " + String.valueOf(project)); //$NON-NLS-1$
 				logger.write(Level.FINEST, entry);
 			}
+
 			if (project == null) {
 				executionMap |= 0x1;
 				// vmds is already clear
 				return;
 			}
+
 			String[] projectNatures = null;
 			try {
 				projectNatures = project.getDescription().getNatureIds();
@@ -875,6 +858,7 @@
 				}
 				return;
 			}
+
 			// If there are no project natures on a particular project,
 			// or if this project nature has no validators configured
 			// on it, return the validators which are configured on all
@@ -888,13 +872,33 @@
 				if (logger.isLoggingLevel(Level.FINEST)) {
 					LogEntry entry = ValidationPlugin.getLogEntry();
 					entry.setSourceID("ValidationRegistryReader.getValidatorMetaData(IProject)"); //$NON-NLS-1$
-					// entry.setTokens(projectNatures);
+					//entry.setTokens(projectNatures);
 					entry.setText(projectNatures.toString());
 					logger.write(Level.FINEST, entry);
 				}
-				calculateVmdsForNatureAndFacets(vmds, projectNatures,project);
+
+				for (int i = 0; i < projectNatures.length; i++) {
+					String projectNatureId = projectNatures[i];
+					projVmds = (Set) _validators.get(projectNatureId);
+
+					if (projVmds == null) {
+						// no validators registered for that type of project id
+						executionMap |= 0x10;
+						continue;
+					}
+
+					Iterator iterator = projVmds.iterator();
+					while (iterator.hasNext()) {
+						ValidatorMetaData vmd = (ValidatorMetaData) iterator.next();
+						if (!vmds.contains(vmd)) {
+							vmds.add(vmd);
+						}
+					}
+				}
+
 				// Now filter out the validators which must not run on this project
 				removeExcludedProjects(project, vmds);
+
 				if (vmds.size() == 0) {
 					executionMap |= 0x20;
 					clone(getValidatorMetaDataUnknownProject(), vmds);
@@ -905,7 +909,7 @@
 				LogEntry entry = ValidationPlugin.getLogEntry();
 				entry.setSourceID("ValidationRegistryReader.getValidatorMetaData(IProject)"); //$NON-NLS-1$
 				entry.setExecutionMap(executionMap);
-				
+
 				StringBuffer buffer = new StringBuffer();
 				Iterator iterator = vmds.iterator();
 				while (iterator.hasNext()) {
@@ -919,67 +923,6 @@
 		}
 	}
 
-	/**
-	 * @param project
-	 * @param vmds
-	 * @param projectNatures
-	 */
-	private void calculateVmdsForNatureAndFacets(Set vmds, String[] projectNatures,IProject project) {
-		Set projVmds;
-		String[] projectFacetIds = getProjectFacetIds(project);
-		Iterator allValidators = getAllValidators().iterator();
-		while (allValidators.hasNext()) {
-			ValidatorMetaData vmd = (ValidatorMetaData) allValidators.next();
-			if (containsProjectFacet(vmd, projectFacetIds)) {
-				vmds.add(vmd);
-			}
-		}
-		for (int i = 0; i < projectNatures.length; i++) {
-			String projectNatureId = projectNatures[i];
-			projVmds = (Set) _validators.get(projectNatureId);
-			if (projVmds == null) {
-				continue;
-			}
-			Iterator iterator = projVmds.iterator();
-			while (iterator.hasNext()) {
-				ValidatorMetaData vmd = (ValidatorMetaData) iterator.next();
-				if (!vmds.contains(vmd) && (vmd.getFacetFilters() == null || vmd.getFacetFilters().length == 0)) {
-					vmds.add(vmd);
-				}
-			}
-		}
-	}
-
-	private boolean containsProjectFacet(ValidatorMetaData vmd, String[] projectFacetIds) {
-		String[] validatorFacets = vmd.getFacetFilters();
-		if (validatorFacets != null && validatorFacets.length > 0) {
-			if (projectFacetIds != null && projectFacetIds.length > 0) {
-				if (Arrays.asList(projectFacetIds).containsAll(Arrays.asList(validatorFacets)))
-					return true;
-			}
-		}
-		return false;
-	}
-
-	private String[] getProjectFacetIds(IProject project) {
-		try {
-			IFacetedProject fProject = ProjectFacetsManager.create(project);
-			if (fProject != null) {
-				Object[] projectFacets = fProject.getProjectFacets().toArray();
-				String[] projectFacetIds = new String[projectFacets.length];
-				for (int i = 0; i < projectFacets.length; i++) {
-					IProjectFacet projectFacet = ((IProjectFacetVersion) projectFacets[i]).getProjectFacet();
-					projectFacetIds[i] = projectFacet.getId();
-				}
-				return projectFacetIds;
-			}
-		} catch (CoreException ce) {
-			Logger.getLogger().log(ce);
-		}
-
-		return null;
-	}
-
 	/*
 	 * If one project nature on the project includes a particular validator, but another project
 	 * nature excludes that validator, then the validator needs to be removed from the vmd set.
@@ -1321,8 +1264,8 @@
 		//
 		ValidatorMetaData vmd = new ValidatorMetaData();
 		vmd.addFilters(getFilters(element)); // validator may, or may not, have filters
-		vmd.addProjectNatureFilters(getProjectNatureFilters(element)); // validator may, or may not, specify a project nature
-		vmd.addFacetFilters(getFacetIds(element));//validator may or may not specify the facet
+		vmd.addProjectNatureFilters(getProjectNatureFilters(element)); // validator may, or may not,
+		// specify a project nature
 		vmd.addAggregatedValidatorNames(getAggregateValidatorsNames(element)); // if a validator
 		// aggregated another
 		// validator, it
@@ -1342,15 +1285,10 @@
 		vmd.setHelperClass(element, helperImplName);
 		vmd.setValidatorClass(element); // associate the above attributes with the validator
 		vmd.addDependentValidator(getDependentValidatorValue(element));
-		String[] customMarkerIds = getMarkerIdsValue(element);
-		if(customMarkerIds != null && customMarkerIds.length > 0) {
-			String[] qualifiedMarkerIds = new String[customMarkerIds.length];
-			for(int i = 0; i < customMarkerIds.length; i++) {
-				qualifiedMarkerIds[i] = pluginId+"."+ customMarkerIds[i];
-			}
-			vmd.setMarkerIds(qualifiedMarkerIds); //$NON-NLS-1$
-		}
-		
+		String customMarkerId = getMarkerIdValue(element);
+		if(customMarkerId != null)
+		    vmd.setMarkerId(pluginId+"."+customMarkerId); //$NON-NLS-1$
+
 		Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
 		if (logger.isLoggingLevel(Level.FINEST)) {
 			LogEntry entry = ValidationPlugin.getLogEntry();
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
index d8716de..9c231ae 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
@@ -37,7 +37,6 @@
 public class ValidatorMetaData {
 	private ValidatorFilter[] _filters = null;
 	private ValidatorNameFilter[] _projectNatureFilters = null;
-	private String[] facetFilters = null;
 	private IValidator _validator = null;
 	private IWorkbenchContext _helper = null;
 	private String _validatorDisplayName = null;
@@ -53,13 +52,11 @@
 	private int _ruleGroup = RegistryConstants.ATT_RULE_GROUP_DEFAULT;
 	private boolean _async = RegistryConstants.ATT_ASYNC_DEFAULT;
 	private boolean dependentValidator = RegistryConstants.DEP_VAL_VALUE_DEFAULT;
-	private String[] markerIds = null;
+	private String markerId = null;
 	private String _helperClassName = null;
 	private IConfigurationElement _helperClassElement = null;
 	private IConfigurationElement _validatorClassElement = null;
 	private boolean _cannotLoad = false;
-	private boolean manualValidation = true;
-	private boolean buildValidation = true;
 
 	/* package */ValidatorMetaData() {
 		//default
@@ -87,17 +84,6 @@
 	/* package */void addProjectNatureFilters(ValidatorNameFilter[] filters) {
 		_projectNatureFilters = filters;
 	}
-	
-	/**
-	 * Add the facet  filter(s).
-	 */
-	protected void addFacetFilters(String[] filters) {
-		facetFilters = filters;
-	}
-	
-	protected String[] getFacetFilters() {
-		return facetFilters;
-	}
 
 	public List getNameFilters() {
 		List nameFilters = new ArrayList();
@@ -510,31 +496,15 @@
 	/**
 	 * @return Returns the markerId.
 	 */
-	public String[] getMarkerIds() {
-		return markerIds;
+	public String getMarkerId() {
+		return markerId;
 	}
 
 	/**
 	 * @param markerId
 	 *            The markerId to set.
 	 */
-	public void setMarkerIds(String[] markerId) {
-		this.markerIds = markerId;
-	}
-
-	public boolean isBuildValidation() {
-		return buildValidation;
-	}
-
-	public void setBuildValidation(boolean buildValidation) {
-		this.buildValidation = buildValidation;
-	}
-
-	public boolean isManualValidation() {
-		return manualValidation;
-	}
-
-	public void setManualValidation(boolean manualValidation) {
-		this.manualValidation = manualValidation;
+	public void setMarkerId(String markerId) {
+		this.markerId = markerId;
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ManualValidatorsOperation.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ManualValidatorsOperation.java
deleted file mode 100644
index 242b07d..0000000
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ManualValidatorsOperation.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.validation.internal.operations;
-
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.validation.internal.RegistryConstants;
-
-
-/**
- * Implemented Validators must not be called directly by anyone other than instances of
- * ValidationOperation, because some initialization of the validator, and handling of error
- * conditions, is done in the operation. The initialization is separated because some of the
- * information needed to initialize the validator (i.e., the project) isn't known until runtime.
- * 
- * Instances of this operation run every enabled validator (both full and incremental) on the
- * project.
- * 
- * This operation is not intended to be subclassed outside of the validation framework.
- */
-public class ManualValidatorsOperation extends ValidatorSubsetOperation {
-
-	public ManualValidatorsOperation(IProject project) {
-		super(project, DEFAULT_FORCE, RegistryConstants.ATT_RULE_GROUP_DEFAULT, false);
-		setEnabledValidators(ValidatorManager.getManager().getManualEnabledValidators(project));
-	}	
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationBuilder.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationBuilder.java
index 5554976..cf2ea0a 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationBuilder.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationBuilder.java
@@ -23,7 +23,6 @@
 import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.validation.internal.ConfigurationManager;
@@ -164,12 +163,12 @@
 			boolean doFullBuild = (kind == FULL_BUILD);
 			boolean doAutoBuild = ((delta != null) && (kind == AUTO_BUILD));
 			boolean doIncrementalBuild = ((delta != null) && (kind == INCREMENTAL_BUILD));
-//			if ((doFullBuild || doIncrementalBuild) && !prjp.isBuildValidate()) {
-//				// Is a build validation about to be invoked? If so, does the
-//				// user want build validation to run?
-//				executionMap |= 0x2;
-//				return referenced;
-//			}
+			if ((doFullBuild || doIncrementalBuild) && !prjp.isBuildValidate()) {
+				// Is a build validation about to be invoked? If so, does the
+				// user want build validation to run?
+				executionMap |= 0x2;
+				return referenced;
+			}
 			// It is possible for kind to == AUTO_BUILD while delta is null
 			// (saw this
 			// when creating a project by copying another project.)
@@ -195,10 +194,10 @@
 			if (doFullBuild) {
 				performFullBuild(monitor, prjp);
 			} else {
-//				if (doAutoBuild && !prjp.isAutoValidate()) {
-//					executionMap |= 0x8;
-//					return referenced;
-//				}
+				if (doAutoBuild && !prjp.isAutoValidate()) {
+					executionMap |= 0x8;
+					return referenced;
+				}
 				if (delta.getAffectedChildren().length == 0) {
 					if (isReferencedProjectInDelta(referenced))
 						performFullBuildForReferencedProjectChanged(monitor, prjp);
@@ -206,7 +205,7 @@
 						executionMap |= 0x10;
 					return referenced;
 				}
-				EnabledIncrementalValidatorsOperation operation = new EnabledIncrementalValidatorsOperation(project, delta, false);
+				EnabledIncrementalValidatorsOperation operation = new EnabledIncrementalValidatorsOperation(project, delta, prjp.runAsync());
 				operation.run(monitor);
 			}
 			return referenced;
@@ -259,7 +258,7 @@
 		ValidatorMetaData[] enabledValidators = prjp.getEnabledFullBuildValidators(true, onlyDependentValidators);
 		if ((enabledValidators != null) && (enabledValidators.length > 0)) {
 			Set enabledValidatorsSet = InternalValidatorManager.wrapInSet(enabledValidators);
-			EnabledValidatorsOperation op = new EnabledValidatorsOperation(getProject(), enabledValidatorsSet,false);
+			EnabledValidatorsOperation op = new EnabledValidatorsOperation(getProject(), enabledValidatorsSet, prjp.runAsync());
 			op.run(monitor);
 		}
 	}
@@ -279,12 +278,10 @@
 
 	private void logBuildError(Logger logger, Throwable exc) {
 		if (logger.isLoggingLevel(Level.SEVERE)) {
-			if( ! (exc instanceof OperationCanceledException) ){
-				LogEntry entry = ValidationPlugin.getLogEntry();
-				entry.setSourceID("ValidationBuilder.build(int, Map, IProgressMonitor)"); //$NON-NLS-1$
-				entry.setTargetException(exc);
-				logger.write(Level.SEVERE, entry);
-			}
+			LogEntry entry = ValidationPlugin.getLogEntry();
+			entry.setSourceID("ValidationBuilder.build(int, Map, IProgressMonitor)"); //$NON-NLS-1$
+			entry.setTargetException(exc);
+			logger.write(Level.SEVERE, entry);
 		}
 	}
 
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationOperation.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationOperation.java
index fbb3780..04c9bad 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationOperation.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidationOperation.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.validation.internal.operations;
 
-
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -31,7 +30,6 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.common.frameworks.internal.operations.IHeadlessRunnableWithProgress;
@@ -43,18 +41,19 @@
 import org.eclipse.wst.validation.internal.ResourceConstants;
 import org.eclipse.wst.validation.internal.ResourceHandler;
 import org.eclipse.wst.validation.internal.TimeEntry;
+import org.eclipse.wst.validation.internal.VThreadManager;
 import org.eclipse.wst.validation.internal.ValidationRegistryReader;
 import org.eclipse.wst.validation.internal.ValidatorMetaData;
-import org.eclipse.wst.validation.internal.core.EmptySchedulingRule;
 import org.eclipse.wst.validation.internal.core.IFileDelta;
+import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.core.ValidationException;
 import org.eclipse.wst.validation.internal.core.ValidatorLauncher;
 import org.eclipse.wst.validation.internal.plugin.ValidationHelperRegistryReader;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
+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.IValidator;
-import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
 import org.eclipse.wst.validation.internal.provisional.core.MessageLimitException;
 
 /**
@@ -216,30 +215,32 @@
 		Set enabledValidators = getEnabledValidators();
 		Iterator iterator = enabledValidators.iterator();
 		ValidatorMetaData vmd = null;
-
-		while (iterator.hasNext()) {
-			vmd = (ValidatorMetaData) iterator.next();
-			reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_CLEANUP, new String[]{vmd.getValidatorDisplayName()}));
-			try {
-				reporter.removeAllMessages(vmd.getValidator());
-			} catch (InstantiationException exc) {
-				// Remove the vmd from the reader's list
-				ValidationRegistryReader.getReader().disableValidator(vmd);
-				// Log the reason for the disabled validator
-				final Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidationOperation::terminateCleanup"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
+		try {
+			while (iterator.hasNext()) {
+				vmd = (ValidatorMetaData) iterator.next();
+				reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_CLEANUP, new String[]{vmd.getValidatorDisplayName()}));
+				try {
+					reporter.removeAllMessages(vmd.getValidator());
+				} catch (InstantiationException exc) {
+					// Remove the vmd from the reader's list
+					ValidationRegistryReader.getReader().disableValidator(vmd);
+					// Log the reason for the disabled validator
+					final Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+					if (logger.isLoggingLevel(Level.SEVERE)) {
+						LogEntry entry = ValidationPlugin.getLogEntry();
+						entry.setSourceID("ValidationOperation::terminateCleanup"); //$NON-NLS-1$
+						entry.setTargetException(exc);
+						logger.write(Level.SEVERE, entry);
+					}
+					continue;
 				}
-				continue;
+				addCancelTask(vmd);
+				reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_TERMINATED, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}));
 			}
-			addCancelTask(vmd);
-			reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_TERMINATED, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}));
+		} catch (MessageLimitException e) {
+			ValidatorManager.getManager().addMessageLimitExceeded(getProject());
 		}
-	} 
-	
+	}
 
 	/**
 	 * @param vmd
@@ -789,7 +790,7 @@
 					while (it.hasNext()) {
 						ValidatorMetaData data = (ValidatorMetaData) it.next();
 						if (data.isApplicableTo(refFile)) {
-							IValidator validator = (IValidator)data.getValidator();
+							IValidator validator = data.getValidator();
 							validator.validate(data.getHelper(project),reporter);
 							validatedFiles.add(refFile);
 						}
@@ -827,35 +828,8 @@
 		WorkbenchReporter nullReporter = new WorkbenchReporter(getProject(), new NullProgressMonitor());
 		final Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
 		IFileDelta[] delta = null;
-		
-		HashSet jobValidators = new HashSet();
-		HashSet validators = new HashSet();
-		
-		iterator = getEnabledValidators().iterator();
-		while( iterator.hasNext() ){
-			vmd = (ValidatorMetaData) iterator.next();
-			try {
-				if( vmd.getValidator() instanceof IValidatorJob ){
-					jobValidators.add( vmd );
-				}else{
-					validators.add( vmd );
-				}
-			} catch (InstantiationException e) {
-				Logger.getLogger().logError(e);
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidationOperation.validate(WorkbenchReporter)"); //$NON-NLS-1$
-					entry.setTargetException(e);
-					logger.write(Level.SEVERE, entry);
-				}				
-			}
-		}
-		launchJobs( jobValidators, reporter );
-		
 		try {
-			//iterator = getEnabledValidators().iterator();
-			iterator = validators.iterator();
-			
+			iterator = getEnabledValidators().iterator();
 			// In order to allow validators to run, must first check if there's
 			// space for new markers.
 			// But we don't want the old markers to prevent validation from
@@ -919,27 +893,18 @@
 					}
 					String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
 					reporter.displaySubtask(mssg);
-					/*
-					 The code  below  causes bundle not found exception since, the  bundle here is
-					 validate_base and we  are  trying to load that bundle from the classloader of 
-					 the Validator. 
-			  
 					String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 					Message message = ValidationPlugin.getMessage();
 					message.setSeverity(IMessage.NORMAL_SEVERITY);
 					message.setId(ResourceConstants.VBF_EXC_RUNTIME);
 					message.setParams(msgParm);
 					reporter.addMessage(validator, message);
-					*/
 					continue;
 				}
 				try {
 					context = vmd.getHelper(getProject());
 					initValidateContext(delta);
 					validator = vmd.getValidator();
-					
-					checkCanceled(reporter);
-					
 				} catch (InstantiationException exc) {
 					// Remove the vmd from the reader's list
 					ValidationRegistryReader.getReader().disableValidator(vmd);
@@ -953,18 +918,17 @@
 					continue;
 				}
 				
-//				if (isFork() && vmd.isAsync()) {
-//					// Don't appear to run in the foreground by sending
-//					// progress to the IProgressMonitor in the
-//					// WorkbenchMonitor. Suppress the status messages by
-//					// changing the IProgressMonitor to a
-//					// NullProgressMonitor.
-//					VThreadManager.getManager().queue(wrapInRunnable(nullReporter, validator, vmd,(WorkbenchContext)getContext(),delta, iterator));
-//				} else {
-//					internalValidate(reporter, validator, vmd, context, delta);
-//				}
-				internalValidate(reporter, (IValidator)validator, vmd, context, delta);
+				if (isFork() && vmd.isAsync()) {
+					// Don't appear to run in the foreground by sending
+					// progress to the IProgressMonitor in the
+					// WorkbenchMonitor. Suppress the status messages by
+					// changing the IProgressMonitor to a
+					// NullProgressMonitor.
+					VThreadManager.getManager().queue(wrapInRunnable(nullReporter, validator, vmd,(WorkbenchContext)getContext(),delta, iterator));
+				} else {
+					internalValidate(reporter, validator, vmd,context,delta);
 				}
+			}
 		} catch (OperationCanceledException exc) {
 			handleOperationCancelledValidateException(reporter, validator, vmd, iterator, logger, exc);
 		} finally {
@@ -976,6 +940,14 @@
 	 * 
 	 */
 	private void releaseCachedMaps() {
+		if(ValidatorManager.messageLimitProjectMap != null) {
+			ValidatorManager.messageLimitProjectMap.clear();
+			ValidatorManager.messageLimitProjectMap = null;
+		}
+		if(ValidatorManager.messageLimitMessageProjectMap != null) {
+			ValidatorManager.messageLimitMessageProjectMap.clear();
+			ValidatorManager.messageLimitMessageProjectMap = null;
+		}
 		if (ValidationRegistryReader.getReader().projectValidationMetaData != null) {
 			ValidationRegistryReader.getReader().projectValidationMetaData.clear();
 			ValidationRegistryReader.getReader().projectValidationMetaData = null;
@@ -1071,11 +1043,14 @@
 			// needs to, and if it tries to add a message when the limit is
 			// exceeded, let
 			// the WorkbenchReporter take care of it.
-			launchValidator(reporter, validator, vmd, aContext, delta);
+			launchValidator(reporter, validator, vmd,aContext,delta);
 		} catch (OperationCanceledException exc) {
 			// This is handled in the validate(WorkbenchReporter) method.
 			throw exc;
-		}catch (Throwable exc) {
+		} catch (MessageLimitException exc) {
+			// Let the finally block handle this case.
+			// handleMessageLimit();
+		} catch (Throwable exc) {
 			// If there is a problem with this particular validator, log the
 			// error and continue
 			// with the next validator.
@@ -1092,25 +1067,17 @@
 			}
 			String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
 			reporter.displaySubtask(mssg);
-			
-			/*
-			 The code  below  causes bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator. 
-			  
 			String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 			Message message = ValidationPlugin.getMessage();
 			message.setSeverity(IMessage.NORMAL_SEVERITY);
 			message.setId(ResourceConstants.VBF_EXC_RUNTIME);
 			message.setParams(msgParm);
 			reporter.addMessage(validator, message);
-			*/
 		} finally {
 			// If user fixes problem, and limit exceeded, add "exceeded"
 			// message, or
 			// if limit not exceeded any more, remove "exceeded" message.
-			//Message Limit is removed from the framework
-			//ValidatorManager.getManager().checkMessageLimit(getProject(), true);
+			ValidatorManager.getManager().checkMessageLimit(getProject(), true);
 			reporter.getProgressMonitor().done();
 		}
 	}
@@ -1194,18 +1161,12 @@
 			}
 			String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
 			reporter.displaySubtask(mssg);
-			
-			/*
-			 The code  below  causes bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator. 			 * 
 			String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 			Message message = ValidationPlugin.getMessage();
 			message.setSeverity(IMessage.NORMAL_SEVERITY);
 			message.setId(ResourceConstants.VBF_EXC_RUNTIME);
 			message.setParams(msgParm);
 			reporter.addMessage(validator, message);
-			*/
 			return;
 		}
 	}
@@ -1364,20 +1325,12 @@
 			}
 			String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
 			reporter.displaySubtask(mssg);
-			
-			/*
-			 The code  below  causes bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator. 
-			 
 			String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 			Message message = ValidationPlugin.getMessage();
 			message.setSeverity(IMessage.NORMAL_SEVERITY);
 			message.setId(ResourceConstants.VBF_EXC_RUNTIME);
 			message.setParams(msgParm);
 			reporter.addMessage(validator, message);
-			*/
-			
 		} finally {
 			try {
 				validator.cleanup(reporter);
@@ -1397,11 +1350,6 @@
 					entry.setTargetException(exc);
 					logger.write(Level.SEVERE, entry);
 				}
-				
-				/*
-			 The code  below  causes bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator.  
 				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 				Message message = ValidationPlugin.getMessage();
 				message.setSeverity(IMessage.NORMAL_SEVERITY);
@@ -1412,8 +1360,6 @@
 				} catch (MessageLimitException e) {
 					throw e;
 				}
-				
-				*/
 				return;
 			}
 			try {
@@ -1434,12 +1380,6 @@
 					entry.setTargetException(exc);
 					logger.write(Level.SEVERE, entry);
 				}
-				
-				/*
-			 The code  below bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator. 
-			 				 
 				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
 				Message message = ValidationPlugin.getMessage();
 				message.setSeverity(IMessage.NORMAL_SEVERITY);
@@ -1450,7 +1390,6 @@
 				} catch (MessageLimitException e) {
 					throw e;
 				}
-				*/
 				return;
 			} finally {
 				// Now that cleanup has been called, set the project to null.
@@ -1538,165 +1477,4 @@
 	public void setContext(IWorkbenchContext context) {
 		this.context = context;
 	}
-	
-	void launchJobs(HashSet validators, final WorkbenchReporter reporter) throws OperationCanceledException{
-		
-		final Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-		Iterator iterator = validators.iterator();
-		ValidatorMetaData vmd = null;
-		IValidator validator = null;
-		IFileDelta[] delta = null;
-		IWorkbenchContext workbenchcontext = null;
-		
-		while (iterator.hasNext()) {
-			checkCanceled(reporter);
-			
-			vmd = (ValidatorMetaData) iterator.next();
-
-			try {
-				delta = getFileDeltas(reporter.getProgressMonitor(), vmd);
-				boolean willRun = (isForce() || isValidationNecessary(vmd, delta));
-				if (!willRun) {
-					continue;
-				}
-			} catch (CoreException exc) {
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidationOperation.launchJobs()"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-				String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
-				reporter.displaySubtask(mssg);
-				
-				/*
-			 The code  below  causes bundle not found exception since, the  bundle here is
-			 validate_base and we  are  trying to load that bundle from the classloader of 
-			 the Validator. 
-			  
-				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
-				Message message = ValidationPlugin.getMessage();
-				message.setSeverity(IMessage.NORMAL_SEVERITY);
-				message.setId(ResourceConstants.VBF_EXC_RUNTIME);
-				message.setParams(msgParm);
-				reporter.addMessage(validator, message);
-				*/
-				
-				continue;
-			}
-			
-			try {
-				workbenchcontext = vmd.getHelper( getProject() );
-				initValidateContext( delta, workbenchcontext );
-				validator = vmd.getValidator();
-				
-				checkCanceled(reporter);
-				
-			} catch (InstantiationException exc) {
-				// Remove the vmd from the reader's list
-				ValidationRegistryReader.getReader().disableValidator(vmd);
-				// Log the reason for the disabled validator
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidationOperation.launchJobs()"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-				continue;
-			}
-			
-			try {
-				checkCanceled(reporter);
-				removeOldMessages(reporter, validator, vmd, delta);
-				
-				if( validator instanceof IValidatorJob ){
-					launchValidatorJob( reporter, (IValidatorJob)validator, vmd, workbenchcontext, delta);
-				}
-
-				
-			} catch (OperationCanceledException exc) {
-				throw exc;
-
-			} catch (Throwable exc) {
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidationOperation.launchJobs()"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-				String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()});
-				reporter.displaySubtask(mssg);
-
-				/*
-				 The code  below  causes bundle not found exception since, the  bundle here is
-				 validate_base and we  are  trying to load that bundle from the classloader of 
-				 the Validator. 
-				 */
-				 
-//				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
-//				Message message = ValidationPlugin.getMessage();
-//				message.setSeverity(IMessage.NORMAL_SEVERITY);
-//				message.setId(ResourceConstants.VBF_EXC_RUNTIME);
-//				message.setParams(msgParm);
-//				reporter.addMessage(validator, message);
-			} finally {
-				// If user fixes problem, and limit exceeded, add "exceeded"
-				// message, or
-				// if limit not exceeded any more, remove "exceeded" message.
-				reporter.getProgressMonitor().done();
-			}
-		}
-				
-				
-				
-		
-
-	}
-	
-	private void initValidateContext(IFileDelta[] delta, IWorkbenchContext context ) {
-		 if (context instanceof WorkbenchContext) {
-			 ((WorkbenchContext)context).setValidationFileURIs(new ArrayList());
-			 for(int i = 0; i < delta.length; i++) {
-				 IFileDelta file = delta[i];
-				 if(file.getDeltaType() != IFileDelta.DELETED ) {
-					 ((WorkbenchContext)context).getValidationFileURIs().add(file.getFileName());
-				 }
-			 } 
-		}
-	}
-			
-			
-	private final void launchValidatorJob(WorkbenchReporter reporter,
-				   IValidatorJob validator, ValidatorMetaData vmd,
-				   IWorkbenchContext helper, IFileDelta[] delta) {
-		
-		if (reporter == null) {
-			return;
-		}
-		checkCanceled(reporter);
-		Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-
-		if (helper instanceof WorkbenchContext) {
-			((WorkbenchContext) helper).setRuleGroup(getRuleGroup());
-		}
-		if (logger.isLoggingLevel(Level.FINEST)) {
-			// This internal "launched validators" value is used only in
-			// tests.
-			getLaunchedValidators().add(vmd);
-		}
-		
-		ValidatorJob validatorjob = new ValidatorJob( vmd.getValidatorDisplayName(), vmd.getValidatorUniqueName(),
-					helper.getProject(), helper );
-
-
-		ISchedulingRule schedulingRule = validator.getSchedulingRule(helper);
-		if( schedulingRule == null ){
-			schedulingRule = new EmptySchedulingRule();
-			validatorjob.setRule( schedulingRule );
-		}
-		validatorjob.schedule();		
-		
-	}
-	
-	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorJob.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorJob.java
deleted file mode 100644
index ae127ad..0000000
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorJob.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package org.eclipse.wst.validation.internal.operations;
-
-import java.util.logging.Level;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jem.util.logger.LogEntry;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin;
-import org.eclipse.wst.validation.internal.ResourceConstants;
-import org.eclipse.wst.validation.internal.ResourceHandler;
-import org.eclipse.wst.validation.internal.ValidationFactoryImpl;
-import org.eclipse.wst.validation.internal.ValidationRegistryReader;
-import org.eclipse.wst.validation.internal.ValidatorMetaData;
-import org.eclipse.wst.validation.internal.core.Message;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
-
-public class ValidatorJob extends Job {
-
-
-	private IProject			project;
-	private String				validatorUniqueName;
-	private IWorkbenchContext 	helper;
-	
-	public ValidatorJob(String name) {
-		super(name);
-	}
-
-
-	   
-	   
-	public ValidatorJob(String displayName, String name, IProject project, IWorkbenchContext aHelper  ){
-		super(displayName);
-		validatorUniqueName = name;
-		this.project = project;
-		this.helper = aHelper;
-	}
-	
-	//revisit reporter in the code  below
-	//subtask information is displayed in the monitor created by the Job
-	//error information is reported by the IReporter
-	
-	protected IStatus run(IProgressMonitor monitor) {
-
-		monitor.beginTask("Validating", IProgressMonitor.UNKNOWN); //$NON-NLS-1$
-		IStatus status = IValidatorJob.OK_STATUS;
-		WorkbenchReporter	reporter = new WorkbenchReporter( project, monitor );
-
-		IValidatorJob	validator = null;
-
-		
-		try {
-			validator = (IValidatorJob) ValidationFactoryImpl.getInstance().getValidator( validatorUniqueName );
-		} catch (InstantiationException e1) {
-			Logger.getLogger().logError(e1);
-
-		}
-
-		ValidatorMetaData vmd = ValidationRegistryReader.getReader().getValidatorMetaData(validator);
-		
-//		try {
-//			helper = vmd.getHelper(project);
-//		} catch (InstantiationException e1) {
-//			Logger.getLogger().logError(e1);
-//		}
-		
-		Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-
-		try {
-
-			String message = ResourceHandler.getExternalizedMessage(
-				ResourceConstants.VBF_STATUS_STARTING_VALIDATION,
-				new String[]{helper.getProject().getName(), vmd.getValidatorDisplayName()});
-			
-			monitor.subTask(message);
-			
-		
-			status = validator.validateInJob(helper, reporter);
-		
-			//to remove, if error is returned from the validator, the job stays back in the UI...
-			//should we even return error status if error is found in the validator
-			//status = IValidatorJob.OK_STATUS;	
-			
-			
-			
-			message = ResourceHandler.getExternalizedMessage(
-					ResourceConstants.VBF_STATUS_ENDING_VALIDATION,
-					new String[]{helper.getProject().getName(), vmd.getValidatorDisplayName()});
-			monitor.subTask(message);
- 
-		} catch (OperationCanceledException exc) {
-			throw exc;
-		} catch (ValidationException exc) {
-			// First, see if a validator just caught all Throwables and
-			// accidentally wrapped a MessageLimitException instead of
-			// propagating it.
-			if (exc.getAssociatedException() != null) {
-				if (exc.getAssociatedException() instanceof ValidationException) {
-					ValidationException vexc = (ValidationException) exc.getAssociatedException();
-					vexc.setClassLoader(validator.getClass().getClassLoader()); 
-				}
-			}
-			// If there is a problem with this particular validator, log the
-			// error and continue
-			// with the next validator.
-			exc.setClassLoader(validator.getClass().getClassLoader());
-
-			if (logger.isLoggingLevel(Level.SEVERE)) {
-				LogEntry entry = ValidationPlugin.getLogEntry();
-				entry.setSourceID("ValidatorJob.run()"); //$NON-NLS-1$
-				entry.setTargetException(exc);
-				logger.write(Level.SEVERE, entry);
-				if (exc.getAssociatedException() != null) {
-					entry.setTargetException(exc.getAssociatedException());
-					logger.write(Level.SEVERE, entry);
-				}
-			}
-			String message = ResourceHandler.getExternalizedMessage(
-						ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY,
-						new String[]{helper.getProject().getName(), vmd.getValidatorDisplayName()});
-			
-			monitor.subTask(message);
-			if (exc.getAssociatedMessage() != null) {
-				reporter.addMessage(validator, exc.getAssociatedMessage());
-			}
-		} catch (Throwable exc) {
-			if (logger.isLoggingLevel(Level.SEVERE)) {
-				LogEntry entry = ValidationPlugin.getLogEntry();
-				entry.setSourceID("ValidatorJob.run()"); //$NON-NLS-1$
-				entry.setTargetException(exc);
-				logger.write(Level.SEVERE, entry);
-				IStatus stat = new Status(IStatus.ERROR,
-			    		      ValidationPlugin.getPlugin().PLUGIN_ID, 0, "", exc );
-					logger.write(Level.SEVERE, stat);
-				
-			}
-			String mssg = ResourceHandler.getExternalizedMessage(
-						ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY,
-						new String[]{helper.getProject().getName(), vmd.getValidatorDisplayName() });
-			
-			monitor.subTask(mssg);
-			
-		} finally {
-			try {
-				validator.cleanup(reporter);
-			} catch (OperationCanceledException e) {
-				throw e;
-			} catch (Throwable exc) {
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidatorJob.run()"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-				
-				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$				
-				Message message = ValidationPlugin.getMessage();
-				message.setSeverity(IMessage.NORMAL_SEVERITY);
-				message.setId(ResourceConstants.VBF_EXC_RUNTIME);
-				message.setParams(msgParm);				
-				status = WTPCommonPlugin.createErrorStatus(message.getText());
-				return status;
-			}
-			try {
-				helper.cleanup(reporter);
-			}catch (OperationCanceledException e) {
-				throw e;
-			} catch (Throwable exc) {
-				if (logger.isLoggingLevel(Level.SEVERE)) {
-					LogEntry entry = ValidationPlugin.getLogEntry();
-					entry.setSourceID("ValidatorJob.run()"); //$NON-NLS-1$
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-				String[] msgParm = {exc.getClass().getName(), vmd.getValidatorDisplayName(), (exc.getMessage() == null ? "" : exc.getMessage())}; //$NON-NLS-1$
-				Message message = ValidationPlugin.getMessage();
-				message.setSeverity(IMessage.NORMAL_SEVERITY);
-				message.setId(ResourceConstants.VBF_EXC_RUNTIME);
-				message.setParams(msgParm);
-				reporter.addMessage(validator, message);
-
-				status = WTPCommonPlugin.createErrorStatus(message.getText());	
-				return status;
-			} finally {
-				helper.setProject(null);
-			}
-			//reporter.getProgressMonitor().worked(((delta == null) ? 1 : delta.length)); // One
-			//monitor.worked(((delta == null) ? 1 : delta.length)); // One
-			monitor.done();
-		}
-		return status;
-	}
-
-	public boolean belongsTo(Object family) {
-		return (project.getName() + ValidatorManager.VALIDATOR_JOB_FAMILY).equals(family);
-	}	
-}
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorManager.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorManager.java
index 249faa8..2b6ca75 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorManager.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/ValidatorManager.java
@@ -13,6 +13,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
@@ -31,10 +32,12 @@
 import org.eclipse.wst.validation.internal.ConfigurationManager;
 import org.eclipse.wst.validation.internal.InternalValidatorManager;
 import org.eclipse.wst.validation.internal.ProjectConfiguration;
+import org.eclipse.wst.validation.internal.ResourceConstants;
 import org.eclipse.wst.validation.internal.TaskListUtility;
 import org.eclipse.wst.validation.internal.ValidationConfiguration;
 import org.eclipse.wst.validation.internal.ValidationRegistryReader;
 import org.eclipse.wst.validation.internal.ValidatorMetaData;
+import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IValidator;
@@ -45,7 +48,6 @@
  * This class is not intended to be subclassed outside of the validation framework.
  */
 public final class ValidatorManager {
-	public static final String VALIDATOR_JOB_FAMILY = "validators";	 //$NON-NLS-1$	
 	private static ValidatorManager inst = null;
 	private static IResourceUtil _resourceUtil = null; // a common utility, different whether or not
 	// WSAD is running in headless or UI mode,
@@ -60,6 +62,9 @@
 	private boolean _suspendAllValidation = false;
 	private static Class _messageLimitOwner = null;
 	private String[] _internalOwners = null;
+
+	public static HashMap messageLimitProjectMap = null;
+	public static HashMap messageLimitMessageProjectMap = null;
 	
 	/**
 	 * ValidatorManager constructor comment.
@@ -486,11 +491,9 @@
 	 * does not have an auto-validate value set, is the global auto-validate preference on? 3. if 1
 	 * or 2 is true, does the project support auto-validate? 4. if 1/2, & 3, is auto-build on? 5. if
 	 * 1/2, 3, and 4, is there at least one incremental validator enabled on the project?
-	 * 
-	 * @deprecated auto validate is not used any more
 	 */
 	public boolean isAutoValidate(IProject project, boolean isGlobalAutoBuildOn) {
-		/*try {
+		try {
 			// 1. does the project have auto-validate on or off?
 			boolean isAutoValidate = ConfigurationManager.getManager().getProjectConfiguration(project).isAutoValidate();
 			if (!isAutoValidate) {
@@ -500,7 +503,7 @@
 			// 3. does the project support auto-validate?
 			// 4. is auto-build on?
 			// 5. is there at least one incremental validator enabled on the project?
-			
+			/*
 			 * Auto-validation, on the properties page, can be enabled under these conditions: 1.
 			 * the project supports auto-validation, AND 2. fhe platform's global "automatically
 			 * build" is selected, AND 3. at least one of the project's validators supports
@@ -508,7 +511,7 @@
 			 * it's not configured on the project. Without #2, the ValidationBuilder will not be
 			 * called because auto-building is turned off. Without #3, the ValidationBuilder will be
 			 * called, but there's no point because no validators can run.
-			 
+			 */
 			return canAutoValidateButtonBeEnabled(project, isGlobalAutoBuildOn);
 		} catch (InvocationTargetException exc) {
 			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
@@ -526,8 +529,7 @@
 
 			// If the user's setting can't be retrieved, return the default
 			return ValidationConfiguration.getAutoValidateDefault();
-		}*/
-		return false;
+		}
 	}
 
 	public boolean canAutoValidateButtonBeEnabled(IProject project) {
@@ -625,50 +627,6 @@
 		}
 	}
 
-	protected Set getManualEnabledValidators(IProject project) {
-		try {
-			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-			ValidatorMetaData[] vmds = prjp.getManualEnabledValidators();
-			return InternalValidatorManager.wrapInSet(vmds);
-		} catch (InvocationTargetException exc) {
-			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-			if (logger.isLoggingLevel(Level.SEVERE)) {
-				LogEntry entry = ValidationPlugin.getLogEntry();
-				entry.setSourceIdentifier("ValidatorManager::getEnabledValidators" + project.getName() + ")"); //$NON-NLS-1$  //$NON-NLS-2$
-				entry.setTargetException(exc);
-				logger.write(Level.SEVERE, entry);
-
-				if (exc.getTargetException() != null) {
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-			}
-			return Collections.EMPTY_SET;
-		}
-	}	
-	
-	protected Set getBuildEnabledValidators(IProject project) {
-		try {
-			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
-			ValidatorMetaData[] vmds = prjp.getBuildEnabledValidators();
-			return InternalValidatorManager.wrapInSet(vmds);
-		} catch (InvocationTargetException exc) {
-			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
-			if (logger.isLoggingLevel(Level.SEVERE)) {
-				LogEntry entry = ValidationPlugin.getLogEntry();
-				entry.setSourceIdentifier("ValidatorManager::getEnabledValidators" + project.getName() + ")"); //$NON-NLS-1$  //$NON-NLS-2$
-				entry.setTargetException(exc);
-				logger.write(Level.SEVERE, entry);
-
-				if (exc.getTargetException() != null) {
-					entry.setTargetException(exc);
-					logger.write(Level.SEVERE, entry);
-				}
-			}
-			return Collections.EMPTY_SET;
-		}
-	}	
-	
 	/**
 	 * This method is for use only by the validation framework. Update the task list based on which
 	 * validators are enabled or disabled. This method should be called only by the validation
@@ -685,8 +643,8 @@
 				// The uniqueness of each Validator is checked by the plugin registry.
 				WorkbenchReporter.removeAllMessages(project, vmd.getValidatorNames(), null);
 			}
-			 //Message Limit is removed from the framework - WTP1.5M5
-			/*if (prjp.numberOfEnabledValidators() > 0) {
+
+			if (prjp.numberOfEnabledValidators() > 0) {
 				ValidatorManager.getManager().checkMessageLimit(project, false); // Do not remove
 				// the exceeded
 				// message; only
@@ -707,7 +665,7 @@
 			} else {
 				// Can't run validation, so remove the "exceeded" message
 				ValidatorManager.getManager().removeMessageLimitExceeded(project);
-			}*/
+			}
 		} catch (InvocationTargetException exc) {
 			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
 			if (logger.isLoggingLevel(Level.SEVERE)) {
@@ -844,6 +802,35 @@
 		}
 	}
 
+	/**
+	 * @deprecated
+	 * 
+	 * Use the suspendValidation(IProject, boolean) or suspendAllValidation(boolean) method instead.
+	 * This method does not guarantee that validation will be suspended. If the project is
+	 * overriding the preferences then validation will be suspended; otherwise validation will be
+	 * performed.
+	 * 
+	 * Programmatically changing the value of the project's preferences may be done only by the
+	 * validation framework.
+	 */
+	public void setAutoValidate(IProject project, boolean auto) {
+		try {
+			ConfigurationManager.getManager().getProjectConfiguration(project).setAutoValidate(auto);
+		} catch (InvocationTargetException exc) {
+			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationPlugin.getLogEntry();
+				entry.setSourceIdentifier("ValidatorManager.setAutoValidate(" + project.getName() + ", " + auto + ")"); //$NON-NLS-1$  //$NON-NLS-2$ //$NON-NLS-3$
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+
+				if (exc.getTargetException() != null) {
+					entry.setTargetException(exc);
+					logger.write(Level.SEVERE, entry);
+				}
+			}
+		}
+	}
 
 	/**
 	 * Suspends, or undoes the suspension of, validation on the current project. If "suspend" is
@@ -975,16 +962,89 @@
 		_resourceUtilClass = clazz;
 	}
 
+	public boolean isMessageLimitExceeded(IResource resource) {
+		if(resource == null) {
+			return false;
+		}
+		if(!resource.exists()) {
+			return false;
+		}
+		IProject project = resource.getProject();
+		if(isNoMessageLimit(project)) {
+			return false;
+		}
+		try {
+			//IMarker[] valTasks = getValidationTasks(project,SeverityEnum.ALL_MESSAGES);
+			initializeMessageLimitProjectMap(project);
+			Object messagesAddedForProject = messageLimitProjectMap.get(project);
+			int valTasks = ((Integer) messagesAddedForProject).intValue();
+			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
+			int max = prjp.getMaximumNumberOfMessages();
+			initializeMessageLimitMessageProjectMap();
+			Object messageLimitMessageAdded = messageLimitMessageProjectMap.get(project);
+			boolean isMessageLimitMessageAdded = false;
+			if(messageLimitMessageAdded != null) {
+				isMessageLimitMessageAdded = ((Boolean)messageLimitMessageAdded).booleanValue();
+			}
+			if (valTasks >= max || isMessageLimitMessageAdded) {
+				IMarker[] exceededTasks = getLimitMessage(project);
+				int numExceeded = (exceededTasks == null) ? 0 : exceededTasks.length;
+				// Excluding the "max messages were reported" messages, do the
+				// number of validation messages exceed the limit?
+				int numValTasks = valTasks - numExceeded;
+				if (numValTasks > max) {
+					return true;
+				}
+				// If the "max were reported" exists, does the number of
+				// messages equal the limit?
+				if ((numExceeded > 0) && (numValTasks == max)) {
+					return true;
+				}
+			}
+		}
+		catch(InvocationTargetException exc) {
+			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationPlugin.getLogEntry();
+				entry.setSourceIdentifier("ValidatorManager.setEnabledValidators(" + project.getName() + ", Set, IProgressMonitor)"); //$NON-NLS-1$  //$NON-NLS-2$
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+				
+				if(exc.getTargetException() != null) {
+					entry.setTargetException(exc);
+					logger.write(Level.SEVERE, entry);
+				}
+			}
+		}
+		return false;
+	}
+	
+	public static void initializeMessageLimitProjectMap(IProject project) {
+		if(messageLimitProjectMap == null) 
+			messageLimitProjectMap = new HashMap();
+		if(messageLimitProjectMap.get(project) == null)
+			messageLimitProjectMap.put(project,new Integer(0));
+	}
+	
+	public static void setMessageLimitMessageForProject(IProject project) {
+		initializeMessageLimitMessageProjectMap();
+		messageLimitMessageProjectMap.put(project, Boolean.TRUE);
+	}
+
+	private static void initializeMessageLimitMessageProjectMap() {
+		if(messageLimitMessageProjectMap == null) 
+			messageLimitMessageProjectMap = new HashMap();
+	}
+
 	/**
 	 * This method is for use by batch EJB deploy only. Only in batch mode is an infinitie number of
 	 * messages allowed.
 	 * 
 	 * Enable a project to have an infinite number of messages.
-	 * @deprecated
 	 */
-	public void setNoMessageLimit(IProject project) {/*
+	public void setNoMessageLimit(IProject project) {
 		setMessageLimit(project, WorkbenchReporter.NO_MESSAGE_LIMIT);
-	*/}
+	}
 
 	/**
 	 * This method is for use by batch EJB deploy only. Only in batch mode is an infinitie number of
@@ -1017,6 +1077,138 @@
 	}
 
 	/**
+	 * This method is for use by the validation framework only.
+	 */
+	public void setMessageLimit(IProject project, int limit) {
+		try {
+			if ((limit == WorkbenchReporter.NO_MESSAGE_LIMIT) || (limit >= 0)) {
+				ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
+				if (!prjp.doesProjectOverride()) {
+					prjp.setDoesProjectOverride(true);
+				}
+				prjp.setMaximumNumberOfMessages(limit);
+			}
+		} catch (InvocationTargetException exc) {
+			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationPlugin.getLogEntry();
+				entry.setSourceIdentifier("ValidatorManager.setMessageLimit(" + project.getName() + ", " + limit + ")"); //$NON-NLS-1$  //$NON-NLS-2$ //$NON-NLS-3$
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+
+				if (exc.getTargetException() != null) {
+					entry.setTargetException(exc);
+					logger.write(Level.SEVERE, entry);
+				}
+			}
+		}
+	}
+
+	/**
+	 * @deprecated This method should be used only by the validation framework. If a validator
+	 *             validates more than one project, then a try-catch block should wrap the
+	 *             validation of each project, and the MessageLimitException should be caught. In
+	 *             the catch(MessageLimitException) block, this method should be called so that the
+	 *             appropriate message can be added to the task list: "validation was terminated
+	 *             because the maximum number of messages was reported"
+	 */
+	public boolean checkMessageLimit(IProject project) {
+		return checkMessageLimit(project, true);
+	}
+
+	/**
+	 * @deprecated This method should be used only by the validation framework.
+	 */
+	public boolean checkMessageLimit(IProject project, Iterator iterator) {
+		return checkMessageLimit(project, false);
+	}
+
+	/**
+	 * This method is intended to be used only by the validation framework. This method should be
+	 * used by the validation operation to add/remove the "exceeded" message. Return true if the
+	 * project is under the limit of messages, false otherwise.
+	 */
+	public boolean checkMessageLimit(IProject project, boolean removeExceededMessage) {
+		if (project == null) {
+			return true;
+		}
+
+		if (!isMessageLimitExceeded(project)) {
+			if (removeExceededMessage) {
+				// If the max was exceeded before, but isn't exceeded now,
+				// remove the "exceeded" message.
+				removeMessageLimitExceeded(project);
+			}
+			return true;
+		}
+
+		// This method is called under two conditions:
+		//    1. The UI's message limit has changed, and some messages may need to be removed. The
+		// "exceeded" message is never removed.
+		//    2. The ValidationOperation has run, and the exceeded message may need to be added or
+		// removed.
+		boolean result = true;
+		try {
+			ProjectConfiguration prjp = ConfigurationManager.getManager().getProjectConfiguration(project);
+			int max = prjp.getMaximumNumberOfMessages();
+			IMarker[] markers = getValidationTasksWithoutLimitMessage(project);
+			int numExceededMarkers = markers.length - max; // Excluding the "limit was exceeded"
+			// message, this is the number of extra
+			// markers.
+			if (numExceededMarkers >= 0) { // Will be == max if last time val run, maximum reported.
+				// Remove some markers; these markers are chosen arbitrarily.
+				int index = (max >= 0) ? (max) : 0;
+				IMarker[] removeMarkers = new IMarker[numExceededMarkers];
+				System.arraycopy(markers, index, removeMarkers, 0, numExceededMarkers);
+				try {
+					ResourcesPlugin.getWorkspace().deleteMarkers(removeMarkers);
+				} catch (CoreException exc) {
+					Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+					if (logger.isLoggingLevel(Level.SEVERE)) {
+						LogEntry entry = ValidationPlugin.getLogEntry();
+						entry.setSourceID("ValidatorManager.checkMessageLimit(" + project.getName() + ")"); //$NON-NLS-1$  //$NON-NLS-2$
+						entry.setTargetException(exc);
+						logger.write(Level.SEVERE, entry);
+					}
+				}
+				result = false;
+
+				if (max > 0) {
+					// If max <= 0, user doesn't want to see anything
+					// If exceeded message doesn't exist, add it.
+					addMessageLimitExceeded(project);
+				}
+			} else if (removeExceededMessage) {
+				removeMessageLimitExceeded(project);
+			}
+		} catch (InvocationTargetException exc) {
+			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationPlugin.getLogEntry();
+				entry.setSourceIdentifier("ValidatorManager.checkMessageLimit(" + project.getName() + ")"); //$NON-NLS-1$  //$NON-NLS-2$
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+
+				if (exc.getTargetException() != null) {
+					entry.setTargetException(exc);
+					logger.write(Level.SEVERE, entry);
+				}
+			}
+			return true;
+		}
+
+		return result;
+	}
+
+	/**
+	 * @deprecated This method should be used by the validation operation to add/remove the
+	 *             "exceeded" message.
+	 */
+	public boolean checkMessageLimit(IProject project, Iterator iterator, boolean removeExceededMessage) {
+		return checkMessageLimit(project, removeExceededMessage);
+	}
+
+	/**
 	 * This message is for use only by the validation framework. If the "max messages were reported"
 	 * IMarker exists, return it. Otherwise return null.
 	 */
@@ -1072,8 +1264,6 @@
 	/**
 	 * This method should be called only by the validation framework. Return true if the message was
 	 * removed, false if the message didn't exist.
-	 * @deprecated This method should be not be used anymore as Message Limit is removed from
-	 * the framework - WTP1.5M5
 	 */
 	public boolean removeMessageLimitExceeded(IProject project) {
 		IMarker[] exceededMessage = getLimitMessage(project);
@@ -1150,4 +1340,24 @@
 		_internalOwners = tempInternalOwners;
 	}
 
+
+	/**
+	 * @deprecated This method should be used only by the validation framework.
+	 */
+	public void addMessageLimitExceeded(IProject project, Iterator iterator) {
+		addMessageLimitExceeded(project);
+	}
+
+	/**
+	 * This method should be used only by the validation framework.
+	 */
+	public void addMessageLimitExceeded(IProject project) {
+		// if the message exists already, don't add it again.
+		IMarker[] exceededMessage = getLimitMessage(project);
+		if (exceededMessage == null) {
+			IMessage message = new Message(ValidationPlugin.VALIDATION_PROP_FILE_NAME, IMessage.LOW_SEVERITY, ResourceConstants.VBF_TASK_WARN_MESSAGE_LIMIT_VAL);
+			WorkbenchReporter.addMessage(project, getMessageLimitOwner(), message);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/WorkbenchReporter.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/WorkbenchReporter.java
index 78de196..54127a9 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/WorkbenchReporter.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/operations/WorkbenchReporter.java
@@ -11,7 +11,6 @@
 package org.eclipse.wst.validation.internal.operations;
 
 import java.text.MessageFormat;
-import java.util.Arrays;
 import java.util.List;
 import java.util.logging.Level;
 
@@ -23,7 +22,6 @@
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.validation.internal.ResourceConstants;
-import org.eclipse.wst.validation.internal.ResourceHandler;
 import org.eclipse.wst.validation.internal.TaskListUtility;
 import org.eclipse.wst.validation.internal.ValidationRegistryReader;
 import org.eclipse.wst.validation.internal.ValidatorMetaData;
@@ -31,6 +29,8 @@
 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.IValidator;
+import org.eclipse.wst.validation.internal.provisional.core.MessageLimitException;
+import org.eclipse.wst.validation.internal.ResourceHandler;
 
 /**
  * IValidator instances will interact with an instance of this class, but should never cast that
@@ -126,6 +126,7 @@
 		int severity = message.getSeverity();
 		try {
 			TaskListUtility.addTask(messageOwnerId, resource, location, message.getId(), message.getText(cl), severity,markerId,targetObjectName, message.getGroupName(), message.getOffset(), message.getLength());
+			increaseMessageCountForProject(resource.getProject());;
 		} catch (CoreException exc) {
 			// Couldn't add the task to the task list for some reason...
 			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
@@ -138,7 +139,12 @@
 		}
 	}
 	
-	
+	private static void increaseMessageCountForProject(IProject project) {
+		ValidatorManager.initializeMessageLimitProjectMap(project);
+		Object integer = ValidatorManager.messageLimitProjectMap.get(project);
+		int newVal = ((Integer) integer).intValue() + 1;
+		ValidatorManager.messageLimitProjectMap.put(project,new Integer(newVal));
+	}
 
 	public static void removeAllMessages(IResource resource, IValidator validator) {
 		if (resource == null) {
@@ -302,6 +308,20 @@
 		return location;
 	}
 
+	/**
+	 * If the user is cancelling validation on the current project/resource, Add an information task
+	 * to the task list informing the user that validation has not been run on the current project.
+	 */
+	// TODO This method was made protected for the SaberReporter. Make this method private again
+	// once the framework supports IMarker.PRIORITY.
+	protected static void addTerminatedTask(IProject project, IValidator validator) throws IllegalArgumentException {
+		if ((project == null) || (validator == null)) {
+			return;
+		}
+		ValidatorManager.getManager().addMessageLimitExceeded(project);
+		ValidatorManager.setMessageLimitMessageForProject(project);
+	}
+
 	// TODO This method was made protected for the SaberReporter. Make this method private again
 	// once the framework supports IMarker.PRIORITY.
 	protected static String getTargetObjectName(IWorkbenchContext helper, IMessage message) {
@@ -509,7 +529,7 @@
 	/**
 	 * @see org.eclipse.wst.validation.internal.provisional.core.core.IReporter#addMessage(IValidator, IMessage)
 	 */
-	public void addMessage(IValidator validator, IMessage message)  {
+	public void addMessage(IValidator validator, IMessage message) throws MessageLimitException {
 		IResource resource = getMessageResource(validator, message.getTargetObject());
 		IWorkbenchContext helper = null;
 		ValidatorMetaData vmd = getVMD(validator);
@@ -558,28 +578,15 @@
 		}
 
 		ValidatorManager mgr = ValidatorManager.getManager();
-		addMessage(resource, validator.getClass(), message, getTargetObjectName(helper, message), getLocation(helper, message),getMarkerId(vmd,message));
-	}
-
-	/**
-	 * @param vmd
-	 */
-	private String getMarkerId(ValidatorMetaData vmd, IMessage message) {
-		if (vmd.getMarkerIds() != null) {
-			if (vmd.getMarkerIds().length == 1)
-				return vmd.getMarkerIds()[0];
-			else if (vmd.getMarkerIds().length > 1) {
-				String messageMarkerId = message.getMarkerId();
-				if (messageMarkerId != null && messageMarkerId.length() > 0) {
-					String firstMarkerId = vmd.getMarkerIds()[0];
-					String pluginQualifier = firstMarkerId.substring(0, firstMarkerId.lastIndexOf("."));
-					String qualifiesMessageMarkerId = pluginQualifier + "." + messageMarkerId;
-					if (Arrays.asList(vmd.getMarkerIds()).contains(qualifiesMessageMarkerId))
-						return qualifiesMessageMarkerId;
-				}
+		if (mgr.isMessageLimitExceeded(resource.getProject())) {
+			try{
+				validateMessageLimitExceeded(validator, resource);
+			}catch(MessageLimitException e){
+				//do nothing here, a message is already logged by now 
 			}
 		}
-		return null;
+
+		addMessage(resource, validator.getClass(), message, getTargetObjectName(helper, message), getLocation(helper, message),vmd.getMarkerId());
 	}
 
 	/**
@@ -600,6 +607,27 @@
 	}
 
 	/**
+	 * @param validator
+	 * @param resource
+	 */
+	private void validateMessageLimitExceeded(IValidator validator, IResource resource) {
+		try {
+			addTerminatedTask(resource.getProject(), validator);
+		} catch (IllegalArgumentException exc) {
+			// Even the IValidator is invalid. Unfortunately, can't disable the
+			// validator because it can't be found by the registry reader.
+			Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
+			if (logger.isLoggingLevel(Level.SEVERE)) {
+				LogEntry entry = ValidationPlugin.getLogEntry();
+				entry.setSourceID("WorkbenchReporter::addMessage(IValidator, IMessage)"); //$NON-NLS-1$
+				entry.setTargetException(exc);
+				logger.write(Level.SEVERE, entry);
+			}
+		}
+		throw new MessageLimitException();
+	}
+
+	/**
 	 * @see org.eclipse.wst.validation.internal.provisional.core.core.IReporter#displaySubtask(IValidator, IMessage)
 	 */
 	public void displaySubtask(IValidator validator, IMessage message) {
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/EmptySchedulingRule.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/EmptySchedulingRule.java
deleted file mode 100644
index d59249a..0000000
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/EmptySchedulingRule.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.eclipse.wst.validation.internal.core;
-
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-
-public class EmptySchedulingRule implements ISchedulingRule {
-		
-    public boolean contains(ISchedulingRule rule) 
-    {
-         return rule == this;
-    }
-
-    public boolean isConflicting(ISchedulingRule rule) {
-         return rule == this;
-    }
-    
-    
-//    public static ISchedulingRule getDefaultRule(){
-//    	IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
-//    	EmptySchedulingRule emptyRule = new EmptySchedulingRule();
-//		ISchedulingRule rule = MultiRule.combine(ruleFactory.markerRule(fileResource), emptyRule);    	
-//    }
-}
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/Message.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/Message.java
index af78d64..f54b8db 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/Message.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/Message.java
@@ -69,7 +69,6 @@
 	private int length = IMessage.OFFSET_UNSET;
 	private int offset = IMessage.OFFSET_UNSET;
 	private HashMap messageAttributes;
-	private String markerId = null;
 
 	/**
 	 * <p>
@@ -371,16 +370,4 @@
 		}
 		messageAttributes.put(attributeName,value);
 	}
-	
-	public HashMap getAttributes() {
-		return messageAttributes;
-	}
-
-	public String getMarkerId() {
-		return markerId;
-	}
-
-	public void setMarkerId(String markerId) {
-		this.markerId = markerId;
-	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidationException.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidationException.java
index e5fb20a..c4c6c76 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidationException.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidationException.java
@@ -30,8 +30,6 @@
 	private ClassLoader _loader = null;
 	private final static long serialVersionUID = -3387516993124229949L;
 
-
-	
 	/**
 	 * Constructs a new exception with a given message string. <br>
 	 * <br>
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidatorLauncher.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidatorLauncher.java
index cae3972..8325e92 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidatorLauncher.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/core/ValidatorLauncher.java
@@ -69,7 +69,7 @@
 	 * array, then a full validation should be performed. Otherwise, validation on just the files
 	 * listed in the array should performed if the validator supports incremental validation.
 	 */
-	public void start(final IValidationContext helper, final IValidator validator, final IReporter reporter) throws ValidationException {
+	public void start(IValidationContext helper, IValidator validator, IReporter reporter) throws ValidationException {
 		if ((helper == null) || (validator == null) || (reporter == null)) {
 			return;
 		}
@@ -89,7 +89,5 @@
 
 		validator.validate(helper, reporter);
 		validator.cleanup(reporter);
-
 	}
-	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IMessage.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IMessage.java
index 28de1c3..b53b851 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IMessage.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IMessage.java
@@ -11,7 +11,6 @@
 package org.eclipse.wst.validation.internal.provisional.core;
 
 
-import java.util.HashMap;
 import java.util.Locale;
 
 /**
@@ -328,20 +327,4 @@
 	 *         The object that has the problem.
 	 */
 	public void setTargetObject(Object obj);
-	
-	/**
-	 * return all the attributes of a Message object
-	 * @return
-	 */
-	public HashMap getAttributes();
-	
-	/**
-	 * return the marker id if one is set on this object when created
-	 */
-	public String getMarkerId();
-	
-	/**
-	 * set the marker id on a Message object
-	 */
-	 public void setMarkerId(String markerId);
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IReporter.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IReporter.java
index a2cd946..95f29a1 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IReporter.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IReporter.java
@@ -37,7 +37,7 @@
  * at a time. 
  * ] 
  */
-public interface IReporter {
+public interface IReporter  {
 	/**
 	 * <p>
 	 * Add a locale-independent validation message. It will be displayed later, with all of the
@@ -63,7 +63,7 @@
 	 *  to handle a MessageLimitException? Seems to me that this is a validation framework
 	 *  specific issue and that client validators shouldn't know about this at all. ]
 	 */
-	public abstract void addMessage(IValidator origin, IMessage message);
+	public abstract void addMessage(IValidator origin, IMessage message) throws MessageLimitException;
 
 	/**
 	 * <p>
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidator.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidator.java
index 366df5f..37f740e 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidator.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidator.java
@@ -28,7 +28,7 @@
  * [issue: LM - This interface will be implemented by clients. This should be considered a candidate for
  *  an abstract class. ]   
  */
-public interface IValidator{
+public interface IValidator {
 	/**
 	 * <p>
 	 * Perform any resource cleanup once validation is complete. If cleanup will take some time, the
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidatorJob.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidatorJob.java
deleted file mode 100644
index 595151b..0000000
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/IValidatorJob.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.validation.internal.provisional.core;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-
-/**
- * This is the Job interface for the validator. Validators implementing this interface are executed as
- * background jobs. 
- * Following is a  sequence of  call  <br/>
- * validator.getSchedulingRule(helper) <br/>
- * validator.validate(reporter)
- */
-
-public interface IValidatorJob extends IValidator{
-
-	public static IStatus OK_STATUS = new Status(IStatus.OK, "org.eclipse.wst.validation", 0, "OK", null); //$NON-NLS-1$ //$NON-NLS-2$
-	
-
-
-	/**
-	 * This is the method which performs the validation on the objects. <br>
-	 * <br>
-	 * <code>reporter</code> may not be null. <code>changedFiles</code>
-	 * may be null, if a full build is desired. <br>
-	 * <br>
-     *
-	 * @param reporter
-	 *            Is an instance of an IReporter interface, which is used for interaction with the
-	 *            user.
-	 * @param helper will not be null,
-	 *		loads an object.
-	 */
-	public IStatus validateInJob(IValidationContext helper, IReporter reporter) throws ValidationException;
-
-	/**
-	 * Get the scheduling rule, which the framework applies to the Validator job, 
-	 * @param helper will not be null,
-	 *		loads an object.
-	 * @return
-	 */
-	public ISchedulingRule getSchedulingRule(IValidationContext helper);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/MessageLimitException.java b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/MessageLimitException.java
index 4a9c63e..47f61fc 100644
--- a/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/MessageLimitException.java
+++ b/plugins/org.eclipse.wst.validation/validate_core/org/eclipse/wst/validation/internal/provisional/core/MessageLimitException.java
@@ -21,8 +21,6 @@
  *  I don't think there's a need for this class to be exposed to clients. If too many
  *  messages are added the framework should handle this without notifying the client
  *  validator. ]
- *  @deprecated This class is not longer used by the framework. The framework is
- *  not going to limit the number of messages displayed by a validator.
  */
 public class MessageLimitException extends RuntimeException {
 	private final static long serialVersionUID = -7034897190745766940L;
diff --git a/plugins/org.eclipse.wst.validation/xsds/validatorExtSchema.exsd b/plugins/org.eclipse.wst.validation/xsds/validatorExtSchema.exsd
index 7850369..0451696 100644
--- a/plugins/org.eclipse.wst.validation/xsds/validatorExtSchema.exsd
+++ b/plugins/org.eclipse.wst.validation/xsds/validatorExtSchema.exsd
@@ -48,7 +48,6 @@
             <element ref="dependentValidator" minOccurs="0" maxOccurs="1"/>

             <element ref="run"/>

             <element ref="markerId" minOccurs="0" maxOccurs="1"/>

-            <element ref="facet" minOccurs="0" maxOccurs="unbounded"/>

          </sequence>

          <attribute name="to" type="string">

             <annotation>

@@ -233,18 +232,6 @@
       </complexType>

    </element>

 

-   <element name="facet">

-      <complexType>

-         <attribute name="facetId" type="string">

-            <annotation>

-               <documentation>

-                  

-               </documentation>

-            </annotation>

-         </attribute>

-      </complexType>

-   </element>

-

    <annotation>

       <appInfo>

          <meta.section type="since"/>