This commit was manufactured by cvs2svn to create tag 'R1_0_1'.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.common/META-INF/MANIFEST.MF
index cc8dbe0..c7c68f5 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@
  org.eclipse.jst.jsf.common.dom,
  org.eclipse.jst.jsf.common.internal;x-friends:="org.eclipse.jst.jsf.core",
  org.eclipse.jst.jsf.common.internal.types;x-friends:="org.eclipse.jst.jsf.core,org.eclipse.jst.jsf.core.tests,org.eclipse.jst.jsf.validation.el.tests,org.eclipse.jst.jsf.designtime.tests,org.eclipse.jst.jsf.context.symbol.tests",
- org.eclipse.jst.jsf.common.internal.resource;x-friends:="org.eclipse.jst.jsf.core.tests,org.eclipse.jst.jsf.core",
+ org.eclipse.jst.jsf.common.internal.resource;x-friends:="org.eclipse.jst.jsf.core.tests",
  org.eclipse.jst.jsf.common.metadata,
  org.eclipse.jst.jsf.common.metadata.internal;x-friends:="org.eclipse.jst.jsf.metadata.tests",
  org.eclipse.jst.jsf.common.metadata.internal.impl;x-internal:=true,
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/dom/TagIdentifier.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/dom/TagIdentifier.java
index b92b393..3d675a6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/dom/TagIdentifier.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/dom/TagIdentifier.java
@@ -86,26 +86,34 @@
         
         final String uri = tagWrapper.getUri();
         
-        if (uri == null && getUri() != null)
+        if (uri == null)
         {
-            return false;
+            if (getUri() != null)
+            {
+                return false;
+            }
         }
         else if (uri.equals(getUri()))
         {
             final String tagName = tagWrapper.getTagName();
             
-            if (tagName == null && getTagName() != null)
+            if (tagName == null)
             {
-                return false;
+                if(getTagName() != null)
+                {
+                    return false;
+                }
             }
-
-            // uri and tag name must both the same for it to be the same type
-            // TODO: the ignore case thing is dependent on the type of container document
-            // Use toLower instead of equalsIgnoreCase to ensure that hashCode generates
-            // a hashCode that guarantees x.equals(y) => x.hashCode == y.hashCode
-            if (tagName.toLowerCase().equals((getTagName().toLowerCase())))
+            else
             {
-                return true;
+                // uri and tag name must both the same for it to be the same type
+                // TODO: the ignore case thing is dependent on the type of container document
+                // Use toLower instead of equalsIgnoreCase to ensure that hashCode generates
+                // a hashCode that guarantees x.equals(y) => x.hashCode == y.hashCode
+                if (tagName.toLowerCase().equals((getTagName().toLowerCase())))
+                {
+                    return true;
+                }
             }
         }
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/ITestTracker.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/ITestTracker.java
new file mode 100644
index 0000000..a3369aa
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/ITestTracker.java
@@ -0,0 +1,40 @@
+package org.eclipse.jst.jsf.common.internal;
+
+/**
+ * An injection interface that allows classes to selectively report test progress.
+ * 
+ * @author cbateman
+ *
+ */
+public interface ITestTracker 
+{
+    /**
+     * Event types
+     *
+     */
+    public enum Event
+    {
+        /**
+         * Signals that tracking should begin on the eventLabel
+         * The seqId must be repeated on the STOP_TRACKING event
+         * for the same event.
+         */
+        START_TRACKING,
+        /**
+         * Signals that tracking should stop on the named event
+         * for the seqId that was passed first in the START_TRACKING.
+         * 
+         */
+        STOP_TRACKING
+    }
+    
+    /**
+     * Fires the event of type event, a unique instance tracking seqId
+     * and a label called eventLabel.
+     * 
+     * @param event
+     * @param seqId
+     * @param eventLabel
+     */
+    void fireEvent(Event event, long seqId, String eventLabel);
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/IResourceLifecycleListener.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/IResourceLifecycleListener.java
index 16a3d44..a3ab30f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/IResourceLifecycleListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/IResourceLifecycleListener.java
@@ -22,6 +22,36 @@
      */
     public static class EventResult
     {
+        private static EventResult DEFAULT;
+
+        /**
+         * @return an event result with defaults initialized
+         */
+        public static EventResult getDefaultEventResult()
+        {
+            if (DEFAULT == null)
+            {
+                DEFAULT = new EventResult();
+            }
+            return DEFAULT;
+        }
+
+        private static EventResult DISPOSE_AFTER_EVENT;
+
+        /**
+         * @return an event result with default except dispose after
+         * is set
+         */
+        public static EventResult getDisposeAfterEventResult()
+        {
+            if (DISPOSE_AFTER_EVENT == null)
+            {
+                DISPOSE_AFTER_EVENT = new EventResult();
+                DISPOSE_AFTER_EVENT.setDisposeAfterEvent(true);
+            }
+            return DISPOSE_AFTER_EVENT;
+        }
+
         /**
          * set to true if after the current event is finished firing, the source
          * should be disposed. If self-disposal is not applicable, the flag is ignored
@@ -39,7 +69,7 @@
         /**
          * @param disposeAfterEvent
          */
-        public void setDisposeAfterEvent(boolean disposeAfterEvent) {
+        protected void setDisposeAfterEvent(boolean disposeAfterEvent) {
             _disposeAfterEvent = disposeAfterEvent;
         }
     }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/LifecycleListener.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/LifecycleListener.java
index e587857..6e99b52 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/LifecycleListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/LifecycleListener.java
@@ -8,13 +8,12 @@
 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.jst.jsf.common.JSFCommonPlugin;
+import org.eclipse.jst.jsf.common.internal.ITestTracker;
+import org.eclipse.jst.jsf.common.internal.ITestTracker.Event;
+import org.eclipse.jst.jsf.common.internal.resource.IResourceLifecycleListener.EventResult;
 import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.EventType;
 import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.ReasonType;
-import org.eclipse.jst.jsf.common.internal.resource.IResourceLifecycleListener.EventResult;
 
 /**
  * Listens to resource changes and fires lifecycle events
@@ -22,11 +21,27 @@
  * @author cbateman
  *
  */
-public class LifecycleListener implements IResourceChangeListener, IResourceDeltaVisitor
+public class LifecycleListener implements IResourceChangeListener
 {
-    private final IResource                                 _res;
+    private final static boolean                            ENABLE_TEST_TRACKING = false;
+    private static long                                     _seqId;
+    
+    private final List<IResource>                           _resources;
     private final List<IResourceLifecycleListener>          _listeners;
     private boolean                                         _isDisposed = false;
+    private ITestTracker                                    _testTracker; // == null; initialized by setter injection
+
+    /**
+     * Initialize an inactive lifecycle listener.  A workspace listener will not
+     * be installed by this constructor.  The object created using this constructor
+     * will not fire any events until addResource is called at least once to add
+     * a target resource
+     */
+    public LifecycleListener()
+    {
+        _resources = new ArrayList<IResource>();
+        _listeners = new ArrayList<IResourceLifecycleListener>(1);
+    }
 
     /**
      * Create a new lifecycle listener for the res
@@ -34,13 +49,72 @@
      */
     public LifecycleListener(IResource res)
     {
-        _res = res;
-        _listeners = new ArrayList<IResourceLifecycleListener>(1);
+        this();
+        _resources.add(res);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
+    }
+
+    /**
+     * @param resources
+     */
+    public LifecycleListener(List<IResource> resources)
+    {
+        this();
+        _resources.addAll(resources);
         ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
     }
     
 
     /**
+     * @param testTracker
+     */
+    public final void setTestTracker(ITestTracker testTracker)
+    {
+        _testTracker = testTracker;
+    }
+
+    /**
+     * @param res
+     */
+    public void addResource(final IResource res)
+    {
+        synchronized(_resources)
+        {
+            int preSize = _resources.size();
+            if (!_resources.contains(res))
+            {
+                _resources.add(res);
+            }
+            
+            // if the size of the array was 0
+            // and is now greater, make sure the listener is added
+            if (preSize == 0
+                    && _resources.size() > 0)
+            {
+                ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
+            }
+        }
+    }
+
+    /**
+     * @param res
+     */
+    public void removeResource(final IResource res)
+    {
+        synchronized(_resources)
+        {
+            _resources.remove(res);
+            
+            // if there are no longer target resources,
+            // remove the workspace listener
+            if (_resources.size() == 0)
+            {
+                ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+            }
+        }
+    }
+
+    /**
      * Release the resource change listener
      */
     public void dispose()
@@ -51,10 +125,9 @@
             // be triggered during the remainder of dispose
             ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
 
-            synchronized(_listeners)
-            {
-                _listeners.clear();
-            }
+            // don't clear the listener list currently because of 
+            // concurrent change problems.
+
             _isDisposed = true;
         }
     }
@@ -83,7 +156,7 @@
         {
             throw new IllegalStateException();
         }
-        
+
         synchronized(_listeners)
         {
             if (!_listeners.contains(listener))
@@ -117,16 +190,32 @@
 
     public void resourceChanged(IResourceChangeEvent event) 
     {
+        long seqId = _seqId++;
+        
+        if (ENABLE_TEST_TRACKING && _testTracker != null)
+        {
+            _testTracker.fireEvent(Event.START_TRACKING, seqId, "trackMethod_resourceChanged");
+        }
+
         assert(!isDisposed());
 
         switch(event.getType())
         {
             case IResourceChangeEvent.PRE_CLOSE:
             {
-                IProject proj = (IProject) event.getResource();
-                if (proj == _res || proj == _res.getProject())
+                final IProject proj = (IProject) event.getResource();
+
+                synchronized(_resources)
                 {
-                    fireLifecycleEvent(new ResourceLifecycleEvent(_res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_PROJECT_CLOSED));
+                    final List<IResource> resources = copyResourceList();
+                    for (final IResource res : resources)
+                    {
+                        if (proj == res || proj == res.getProject())
+                        {
+                            fireLifecycleEvent(
+                                    new ResourceLifecycleEvent(res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_PROJECT_CLOSED));
+                        }
+                    }
                 }
             }
             break;
@@ -135,77 +224,142 @@
             {
                 IProject proj = (IProject) event.getResource();
 
-                // if the resource being tracked is the resource being deleted,
-                // then fire a resource delete event
-                if (proj == _res)
+                synchronized(_resources)
                 {
-                    fireLifecycleEvent(new ResourceLifecycleEvent(_res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_DELETED));
-                }
-                // if the resource being tracked is a resource in the project being
-                // deleted, then fire a project deleted event
-                else if (proj == _res.getProject())
-                {
-                    fireLifecycleEvent(new ResourceLifecycleEvent(_res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_PROJECT_DELETED));
+                    final List<IResource> resources = copyResourceList();
+                    for (final IResource res : resources)
+                    {
+                        // if the resource being tracked is the resource being deleted,
+                        // then fire a resource delete event
+                        if (proj == res)
+                        {
+                            fireLifecycleEvent(new ResourceLifecycleEvent(res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_DELETED));
+                        }
+                        // if the resource being tracked is a resource in the project being
+                        // deleted, then fire a project deleted event
+                        else if (proj == res.getProject())
+                        {
+                            fireLifecycleEvent(
+                                new ResourceLifecycleEvent(res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_PROJECT_DELETED));
+                        }
+                    }
                 }
             }
             break;
 
             case IResourceChangeEvent.POST_CHANGE:
             {
-                IResourceDelta delta = event.getDelta();
-                try
+                synchronized(_resources)
                 {
-                    delta.accept(this);
-                }
-                catch (CoreException ce)
-                {
-                    // can't do anything but log
-                    JSFCommonPlugin.log(new Throwable(ce));
+                    final List<IResource> resources = copyResourceList();
+                    for (final IResource res : resources)
+                    {
+                        // only bother continuing if the resource we are tracking
+                        // is not a project since post-change events on projects 
+                        // that we care about won't occur
+                        if (res.getType() != IResource.PROJECT)
+                        {
+                            IResourceDelta delta = event.getDelta();
+                            
+//                            long seqId2 = _seqId++;
+//                            if (ENABLE_TEST_TRACKING && _testTracker != null)
+//                            {
+//                                _testTracker.fireEvent(Event.START_TRACKING, seqId2, "testFindMember");
+//                            }
+                            // only care about post change events to resources
+                            // that we are tracking
+                            delta = delta.findMember(res.getFullPath());
+
+                            if (delta != null)
+                            {
+                                visit(delta);
+                            }
+
+//                            if (ENABLE_TEST_TRACKING && _testTracker != null)
+//                            {
+//                                _testTracker.fireEvent(Event.STOP_TRACKING, seqId2, "testFindMember");
+//                            }
+                        }
+                    }
                 }
             }
             break;
+
+            default:
+            // do nothing
             // we only handle these three
         }
+
+        if (ENABLE_TEST_TRACKING && _testTracker != null)
+        {
+            _testTracker.fireEvent(Event.STOP_TRACKING, seqId, "trackMethod_resourceChanged");
+        }
+    }
+
+    private List<IResource> copyResourceList()
+    {
+        synchronized(_resources)
+        {
+            List<IResource>  resList = new ArrayList<IResource>(_resources.size());
+            resList.addAll(_resources);
+            return resList;
+        }
     }
 
     private void fireLifecycleEvent(ResourceLifecycleEvent event)
     {
+       List<IResourceLifecycleListener>                copyListeners
+           = new ArrayList(_listeners.size());
+
+        // copy the listeners to avoid concurrent modification problems
+        // if a listeners removes itself due to an event
         synchronized(_listeners)
         {
-            boolean  disposeAfter = false;
+            copyListeners.addAll(_listeners);
+        }
 
-            for (final IResourceLifecycleListener listener : _listeners)
-            {
-               EventResult result = listener.acceptEvent(event);
-               disposeAfter |= result.getDisposeAfterEvent();
-            }
+        boolean  disposeAfter = false;
 
-            if (disposeAfter)
-            {
-                dispose();
-            }
+        for (final IResourceLifecycleListener listener : copyListeners)
+        {
+           EventResult result = listener.acceptEvent(event);
+           disposeAfter |= result.getDisposeAfterEvent();
+        }
+
+        if (disposeAfter)
+        {
+            dispose();
         }
     }
 
-    public boolean visit(IResourceDelta delta) throws CoreException 
+    private void visit(IResourceDelta delta) 
     {
         assert(!isDisposed());
 
+        final IResource res = delta.getResource();
+
         switch (delta.getKind())
         {
-            case IResourceDelta.REMOVED:
+            case IResourceDelta.CHANGED:
             {
-                if (_res.equals(delta.getResource()))
+                // the contents of the file have changed
+                if ((delta.getFlags() & IResourceDelta.CONTENT) != 0)
                 {
                     fireLifecycleEvent(
                         new ResourceLifecycleEvent
-                            (_res, EventType.RESOURCE_INACCESSIBLE, ReasonType.RESOURCE_DELETED));
-                    // TODO: return false to stop child visits?
+                            (res, EventType.RESOURCE_CHANGED
+                                    , ReasonType.RESOURCE_CHANGED_CONTENTS));
                 }
             }
+            break;
+            case IResourceDelta.REMOVED:
+            {
+                fireLifecycleEvent(
+                    new ResourceLifecycleEvent
+                        (res, EventType.RESOURCE_INACCESSIBLE
+                                    , ReasonType.RESOURCE_DELETED));
+            }
+            break;
         }
-
-        // keep going on children
-        return true;
     }
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/ResourceLifecycleEvent.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/ResourceLifecycleEvent.java
index b4e6fd1..81f6ff6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/ResourceLifecycleEvent.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/resource/ResourceLifecycleEvent.java
@@ -18,7 +18,13 @@
          * Indicates that the resource is no longer accessible (as testable with
          * IResource.isAccessible).  The reasonType will indicate why.
          */
-        RESOURCE_INACCESSIBLE;
+        RESOURCE_INACCESSIBLE,
+        
+        /**
+         * Indicates that the resource being tracked has changed in some
+         * way, use ReasonType to determine specifics
+         */
+        RESOURCE_CHANGED;
     }
     
     /**
@@ -43,9 +49,13 @@
         /**
          * The resource's project was closed.  This event is pre-change
          */
-        RESOURCE_PROJECT_CLOSED
+        RESOURCE_PROJECT_CLOSED,
+        /**
+         * Occurs when the contents of a non-project resource has changed 
+         */
+        RESOURCE_CHANGED_CONTENTS
     }
-    
+
     private final IResource   _affectedResource;
     private final EventType   _eventType;
     private final ReasonType  _reasonType;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/types/TypeComparator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/types/TypeComparator.java
index 9926224..79332b9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/types/TypeComparator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/types/TypeComparator.java
@@ -42,7 +42,7 @@
         final String[] mustBeSatisfied = boxedFirstType.getSignatures();
         final String[] testSignatures = boxedSecondType.getSignatures();
         // TODO: need better user messages here
-        Diagnostic result = new BasicDiagnostic(Diagnostic.ERROR, "", 0,  //$NON-NLS-1$
+        Diagnostic result = new BasicDiagnostic(Diagnostic.WARNING, "", 0,  //$NON-NLS-1$
                 Messages.getString("TypeComparator.Expression.Doesnt.Match.Expected.Types"), null); //$NON-NLS-1$
         // now loop through each type in the first type and see
         // if there is a type satisfying it in the second
@@ -214,7 +214,7 @@
     {
         if (firstType.isRHS() && !secondType.isRHS())
         {
-            return new BasicDiagnostic(Diagnostic.ERROR, "", 0,  //$NON-NLS-1$
+            return new BasicDiagnostic(Diagnostic.WARNING, "", 0,  //$NON-NLS-1$
                             Messages.getString("TypeComparator.Expression.Not.Gettable"), null); //$NON-NLS-1$
         }
         
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/util/JDTBeanIntrospector.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/util/JDTBeanIntrospector.java
index 4bffcfe..e584233 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/util/JDTBeanIntrospector.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/util/JDTBeanIntrospector.java
@@ -15,9 +15,9 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jdt.core.Flags;
@@ -86,11 +86,10 @@
 
         final Map properties = new HashMap();
         
-        for (final Iterator it = propertiesWorkingCopy.keySet().iterator(); it.hasNext();)
+        for (Entry<String, JDTBeanProperty> entry : propertiesWorkingCopy.entrySet())
         {
-            final String key = (String) it.next();
-            JDTBeanPropertyWorkingCopy  wcopy = 
-                (JDTBeanPropertyWorkingCopy) propertiesWorkingCopy.get(key);
+            final String key = entry.getKey();
+            JDTBeanPropertyWorkingCopy  wcopy = (JDTBeanPropertyWorkingCopy) entry.getValue();
             properties.put(key, wcopy.toValueObject());
         }
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/resolver/structureddocument/internal/impl/MetadataContextResolver.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/resolver/structureddocument/internal/impl/MetadataContextResolver.java
index b623100..495589f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/resolver/structureddocument/internal/impl/MetadataContextResolver.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/resolver/structureddocument/internal/impl/MetadataContextResolver.java
@@ -63,13 +63,10 @@
             
             final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
             Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, element.getLocalName()+"/"+attribute.getLocalName(), key); //$NON-NLS-1$
-            return TraitValueHelper.getValueAsListOfStrings(trait);
-//            return
-//                CMAnnotationHelper.
-//                    getCMAttributeProperties(uri, 
-//                                             element.getLocalName(), 
-//                                             attribute.getLocalName(),
-//                                             key);
+            if( trait != null )
+            {
+            	return TraitValueHelper.getValueAsListOfStrings(trait);
+            }
             
         }
         else if (curNode instanceof Element)
@@ -80,12 +77,10 @@
             
             final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
             Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, element.getLocalName(), key);
-            return TraitValueHelper.getValueAsListOfStrings(trait);
-//            return
-//                CMAnnotationHelper.
-//                    getCMElementProperties(uri, 
-//                             element.getLocalName(), 
-//                             key);
+            if( trait != null )
+            {
+            	return TraitValueHelper.getValueAsListOfStrings(trait);
+            }
         }
         
         return Collections.EMPTY_LIST;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IBoundedListTypeDescriptorImpl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IBoundedListTypeDescriptorImpl.java
index 4dd73dc..7af15cb 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IBoundedListTypeDescriptorImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IBoundedListTypeDescriptorImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: IBoundedListTypeDescriptorImpl.java,v 1.4 2007/05/07 17:30:20 cbateman Exp $
+ * $Id: IBoundedListTypeDescriptorImpl.java,v 1.5 2007/09/24 23:23:34 cbateman Exp $
  */
 package org.eclipse.jst.jsf.context.symbol.internal.impl;
 
@@ -110,6 +110,10 @@
 
     /**
      * <!-- begin-user-doc -->
+     * @param methodName 
+     * @param methodArguments 
+     * @param symbolName 
+     * @return a symbol representing the return value of the method 
      * <!-- end-user-doc -->
      * @generated NOT
      */
@@ -139,7 +143,7 @@
                         SymbolFactory.eINSTANCE.createIPropertySymbol();
 
                     // TODO: there is a possible problem here for non-string keyed maps
-                    propSymbol.setName(symbolName.toString());
+                    propSymbol.setName(symbolName);
                     propSymbol.setReadable(true);
                     IJavaTypeDescriptor2 typeDesc = 
                         SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IJavaTypeDescriptor2Impl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IJavaTypeDescriptor2Impl.java
index a12e921..52f3693 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IJavaTypeDescriptor2Impl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/IJavaTypeDescriptor2Impl.java
@@ -402,7 +402,7 @@
             case SymbolPackage.IJAVA_TYPE_DESCRIPTOR2__BEAN_METHODS:
                 return getBeanMethods();
             case SymbolPackage.IJAVA_TYPE_DESCRIPTOR2__ARRAY_COUNT:
-                return new Integer(getArrayCount());
+                return Integer.valueOf(getArrayCount());
         }
         return super.eGet(featureID, resolve, coreType);
     }
@@ -566,15 +566,16 @@
         final JDTBeanIntrospector  introspector = 
             new JDTBeanIntrospector(getType());
         
-		final Map properties = introspector.getProperties();
+		final Map<String, JDTBeanProperty> properties = introspector.getProperties();
+		
 		final Collection calculatedProps = new ArrayList(properties.size());
         
-		for (final Iterator it = properties.keySet().iterator(); it.hasNext();)
+		for (final Iterator<Map.Entry<String, JDTBeanProperty>> it = properties.entrySet().iterator(); it.hasNext();)
 		{
-		    final String propertyName = (String) it.next();
-            final JDTBeanProperty property = 
-                (JDTBeanProperty) properties.get(propertyName);
-			
+		    Map.Entry<String, JDTBeanProperty> entry = it.next();
+		    final String propertyName = entry.getKey();
+            final JDTBeanProperty property = entry.getValue();
+
 			final IBeanPropertySymbol workingCopy =
 			    SymbolFactory.eINSTANCE.createIBeanPropertySymbol();
 			workingCopy.setName(propertyName);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolFactoryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolFactoryImpl.java
index 83453e7..75c59b8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolFactoryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolFactoryImpl.java
@@ -379,6 +379,9 @@
 
     /**
      * <!-- begin-user-doc -->
+     * @param eDataType 
+     * @param initialValue 
+     * @return the value type for the data type 
      * <!-- end-user-doc -->
      * @generated
      */
@@ -388,6 +391,9 @@
 
     /**
      * <!-- begin-user-doc -->
+     * @param eDataType 
+     * @param instanceValue 
+     * @return the string for the value type 
      * <!-- end-user-doc -->
      * @generated
      */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolPackageImpl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolPackageImpl.java
index f72c71c..707b176 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolPackageImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/SymbolPackageImpl.java
@@ -1,7 +1,7 @@
 /**
  * Copyright 2006 Oracle
  *
- * $Id: SymbolPackageImpl.java,v 1.6 2007/05/15 22:00:27 cbateman Exp $
+ * $Id: SymbolPackageImpl.java,v 1.7 2007/09/24 23:25:39 cbateman Exp $
  */
 package org.eclipse.jst.jsf.context.symbol.internal.impl;
 
@@ -260,6 +260,7 @@
      * <p>Invocation of this method will not affect any packages that have
      * already been initialized.
      * <!-- begin-user-doc -->
+     * @return the symbols package 
      * <!-- end-user-doc -->
      * @see #eNS_URI
      * @see #createPackageContents()
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java
index 8e136f1..0c2f288 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java
@@ -80,7 +80,7 @@
                         SymbolFactory.eINSTANCE.createIPropertySymbol();
 
                     // TODO: there is a possible problem here for non-string keyed maps
-                    propSymbol.setName(symbolName.toString());
+                    propSymbol.setName(symbolName);
                     propSymbol.setReadable(true);
                     
                     {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/provider/ITypeDescriptorItemProvider.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/provider/ITypeDescriptorItemProvider.java
index 600cacd..247422a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/provider/ITypeDescriptorItemProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/provider/ITypeDescriptorItemProvider.java
@@ -229,6 +229,7 @@
 	/**
      * This adds a property descriptor for the Type Parameter Signatures feature.
      * <!-- begin-user-doc -->
+     * @param object 
      * <!-- end-user-doc -->
      * @generated
      */
@@ -251,6 +252,7 @@
     /**
      * This adds a property descriptor for the Jdt Context feature.
      * <!-- begin-user-doc -->
+     * @param object 
      * <!-- end-user-doc -->
      * @generated
      */
@@ -273,6 +275,7 @@
     /**
      * This adds a property descriptor for the Enum Type feature.
      * <!-- begin-user-doc -->
+     * @param object 
      * <!-- end-user-doc -->
      * @generated
      */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
index 3eff8fd..8fd3920 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
@@ -210,7 +210,10 @@
             id="attributevalues.LengthType"/>           
       <attributeValueRuntimeType
             class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.ColorType"
-            id="attributevalues.ColorType"/>          
+            id="attributevalues.ColorType"/>
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.ResourceBundleType"
+            id="attributevalues.ResourceBundleType"/>         
    </extension>
    
    <extension
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
index 93086db..90a04c8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
@@ -38,12 +38,12 @@
 	
 	
 	/**
-	 * Constructor where implementation type was chosen to be CLIENT_SUPPLIED.  Created for backwards compatibilty when server supplied was not an option.
+	 * Constructor where implementation type was chosen to be USER_SPECIFIED.  Created for backwards compatibilty when server supplied was not an option.
 	 * @param implLibDeployFlag
 	 * @param compLibs
 	 */
 	public JSFLibraryConfigDialogSettingData(boolean implLibDeployFlag, String[] compLibs) {
-		this(IMPLEMENTATION_TYPE.CLIENT_SUPPLIED, implLibDeployFlag, compLibs);		
+		this(IMPLEMENTATION_TYPE.USER_SPECIFIED, implLibDeployFlag, compLibs);		
 	}
 	
 	/**
@@ -84,7 +84,7 @@
 	 */
 	public JSFLibraryInternalReference getJSFImplementationLibrary() {
 		if (selJSFLibImpl == null) {
-			// To instanciate a JSFLibraryReferenceUserDefined object from default impl lib as the saved library.  
+			// To instanciate a JSFLibraryReferenceUserSpecified object from default impl lib as the saved library.  
 			JSFLibraryInternalReference dftImplLib = jsfLibReg.getDefaultJSFImplementationLibrary(); 		
 			if (dftImplLib != null) {
 				selJSFLibImpl = new JSFLibraryInternalReference(dftImplLib.getLibrary(), 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
index 0e3c02a..aa4bce9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
@@ -328,11 +328,10 @@
 	 * 
 	 * @param oldId
 	 * @param newId
-	 * @param removeAndAddBecauseOfRename
 	 * @param monitor
 	 * @throws JavaModelException
 	 */
-	public static void rebindClasspathContainerEntries(String oldId, String newId, boolean removeAndAddBecauseOfRename, IProgressMonitor monitor) throws JavaModelException {
+	public static void rebindClasspathContainerEntries(String oldId, String newId, IProgressMonitor monitor) throws JavaModelException {
 		IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
 		IJavaProject[] projects= JavaCore.create(root).getJavaProjects();
 		IPath containerPath= new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID).append(newId);
@@ -340,7 +339,7 @@
 		
 		JSFLibrary lib = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getJSFLibraryByID(newId);
 		List affectedProjects= new ArrayList();
-		removeAndAddBecauseOfRename = (!oldId.equals(newId));
+		boolean removeAndAddBecauseOfRename = (!oldId.equals(newId));
 		// find all projects using the old container name...
 		for (int i= 0; i < projects.length; i++) {
 			IJavaProject project= projects[i];
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
index 6f6ff66..f1c76ad 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
@@ -112,7 +112,7 @@
 	 * 
 	 * @param library JSFLibrary instance
 	 */
-	protected void implementationFlagSet(JSFLibrary library) {
+	private void implementationFlagSet(JSFLibrary library) {
 		JSFLibraryRegistry jsfLibReg = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry();
 		if (jsfLibReg != null) {
 			JSFLibrary defaultImpl = jsfLibReg.getDefaultImplementation();
@@ -123,8 +123,8 @@
 				jsfLibReg.setDefaultImplementation(library);
 			} else if (
 					!library.isImplementation() &&
-					(defaultImpl != null && library.getID() == defaultImpl.getID())
-			) {
+					(defaultImpl != null && library.getID().equals(defaultImpl.getID())))
+			{
 				setNewDefaultImplementation();
 			}
 		}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
index ad03d47..8667868 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
@@ -89,7 +89,13 @@
     	 */
     	SERVER_SUPPLIED,
     	/**
-    	 * Client supplied
+    	 * Not supplied by the server.  The user is specifiying.
+    	 */
+    	USER_SPECIFIED,
+    	
+    	/**
+    	 * Not supplied by the server.  The user is specifiying.  Same as USER_SPECIFIED.
+    	 * @deprecated use USER_SPECIFIED
     	 */
     	CLIENT_SUPPLIED;
     	
@@ -102,8 +108,8 @@
     			return "UNKNOWN"; //$NON-NLS-1$
     		if (type ==  SERVER_SUPPLIED)
     			return "SERVER_SUPPLIED";//$NON-NLS-1$
-    		if (type == CLIENT_SUPPLIED)
-    			return "CLIENT_SUPPLIED";//$NON-NLS-1$
+    		if (type == USER_SPECIFIED || type ==CLIENT_SUPPLIED )
+    			return "USER_SPECIFIED";//$NON-NLS-1$
     		return "UNKNOWN"; //$NON-NLS-1$
     	}
     	
@@ -116,9 +122,10 @@
     			return UNKNOWN;
     		if (type.equals("SERVER_SUPPLIED"))//$NON-NLS-1$
     			return SERVER_SUPPLIED;
-    		if (type.equals("CLIENT_SUPPLIED"))//$NON-NLS-1$
-    			return CLIENT_SUPPLIED;
+    		if (type.equals("USER_SPECIFIED") || type.equals("CLIENT_SUPPLIED"))//$NON-NLS-1$// $NON-NLS-2$
+    			return USER_SPECIFIED;
     		return UNKNOWN; 
     	}
+    	
     }
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
index 1c7b7db..c778b02 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
@@ -112,7 +112,7 @@
 			}
 		}
 		else if (name.equals(IMPLEMENTATION)) {
-			if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.CLIENT_SUPPLIED) {
+			if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.USER_SPECIFIED) {
 				JSFLibraryInternalReference lib = (JSFLibraryInternalReference)getProperty(IMPLEMENTATION);
 				IStatus status = validateImpl(lib.getLibrary());
 				if (!OK_STATUS.equals(status))
@@ -227,7 +227,7 @@
 		IStatus status = null;
 		
 		JSFLibraryInternalReference ref = null;
-		if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.CLIENT_SUPPLIED) {
+		if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.USER_SPECIFIED) {
 			ref = ((JSFLibraryInternalReference)getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION));
 			if (ref != null){
 				status = checkForDupeArchiveFiles(jars, ((JSFLibraryInternalReference)getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION)).getLibrary());
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
index 99c481e..02a0b32 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
@@ -36,6 +36,7 @@
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.javaee.web.Servlet;
 import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
@@ -237,11 +238,12 @@
 						project.refreshLocal(IResource.DEPTH_INFINITE, monitor_inner);
 					}
 
-					private boolean shouldUseJ2EEConfig(final IProjectFacetVersion fv) {
-						if (fv.getVersionString().equals("1.1"))
+					private boolean shouldUseJ2EEConfig(final IProjectFacetVersion facetVersion) {
+						if (IJSFCoreConstants.FACET_VERSION_1_1.equals(facetVersion.getVersionString()))
+						{
 							return true;
-						else
-							return false;
+						}
+						return false;
 					}
 				};
 				op.run(monitor);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
index b447e72..ae17f08 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
@@ -57,8 +57,11 @@
 
 			try {
 				// Remove JSF Libraries
-				removeJSFLibaries(project, fv, monitor);
-
+				removeJSFLibraries(project, fv, monitor);
+				
+				//Remove Runtime contributed JSF classpath entries
+				removeRuntimeContributedJSFClasspathEntries(project, fv, monitor);
+				
 				// remove servlet stuff from web.xml
 				uninstallJSFReferencesFromWebApp(project, monitor);
 
@@ -78,7 +81,7 @@
 	 * @param project
 	 * @param monitor
 	 */
-	private void removeJSFLibaries(final IProject project, final IProjectFacetVersion fv, final IProgressMonitor monitor) {
+	private void removeJSFLibraries(final IProject project, final IProjectFacetVersion fv, final IProgressMonitor monitor) {
 		 final IJavaProject jproj = JavaCore.create(project);
 		 List keptEntries = new ArrayList();
 		 try {
@@ -86,9 +89,7 @@
 			  keptEntries = new ArrayList();
 			 for (int i=0;i<entries.length;i++){
 				 IClasspathEntry entry = entries[i];
-				 if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && 
-						 ! entry.getPath().segment(0)
-						 	.equals(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID))
+				 if ( !(JSFLibraryConfigurationHelper.isJSFLibraryContainer(entry)))
 					 keptEntries.add(entry);
 			 }
 		} catch (JavaModelException e) {
@@ -103,6 +104,10 @@
 			}
 		 }	
 		
+
+	}
+	
+	private void removeRuntimeContributedJSFClasspathEntries(final IProject project, final IProjectFacetVersion fv, final IProgressMonitor monitor) {
 		try {
 			ClasspathHelper.removeClasspathEntries(project, fv);				
 		} catch (CoreException e) {
@@ -143,22 +148,22 @@
 		
 	}
 
-	class RemoveJSFFromJavaEEWebAppOperation implements Runnable {
-		private WebApp webApp;
-		private Servlet servlet;
+	static class RemoveJSFFromJavaEEWebAppOperation implements Runnable {
+		private WebApp _webApp;
+		private Servlet _servlet;
 		
 		RemoveJSFFromJavaEEWebAppOperation(final WebApp webApp, final Servlet servlet){
-			this.webApp = webApp;
-			this.servlet = servlet;
+			this._webApp = webApp;
+			this._servlet = servlet;
 		}
 		
 		public void run() {
 			// remove faces url mappings
-			JSFUtils12.removeURLMappings(webApp, servlet);
+			JSFUtils12.removeURLMappings(_webApp, _servlet);
 			// remove context params
-			removeJSFContextParams(webApp, servlet);
+			removeJSFContextParams(_webApp, _servlet);
 			// remove servlet
-			removeJSFServlet(webApp, servlet);
+			removeJSFServlet(_webApp, _servlet);
 			
 		}
 		private void removeJSFContextParams(final WebApp webApp, final Servlet servlet) {
@@ -178,22 +183,22 @@
 		
 	}
 	
-	class RemoveJSFFromJ2EEWebAppOperation implements Runnable {
-		private org.eclipse.jst.j2ee.webapplication.WebApp webApp;
-		private org.eclipse.jst.j2ee.webapplication.Servlet servlet;
+	static class RemoveJSFFromJ2EEWebAppOperation implements Runnable {
+		private org.eclipse.jst.j2ee.webapplication.WebApp _webApp;
+		private org.eclipse.jst.j2ee.webapplication.Servlet _servlet;
 		
 		RemoveJSFFromJ2EEWebAppOperation(final org.eclipse.jst.j2ee.webapplication.WebApp webApp, final org.eclipse.jst.j2ee.webapplication.Servlet servlet){
-			this.webApp = webApp;
-			this.servlet = servlet;
+			this._webApp = webApp;
+			this._servlet = servlet;
 		}
 		
 		public void run() {
 			// remove faces url mappings
-			JSFUtils11.removeURLMappings(webApp, servlet);
+			JSFUtils11.removeURLMappings(_webApp, _servlet);
 			// remove context params
-			removeJSFContextParams(webApp, servlet);
+			removeJSFContextParams(_webApp, _servlet);
 			// remove servlet
-			removeJSFServlet(webApp, servlet);
+			removeJSFServlet(_webApp, _servlet);
 			
 		}
 		private void removeJSFContextParams(final org.eclipse.jst.j2ee.webapplication.WebApp webApp, final org.eclipse.jst.j2ee.webapplication.Servlet servlet) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils11.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils11.java
index 4660bc6..70ec7af 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils11.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils11.java
@@ -180,13 +180,13 @@
 					.createServletType();
 			servletType.setClassName(className);
 			servlet.setWebType(servletType);
-			servlet.setLoadOnStartup(new Integer(1));
+			servlet.setLoadOnStartup(Integer.valueOf(1));
 			// Add the servlet to the web application model
 			webApp.getServlets().add(servlet);			
 		} else {
 			// update
 			servlet.setServletName(displayName);
-			servlet.setLoadOnStartup(new Integer(1));
+			servlet.setLoadOnStartup(Integer.valueOf(1));
 		}
 		return servlet;
 	}
@@ -301,7 +301,7 @@
 				if (cp.getParamValue().indexOf(config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH)) < 0) {
 					String curVal = cp.getParamValue();
 					String val = config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH);
-					if (curVal != null || !curVal.trim().equals("")) { //$NON-NLS-1$
+					if (curVal != null && !"".equals(curVal.trim())) { //$NON-NLS-1$
 						val = curVal + ",\n" + val; //$NON-NLS-1$
 					}
 					cp.setParamValue(val);
@@ -342,7 +342,7 @@
 				if (cp.getValue().indexOf(config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH)) < 0) {
 					String curVal = cp.getValue();
 					String val = config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH);
-					if (curVal != null || !curVal.trim().equals("")) { //$NON-NLS-1$
+					if (curVal != null && !"".equals(curVal.trim())) { //$NON-NLS-1$
 						val = curVal + ",\n" + val; //$NON-NLS-1$
 					}
 					cp.setValue(val);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils12.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils12.java
index 192c141..6654f55 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils12.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFUtils12.java
@@ -141,14 +141,14 @@
 			servlet = WebFactory.eINSTANCE.createServlet();
 			servlet.setServletName(displayName);
 			servlet.setServletClass(className);
-			servlet.setLoadOnStartup(new Integer(1));
+			servlet.setLoadOnStartup(Integer.valueOf(1));
 			// Add the servlet to the web application model
 			webApp.getServlets().add(servlet);
 
 		} else {
 			// update
 			servlet.setServletName(displayName);
-			servlet.setLoadOnStartup(new Integer(1));
+			servlet.setLoadOnStartup(Integer.valueOf(1));
 		}
 		return servlet;
 	}
@@ -266,7 +266,7 @@
 				if (cp.getParamValue().indexOf(config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH)) < 0) {
 					String curVal = cp.getParamValue();
 					String val = config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH);
-					if (curVal != null || !curVal.trim().equals("")) { //$NON-NLS-1$
+					if (curVal != null && !"".equals(curVal.trim())) { //$NON-NLS-1$
 						val = curVal + ",\n" + val; //$NON-NLS-1$
 					}
 					cp.setParamValue(val);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/JARFileJSFAppConfigProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/JARFileJSFAppConfigProvider.java
index b488336..30c96a0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/JARFileJSFAppConfigProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/JARFileJSFAppConfigProvider.java
@@ -190,8 +190,8 @@
 				Resource resource = factory.createResource(URI.createFileURI(tempFile.getAbsolutePath()));
 				
 				try {
-					resource.load(Collections.EMPTY_MAP);
-					if (resource != null) {
+                    if (resource != null) {
+                        resource.load(Collections.EMPTY_MAP);
 						EList resourceContents = resource.getContents();
 						if (resourceContents != null && resourceContents.size() > 0) {
 							facesConfig = (FacesConfigType)resourceContents.get(0);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
index ee9ed62..9c77f03 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
@@ -16,7 +16,8 @@
 
 /**
  * Represents a reference to a JSF Library on a project
- *
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
  */
 public abstract interface JSFLibraryReference {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
index 7884124..aff18c0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
@@ -11,10 +11,11 @@
 package org.eclipse.jst.jsf.core.jsflibraryconfiguration;
 
 /**
- * A reference to a plugin defined JSF Library
+ * A reference to a plugin-defined JSF Library
  *
+ * <p><b>Provisional API - subject to change</b></p>
  */
-public interface JSFLibraryReferencePluginProvided extends JSFLibraryReferenceUserDefined {
+public interface JSFLibraryReferencePluginProvided extends JSFLibraryReferenceUserSpecified, JSFLibraryReferenceUserDefined {
 	/**
 	 * @return plugin id.  May return null if plugin id cannot be determined.  
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
index 50617b1..b03ece3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
@@ -11,8 +11,10 @@
 package org.eclipse.jst.jsf.core.jsflibraryconfiguration;
 
 /**
- * @author gekessle
- *
+ * A reference to a JSF Library where the implementation library is presumed to be coming from the 
+ * server
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
  */
 public interface JSFLibraryReferenceServerSupplied extends
 		JSFLibraryReference {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserDefined.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserDefined.java
index 67d8808..f5e69d3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserDefined.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserDefined.java
@@ -12,7 +12,8 @@
 
 
 /**
- * Represents an reference to a user defined JSF Library
+ * Represents an reference to a user specified JSF Library
+ * @deprecated use JSFLibraryReferenceUserSpecified 
  */
 public interface JSFLibraryReferenceUserDefined extends JSFLibraryReference {
 	//
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
similarity index 67%
rename from jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java
rename to jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
index dbd6b01..c0ba3a8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
@@ -8,16 +8,14 @@
  * Contributors:
  *     Oracle Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.classpath;
+package org.eclipse.jst.jsf.core.jsflibraryconfiguration;
+
 
 /**
- * Listeners of  {@link JSFLibraryValidationEvent}s should implement
- *
+ * Represents an reference to a user specified JSF Library
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
  */
-public interface JSFLibraryValidationListener {
-	/**
-	 * Callback 
-	 * @param e
-	 */
-	public void notifyValidation(JSFLibraryValidationEvent e);
+public interface JSFLibraryReferenceUserSpecified extends JSFLibraryReference {
+	//
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
index a0f36cf..b4e14d4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
@@ -11,8 +11,9 @@
 package org.eclipse.jst.jsf.core.jsflibraryconfiguration;
 
 /**
- * @author gekessle
+ * Enumeration of JavaServer Faces Versions
  *
+ * <p><b>Provisional API - subject to change</b></p>
  */
 public enum JSFVersion {
 	
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
index 8f371e5..7b827b0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
@@ -24,14 +24,14 @@
  */
 public class JSFLibraryReferenceFacadeFactory {
 	/**
-	 * Returns a JSFLibraryReferenceUserDefined or JSFLibraryReferencePluginProvided instance.
+	 * Returns a JSFLibraryReferenceUserSpecified (or JSFLibraryReferenceUserDefined})  or JSFLibraryReferencePluginProvided instance.
 	 * Will not create a JSFLibraryReferenceServerSupplied as there is no cp entry.   Use createServerSuppliedJSFLibRef instead.
-	 * @param cpEntry
-	 * @return an instance of JSFLibraryInternalReference.  Null will be returned if the cpEntry is not a 
+	 * @param classpathEntry
+	 * @return an instance of JSFLibraryInternalReference.  Null will be returned if the cpEntry is not a JSF Library reference.
 	 */
-	public static JSFLibraryReference create(final IClasspathEntry cpEntry) {
-		if (JSFLibraryConfigurationHelper.isJSFLibraryContainer(cpEntry)){
-			return createReference(cpEntry);
+	public static JSFLibraryReference create(final IClasspathEntry classpathEntry) {
+		if (JSFLibraryConfigurationHelper.isJSFLibraryContainer(classpathEntry)){
+			return createReference(classpathEntry);
 		}
 		return null;
 	}
@@ -45,26 +45,26 @@
 
 
 	/**
-	 * @param cpEntry
+	 * @param classpathEntry
 	 * @return {@link JSFLibraryReference}
 	 */
 	private static JSFLibraryReference createReference(
-			final IClasspathEntry cpEntry) {
+			final IClasspathEntry classpathEntry) {
 		
-		String libID = cpEntry.getPath().segment(1).toString();
+		String libID = classpathEntry.getPath().segment(1);
 		org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference libRef = JSFLibraryRegistryUtil.getInstance().getJSFLibraryReferencebyID(libID);
 		if (libRef!= null){
-			boolean isDeployed = getJ2EEModuleDependency(cpEntry);
+			boolean isDeployed = getJ2EEModuleDependency(classpathEntry);
 			if (libRef.getLibrary() != null && libRef.getLibrary() instanceof PluginProvidedJSFLibrary)
 				return new JSFLibraryReferencePluginProvidedImpl(libRef, isDeployed);
 			
-			return new JSFLibraryReferenceUserDefinedImpl(libRef, isDeployed);
+			return new JSFLibraryReferenceUserSpecifiedImpl(libRef, isDeployed);
 		}
 		return null;
 	}
 
-	private static boolean getJ2EEModuleDependency(IClasspathEntry cpEntry) {
-		IClasspathAttribute[] attrs = cpEntry.getExtraAttributes();
+	private static boolean getJ2EEModuleDependency(IClasspathEntry classpathEntry) {
+		IClasspathAttribute[] attrs = classpathEntry.getExtraAttributes();
 		for (int i=0;i<attrs.length;i++){
 			IClasspathAttribute attr = attrs[i];
 			if (attr.getName().equals(IClasspathDependencyConstants.CLASSPATH_COMPONENT_DEPENDENCY)){
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserDefinedImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
similarity index 74%
rename from jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserDefinedImpl.java
rename to jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
index 98508e0..39b9be9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserDefinedImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
@@ -12,17 +12,18 @@
 
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
 import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryReferenceUserDefined;
+import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryReferenceUserSpecified;
 
 /**
- * Implementation of a reference to a user defined JSF Library  
+ * Implementation of a reference to a user specified JSF Library  
  *
  */
-public class JSFLibraryReferenceUserDefinedImpl extends AbstractJSFLibraryReferenceImpl implements JSFLibraryReferenceUserDefined{
+public class JSFLibraryReferenceUserSpecifiedImpl extends AbstractJSFLibraryReferenceImpl implements JSFLibraryReferenceUserSpecified, JSFLibraryReferenceUserDefined{
 	/**
 	 * @param libRef of type {@link JSFLibraryInternalReference}
 	 * @param isDeployed
 	 */
-	public JSFLibraryReferenceUserDefinedImpl(
+	public JSFLibraryReferenceUserSpecifiedImpl(
 			JSFLibraryInternalReference libRef, boolean isDeployed) {
 
 		super(libRef, isDeployed);
@@ -32,7 +33,7 @@
 	 * @see org.eclipse.jst.jsf.core.jsflibraryconfiguration.internal.AbstractJSFLibraryReferenceImpl#toString()
 	 */
 	public String toString() {
-		StringBuffer buf = new StringBuffer("UserDefined: (");
+		StringBuffer buf = new StringBuffer("UserSpecified: (");
 		buf.append(super.toString());
 		buf.append(")");
 		
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/package-info.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/package-info.java
new file mode 100644
index 0000000..78bd2ce
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/package-info.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+
+/**
+ * This package is used to provide adopters with a mechanism to deal with JSF Library references.
+ * <p><b>Provisional API - subject to change</b></p>
+ */
+package org.eclipse.jst.jsf.core.jsflibraryconfiguration;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/DesignTimeApplicationManager.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/DesignTimeApplicationManager.java
index 79abedc..e2f8698 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/DesignTimeApplicationManager.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/DesignTimeApplicationManager.java
@@ -80,7 +80,7 @@
         
     private static final String   DEFAULT_METHOD_RESOLVER_ID =
         "org.eclipse.jst.jsf.core.methodresolver.default"; //$NON-NLS-1$
-    
+
     /**
      * @param project
      * @return the app manager associated with project
@@ -96,16 +96,30 @@
         {
             synchronized(project)
             {
-                Object manager = 
-                    project.getSessionProperty(SESSION_PROPERTY_KEY_PROJECT);
-    
+                DesignTimeApplicationManager manager = 
+                    (DesignTimeApplicationManager) project.getSessionProperty(SESSION_PROPERTY_KEY_PROJECT);
+
+                
                 if (manager == null)
                 {
                     manager = new DesignTimeApplicationManager(project);
                     project.setSessionProperty(SESSION_PROPERTY_KEY_PROJECT, manager);
                 }
-                
-                return (DesignTimeApplicationManager) manager;
+                // bug 147729: if project was renamed, the project param will be
+                // valid, but it will not be in sync with the one for _project
+                // unfortunately, since we are using session propertie
+                else
+                {
+                    synchronized(manager)
+                    {
+                        if (!project.equals(manager._project))
+                        {
+                            manager._project = project;
+                        }
+                    }
+                }
+
+                return manager;
             }
         }
         catch (CoreException ce)
@@ -117,7 +131,9 @@
     }
     
     // instance definition
-    private final IProject                              _project;
+    // _project must be writable in case the manager needs to be retargetted
+    // after a rename/move etc.
+    private IProject                                    _project;
     private final IExternalContextFactoryLocator        _locator;
     
     private DesignTimeApplicationManager(IProject project)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPDefaultSymbolFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPDefaultSymbolFactory.java
index 876ccfa..f53de12 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPDefaultSymbolFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPDefaultSymbolFactory.java
@@ -22,11 +22,13 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.jsf.common.internal.types.TypeConstants;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.ITaglibContextResolver;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.symbol.IBoundedJavaTypeDescriptor;
 import org.eclipse.jst.jsf.context.symbol.IComponentSymbol;
 import org.eclipse.jst.jsf.context.symbol.IMapTypeDescriptor;
 import org.eclipse.jst.jsf.context.symbol.ISymbol;
@@ -198,6 +200,15 @@
                 {
                     problems.add(new Status(IStatus.ERROR, JSFCorePlugin.PLUGIN_ID, 0,Messages.getString("JSPDefaultSymbolFactory.Problem.ErrorCreatingVariable"), ce)); //$NON-NLS-1$
                 }
+                
+                final IBoundedJavaTypeDescriptor typeDesc = SymbolFactory.eINSTANCE.createIBoundedJavaTypeDescriptor();
+                typeDesc.setTypeSignatureDelegate( TypeConstants.TYPE_JAVAOBJECT );
+                final IComponentSymbol symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
+                symbol.setName(symbolName);
+                symbol.setTypeDescriptor(typeDesc);
+                symbol.setDetailedDescription(Messages.getString("JSPDefaultSymbolFactory.Resource.bundle.map.detailedDescription")+baseNameNode.getNodeValue()+"</i>"); //$NON-NLS-1$ //$NON-NLS-2$
+                
+                return symbol;
             }
         }
         return null;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPModelProcessor.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPModelProcessor.java
index 490fc06..2dfdb9d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPModelProcessor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/JSPModelProcessor.java
@@ -18,7 +18,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.eclipse.core.resources.IFile;
@@ -28,6 +27,11 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.jsf.common.JSFCommonPlugin;
+import org.eclipse.jst.jsf.common.internal.resource.IResourceLifecycleListener;
+import org.eclipse.jst.jsf.common.internal.resource.LifecycleListener;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.EventType;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.ReasonType;
 import org.eclipse.jst.jsf.common.metadata.Trait;
 import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
 import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
@@ -46,8 +50,6 @@
 import org.eclipse.jst.jsf.designtime.context.DTFacesContext;
 import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP;
 import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.model.ModelLifecycleEvent;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLifecycleListener;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
@@ -66,97 +68,100 @@
 public class JSPModelProcessor
 {
     private final static Map<IFile, JSPModelProcessor>  RESOURCE_MAP = 
-    	new HashMap<IFile, JSPModelProcessor>();
+        new HashMap<IFile, JSPModelProcessor>();
     private final static java.util.concurrent.locks.Lock CRITICAL_SECTION =
-    	new  ReentrantLock();
-    
+        new  ReentrantLock();
+    private static LifecycleListener  LIFECYCLE_LISTENER;
+
     /**
      * @param file The file to get the model processor for  
      * @return the processor for a particular model, creating it if it does not
      *         already exist
      * @throws CoreException if an attempt to get the model associated with file
      *         fails due to reasons other than I/O problems
-     * @throws IOException if an attempt to get the model associated with file
-     *         fails due to I/O problems
      */
-    public static JSPModelProcessor get(IFile file) throws CoreException, IOException
+    public static JSPModelProcessor get(IFile file) throws CoreException
     {
-		CRITICAL_SECTION.lock();
-		try
-    	{
-			if (!file.isAccessible())
-			{
-				throw new CoreException(new Status(IStatus.ERROR, JSFCorePlugin.PLUGIN_ID, "File must be accessible"));
-			}
-			
-	        JSPModelProcessor processor = RESOURCE_MAP.get(file);
-	
-	        if (processor == null)
-	        {
-	            processor = new JSPModelProcessor(file);
-	            RESOURCE_MAP.put(file, processor);
-	            processor._refCount.set(1);
-	        }
-	        else
-	        {
-	        	// TODO: should lock refCount separately since this 
-	        	// static method does not have exclusive access
-	        	processor._refCount.incrementAndGet();
-	        }
-	        return processor;
-    	}
-    	finally
-    	{
-    		CRITICAL_SECTION.unlock();
-    	}
+        CRITICAL_SECTION.lock();
+        try
+        {
+            if (!file.isAccessible())
+            {
+                throw new CoreException(new Status(IStatus.ERROR, JSFCorePlugin.PLUGIN_ID, "File must be accessible"));
+            }
+
+            JSPModelProcessor processor = RESOURCE_MAP.get(file);
+
+            if (processor == null)
+            {
+                if (LIFECYCLE_LISTENER == null)
+                {
+                    LIFECYCLE_LISTENER = new LifecycleListener(file);
+                }
+                else
+                {
+                    LIFECYCLE_LISTENER.addResource(file);
+                }
+
+                processor = new JSPModelProcessor(file,LIFECYCLE_LISTENER);
+                RESOURCE_MAP.put(file, processor);
+            }
+
+            return processor;
+        }
+        finally
+        {
+            CRITICAL_SECTION.unlock();
+        }
     }
 
     /**
      * Disposes of the JSPModelProcessor associated with model
      * @param file the model processor to be disposed
      */
-    public static void dispose(IFile file)
+    private static void dispose(IFile file)
     {
-    	CRITICAL_SECTION.lock();
+        CRITICAL_SECTION.lock();
         try
         {
-        	JSPModelProcessor processor = RESOURCE_MAP.get(file);
-        	
-        	if (processor != null)
-        	{
-	            int refCount = processor._refCount.decrementAndGet();
-	
-	            // if either the ref count drops below zero 
-	            // or the file is no longer accessible, the dispose
-	            if (refCount < 1 
-	            		|| !file.isAccessible())
-	            {
-	                RESOURCE_MAP.remove(file);
-	                
-	                if (!processor.isDisposed())
-	                {
-	                	processor.dispose();
-	                }
-	            }
-        	}
+            JSPModelProcessor processor = RESOURCE_MAP.get(file);
+
+            if (processor != null)
+            {
+                RESOURCE_MAP.remove(file);
+                
+                if (!processor.isDisposed())
+                {
+                    processor.dispose();
+                    LIFECYCLE_LISTENER.removeResource(file);
+                }
+                
+            }
+
+            if (RESOURCE_MAP.size() == 0)
+            {
+                // if we no longer have any resources being tracked,
+                // then dispose the lifecycle listener
+                LIFECYCLE_LISTENER.dispose();
+                LIFECYCLE_LISTENER = null;
+            }
         }
         finally
         {
-        	CRITICAL_SECTION.unlock();
+            CRITICAL_SECTION.unlock();
         }
     }
 
     private final IFile             _file;
-    private final DOMModelForJSP    _model;
-    private final ModelListener     _modelListener;
-    private boolean                 isDisposed;
+    private LifecycleListener       _lifecycleListener;
+    private IResourceLifecycleListener  _resListener;
+    private boolean                 _isDisposed;
     private Map<Object, ISymbol>    _requestMap;
     private Map<Object, ISymbol>    _sessionMap;
     private Map<Object, ISymbol>    _applicationMap;
     private Map<Object, ISymbol>    _noneMap;
     private long                    _lastModificationStamp;
-    private AtomicInteger			_refCount = new AtomicInteger(0);
-    
+
     // used to avoid infinite recursion in refresh.  Must never be null
     private final CountingMutex     _lastModificationStampMonitor = new CountingMutex();
 
@@ -165,18 +170,51 @@
      * 
      * @param model
      */
-    private JSPModelProcessor(final IFile  file) throws CoreException, IOException
+    private JSPModelProcessor(final IFile  file, final LifecycleListener lifecycleListener)
     {
-        _model = getModelForFile(file);
-        _modelListener = new ModelListener();
-        _model.addModelLifecycleListener(_modelListener);
+        //_model = getModelForFile(file);
+        //_modelListener = new ModelListener();
+        //_model.addModelLifecycleListener(_modelListener);
         _file = file;
-        // a negative value guarantees that refresh(false) will 
+        _lifecycleListener = lifecycleListener;
+        _resListener = new IResourceLifecycleListener()
+        {
+            public EventResult acceptEvent(ResourceLifecycleEvent event)
+            {
+                final EventResult result = EventResult.getDefaultEventResult();
+
+                // not interested
+                if (!_file.equals(event.getAffectedResource()))
+                {
+                    return result; 
+                }
+
+                if (event.getEventType() == EventType.RESOURCE_INACCESSIBLE)
+                {
+                    dispose(_file);
+                }
+                else if (event.getEventType() == EventType.RESOURCE_CHANGED)
+                {
+                    // if the file has changed contents on disk, then
+                    // invoke an unforced refresh of the JSP file
+                    if (event.getReasonType() == ReasonType.RESOURCE_CHANGED_CONTENTS)
+                    {
+                        refresh(false);
+                    }
+                }
+
+                return result;
+            }
+        };
+
+        lifecycleListener.addListener(_resListener);
+        
+        // a negative value guarantees that refresh(false) will
         // force a refresh on the first run
         _lastModificationStamp = -1;
     }
 
-    private DOMModelForJSP getModelForFile(final IFile file) 
+    private DOMModelForJSP getModelForFile(final IFile file)
             throws CoreException, IOException
     {
         final IModelManager modelManager = 
@@ -195,16 +233,22 @@
             model.releaseFromRead();
         }
         
-        throw new CoreException(new Status(IStatus.ERROR, "org.eclipse.blah", 0,  //$NON-NLS-1$
-                        "model not of expected type", new Throwable())); //$NON-NLS-1$
+        throw new CoreException
+            (new Status(IStatus.ERROR
+                        , "org.eclipse.blah"
+                        , 0  //$NON-NLS-1$
+                        ,"model not of expected type"
+                        , new Throwable())); //$NON-NLS-1$
     }
 
     private void dispose()
     {
-        if (!isDisposed)
+        if (!_isDisposed)
         {
-        	_model.releaseFromRead();
-            _model.removeModelLifecycleListener(_modelListener);
+            // ensure the resource listener is disposed
+            _lifecycleListener.removeListener(_resListener);
+            _resListener = null;
+            _lifecycleListener = null;
 
             if (_requestMap != null)
             {
@@ -230,9 +274,8 @@
                 _noneMap = null;
             }
 
-            _refCount.set(0);
             // mark as disposed
-            isDisposed = true;
+            _isDisposed = true;
         }
     }
 
@@ -240,19 +283,21 @@
      * @return true if this model processor has been disposed.  Disposed
      * processors should not be used.
      */
-    boolean isDisposed()
+    public boolean isDisposed()
     {
-        return isDisposed;
+        return _isDisposed;
     }
 
     /**
-     * Mainly for test and diagnostic purposes.
-     * 
-     * @return the current number of undisposed references to this model processor
+     * If isModelDirty() returns true, then it means that a call
+     * to refresh(false) will trigger a reprocess of the underlying document.
+     *
+     * @return true if the underlying JSP model is considered to be dirty
      */
-    public int getRefCount()
+    public boolean isModelDirty()
     {
-    	return _refCount.get();
+        final long currentModificationStamp = _file.getModificationStamp();
+        return _lastModificationStamp != currentModificationStamp;
     }
     
     /**
@@ -260,9 +305,15 @@
      * @param forceRefresh -- if true, always refreshes, if false,
      * then it only refreshes if the file's modification has changed
      * since the last refresh
+     * @throws IllegalStateException if isDisposed() == true
      */
     public void refresh(final boolean forceRefresh)
     {
+        if (isDisposed())
+        {
+            throw new IllegalStateException("Processor is disposed for file: "+_file.toString());
+        }
+
         synchronized(_lastModificationStampMonitor)
         {
             if (_lastModificationStampMonitor.isSignalled())
@@ -273,49 +324,58 @@
                 return;
             }
 
+            DOMModelForJSP  model = null;
             try
             {
                 _lastModificationStampMonitor.setSignalled(true);
                 
-                long currentModificationStamp;
-                
-                currentModificationStamp = _file.getModificationStamp();
-    
+
                 // only refresh if forced or if the underlying file has changed
                 // since the last run
                 if (forceRefresh
-                        || _lastModificationStamp != currentModificationStamp)
+                        || isModelDirty())
                 {
-                    refreshInternal();
+                    model = getModelForFile(_file);
+                    refreshInternal(model);
                     _lastModificationStamp = _file.getModificationStamp();
                 }
             }
+            catch (CoreException e) {
+               JSFCorePlugin.log(new RuntimeException(e), "Error refreshing internal model");
+            } catch (IOException e) {
+                JSFCorePlugin.log(new RuntimeException(e), "Error refreshing internal model");
+            }
             // make sure that we unsignal the monitor before releasing the
             // mutex
             finally
             {
+                if (model != null)
+                {
+                    model.releaseFromRead();
+                }
                 _lastModificationStampMonitor.setSignalled(false);
             }
         }
     }
     
-    private void refreshInternal()
+    private void refreshInternal(DOMModelForJSP model)
     {
         final IStructuredDocumentContext context = 
-            IStructuredDocumentContextFactory.INSTANCE.getContext(_model.getStructuredDocument(), -1);
+            IStructuredDocumentContextFactory.INSTANCE.getContext(model.getStructuredDocument(), -1);
         final ITaglibContextResolver taglibResolver =
             IStructuredDocumentContextResolverFactory.INSTANCE.getTaglibContextResolver(context);
-        IDOMDocument document = _model.getDocument();
+        IDOMDocument document = model.getDocument();
         getApplicationMap().clear();
         getRequestMap().clear();
         getSessionMap().clear();
         //long curTime = System.currentTimeMillis();
-        recurseChildNodes(document.getChildNodes(), taglibResolver);
+        recurseChildNodes(model, document.getChildNodes(), taglibResolver);
         //long netTime = System.currentTimeMillis() - curTime;
         //System.out.println("Net time to recurse document: "+netTime);
     }
-   
-    private void recurseChildNodes(final NodeList nodes, 
+
+    private void recurseChildNodes(final DOMModelForJSP model,
+                                   final NodeList nodes, 
                                     final ITaglibContextResolver taglibResolver)
     {
         for (int i = 0; i < nodes.getLength(); i++)
@@ -323,12 +383,12 @@
             final Node child = nodes.item(i);
             
             // process attributes at this node before recursing
-            processAttributes(child, taglibResolver);
-            recurseChildNodes(child.getChildNodes(), taglibResolver);
+            processAttributes(model, child, taglibResolver);
+            recurseChildNodes(model, child.getChildNodes(), taglibResolver);
         }
     }
-    
-    private void processAttributes(final Node node, 
+
+    private void processAttributes(final DOMModelForJSP model, final Node node, 
                                     final ITaglibContextResolver taglibResolver)
     {
         if (taglibResolver.hasTag(node))
@@ -341,13 +401,13 @@
             {
                 final Node attribute = node.getAttributes().item(i);
 
-                processSymbolContrib(uri, elementName, attribute);
+                processSymbolContrib(model, uri, elementName, attribute);
                 processSetsLocale(uri, elementName, attribute);
             }
         }
     }
 
-    private void processSymbolContrib(final String uri, final String elementName, Node attribute)
+    private void processSymbolContrib(final DOMModelForJSP model, final String uri, final String elementName, Node attribute)
     {
         final SymbolContribAggregator  aggregator =
             SymbolContribAggregator.
@@ -367,7 +427,7 @@
                     factory.create(symbolName, 
                                   ISymbolConstants.SYMBOL_SCOPE_REQUEST, //TODO:
                                   IStructuredDocumentContextFactory.INSTANCE.
-                                      getContext(_model.getStructuredDocument(), 
+                                      getContext(model.getStructuredDocument(), 
                                                  attribute),
                                   problems);
 
@@ -398,7 +458,7 @@
         {
             DesignTimeApplicationManager  dtAppMgr =
                 DesignTimeApplicationManager.getInstance(_file.getProject());
-            
+
             DTFacesContext facesContext = dtAppMgr.getFacesContext(_file);
             
             if (facesContext != null)
@@ -421,14 +481,14 @@
         {
             return Collections.unmodifiableMap(map);
         }
-        
+
         return Collections.EMPTY_MAP;
     }
-    
+
     private void updateMap(ISymbol symbol, String  scopeName)
     {
         final Map<Object, ISymbol> map = getMapForScopeInternal(scopeName);
-        
+
         if (map != null)
         {
             map.put(symbol.getName(), symbol);
@@ -504,32 +564,6 @@
     }
 
     /**
-     * Listens to the JSP model and reacts to changes
-     * @author cbateman
-     *
-     */
-    private class ModelListener implements IModelLifecycleListener
-    {
-        public void processPostModelEvent(ModelLifecycleEvent event)
-        {
-            // TODO: figure this event structure out seems like it is possibly
-            // broken...
-            if (((event.getType() & ModelLifecycleEvent.MODEL_DIRTY_STATE) != 0
-                    && !_model.isDirty()) // if the dirty state changed as now not dirty, then we have a save
-                )//|| (event.getType() & ModelLifecycleEvent.MODEL_REINITIALIZED) != 0)
-            {
-                // refresh if modified on disk
-                refresh(false);
-            }
-        }
-
-        public void processPreModelEvent(ModelLifecycleEvent arg0) {
-            // do nothing
-        }
-    }
-    
-    
-    /**
      * Aggregates the sets-locale meta-data
      * 
      * @author cbateman
@@ -541,8 +575,8 @@
         static LocaleSetAggregator create(IProject project, 
                                               final String uri, 
                                               final String elementName, final String attributeName)
-        {            
-        	final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
+        {
+            final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
             Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, elementName+"/"+attributeName, SETS_LOCALE); //$NON-NLS-1$
 
             if (TraitValueHelper.getValueAsBoolean(trait))
@@ -573,12 +607,12 @@
          * @return a new instance only if attributeName is a symbol contributor
          */
         static SymbolContribAggregator create(final IProject project, 
-        									  final String uri, 
+                                              final String uri, 
                                               final String elementName, 
                                               final String attributeName)
         {
-        	final String entityKey = elementName+"/"+attributeName; //$NON-NLS-1$
-        	final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
+            final String entityKey = elementName+"/"+attributeName; //$NON-NLS-1$
+            final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
             Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, entityKey, CONTRIBUTES_VALUE_BINDING);
 
             boolean contribsValueBindings = TraitValueHelper.getValueAsBoolean(trait);
@@ -593,8 +627,8 @@
 
                 if (scope != null && !scope.equals("")) //$NON-NLS-1$
                 {
-                	trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, entityKey, VALUE_BINDING_SYMBOL_FACTORY);
-                	symbolFactory = TraitValueHelper.getValueAsString(trait);                      
+                    trait = TaglibDomainMetaDataQueryHelper.getTrait(mdContext, entityKey, VALUE_BINDING_SYMBOL_FACTORY);
+                    symbolFactory = TraitValueHelper.getValueAsString(trait);                      
                 }
 
                 return new SymbolContribAggregator(scope, symbolFactory);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/StartupHandler.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/StartupHandler.java
index 05c442e..b3b4377 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/StartupHandler.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/jsp/StartupHandler.java
@@ -39,8 +39,8 @@
 public class StartupHandler implements IStartup 
 {
     private final JSPEditorListener    _partListener = new JSPEditorListener();
-    
-	public void earlyStartup() 
+
+    public void earlyStartup() 
     {
         PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable()
         {
@@ -67,73 +67,69 @@
                     }
                     windows[i].getPartService().addPartListener(_partListener);
                 }
-                
+
                 // TODO: register with all windows?
                 PlatformUI.getWorkbench().addWindowListener(new IWindowListener()
                 {
-        
                     public void windowActivated(IWorkbenchWindow window) {
                         // do nothing
                     }
-        
+
                     public void windowDeactivated(IWorkbenchWindow window) {
                         // do nothing
                     }
-        
+
                     public void windowClosed(IWorkbenchWindow window) {
                         window.getPartService().removePartListener(_partListener);
                     }
-        
+
                     public void windowOpened(IWorkbenchWindow window) {
                         window.getPartService().addPartListener(_partListener);
                     }
-                });    
+                });
             }
         });
-	}
+    }
 
-	private static class JSPEditorListener implements IPartListener2
-	{
-		private JSPModelProcessor 		_processor;
-		
-		public void partActivated(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
+    private static class JSPEditorListener implements IPartListener2
+    {
+        private JSPModelProcessor         _processor;
 
-		public void partBroughtToTop(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
+        public void partActivated(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
+
+        public void partBroughtToTop(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
 
         public void partClosed(IWorkbenchPartReference partRef) {
-            if (partRef instanceof IEditorReference)
-            {
-                releaseJSPModelListener((IEditorReference) partRef);
-            }
-		}
+            // do nothing
+        }
 
-		public void partDeactivated(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
+        public void partDeactivated(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
 
-		public void partOpened(IWorkbenchPartReference partRef) {
+        public void partOpened(IWorkbenchPartReference partRef) {
             if (isValidJSPEditor(partRef))
             {
                 setJSPModelListener((IEditorReference)partRef);
             }
-		}
+        }
 
-		public void partHidden(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
+        public void partHidden(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
 
-		public void partVisible(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
+        public void partVisible(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
 
-		public void partInputChanged(IWorkbenchPartReference partRef) {
-			// do nothing
-		}
-       
+        public void partInputChanged(IWorkbenchPartReference partRef) {
+            // do nothing
+        }
+
         private boolean isJSPEditor(IEditorReference editorRef)
         {
             IFile file = getIFile(editorRef);
@@ -145,7 +141,7 @@
 
             return false;
         }
-        
+
         /**
          * @param editorRef
          * @return true if the editor is editing the JSP content type and
@@ -159,18 +155,17 @@
                     JSFAppConfigUtils.isValidJSFProject(file.getProject()) &&
                         isJSPEditor(editorRef);
         }
-        
-        
+
         boolean isValidJSPEditor(IWorkbenchPartReference partRef)
         {
             if (partRef instanceof IEditorReference)
             {
                 return isValidJSPEditor((IEditorReference)partRef);
             }
-            
+
             return false;
         }
-        
+
         void setJSPModelListener(IEditorReference editorRef)
         {
             IFile file = getIFile(editorRef);
@@ -189,17 +184,7 @@
                 }
             }
         }
-        
-        void releaseJSPModelListener(IEditorReference editorRef)
-        {
-        	IFile file = getIFile(editorRef);
-        	
-            if (file != null)
-            {
-                JSPModelProcessor.dispose(file);
-            }
-        }
-        
+
         IFile getIFile(IEditorReference editorRef)
         {
             try
@@ -216,8 +201,8 @@
             {
                 JSFCorePlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JSFCorePlugin.PLUGIN_ID, 0, "Error acquiring editor input",excp)); //$NON-NLS-1$
             }
-            
+
             return null;
         }
-	}
+    }
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/JSPTagVariableSymbolSourceProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/JSPTagVariableSymbolSourceProvider.java
index 994dc7d..ca109f7 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/JSPTagVariableSymbolSourceProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/JSPTagVariableSymbolSourceProvider.java
@@ -86,13 +86,6 @@
                 JSFCorePlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JSFCorePlugin.PLUGIN_ID, 0, "Error acquiring model processor",e)); //$NON-NLS-1$
                 // fall-through to empty symbol array
             }
-            finally
-            {
-            	if (modelProcessor != null)
-            	{
-            		JSPModelProcessor.dispose(fileContext);
-            	}
-            }
         }
         
         return ISymbol.EMPTY_SYMBOL_ARRAY;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/ResourceBundleMapSource.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/ResourceBundleMapSource.java
index 975c257..4e7d66c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/ResourceBundleMapSource.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/symbols/ResourceBundleMapSource.java
@@ -22,10 +22,15 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.QualifiedName;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.jsf.common.internal.resource.IResourceLifecycleListener;
+import org.eclipse.jst.jsf.common.internal.resource.LifecycleListener;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.EventType;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil;
 
@@ -42,13 +47,18 @@
     {
         if (project != null)
         {
-            return (IFile) getBundleFileCache(project).get(baseName);
+            Map bundleFileCache = getBundleFileCache(project);
+            
+            if (bundleFileCache != null)
+            {
+                return (IFile) bundleFileCache.get(baseName);
+            }
         }
 
         return null;
     }
 
-    private static Map getBundleFileCache(IProject project)
+    private static Map getBundleFileCache(final IProject project)
     {
         synchronized(project)
         {
@@ -62,6 +72,34 @@
                 if (bundleFileCache == null)
                 {
                     bundleFileCache = new HashMap();
+                    LifecycleListener listener = new LifecycleListener(project);
+                    listener.addListener(new IResourceLifecycleListener()
+                    {
+                        public EventResult acceptEvent(ResourceLifecycleEvent event) 
+                        {
+                            EventResult result = EventResult.getDefaultEventResult();
+                            
+                            if (event.getEventType() == EventType.RESOURCE_INACCESSIBLE)
+                            {
+                                try
+                                {
+                                    Map bundleCache = 
+                                        (Map) project.getSessionProperty(SESSION_PROPERTY_KEY_PROJECT);
+                                    bundleCache.clear();
+                                    project.setSessionProperty(SESSION_PROPERTY_KEY_PROJECT, null);
+                                }
+                                catch (CoreException ce)
+                                {
+                                    JSFCorePlugin.log("Error clearing bundle file cache", ce); //$NON-NLS-1$
+                                }
+                                result = EventResult.getDisposeAfterEventResult();
+                            }
+                            
+                            return result;
+                        }
+                    }
+                    );
+
                     project.setSessionProperty(SESSION_PROPERTY_KEY_PROJECT, bundleFileCache);
                 }
             }
@@ -78,7 +116,8 @@
                                                    final String  resourcePathStr)
                       throws IOException, CoreException
     {
-        IStorage storage = LoadBundleUtil.getLoadBundleResource(project, resourcePathStr);
+        IStorage storage = 
+            LoadBundleUtil.getLoadBundleResource(project, resourcePathStr);
 
         IFile bundleRes = null;
 
@@ -119,14 +158,17 @@
     {
         if (_bundleFile.isAccessible())
         {
-            if (_resourceBundle == null
+            if (_resourceBundle == null  // doesn't exist yet
+                    // exists but ws is out of sync
+                    || !_bundleFile.isSynchronized(IResource.DEPTH_ZERO)
+                    // exists but user has changed in workspace
                     || _bundleFile.getModificationStamp() 
                             != _lastModificationStamp)
             {
                 InputStream  bundleStream = null;
                 try
                 {
-                	// force refresh if out of sync
+                    // force refresh if out of sync
                     bundleStream = _bundleFile.getContents(true);
                     _resourceBundle = new Properties();
                     _resourceBundle.load(bundleStream);
@@ -161,9 +203,15 @@
             // bundle no longer exists so remove it
             Map bundleFileCache = getBundleFileCache(_bundleFile.getProject());
 
-            if (bundleFileCache.containsKey(_resourcePathStr))
+            if (bundleFileCache != null &&
+                    bundleFileCache.containsKey(_resourcePathStr))
             {
                 bundleFileCache.remove(_resourcePathStr);
+            }
+            // in either case, clear the bundle entry
+            if (_resourceBundle != null)
+            {
+                _resourceBundle.clear();
                 _resourceBundle = null;
             }
         }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/symbols/DefaultBeanSymbolSourceProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/symbols/DefaultBeanSymbolSourceProvider.java
index 29614fd..7f5d0c7 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/symbols/DefaultBeanSymbolSourceProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/symbols/DefaultBeanSymbolSourceProvider.java
@@ -22,6 +22,7 @@
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jst.jsf.context.symbol.ERuntimeSource;
 import org.eclipse.jst.jsf.context.symbol.IBeanInstanceSymbol;
 import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2;
@@ -138,17 +139,18 @@
                     {
                         IJavaProject javaProject = JavaCore.create(iProject);
                         IType type = javaProject.findType(bean.getManagedBeanClass().getTextContent());
-                        
+
                         // don't bother setting a type descriptor if we
                         // can't find a type
                         if (type != null)
                         {
-                            IJavaTypeDescriptor2 javaTypeDescriptor = SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
+                            IJavaTypeDescriptor2 javaTypeDescriptor = 
+                                SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
                             javaTypeDescriptor.setType(type);
                             symbol.setJavaTypeDescriptor(javaTypeDescriptor);
                         }
                     }
-                    catch (Exception t)
+                    catch (JavaModelException t)
                     {
                         // do nothing; skip type info for this bean
                     }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
index 0bd700d..916b277 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
@@ -25,6 +25,8 @@
  * Meta-data processing type representing a color.
  * A color is defined as in html spec http://www.w3.org/TR/html4/types.html#type-color
  * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
  * @author ykats
  */
 
@@ -34,7 +36,7 @@
 	 * List of standard colors
 	 * See http://www.w3.org/TR/html4/types.html#type-color
 	 */
-	public static String[] COLORS = {"Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple",
+	private final static String[] COLORS = {"Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple",
 				"Fuchsia", "Green", "Lime", "Olive", "Yellow", "Navy", "Blue", "Teal","Aqua"};
 		//if ordering changes, must change RGB[] ordering
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigConverterIDFeatures.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigConverterIDFeatures.java
index bcad219..79b1c5b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigConverterIDFeatures.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigConverterIDFeatures.java
@@ -11,6 +11,7 @@
  ********************************************************************************/
 package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -110,9 +111,13 @@
 	 * 
 	 * Converter ID Sorter - incomplete
 	 */
-	class ConverterSorter implements Comparator {
+	private static class ConverterSorter implements Comparator, Serializable {
+	    /**
+         * 
+         */
+        private static final long serialVersionUID = 5255291244511783735L;
 
-		public int compare(Object o1, Object o2) {		
+        public int compare(Object o1, Object o2) {		
 			//TODO
 			return 0;
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigValidatorIDFeatures.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigValidatorIDFeatures.java
index b402817..2a2711a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigValidatorIDFeatures.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/FacesConfigValidatorIDFeatures.java
@@ -11,6 +11,7 @@
  ********************************************************************************/
 package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -109,9 +110,13 @@
 	/**
 	 * Validator id sorter - incomplete
 	 */
-	class ValidatorSorter implements Comparator {
+	private static class ValidatorSorter implements Comparator, Serializable {
+		/**
+         * 
+         */
+        private static final long serialVersionUID = -398026037193914126L;
 
-		public int compare(Object o1, Object o2) {		
+        public int compare(Object o1, Object o2) {		
 			//TODO
 			return 0;
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/JavaClassType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/JavaClassType.java
index 48c37d0..912c818 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/JavaClassType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/JavaClassType.java
@@ -410,7 +410,7 @@
 		return false;
 	}
 	
-	private class Searcher extends SearchRequestor{
+	private static class Searcher extends SearchRequestor{
 		private List results = new ArrayList();
 		public void acceptSearchMatch(SearchMatch match) throws CoreException {
 			results.add(match);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
index 43bcbaa..bad4083 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
@@ -28,7 +28,7 @@
 		if (value == null) return true;
 		String aValue = stripPercentIfPresent(value);		
 		try {
-			int anInt = Integer.valueOf(aValue);
+			int anInt = Integer.valueOf(aValue).intValue();
 			if (anInt < 0)
 				addNewValidationMessage(INVALID_LENGTH);
 			
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
index 8eb89f0..9e58827 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
@@ -131,4 +131,9 @@
      * see messages.properties
      */	
 	public static String ColorType_invalid_color;
+	
+	/**
+	 * see messages.properties
+	 */
+	public static String Bundle_not_found_rb;
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java
new file mode 100644
index 0000000..08ead16
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java
@@ -0,0 +1,68 @@
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
+import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil;
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidationMessage;
+import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
+
+/**
+ * Meta-data processing type representing a path to resource bundle on classpath
+ * Patch by Vadim Dmitriev.  See https://bugs.eclipse.org/bugs/show_bug.cgi?id=203307.
+ * 
+ * @author Vadim Dmitriev
+ */
+public class ResourceBundleType extends AbstractRootTypeDescriptor implements IValidValues 
+{
+	private IProject _project 								= null;
+	private final List<IValidationMessage> _validationMsgs 	= new ArrayList<IValidationMessage>(1);
+	
+	private IProject getProject()
+	{
+		if( _project == null )
+		{
+            final IWorkspaceContextResolver wkspaceResolver =
+                IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver( getStructuredDocumentContext() );
+            _project = wkspaceResolver.getProject();
+		}
+		
+		return _project;
+	}
+
+	public boolean isValidValue( String value )
+	{
+		try
+		{
+			IProject project = getProject();
+			IStorage bundle = LoadBundleUtil.getLoadBundleResource( project , value );
+			if( bundle != null )
+			{
+				return true;
+			}
+		}
+		catch (CoreException e) 
+		{
+			//error message is generated later
+		}
+		
+		final String message = 
+			MessageFormat.format(Messages.Bundle_not_found_rb, value); 
+		_validationMsgs.add(new ValidationMessage(message, "", IStatus.ERROR));
+		return false;
+	}
+	
+	public List getValidationMessages() 
+	{
+		return _validationMsgs;
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
index eb00fe6..533eca5 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
@@ -35,3 +35,4 @@
 JavaClassType_invalid_type=Value for type attribute must be valid Java class and not empty.
 JavaClassType_not_found=Java type not found, not instantiable, or does implement correct interfaces or extend correct superclass.
 ColorType_invalid_color=Value is not a valid color.
+Bundle_not_found_rb=Resource bundle {0} cannot be found on classpath 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/ComponentValidatorVisitor.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/ComponentValidatorVisitor.java
index 0743670..c661023 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/ComponentValidatorVisitor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/ComponentValidatorVisitor.java
@@ -115,7 +115,7 @@
                     String nameValue = name.getTextContent().trim();
 
                     // TODO: isJavaIdentifierStart seems broken...
-                    if (Character.isJavaIdentifierStart(nameValue.charAt(0)));
+                    if (Character.isJavaIdentifierStart(nameValue.charAt(0)))
                     {
                         isValid = true;
                         for (int i = 1; i < nameValue.length(); i++)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/AddArithmeticBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/AddArithmeticBinaryOperator.java
index 56d1457..e1975f0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/AddArithmeticBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/AddArithmeticBinaryOperator.java
@@ -32,11 +32,11 @@
 
     protected Long doRealOperation(Long firstArg, Long secondArg) 
     {
-        return new Long(firstArg.longValue() + secondArg.longValue());
+        return Long.valueOf(firstArg.longValue() + secondArg.longValue());
     }
 
     protected Double doRealOperation(Double firstArg, Double secondArg) {
-        return new Double(firstArg.doubleValue() + secondArg.doubleValue());
+        return Double.valueOf(firstArg.doubleValue() + secondArg.doubleValue());
     }
 
     protected BigDecimal doRealOperation(BigDecimal firstArg,
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/DivArithmeticBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/DivArithmeticBinaryOperator.java
index 34c63c4..b1d3059 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/DivArithmeticBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/DivArithmeticBinaryOperator.java
@@ -252,7 +252,7 @@
     }
 
     protected Long doRealOperation(Long firstArg, Long secondArg) {
-        return new Long(firstArg.longValue() / secondArg.longValue());
+        return Long.valueOf(firstArg.longValue() / secondArg.longValue());
     }
 
     protected String getOperatorName() {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/EqualityRelationalBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/EqualityRelationalBinaryOperator.java
index de6881b..fcfca03 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/EqualityRelationalBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/EqualityRelationalBinaryOperator.java
@@ -197,7 +197,8 @@
         if (TypeCoercer.typeIsNull(firstArg.getSignature())
                 || TypeCoercer.typeIsNull(secondArg.getSignature()))
         {
-            final boolean result = doRealOperation(new Integer(4), null);
+            // TODO: this is a strange thing to do...
+            final boolean result = doRealOperation(Integer.valueOf(4), null);
             return _diagnosticFactory.create_BINARY_OP_EQUALITY_COMP_WITH_NULL_ALWAYS_EVAL_SAME(Boolean.toString(result));
         }
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/ModArithmeticBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/ModArithmeticBinaryOperator.java
index ed8e394..ba4765b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/ModArithmeticBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/ModArithmeticBinaryOperator.java
@@ -41,7 +41,6 @@
 
     ModArithmeticBinaryOperator(DiagnosticFactory diagnosticFactory) {
         super(diagnosticFactory);
-        // TODO Auto-generated constructor stub
     }
 
     public ValueType performOperation(ValueType firstArg, ValueType secondArg) 
@@ -225,8 +224,8 @@
             if (firstValue != null && secondValue != null)
             {
                 return new IntegerLiteralType(
-                        doRealOperation(new Long(firstValue.longValue()), 
-                                        new Long(secondValue.longValue())).longValue());
+                        doRealOperation(Long.valueOf(firstValue.longValue()), 
+                                        Long.valueOf(secondValue.longValue())).longValue());
             }
 
             // if we get to here, the coercion is valid, so a Long will be
@@ -365,7 +364,7 @@
     }
     
     protected Long doRealOperation(Long firstArg, Long secondArg) {
-        return new Long(firstArg.longValue() % secondArg.longValue());
+        return Long.valueOf(firstArg.longValue() % secondArg.longValue());
      }
 
      protected Double doRealOperation(Double firstArg, Double secondArg) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/MultiplyArithmeticBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/MultiplyArithmeticBinaryOperator.java
index 01f8d9a..7076622 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/MultiplyArithmeticBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/MultiplyArithmeticBinaryOperator.java
@@ -35,7 +35,7 @@
 
     protected Long doRealOperation(Long firstArg, Long secondArg) 
     {
-        return new Long(firstArg.longValue() * secondArg.longValue());
+        return Long.valueOf(firstArg.longValue() * secondArg.longValue());
     }
 
     protected Double doRealOperation(Double firstArg, Double secondArg) 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/SubtractArithmeticBinaryOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/SubtractArithmeticBinaryOperator.java
index bc1b97b..2879cec 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/SubtractArithmeticBinaryOperator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/SubtractArithmeticBinaryOperator.java
@@ -34,7 +34,7 @@
 
     protected Long doRealOperation(Long firstArg, Long secondArg) 
     {
-        return new Long(firstArg.longValue() - secondArg.longValue());
+        return Long.valueOf(firstArg.longValue() - secondArg.longValue());
     }
 
     protected Double doRealOperation(Double firstArg, Double secondArg) 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
index 0a7ae08..7f6eda8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
@@ -192,6 +192,13 @@
 				<value>org.eclipse.jst.jsf.designtime.core.loadBundle</value>
 			</trait>
 		</entity>
+		<entity id="basename">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.ResourceBundleType
+				</value>
+			</trait>
+		</entity>
 	</entity>
 	<entity id="param" type="tag"><include-entity-group id="common-core-attributes"/></entity>
 	<entity id="selectItem" type="tag">
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/.classpath b/jsf/plugins/org.eclipse.jst.jsf.ui/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/.cvsignore b/jsf/plugins/org.eclipse.jst.jsf.ui/.cvsignore
deleted file mode 100644
index 117a1fe..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-bin
-@dot*
-temp.folder
-build.xml
-javaCompiler...args
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/.project b/jsf/plugins/org.eclipse.jst.jsf.ui/.project
deleted file mode 100644
index 45f845d..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jst.jsf.ui</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/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.core.resources.prefs b/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index c8e6e65..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Sun May 27 16:04:34 EDT 2007
-eclipse.preferences.version=1
-encoding//src/org/eclipse/jst/jsf/ui/internal/messages.properties=8859_1
-encoding/<project>=ISO-8859-1
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.core.prefs b/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 123186c..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Tue Apr 10 09:49:41 PDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=warning
-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=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-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=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-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.nullReference=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=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=ignore
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=error
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-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=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.ui.prefs b/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 39df095..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 10 09:49:42 PDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index f66d5bd..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,33 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %plugin.name
-Bundle-SymbolicName: org.eclipse.jst.jsf.ui; singleton:=true
-Bundle-Version: 1.0.1.qualifier
-Bundle-Activator: org.eclipse.jst.jsf.ui.internal.JSFUiPlugin
-Bundle-Vendor: %plugin.provider
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.jst.jsf.core;bundle-version="[1.0.0,1.1.0)",
- org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,1.3.0)",
- org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.jst.jsf.common;bundle-version="[1.0.0,1.1.0)",
- org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jst.jsp.core;bundle-version="[1.1.0,1.3.0)",
- org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.wst.xml.ui;bundle-version="[1.0.100,1.1.0)",
- org.eclipse.wst.sse.ui;bundle-version="[1.0.101,1.1.0)",
- org.eclipse.emf.ecore;bundle-version="[2.2.0,2.4.0)",
- org.eclipse.jst.jsp.ui;bundle-version="[1.1.0,1.3.0)",
- org.eclipse.ui.forms
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.jst.jsf.ui.internal;x-friends:="org.eclipse.jst.jsf.ui.tests",
- org.eclipse.jst.jsf.ui.internal.classpath;x-friends:="org.eclipse.jst.jsf.ui.tests",
- org.eclipse.jst.jsf.ui.internal.contentassist;x-internal:=true,
- org.eclipse.jst.jsf.ui.internal.contentassist.el;x-internal:=true,
- org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;x-internal:=true,
- org.eclipse.jst.jsf.ui.internal.project.facet;x-friends:="org.eclipse.jst.jsf.ui.tests",
- org.eclipse.jst.jsf.ui.internal.validation;x-internal:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/about.html b/jsf/plugins/org.eclipse.jst.jsf.ui/about.html
deleted file mode 100644
index 04d4782..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/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>June 06, 2007</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>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/build.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/build.properties
deleted file mode 100644
index 8d7f590..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 Oracle Corporation.
-# 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:
-#    Gerry Kessler - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               icons/,\
-               plugin.properties,\
-               about.html
-javacSource=1.5
-javacTarget=1.5
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/attr_val.gif b/jsf/plugins/org.eclipse.jst.jsf.ui/icons/attr_val.gif
deleted file mode 100644
index d4cb425..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/attr_val.gif
+++ /dev/null
Binary files differ
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/full/wizban/addlibrary_wiz.gif b/jsf/plugins/org.eclipse.jst.jsf.ui/icons/full/wizban/addlibrary_wiz.gif
deleted file mode 100644
index 128c9d1..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/full/wizban/addlibrary_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_l_obj.gif b/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_l_obj.gif
deleted file mode 100644
index 6cb185c..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_l_obj.gif
+++ /dev/null
Binary files differ
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_obj.gif b/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_obj.gif
deleted file mode 100644
index 2fa1d77..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/jar_obj.gif
+++ /dev/null
Binary files differ
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/library_obj.gif b/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/library_obj.gif
deleted file mode 100644
index cb55e33..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/icons/obj16/library_obj.gif
+++ /dev/null
Binary files differ
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties
deleted file mode 100644
index b3c2077..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 Oracle Corporation.
-# 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:
-#    Gerry Kessler - initial API and implementation
-###############################################################################
-plugin.name=JavaServer Faces Tools - UI
-plugin.provider=Eclipse.org
-
-jsf.library.reference=JSF Library References
-jsf.library.wizard.name=JSF Library
-
-preferencepage.jsflibraries.name=Libraries
-preferencepage.jsfvalidation.name=Validation
-preferencepage.jsf.name=JavaServer Faces Tools
-
-newwizard.jsf.category.name=JavaServer Faces
-newwizard.jsflibrary.name=JSF Library
-newwizard.jsflibrary.description=Create a new JSF Library
-classpathContainerPage.name.0 = JSF Libraries
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml
deleted file mode 100644
index aa03746..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-  <!-- JSF Project Facet --> 
-  <extension
-        point="org.eclipse.ui.preferencePages">
-     <page
-           category="org.eclipse.wst.sse.ui.internal.provisional.preferences/org.eclipse.jst.jsf.ui.JSFRootPage"
-           class="org.eclipse.jst.jsf.ui.internal.classpath.JSFLibrariesPreferencePage"
-           id="org.eclipse.jst.jsf.ui.jsfLibraryPage"
-           name="%preferencepage.jsflibraries.name"/>
-     <page
-           category="org.eclipse.wst.sse.ui.internal.provisional.preferences/org.eclipse.jst.jsf.ui.JSFRootPage"
-           class="org.eclipse.jst.jsf.ui.internal.validation.JSFValidationPreferencePage"
-           id="org.eclipse.jst.jsf.ui.JSFValidationPage"
-           name="%preferencepage.jsfvalidation.name"/>
-     <page
-           category="org.eclipse.wst.sse.ui.internal.provisional.preferences"
-           class="org.eclipse.jst.jsf.ui.internal.preferences.EmptyRootPreferencePage"
-           id="org.eclipse.jst.jsf.ui.JSFRootPage"
-           name="%preferencepage.jsf.name">
-     </page>
-  </extension>
-  <extension
-        point="org.eclipse.ui.newWizards">
-     <category
-           id="org.eclipse.jst.jsf.ui.jsfcategory"
-           name="%newwizard.jsf.category.name"/>
-     <wizard
-           canFinishEarly="false"
-           category="org.eclipse.jst.jsf.ui.jsfcategory"
-           class="org.eclipse.jst.jsf.ui.internal.classpath.JSFLibraryWizard"
-           hasPages="true"
-           icon="icons/obj16/library_obj.gif"
-           id="org.eclipse.jst.jsf.ui.jsfLibraryWizard"
-           name="%newwizard.jsflibrary.name"
-           preferredPerspectives="org.eclipse.jst.j2ee.J2EEPerspective">
-        <description>
-           %newwizard.jsflibrary.description
-        </description>
-     </wizard>
-  </extension>
-  <extension 
-        point="org.eclipse.wst.common.project.facet.ui.wizardPages">
-     <wizard-pages action="jst.jsf.v11.install">
-        <page class="org.eclipse.jst.jsf.ui.internal.project.facet.JSFFacetInstallPage"/>
-     </wizard-pages>
-     <wizard-pages action="jst.jsf.v12.install">
-        <page class="org.eclipse.jst.jsf.ui.internal.project.facet.JSFFacetInstallPage"/>
-     </wizard-pages>
-  </extension>  
-  
-  <extension point="org.eclipse.wst.sse.ui.editorConfiguration"> 
-	<sourceViewerConfiguration
-            class="org.eclipse.jst.jsp.ui.StructuredTextViewerConfigurationJSP"
-            target="org.eclipse.jst.jsp.core.jspsource"/>
-                <provisionalConfiguration 
-                        type="contentassistprocessor" 
-                        class="org.eclipse.jst.jsf.ui.internal.contentassist.el.JSFELContentAssistProcessor" 
-                        target="org.eclipse.jst.jsp.SCRIPT.JSP_EL2" /> 
-				<provisionalConfiguration 
-                        type="contentassistprocessor" 
-                        class="org.eclipse.jst.jsf.ui.internal.contentassist.JSFContentAssistProcessor" 
-                        target="org.eclipse.jst.jsp.JSP_DEFAULT,org.eclipse.jst.jsp.JSP_DIRECTIVE" />                         
-    </extension> 
-    <extension point="org.eclipse.wst.sse.ui.sourcevalidation">
-		<validator
-			scope="total"
-			class="org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator"
-			id="org.eclipse.jst.jsf.validation.JSFAttributeValueValidator">
-			<contentTypeIdentifier
-				id="org.eclipse.jst.jsp.core.jspsource">
-				<partitionType id="org.eclipse.jst.jsp.DEFAULT_JSP">
-				</partitionType>
-				<partitionType id="org.eclipse.jst.jsp.JSP_DIRECTIVE">
-				</partitionType>
-				<partitionType id="org.eclipse.jst.jsp.SCRIPT.JSP_EL2">
-				</partitionType>
-			</contentTypeIdentifier>
-		</validator>
-	</extension>
-    <extension
-          point="org.eclipse.jdt.ui.classpathContainerPage">
-       <classpathContainerPage
-             class="org.eclipse.jst.jsf.ui.internal.classpath.JSFLibraryContainerWizardPage"
-             id="org.eclipse.jst.jsf.core.internal.jsflibrarycontainer"
-             name="%classpathContainerPage.name.0">
-       </classpathContainerPage>
-    </extension>
-    
-</plugin>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/JSFUiPlugin.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/JSFUiPlugin.java
deleted file mode 100644
index 8b043ad..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/JSFUiPlugin.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *    Ian Trimble - added logging methods
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * JSF UI plugin.
- * 
- * @author Gerry Kessler - Oracle, Ian Trimble - Oracle
- */
-public class JSFUiPlugin extends AbstractUIPlugin {
-
-	/**
-	 * The plugin id
-	 */
-	public static final String PLUGIN_ID = "org.eclipse.jst.jsf.ui"; //$NON-NLS-1$
-	//The shared instance.
-	private static JSFUiPlugin plugin;
-    private static ResourceBundle   _resourceBundle;
-    
-	/**
-	 * The constructor.
-	 */
-	public JSFUiPlugin() {
-		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.
-	 * @return the default plugin instance
-	 */
-	public static JSFUiPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns an image descriptor for the image file at the given
-	 * plug-in relative path.
-	 *
-	 * @param path the path
-	 * @return the image descriptor
-	 */
-	public static ImageDescriptor getImageDescriptor(String path) {
-		path = "icons/" + path; //$NON-NLS-1$
-		return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.jst.jsf.ui", path); //$NON-NLS-1$
-	}
-
-    /**
-     * Returns the string from the plugin's resource bundle, or 'key' if not
-     * found.
-     * @param key the key used to look up the string
-     * @return the resource string if one is found matching key or key is returned if it is not
-     */
-    public static String getResourceString(String key) {
-        ResourceBundle bundle = getDefault().getResourceBundle();
-        try {
-            return (bundle != null) ? bundle.getString(key) : key;
-        } catch (MissingResourceException e) {
-            return key;
-        }
-    }
-    
-    /**
-     * @return the resource bundle
-     */
-    public ResourceBundle getResourceBundle()
-    {
-        return _resourceBundle;
-    }
-    
-	/**
-	 * @return the plugin id
-	 */
-	public String getPluginID() {
-		return PLUGIN_ID;
-	}
-
-	/**
-	 * Logs using the default ILog implementation provided by getLog().
-	 * 
-	 * @param severity Severity (IStatus constant) of log entry
-	 * @param message Human-readable message describing log entry
-	 * @param ex Throwable instance (can be null)
-	 */
-	public static void log(int severity, String message, Throwable ex) {
-		getDefault().getLog().log(new Status(severity, PLUGIN_ID, IStatus.OK, message, ex));
-	}
-
-	/**
-	 * Logs using the default ILog implementation provided by getLog().
-	 * 
-	 * @param severity Severity (IStatus constant) of log entry
-	 * @param message Human-readable message describing log entry
-	 */
-	public static void log(int severity, String message) {
-		log(severity, message, null);
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java
deleted file mode 100644
index 147df36..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *    Ian Trimble - changed to work correctly with org.eclipse.osgi.util.NLS
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * String resource handler.
- * 
- * @author Gerry Kessler - Oracle, Ian Trimble - Oracle
- */
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.jst.jsf.ui.internal.messages"; //$NON-NLS-1$
-
-	/**
-	 * see messages.properties
-	 */
-	public static String JSFFacetInstallPage_JSFLibraryLabel0;
-
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_title;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_description;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_JSFImplLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_Add1;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_Add2;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_DeployJarsLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_JSFConfigLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_JSFServletNameLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_JSFServletClassNameLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_JSFURLMappingLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_PatternDialogTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_PatternDialogDesc;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_Remove;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_PatternEmptyMsg;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_PatternSpecifiedMsg;
-    /**
-     * see messages.properties
-     */
-	public static String JSFFacetInstallPage_ErrorNoWebAppDataModel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_DEFAULT_IMPL_DESC;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_DefinedJSFLibraries;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_IMPL_DESC;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_MISSING_DESC;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_New;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_Edit;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_Remove;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_CannotRemovePluginProvidedTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_CannotRemovePluginProvidedMessage;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_MakeDefault;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_Description;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_CannotModifyPluginProvidedTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibrariesPreferencePage_CannotModifyPluginProvidedMessage;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_Add;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_AddAll;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_ComponentLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_DeployButtonLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_DeployJAR;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_ImplementationLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_NewComponentLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_NewImplButtonTooltip;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_NewImplementationLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_NullProject;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_Remove;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_RemoveAll;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_ServerSuppliedButtonLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_ServerSuppliedButtonTooltip;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_TH_Deploy;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_TH_LibraryName;
-
-
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_PageName;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_Title;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_Description;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_WarningNoJSFFacet;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_JSFLibraries;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_Add;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_Edit;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_ErrorInitializing;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_ImplAlreadyPresent;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_SelectOneImpl;
-    /**
-     * see messages.properties
-     */    
-	public static String JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText;
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryContainerWizardPage_EditLibrary_DescriptionText;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryPropertyPage_No_JSF_Facet_Installed;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryPropertyPage_No_JSF_Implementation_Lib_Selected;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_DESCRIPTION;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_IMPLS_ONLY_DESC;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_CreateImplementation;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_CreateJSFLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_EditJSFLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_JSFLibrary;
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryWizard_JSFLibraryWizard_DontShowThisAgain_CheckBoxLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_LibraryName;
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryWizard_V1JSFLibrary_DialogMessage;
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryWizard_V1JSFLibrary_DialogTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_VersionSupported;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_LibraryJars;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_IsJSFImplementation;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_DeployJars;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_Add;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_Remove;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_ExtJarFileDialogTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_ValidateNoJars;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_ValidateNoLibraryName;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_ValidateExistingLibraryName;
-
-    /**
-     * Title set on the el validation preference panel
-     */
-    public static String JSFValidationPreferencePage_ELPrefPanel_Title;
-    /**
-     * Title set on the checkbox that enables/disables build validation for EL
-     */
-    public static String JSFValidationPreferencePage_ELPrefPanel_BuildValidationCheckBoxTitle;
-    /**
-     * Title set on the checkbox that enables/disables incremental (as you type)
-     * validation for EL
-     */
-    public static String JSFValidationPreferencePage_ELPrefPanel_IncrementalValidationCheckBoxTitle;
-
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryEditControl_ImplVersion_UNKNOWN;
-
-    /**
-     * see messages.properties
-     */
-    public static String JSFPreferences_RootPage_Description;
-    
-    static {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java
deleted file mode 100644
index 772939f..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.PluginProvidedJSFLibrary;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.SWT;
-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;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchWizard;
-
-/**
- * Provides a preference page for JSF Libraries.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFLibrariesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
-	private static final String IMPL_DESC = Messages.JSFLibrariesPreferencePage_IMPL_DESC;
-	private static final String DEFAULT_IMPL_DESC = Messages.JSFLibrariesPreferencePage_DEFAULT_IMPL_DESC;
-	private static final String MISSING = Messages.JSFLibrariesPreferencePage_MISSING_DESC;
-	
-	private IWorkbench wb;
-
-	private TreeViewer tv;
-	private TreeViewerAdapter tvAdapter;
-	private TreeLabelProvider tvLabelProvider;
-	
-	private Composite btnComp;
-
-	private Button btnNew;
-	private Button btnEdit;
-	private Button btnDelete;
-	private Button btnMakeDefaultImpl;
-	
-	protected Control createContents(Composite parent) {
-		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new GridLayout(2, false)); 
-		c.setLayoutData(new GridData(GridData.FILL_BOTH));				
-		
-		Label lblLibs = new Label(c, SWT.NONE);
-		lblLibs.setText(Messages.JSFLibrariesPreferencePage_DefinedJSFLibraries);
-		GridData gd1 = new GridData();
-		gd1.horizontalSpan = 2;
-		lblLibs.setLayoutData(gd1);
-		
-		tv = new TreeViewer(c, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-		tvAdapter = new TreeViewerAdapter();
-		tvLabelProvider = new TreeLabelProvider();
-		tv.setContentProvider(tvAdapter);
-		tv.setLabelProvider(tvLabelProvider);
-		tv.addSelectionChangedListener(tvAdapter);
-		tv.addDoubleClickListener(tvAdapter);
-		tv.setComparator(tvAdapter);
-		tv.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
-		tv.setInput(getJSFLibraries());
-		
-		createButtons(c);
-		
-		return c;
-	}
-
-	private void createButtons(Composite c){		
-		btnComp = new Composite(c, SWT.NONE);
-		GridLayout gl1 = new GridLayout(1, false);
-		gl1.marginHeight = 0;
-		gl1.marginWidth = 0;
-		btnComp.setLayout(gl1);
-		btnComp.setLayoutData(new GridData(GridData.END | GridData.VERTICAL_ALIGN_FILL));
-		
-		btnNew = new Button(btnComp, SWT.NONE);
-		btnNew.setText(Messages.JSFLibrariesPreferencePage_New);
-		btnNew.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnNew.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				openJSFLibraryEditDialog(null);
-			}
-		});
-		
-		btnEdit = new Button(btnComp, SWT.NONE);
-		btnEdit.setText(Messages.JSFLibrariesPreferencePage_Edit);
-		btnEdit.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnEdit.setEnabled(false);
-		btnEdit.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				TreeItem[] element = tv.getTree().getSelection();
-				if (element != null){
-					openJSFLibraryEditDialog(element[0]);
-				}
-
-			}
-		});
-		
-		btnDelete = new Button(btnComp, SWT.NONE);
-		btnDelete.setText(Messages.JSFLibrariesPreferencePage_Remove);
-		btnDelete.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnDelete.setEnabled(false);
-		btnDelete.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				boolean modified = false;
-				if (tv.getSelection() instanceof StructuredSelection){
-					StructuredSelection objs = (StructuredSelection)tv.getSelection();
-					if (objs != null){
-						Iterator it = objs.iterator();
-						while (it.hasNext()){
-							JSFLibrary lib = (JSFLibrary)it.next();
-							if (lib instanceof PluginProvidedJSFLibrary)
-								MessageDialog.openInformation(
-										getShell(),
-										Messages.JSFLibrariesPreferencePage_CannotRemovePluginProvidedTitle,
-										Messages.JSFLibrariesPreferencePage_CannotRemovePluginProvidedMessage);
-	
-							else {
-								JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().removeJSFLibrary(lib);
-								modified = true;
-							}
-						}
-						if (modified){
-							JSFLibraryRegistryUtil.getInstance().saveJSFLibraryRegistry();
-							tv.refresh();
-						}
-					}
-				}
-			}
-		});
-		
-		btnMakeDefaultImpl = new Button(btnComp, SWT.NONE);
-		btnMakeDefaultImpl.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_END));
-		btnMakeDefaultImpl.setText(Messages.JSFLibrariesPreferencePage_MakeDefault);
-		btnMakeDefaultImpl.setVisible(false);
-		btnMakeDefaultImpl.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (tv.getSelection() instanceof StructuredSelection){
-					StructuredSelection objs = (StructuredSelection)tv.getSelection();
-					if (objs != null){
-						if (objs.getFirstElement() instanceof JSFLibrary){
-							 JSFLibrary lib = (JSFLibrary)objs.getFirstElement();
-							 JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().setDefaultImplementation(lib);							 							
-						 }
-						 JSFLibraryRegistryUtil.getInstance().saveJSFLibraryRegistry();
-						 tv.refresh();
-					}
-				}
-			}
-		});
-		
-	}
-	private Object getJSFLibraries() {
-		return JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getAllJSFLibraries();
-	}
-
-	public void init(IWorkbench workbench) {
-		wb = workbench;
-		setDescription(Messages.JSFLibrariesPreferencePage_Description);
-		noDefaultAndApplyButton();
-	}
-	
-	/**
-	 * Getter created only for JUnit tests.  Should not be used otherwise.
-	 * @return the TreeViewer of JSF Libraries
-	 */
-	public Viewer getLibraryViewer(){
-		return tv;
-	}
-	
-	private class TreeViewerAdapter extends ViewerComparator implements ITreeContentProvider, ISelectionChangedListener, IDoubleClickListener {
-		private final Object[] NO_ELEMENTS= new Object[0];
-
-		// ------- ITreeContentProvider Interface ------------
-
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			// will never happen
-		}
-
-		public void dispose() {
-            // do nothing
-		}
-
-		public Object[] getElements(Object obj) {
-			return ((List)getJSFLibraries()).toArray();
-		}
-		
-		public Object[] getChildren(Object element) {
-			if (element instanceof JSFLibrary) {
-				return ((JSFLibrary)element).getArchiveFiles().toArray();
-			}
-			return NO_ELEMENTS;
-		}
-
-		public Object getParent(Object element) {
-//			if (elements instanceof JSFLibrary) {
-//				return tvAdapter.getParent(tv.getTree().class, element);
-//			}
-			return null;//fParentElement;
-		}
-
-		public boolean hasChildren(Object element) {
-			if (element instanceof JSFLibrary) {
-				return true;
-			}
-			return false;
-		}		
-
-		// ------- ISelectionChangedListener Interface ------------
-
-		public void selectionChanged(SelectionChangedEvent event) {
-			doListSelected(event);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-		 */
-		public void doubleClick(DoubleClickEvent event) {
-			doDoubleClick(event);
-		}		
-		
-		public int compare(Viewer viewer, Object e1, Object e2) {
-			if (e1 instanceof JSFLibrary && e2 instanceof JSFLibrary){
-				JSFLibrary lib1 = (JSFLibrary)e1;
-				JSFLibrary lib2 = (JSFLibrary)e2;
-				
-				return getComparator().compare(lib1.getLabel(), lib2.getLabel());
-			}
-			return super.compare(viewer, e1, e2);
-		}
-		
-		
-	}
-
-	/**
-	 * Respond to a list selection event
-	 * 
-	 * @param event
-	 */
-	protected void doListSelected(SelectionChangedEvent event) {
-		updateButtonState();
-	}
-
-	/**
-	 * Respond to a double click event by opening the edit dialog
-	 * @param event
-	 */
-	protected void doDoubleClick(DoubleClickEvent event) {
-		openJSFLibraryEditDialog(tv.getTree().getSelection()[0]);
-	}
-	
-	private void updateButtonState() {
-		btnEdit.setEnabled(tv.getTree().getSelectionCount() == 1);	
-		if (tv.getTree().getSelectionCount() == 1 && tv.getTree().getSelection()[0].getData() instanceof JSFLibrary){	
-			btnDelete.setEnabled(true);
-			btnMakeDefaultImpl.setVisible(false);
-			JSFLibrary lib = (JSFLibrary)tv.getTree().getSelection()[0].getData();
-			btnMakeDefaultImpl.setVisible(lib.isImplementation());
-		} else {
-			btnDelete.setEnabled(false);
-			btnMakeDefaultImpl.setVisible(false);
-		}
-	}
-	
-	private void openJSFLibraryEditDialog(Object element) {
-		if (isPluginProvidedJSFLibrary(element)){
-			MessageDialog.openInformation(
-					getShell(),
-					Messages.JSFLibrariesPreferencePage_CannotModifyPluginProvidedTitle,
-					Messages.JSFLibrariesPreferencePage_CannotModifyPluginProvidedMessage);
-			return;
-		}
-		IWorkbenchWizard wizard = new JSFLibraryWizard();
-		wizard.init(wb, getStructuredElement(element));
-		WizardDialog dialog = new WizardDialog(wb.getActiveWorkbenchWindow().getShell(), wizard);
-		int ret = dialog.open();
-		if (ret == Window.OK){
-			tv.refresh();
-		}
-	}
-	
-	private IStructuredSelection getStructuredElement(Object element) {
-		if (element instanceof TreeItem){
-			Object item = ((TreeItem)element).getData();
-			if (item instanceof ArchiveFile){
-				JSFLibrary parent = ((ArchiveFile)item).getJSFLibrary();
-				return new StructuredSelection(parent);
-			} else if (item instanceof JSFLibrary) {
-				return new StructuredSelection(item);
-			}
-		}
-		return null;
-	}
-
-	private boolean isPluginProvidedJSFLibrary(Object treeElement){
-		if (treeElement instanceof TreeItem){
-			Object item = ((TreeItem)treeElement).getData();
-			if (item instanceof PluginProvidedJSFLibrary){
-				return true;
-			} else if (item instanceof ArchiveFile) {
-				return (((ArchiveFile)item).getJSFLibrary() instanceof PluginProvidedJSFLibrary);
-			}
-		}
-		return false;
-	}
-
-	private class TreeLabelProvider implements ILabelProvider {
-		Image libImg;
-		Image jarImg;
-
-		TreeLabelProvider(){
-			if (jarImg == null){
-				ImageDescriptor jarImgDesc = JSFUiPlugin.getImageDescriptor("obj16/jar_obj.gif"); //$NON-NLS-1$
-				jarImg = jarImgDesc.createImage();
-			}
-			if (libImg == null){
-				ImageDescriptor libImgDesc = JSFUiPlugin.getImageDescriptor("obj16/library_obj.gif"); //$NON-NLS-1$
-				libImg = libImgDesc.createImage();
-			}
-		}
-		
-		public Image getImage(Object element) {
-			if (element instanceof JSFLibrary)
-            {
-				return libImg;
-            }
-			return jarImg;
-		}
-
-		public String getText(Object element) {
-			StringBuffer labelBuf = new StringBuffer();
-			if (element instanceof JSFLibrary) {
-				JSFLibrary lib = (JSFLibrary)element;
-				labelBuf.append(lib.getLabel());
-				if (lib.isImplementation()) {
-					if (lib == JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getDefaultImplementation()) {
-						labelBuf.append(DEFAULT_IMPL_DESC);
-					} else {
-						labelBuf.append(IMPL_DESC);
-					}
-				}
-			}
-			if (element instanceof ArchiveFile) {
-				ArchiveFile jar = (ArchiveFile)element;
-				labelBuf.append(jar.getName());
-				if (!jar.exists())
-					labelBuf.append(MISSING);
-				labelBuf.append(" - ").append(((ArchiveFile)element).getSourceLocation()); //$NON-NLS-1$
-			}
-			return labelBuf.toString();
-		}
-
-		public void addListener(ILabelProviderListener listener) {
-            // no listeners supported
-		}
-
-		public void dispose() {
-			if (libImg != null){
-				libImg.dispose();
-			}			
-			if (jarImg != null){
-				jarImg.dispose();
-			}		
-		}
-
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-		public void removeListener(ILabelProviderListener listener) {
-            // no listeners supported
-		}
-	}
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java
deleted file mode 100644
index fdbe74d..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java
+++ /dev/null
@@ -1,581 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 2007 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
-import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension;
-import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension2;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.PluginProvidedJSFLibrary;
-import org.eclipse.jst.jsf.core.jsfappconfig.JSFAppConfigUtils;
-import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryConfigurationHelper;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.SWT;
-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;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Provides a classpath container wizard page for JSF Libraries.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFLibraryContainerWizardPage extends WizardPage implements
-		IClasspathContainerPage, IClasspathContainerPageExtension, IClasspathContainerPageExtension2{
-
-	private CheckboxTableViewer lv;
-	private JSFLibrariesTableViewerAdapter lvAdapter;
-	private JSFLibrariesListLabelProvider lvLabelProvider;
-	
-	private boolean isJSFProject = false;
-	private IClasspathEntry containerEntry;
-	private IClasspathEntry[] currentEntries;
-	private Map _currentLibs;
-	private JSFLibrary currentLib;
-	
-	private boolean   _projectHaveV1JSFLibraries; // = false;
-	private IProject  _iproject;
-
-	private static final String IMPL_DESC = Messages.JSFLibrariesPreferencePage_IMPL_DESC;
-	
-	/**
-	 * Zero arg constructor
-	 */
-	public JSFLibraryContainerWizardPage(){
-        super(Messages.JSFLibraryContainerWizardPage_PageName);        
-        setTitle(Messages.JSFLibraryContainerWizardPage_Title);
-        setDescription(Messages.JSFLibraryContainerWizardPage_Description);
-        // TODO: Replace with a custom image.
-        setImageDescriptor( JSFUiPlugin.getImageDescriptor("full/wizban/addlibrary_wiz.gif")); //$NON-NLS-1$
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension#initialize(org.eclipse.jdt.core.IJavaProject, org.eclipse.jdt.core.IClasspathEntry[])
-	 */
-	public void initialize(IJavaProject project, IClasspathEntry[] currentEntries_) {
-		this.currentEntries = currentEntries_;
-
-        _iproject = project.getProject();
-        this.isJSFProject = JSFAppConfigUtils.isValidJSFProject(_iproject);
-        if (this.isJSFProject)
-		{
-			_projectHaveV1JSFLibraries = 
-			    JSFLibraryRegistryUtil.doesProjectHaveV1JSFLibraries(_iproject);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish()
-	 */
-	public boolean finish() {
-	    boolean finish = true;
-	    if (_projectHaveV1JSFLibraries)
-	    {
-	        // if the user doesn't want to confirm, back off on the change
-	        // and let them decide if they want to hit cancel
-	        finish = WarningMessageDialog.
-	            openConfirm(getShell()
-	                        , Messages.JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle
-	                        , Messages.JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText);
-	        
-	        if (finish)
-	        {
-	            JSFLibraryRegistryUtil.removeV1JSFLibraryProperty(Collections.singletonList(_iproject));
-	        }
-	    }
-		return finish;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension2#getNewContainers()
-	 */
-	public IClasspathEntry[] getNewContainers() {
-		IPath cp = new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID);
-		List res = new ArrayList();
-		Object[] items = lv.getCheckedElements();
-		for (int i=0;i<items.length;i++){
-			JSFLibrary jsfLib = (JSFLibrary)items[i];
-			if (getSelectedJSFLibariesForProject().get(jsfLib.getID()) == null){
-				IPath path = cp.append(new Path(jsfLib.getID()));
-				IClasspathEntry entry = JavaCore.newContainerEntry(path);
-				// need to update wtp dependency in j2ee mod dependency ui
-				res.add(entry);
-			}
-		}
-		return (IClasspathEntry[])res.toArray(new IClasspathEntry[]{});
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
-	 */
-	public boolean isPageComplete() {
-		if (!isJSFProject) {
-			return false;
-		}
-		if (isEditReference() && ! selectionHasChanged())
-			return false;
-		
-		return isValid();
-	}
-
-	private boolean isValid() {		
-		return isCheckedItems() && getErrorMessage() == null;
-	}
-
-	//to be used to know whether the selected library has changed when in "edit" mode
-	private boolean selectionHasChanged() {
-		JSFLibrary lib = getCurrentLibrarySelection();
-		if (lib == null)
-			return false;
-		
-		return (getJSFLibraryForEdit(containerEntry) != lib) ;
-
-	}
-
-	private JSFLibrary getCurrentLibrarySelection() {
-		JSFLibrary lib = null;
-		StructuredSelection ssel = (StructuredSelection)lv.getSelection();
-		if (ssel != null && !ssel.isEmpty()){
-			lib = (JSFLibrary)ssel.getFirstElement();
-		}
-		return lib;
-	}
-
-	private boolean isCheckedItems() {		
-		return lv.getCheckedElements().length > 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#getSelection()
-	 */
-	public IClasspathEntry getSelection() {
-		IClasspathEntry entry = null;
-		if (isEditReference()){
-			if (lv.getCheckedElements().length == 0)
-				return containerEntry;
-						
-			JSFLibrary lib = (JSFLibrary)lv.getCheckedElements()[0];
-			if (lib != null){
-				if (lib == getJSFLibraryForEdit(containerEntry))
-				{
-					return containerEntry;
-				}
-                IPath path = new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID).append(new Path(lib.getID()));
-                entry = JavaCore.newContainerEntry(path, containerEntry.getAccessRules(), containerEntry.getExtraAttributes(),containerEntry.isExported());
-			}			
-		}
-		return entry;
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#setSelection(org.eclipse.jdt.core.IClasspathEntry)
-	 */
-	public void setSelection(IClasspathEntry containerEntry) {
-		//this is signalling that this is an "edit"
-		this.containerEntry = containerEntry;
-	}
-
-	public void createControl(Composite parent) {
-		//Build UI to display JSF Lib components from registry
-		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new GridLayout(2, false));
-		c.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-		//disable wizard if this is not a valid JSF project
-		if (!isJSFProject){
-			Label warning = new Label(c , SWT.NONE);
-			warning.setText(Messages.JSFLibraryContainerWizardPage_WarningNoJSFFacet);
-			setControl(c);			
-			return;
-		}
-
-		Label lblViewer = new Label(c, SWT.NONE);
-		lblViewer.setText(Messages.JSFLibraryContainerWizardPage_JSFLibraries);
-		GridData gd1 = new GridData(GridData.BEGINNING);
-		gd1.horizontalSpan = 2;
-		lblViewer.setLayoutData(gd1);
-
-		lv = createTableViewer(c);
-		lv.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
-
-		lvAdapter = new JSFLibrariesTableViewerAdapter();
-		lvLabelProvider = new JSFLibrariesListLabelProvider();
-		lv.setContentProvider(lvAdapter);
-		lv.setLabelProvider(lvLabelProvider);
-		lv.addSelectionChangedListener(lvAdapter);
-		lv.addDoubleClickListener(lvAdapter);
-		lv.setComparator(lvAdapter);
-		
-		Composite buttons = new Composite(c, SWT.NONE);
-		buttons.setLayout(new GridLayout(1, false));
-		buttons.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		
-		final Button addButton = new Button(buttons, SWT.NONE);
-		addButton.setText(Messages.JSFLibraryContainerWizardPage_Add);
-		addButton.setLayoutData(new GridData(GridData.END | GridData.VERTICAL_ALIGN_BEGINNING));
-		addButton.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e){
-				openJSFLibraryWizard(null);				
-			}
-		});
-		
-		final Button editButton = new Button(buttons, SWT.NONE);
-		editButton.setText(Messages.JSFLibraryContainerWizardPage_Edit);
-		editButton.setLayoutData(new GridData(GridData.END | GridData.VERTICAL_ALIGN_BEGINNING));
-		editButton.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e){
-				StructuredSelection sel = (StructuredSelection)lv.getSelection();
-				if ((sel == null || sel.isEmpty()) && containerEntry != null){
-					JSFLibrary jsfLib = getJSFLibraryForEdit(containerEntry);
-					sel = new StructuredSelection(jsfLib);
-				}
-				openJSFLibraryWizard(sel);				
-			}
-
-		});
-		editButton.setVisible(false);
-		lv.addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event) {
-				setEditButton(event.getSelection());
-			}
-
-			private void setEditButton(final ISelection selection) {
-				IStructuredSelection sel = (IStructuredSelection)selection;
-				editButton.setVisible(sel.size()==1);		
-				if (sel.size() == 1){					
-					JSFLibrary lib = (JSFLibrary)sel.getFirstElement();
-					boolean pp = lib instanceof PluginProvidedJSFLibrary;
-					editButton.setEnabled(! pp);
-					if (isEditReference()){
-						lv.setAllChecked(false);
-						lv.setChecked(lib, true);
-					}
-				}
-				
-			}			
-		});
-		setControl(c);
-		
-		if (isEditReference()){
-			JSFLibrary lib = getJSFLibraryForEdit(containerEntry);
-			lv.setInput(getAllUnselectedJSFLibrariesExceptReferencedLib(lib));	
-			selectAndCheckCurrentLib(lib);
-			setDescription(Messages.JSFLibraryContainerWizardPage_EditLibrary_DescriptionText);
-		} 
-		else {
-			lv.setInput(getAllJSFLibraries());		
-			lv.setCheckedElements(getSelectedJSFLibariesForProject().values().toArray(new Object[0]));
-		}
-	}
-
-	private void selectAndCheckCurrentLib(final JSFLibrary lib) {
-		if (lib != null){
-			StructuredSelection ssel = new StructuredSelection(lib);	
-			lv.setSelection(ssel);
-			lv.setChecked(lib, true);
-		}
-	}
-
-	private Object getAllUnselectedJSFLibrariesExceptReferencedLib(JSFLibrary referenceLib) {
-		List allLibs = getAllJSFLibraries();
-		Collection selLibs = getSelectedJSFLibariesForProject().values();
-		for (Iterator it=selLibs.iterator();it.hasNext();){
-			JSFLibrary aLib = (JSFLibrary)it.next();
-			int i= allLibs.indexOf(aLib);
-			//remove from allLibs unless it is the selected reference
-			if (i >= 0 && ((referenceLib == null) || (aLib != null && ! aLib.getID().equals(referenceLib.getID())))){
-				allLibs.remove(i);
-			}
-		}
-		return allLibs;
-	}
-
-	private List getJSFLibraryEntries(IClasspathEntry[] entries) {
-		List jsfLibs = new ArrayList();
-		for (int i=0;i<entries.length;i++){
-			IClasspathEntry entry = entries[i];
-			if (JSFLibraryConfigurationHelper.isJSFLibraryContainer(entry)){
-				JSFLibrary lib = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry(). getJSFLibraryByID(getLibraryId(entry));
-				if (lib != null){
-					jsfLibs.add(lib);
-				}
-			}
-		}
-		
-		return jsfLibs;
-	}
-
-	private String getLibraryId(IClasspathEntry entry) {
-		return entry.getPath().segment(1);
-	}
-
-	private void openJSFLibraryWizard(IStructuredSelection element){
-		IWorkbenchWizard wizard = new JSFLibraryWizard();
-		IWorkbench wb = PlatformUI.getWorkbench();
-		wizard.init(wb, element);
-		WizardDialog dialog = new WizardDialog(wb.getActiveWorkbenchWindow().getShell(), wizard);
-		int ret = dialog.open();
-		if (ret == Window.OK){
-			//FIXME: select returned object
-			if (containerEntry == null){
-				lv.setInput(getAllJSFLibraries());				
-			}
-			else {
-				lv.setInput(getAllUnselectedJSFLibrariesExceptReferencedLib(getJSFLibraryForEdit(containerEntry)));
-				lv.refresh(true);
-			}
-			lv.refresh();
-		}
-	}
-	
-	private CheckboxTableViewer createTableViewer(Composite parent) {
-		Table table= new Table(parent, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		table.setFont(parent.getFont());
-		CheckboxTableViewer tableViewer= new CheckboxTableViewer(table);
-		tableViewer.addCheckStateListener(new ICheckStateListener() {
-			public void checkStateChanged(CheckStateChangedEvent e) {
-				if (! isEditReference()){
-					//ensure that existing CP entries cannot be unchecked
-					if (getSelectedJSFLibariesForProject().get(((JSFLibrary)e.getElement()).getID()) != null){
-						if (containerEntry == null)
-							e.getCheckable().setChecked(e.getElement(), true);
-						else
-							lv.setAllChecked(true);
-					}
-				}
-				else {
-					//select only one
-					lv.setAllChecked(false);
-					lv.setChecked(e.getElement(), true);
-					if (isEditReference())
-						lv.setSelection(new StructuredSelection(e.getElement()));
-				}
-				validate();				
-			}
-		});
-		return tableViewer;
-	}
-
-	private Map getSelectedJSFLibariesForProject(){
-		if (_currentLibs == null){
-			List allLibs = getAllJSFLibraries();
-			List curLibs = getJSFLibraryEntries(currentEntries);
-			_currentLibs = new HashMap(curLibs.size());
-			for (Iterator it=curLibs.iterator();it.hasNext();){
-				JSFLibrary lib = (JSFLibrary)it.next();
-				int index = getIndex(allLibs, lib);
-				if (index >=0)
-					_currentLibs.put(lib.getID(), allLibs.get(index));
-			}
-					
-		}
-		return _currentLibs;
-	}
-	
-	private List getAllJSFLibraries() {
-		List allLibs = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getAllJSFLibraries();
-
-		return allLibs;
-	}
-
-
-	private JSFLibrary getJSFLibraryForEdit(
-			IClasspathEntry containerEntry_) {
-		if (currentLib == null){
-			String id = getLibraryId(containerEntry_);
-			currentLib = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getJSFLibraryByID(id);	
-		}
-		return currentLib;
-
-	}
-	
-	private int getIndex(List libs, JSFLibrary lib) {
-		for (int i=0;i<libs.size();i++){
-			if (lib.getID().equals(((JSFLibrary)libs.get(i)).getID()))
-				return i;
-		}
-		return -1;
-	}
-
-	private class JSFLibrariesTableViewerAdapter extends ViewerComparator implements IStructuredContentProvider, ISelectionChangedListener, IDoubleClickListener {
-
-		private Object input;
-
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			input = newInput;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-            // do nothing
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-		 */
-		public Object[] getElements(Object inputElement) {		
-			return ((List)input).toArray();
-		}		
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-		 */
-		public void selectionChanged(SelectionChangedEvent event) {
-			if (isEditReference()){
-				setPageComplete(isPageComplete());
-			}
-			
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-		 */
-		public void doubleClick(DoubleClickEvent event) {
-			doDoubleClick(event);
-		}
-		
-		public int compare(Viewer viewer, Object e1, Object e2) {
-			JSFLibrary lib1 = (JSFLibrary)e1;
-			JSFLibrary lib2 = (JSFLibrary)e2;
-			
-			//sort first by in selection already and then by name
-			boolean lib1Sel = getSelectedJSFLibariesForProject().get(lib1.getID())!=null;
-			boolean lib2Sel = getSelectedJSFLibariesForProject().get(lib2.getID())!= null;
-			
-			if ((lib1Sel && lib2Sel) || (!lib1Sel && !lib2Sel) ){
-				return getComparator().compare(lib1.getLabel(), lib2.getLabel());
-			}
-			else if (lib1Sel)
-				return -1;
-			else
-				return 1;
-		}
-	}
-	
-	private class JSFLibrariesListLabelProvider implements ILabelProvider{		
-		Image libImg;
-		public Image getImage(Object element) {
-			if (libImg == null){
-				ImageDescriptor libImgDesc = JSFUiPlugin.getImageDescriptor("obj16/library_obj.gif"); //$NON-NLS-1$
-				libImg = libImgDesc.createImage();
-			}
-			return libImg;
-		}
-
-		public String getText(Object element) {
-			if (element instanceof JSFLibrary) {
-				JSFLibrary lib = (JSFLibrary)element;
-				if (lib.isImplementation()) {
-					return lib.getLabel() + " " + IMPL_DESC; //$NON-NLS-1$
-				}
-                return lib.getLabel();
-			}
-			return null;
-		}
-
-		public void dispose() {
-			if (libImg != null)
-				libImg.dispose();
-		}
-
-		public void addListener(ILabelProviderListener listener) {		
-            // no listener support
-		}
-
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-		public void removeListener(ILabelProviderListener listener) {
-            // no listener support
-		}
-	}
-	
-	private void validate() {
-		setErrorMessage(null);
-		int implChosenCount = implSelectedCount();
-		if (implChosenCount>1){
-			setErrorMessage(Messages.JSFLibraryContainerWizardPage_ImplAlreadyPresent);
-		}
-        setPageComplete(isPageComplete());
-	}
-
-
-	private boolean isEditReference() {
-		return (containerEntry != null);		
-	}
-
-	private int implSelectedCount() {
-		int count = 0;
-		for (int i=0;i<lv.getCheckedElements().length;i++){
-			JSFLibrary lib = (JSFLibrary)lv.getCheckedElements()[i];
-			if (lib.isImplementation())
-				count++;
-		}
-		return count;
-	}
-
-	private void doDoubleClick(DoubleClickEvent event) {
-		StructuredSelection ssel = (StructuredSelection)event.getSelection();
-		if (ssel != null && 
-				(! ((JSFLibrary)ssel.getFirstElement() instanceof PluginProvidedJSFLibrary)))
-			openJSFLibraryWizard((IStructuredSelection)event.getSelection());
-	}
-
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java
deleted file mode 100644
index e751dd9..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java
+++ /dev/null
@@ -1,499 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryFactory;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFVersion;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-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.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Common control for adding JSF library instances
- */
-public class JSFLibraryEditControl extends Composite implements ModifyListener, SelectionListener {
-	private static final String MISSING = Messages.JSFLibrariesPreferencePage_MISSING_DESC;
-	private Text txtName;
-	private Label lblName;
-	private CCombo cboVersions;
-	private Label lblVersions;
-	private Button chkDeploy;
-	private Button chkImpl;
-	private Composite btnBar;
-	private Button btnAdd;
-	private Button btnRemove;
-	private TableViewer jars;
-	
-	private boolean initing = false;
-
-	private JSFLibrary workingCopyLibrary;
-	
-	private String validationMsg;
-	private Set _listeners;
-	private int _isNew = -1;//use isNew() method.. not this variable directly
-
-	/**
-	 * @param workingCopyLibrary  working copy of the JSF library
-	 * @param parent parent SWT control
-	 */
-	public JSFLibraryEditControl(JSFLibrary workingCopyLibrary, Composite parent){
-		super(parent, SWT.NONE);
-		this.workingCopyLibrary = workingCopyLibrary;
-		_listeners = new HashSet(1);
-		createControl(parent);
-	}
-	
-	/**
-	 * @param listener
-	 */
-	public void addValidationListener(JSFLibraryValidationListener listener){
-		removeValidationListener(listener);
-		_listeners.add(listener);
-	}
-	
-	/**
-	 * @param listener
-	 */
-	public void removeValidationListener(JSFLibraryValidationListener listener){
-		_listeners.remove(listener);
-	}
-	
-	/**
-	 * @param parent
-	 */
-	public void createControl(Composite parent) {
-		initing = true;
-
-//		this = new Composite(parent, SWT.NONE);
-		this.setLayout(new GridLayout(2, false));
-		this.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-		lblName = new Label(this, SWT.NONE);
-		lblName.setText(Messages.JSFLibraryWizard_LibraryName);
-		lblName.setLayoutData(new GridData(GridData.BEGINNING));
-
-		txtName = new Text(this, SWT.BORDER);
-		txtName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		txtName.addModifyListener(this);
-
-		lblVersions = new Label(this, SWT.NONE);
-		lblVersions.setText(Messages.JSFLibraryWizard_VersionSupported);
-
-		cboVersions = new CCombo(this, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
-		cboVersions.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		cboVersions.addModifyListener(this);
-
-		Group jarsComp = new Group(this, SWT.NONE);
-		jarsComp.setText(Messages.JSFLibraryWizard_LibraryJars);
-		GridLayout gl1 = new GridLayout(2, false);
-		jarsComp.setLayout(gl1);
-		GridData gd2 = new GridData(GridData.FILL_HORIZONTAL
-				| GridData.FILL_VERTICAL);
-		gd2.horizontalSpan = 2;
-		jarsComp.setLayoutData(gd2);
-
-		createJarsViewer(jarsComp);
-
-		createButtons(jarsComp);
-
-		chkImpl = new Button(this, SWT.CHECK);
-		chkImpl.setText(Messages.JSFLibraryWizard_IsJSFImplementation);
-		GridData gd3 = new GridData();
-		gd3.horizontalSpan = 2;
-		chkImpl.setLayoutData(gd3);
-		chkImpl.addSelectionListener(this);
-
-		chkDeploy = new Button(this, SWT.CHECK);
-		chkDeploy.setText(Messages.JSFLibraryWizard_DeployJars);
-		GridData gd4 = new GridData();
-		gd4.horizontalSpan = 2;
-		chkDeploy.setLayoutData(gd4);
-//		chkDeploy.addSelectionListener(this);
-		chkDeploy.setVisible(false);
-
-		loadVersions();
-
-		if (!isNew()) {
-			txtName.setText(workingCopyLibrary.getName());
-			if (workingCopyLibrary.getJSFVersion().getName().equals(JSFVersion.UNKNOWN_LITERAL.getName())) {
-				cboVersions.setText(Messages.JSFLibraryEditControl_ImplVersion_UNKNOWN);
-			} else {
-				cboVersions.setText(workingCopyLibrary.getJSFVersion().getName());
-			}
-			chkDeploy.setSelection(workingCopyLibrary.isDeployed());
-			chkImpl.setSelection(workingCopyLibrary.isImplementation());
-		}
-		jars.setInput(workingCopyLibrary);
-
-		initing = false;
-
-		txtName.setFocus();
-	}
-
-	private void createJarsViewer(Group jarsComp) {
-		jars = new TableViewer(jarsComp, SWT.BORDER | SWT.MULTI);
-		jars.setContentProvider(new IStructuredContentProvider() {
-			public Object[] getElements(Object inputElement) {
-				if (inputElement instanceof JSFLibrary)
-					return ((JSFLibrary) inputElement).getArchiveFiles()
-							.toArray();
-				return new Object[0];
-			}
-
-			public void dispose() {
-                // do nothing
-			}
-
-			public void inputChanged(Viewer viewer, Object oldInput,
-					Object newInput) {
-				// won't happen
-			}
-		});
-		jars.setLabelProvider(new ILabelProvider() {
-			private Image jarImg = null;
-			public Image getImage(Object element) {
-				if (jarImg == null){
-					ImageDescriptor desc = JSFUiPlugin.getImageDescriptor("obj16/jar_obj.gif"); //$NON-NLS-1$
-					jarImg = desc.createImage();
-				}
-				return jarImg;
-			}
-
-			public String getText(Object element) {
-				StringBuffer labelBuf = new StringBuffer();
-				if (element instanceof ArchiveFile) {
-					ArchiveFile archive = (ArchiveFile) element;
-					labelBuf.append(archive.getName());	
-					if (!archive.exists())
-						labelBuf.append(MISSING); 
-					labelBuf.append(" - ").append(archive.getPath()); //$NON-NLS-1$
-				}
-				return labelBuf.toString();
-			}
-
-			public void addListener(ILabelProviderListener listener) {
-                // no listeners supported
-			}
-
-			public void dispose() {
-				if (jarImg != null)
-					jarImg.dispose();
-			}
-
-			public boolean isLabelProperty(Object element, String property) {
-				return false;
-			}
-
-			public void removeListener(ILabelProviderListener listener) {
-                // no listeners supported
-			}
-		});
-
-		jars.addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event){
-				updateButtons();
-			}
-		});
-		
-		GridData gd = new GridData(GridData.FILL_BOTH);
-//		gd.widthHint = convertWidthInCharsToPixels(30);
-//		gd.heightHint = convertHeightInCharsToPixels(10);
-		jars.getControl().setLayoutData(gd);
-	}
-
-	private void updateButtons() {
-		btnRemove.setEnabled(!((StructuredSelection)jars.getSelection()).isEmpty());
-		// getButton(IDialogConstants.OK_ID).setEnabled(modified);
-	}
-
-	private void createButtons(Composite c) {
-		btnBar = new Composite(c, SWT.NONE);
-		GridLayout gl = new GridLayout(1, false);
-		gl.marginHeight = 0;
-		gl.marginTop = 0;
-		gl.marginWidth = 0;
-		btnBar.setLayout(gl);
-		btnBar.setLayoutData(new GridData(GridData.END));
-
-		btnAdd = new Button(btnBar, SWT.NONE);
-		btnAdd.setText(Messages.JSFLibraryWizard_Add);
-		btnAdd.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.VERTICAL_ALIGN_BEGINNING));
-		btnAdd.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				String cur = null;
-				String[] chosenJars = openExtJarFileDialog(cur);
-				if (chosenJars != null) {
-					for (int i = 0; i < chosenJars.length; i++) {
-						String jar = chosenJars[i];
-						if (!workingCopyLibrary.containsArchiveFile(jar)) {
-							ArchiveFile archive = JSFLibraryRegistryFactory.eINSTANCE
-								.createArchiveFile();
-							archive.setSourceLocation(jar);
-							archive.setRelativeDestLocation("WEB-INF/lib"); //$NON-NLS-1$
-							workingCopyLibrary.getArchiveFiles().add(archive);
-						}
-					}
-					jars.refresh();
-					validate();
-				}
-			}
-		});
-
-		btnRemove = new Button(btnBar, SWT.NONE);
-		btnRemove.setEnabled(false);
-		btnRemove.setText(Messages.JSFLibraryWizard_Remove);
-		btnRemove.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.VERTICAL_ALIGN_BEGINNING));
-		btnRemove.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (jars.getSelection() instanceof StructuredSelection){
-					StructuredSelection objs = (StructuredSelection)jars.getSelection();
-					if (objs != null){
-						Iterator it = objs.iterator();
-						 while (it.hasNext()){
-							 Object obj = it.next();
-							 ArchiveFile jar = (ArchiveFile)obj;
-							 workingCopyLibrary.getArchiveFiles().remove(jar);							 
-						 }
-					}
-					jars.refresh();
-					validate();
-				}
-			}
-		});
-	}
-
-	private void loadVersions() {
-		cboVersions.removeAll();
-		Iterator it = JSFVersion.VALUES.iterator();
-		while (it.hasNext()) {
-			JSFVersion ver = (JSFVersion) it.next();
-			if (ver.getName().equals(JSFVersion.UNKNOWN_LITERAL.getName())) {
-				cboVersions.add(Messages.JSFLibraryEditControl_ImplVersion_UNKNOWN);
-			} else {
-				cboVersions.add(ver.getName());
-			}
-		}
-	}
-
-	private String[] openExtJarFileDialog(String existing) {
-		String title = Messages.JSFLibraryWizard_ExtJarFileDialogTitle;
-
-		FileDialog dialog = new FileDialog(getShell(),
-				existing == null ? SWT.MULTI : SWT.SINGLE);
-		dialog.setText(title);
-		dialog.setFilterExtensions(new String[] { "*.jar;*.zip" }); //$NON-NLS-1$
-		// FIXME: remember and use last path chosen??
-		String filterPath = ResourcesPlugin.getWorkspace().getRoot()
-				.getFullPath().toString();
-		dialog.setFilterPath(filterPath);
-		// if (existing != null) {
-		// dialog.setFileName(existing.getPath().lastSegment());
-		// }
-
-		String res = dialog.open();
-		if (res == null) {
-			return null;
-		}
-		String[] fileNames = dialog.getFileNames();
-		String[] elems = new String[fileNames.length];
-		IPath file = new Path(res);
-		IPath apath = file.removeLastSegments(1);
-		for (int i = 0; i < fileNames.length; i++) {
-			elems[i] = apath.append(fileNames[i]).toString();
-		}
-		return elems;
-	}	
-
-	public void modifyText(ModifyEvent e) {
-		validate();
-		updateButtons();	
-	}
-
-	private void fireValidateEvent(final JSFLibraryValidationEvent jSFLibraryValidationEvent) {
-		new Runnable(){
-			public void run() {
-				for (Iterator it=_listeners.iterator();it.hasNext();){
-					JSFLibraryValidationListener listener = (JSFLibraryValidationListener)it.next();
-					listener.notifyValidation(jSFLibraryValidationEvent);
-				}
-			}
-		}.run();
-	}
-
-
-	public void widgetSelected(SelectionEvent e) {
-		validate();
-		updateButtons();
-	}
-
-	public void widgetDefaultSelected(SelectionEvent e) {
-        // no handling for default selection
-	}
-
-	private void validate() {
-		if (initing)
-			return;
-		validationMsg = null;
-//		setPageComplete(true);
-		if (!validateName() || !validateJars() || !validateVersion()) {
-//			setPageComplete(false);
-		}
-		fireValidateEvent(new JSFLibraryValidationEvent(validationMsg));
-	}
-	
-	private boolean validateJars() {
-		if (workingCopyLibrary.getArchiveFiles().isEmpty()) {
-			validationMsg = Messages.JSFLibraryWizard_ValidateNoJars;
-			return false;
-		}
-		return true;
-	}
-	
-	private boolean validateVersion() {
-		//FIXME: why isn't selection indesx correct???
-	//	if (cboVersions.getSelectionIndex() < 0) {
-	//		setErrorMessage("Choose the maximum JSF version supported if known.");
-	//		return false;
-	//	}
-		return true;
-	}
-	
-	private boolean validateName() {
-		if (txtName.getText() == null
-				|| txtName.getText().trim().equals("")) { //$NON-NLS-1$
-			validationMsg = Messages.JSFLibraryWizard_ValidateNoLibraryName;
-			return false;
-		}
-		String aName = txtName.getText().trim();
-		if (isNew() || (!isNew() && !getCurrentLibraryName().equals(aName))) {
-			if (isNameInRegistry(JSFLibraryRegistryUtil.getInstance()
-					.getJSFLibraryRegistry().getAllJSFLibraries(), aName)) {
-				validationMsg = Messages.JSFLibraryWizard_ValidateExistingLibraryName;
-				return false;
-			}
-		}
-		return true;
-	}
-	
-	private boolean isNew() {
-		if (_isNew == -1){
-			_isNew = workingCopyLibrary.getName() == null ? 1 : 0;
-		}
-		return _isNew == 1;
-	}
-
-	private String getCurrentLibraryName() {
-		return workingCopyLibrary.getName();		
-	}
-
-	private boolean isNameInRegistry(Collection c, String name) {
-		Iterator it = c.iterator();
-		while (it.hasNext()) {
-			JSFLibrary lib = (JSFLibrary) it.next();
-			if (lib.getName().equals(name)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * @return the trimmed name of the user input for jsf library name
-	 */
-	public String getJSFLibraryName() {		
-		return txtName.getText().trim();
-	}
-
-
-	/**
-	 * @return the value of the user input for the isDeployed checkbox
-	 */
-	public boolean getIsDeployed() {		
-		return chkDeploy.getSelection();
-	}
-
-
-	/**
-	 * @return the value of the user input for the isJSFImplementation checkbox
-	 */
-	public boolean getIsImplementation() {
-		return chkImpl.getSelection();
-	}
-
-	/**
-	 * @return the jsf version selected in the version dropping
-	 */
-	public JSFVersion getJSFVersion() {
-		if (cboVersions.getSelectionIndex() >= 0) {
-			JSFVersion ver = (JSFVersion) JSFVersion.VALUES.get(cboVersions
-					.getSelectionIndex());
-			return ver;
-		}
-		return JSFVersion.UNKNOWN_LITERAL;
-	}
-
-	/**
-	 * @param implsOnly
-	 */
-	public void setImplOnly(boolean implsOnly) {
-		if (implsOnly){
-			chkImpl.setSelection(true);
-			chkImpl.setEnabled(false);
-		}
-	}
-	
-	/**
-	 * @param nonImplsOnly
-	 */
-	public void setNonImplOnly(boolean nonImplsOnly) {
-		if (nonImplsOnly){
-			chkImpl.setSelection(false);
-			chkImpl.setEnabled(false);
-		}
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java
deleted file mode 100644
index a869d0a..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Validation event used by JSFLibraryControl to notify containers of updates
- *
- */
-public class JSFLibraryValidationEvent {
-	private String msg;
-	private int severity;
-	
-	/**
-	 * Constructor
-	 * @param msg
-	 * @param severity - IStatus int value
-	 */
-	public JSFLibraryValidationEvent(String msg, int severity) {
-		this.msg = msg;
-		this.severity = severity;
-	}
-	
-	/**
-	 * Constructs event with severity of IStatus.ERROR
-	 * @param msg
-	 */
-	public JSFLibraryValidationEvent(String msg) {
-		this(msg, IStatus.ERROR);
-	}
-	
-	/**
-	 * @return validation message
-	 */
-	public String getMessage(){
-		return msg;
-	}
-	
-	/**
-	 * @return IStatus int value
-	 */
-	public int getSeverity(){
-		return severity;
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java
deleted file mode 100644
index bfab216..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryFactory;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFVersion;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * Dialog for creating or editing a JSF Library or Implementation.
- * <br>
- * If the selection passed in init is not null then the item will be edit mode.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFLibraryWizard extends Wizard implements INewWizard {
-
-	/**
-	 * Implementation libaries to be included
-	 */
-	public static int IMPLS = 1;
-	/**
-	 * Non-Implementation libaries to be included
-	 */
-	public static int NONIMPLS = 2;
-	
-	private JSFLibraryEditControl jsfLibraryEditControl;
-	
-	private boolean isNew = false;
-	private boolean modified = false;
-
-	private JSFLibrary curLibrary;
-	private JSFLibrary workingCopyLibrary;
-
-	private JSFLibraryWizardPage page;
-
-	private static final String DESCRIPTION = Messages.JSFLibraryWizard_DESCRIPTION;
-	private static final String IMPLS_ONLY_DESC = Messages.JSFLibraryWizard_IMPLS_ONLY_DESC;
-
-	private boolean _impls;	
-	private boolean _nonimpls;
-	
-    private List<IProject>        _projectsWithV1JSFLibraries = new ArrayList<IProject>();
-	
-	/**
-	 * Constructor
-	 * see IMPLS
-	 * see NONIMPLS
-	 * @param libTypes 
-	 */
-	public JSFLibraryWizard(int libTypes) {
-		super();
-		if ((libTypes & IMPLS) == IMPLS)
-			_impls = true;
-
-		if ((libTypes & NONIMPLS) == NONIMPLS)
-			_nonimpls = true;
-	}
-
-	
-	/**
-	 * Constructor.   List will include all JSF Libraries.
-	 */
-	public JSFLibraryWizard() {
-		super();
-		_impls = true;
-		_nonimpls = true;
-	}
-
-	private boolean isImplsOnly(){
-		if (_impls && ! _nonimpls)
-			return true;
-		return false;		
-	}
-	
-	private boolean isNonImplsOnly(){
-		if (_nonimpls && ! _impls)
-			return true;
-		return false;		
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
-	 */
-	public void init(IWorkbench workbench, IStructuredSelection selection) 
-	{
-	    initV1LibrariesList();
-	    
-		if (selection != null
-				&& selection.getFirstElement() instanceof JSFLibrary) {
-			curLibrary = (JSFLibrary) selection.getFirstElement();
-			workingCopyLibrary = curLibrary.getWorkingCopy();
-		} else {
-			isNew = true;
-			workingCopyLibrary = JSFLibraryRegistryFactory.eINSTANCE.createJSFLibrary();
-		}
-		if (isImplsOnly()) {
-			setWindowTitle(Messages.JSFLibraryWizard_CreateImplementation);
-		} else {
-			setWindowTitle(isNew ? Messages.JSFLibraryWizard_CreateJSFLibrary : Messages.JSFLibraryWizard_EditJSFLibrary);
-		}
-	}
-
-	private void initV1LibrariesList()
-	{
-        final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-        
-        // loop through the workspace and look for projects that are still using the V1 way
-        // of doing JSF libraries
-        for (int i = 0; i < projects.length; i++)
-        {
-            final IProject project = projects[i];
-            if (JSFLibraryRegistryUtil.doesProjectHaveV1JSFLibraries(project))
-            {
-                _projectsWithV1JSFLibraries.add(project);
-            }
-        }
-    }
-
-	/**
-	 * Updates the JSF Library instance with the values from the working copy and 
-	 * persists the registry.
-	 * 
-	 * If editing a library reference, referencing java models will be updated.
-	 *  
-	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
-	 */
-	public boolean performFinish() 
-	{
-	    // on init, if we detected any projects with old library
-	    // refs, we need to warn the user
-	    if (!isNew &&  // can ignore new libraries, since old projects can't possibly have dependencies on them
-	            _projectsWithV1JSFLibraries.size() > 0)
-	    {
-	        String  projectNames = ""; //$NON-NLS-1$
-	        for (Iterator<IProject> it = _projectsWithV1JSFLibraries.iterator(); it.hasNext();)
-	        {
-	            IProject project = it.next();
-	            projectNames += project.getName() + ","; //$NON-NLS-1$
-	        }
-	        // trim trailing comma
-	        if (projectNames.length() > 0)
-	        {
-	            projectNames = projectNames.substring(0, projectNames.length()-1);
-	        }
-	        
-	        final String messageText = MessageFormat.format(Messages.JSFLibraryWizard_V1JSFLibrary_DialogMessage,
-	                                        new Object[] {projectNames});
-	        MessageDialogWithToggle dialog = 
-	            WarningMessageDialogWithToggle.openOkCancelConfirm
-	                (getShell(), Messages.JSFLibraryWizard_V1JSFLibrary_DialogTitle, messageText, Messages.JSFLibraryWizard_JSFLibraryWizard_DontShowThisAgain_CheckBoxLabel, false, null, null);
-	        if (dialog.getReturnCode() != IDialogConstants.OK_ID)
-	        {
-	            // abort if the user doesn't really want to commit this change
-	            return false;
-	        }
-
-	        // if user accepted and asked not be warned again, clear the 
-	        // the project properties.
-	        if (dialog.getToggleState())
-            {
-	            JSFLibraryRegistryUtil.removeV1JSFLibraryProperty(_projectsWithV1JSFLibraries);
-            }
-	    }
-	    
-		final String name = jsfLibraryEditControl.getJSFLibraryName();
-		final boolean isDeployed = jsfLibraryEditControl.getIsDeployed();
-		final boolean isImplementation = jsfLibraryEditControl.getIsImplementation();
-		final JSFVersion version = jsfLibraryEditControl.getJSFVersion();
-		
-		workingCopyLibrary.setName(name);
-		workingCopyLibrary.setDeployed(isDeployed);
-		workingCopyLibrary.setImplementation(isImplementation);
-		workingCopyLibrary.setJSFVersion(version);
-		
-		final String originalID = curLibrary != null ? curLibrary.getID() :workingCopyLibrary.getID();
-		
-		if (isNew){
-			JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().addJSFLibrary(workingCopyLibrary);
-		}
-		else {
-			curLibrary.updateValues(workingCopyLibrary);
-			try {
-				JSFLibraryRegistryUtil.rebindClasspathContainerEntries(originalID, workingCopyLibrary.getID(), false, null);
-			} catch (JavaModelException e) {
-				JSFUiPlugin.log(IStatus.ERROR, "Exception while updating JSF Library containers", e); //$NON-NLS-1$
-			}
-		}
-		JSFLibraryRegistryUtil.getInstance().saveJSFLibraryRegistry();
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.wizard.Wizard#addPages()
-	 */
-	public void addPages() {
-		page = new JSFLibraryWizardPage(Messages.JSFLibraryWizard_JSFLibrary);
-		super.addPage(page);
-		page.setWizard(this);
-	}
-
-	/**
-	 * @return the JSFLibrary being modified by this wizard
-	 */
-	public JSFLibrary getJSFLibrary() {
-		return workingCopyLibrary;
-	}
-
-	private class JSFLibraryWizardPage extends WizardPage {
-
-		/**
-		 * @param pageName
-		 */
-		protected JSFLibraryWizardPage(String pageName) {
-			super(pageName);
-			setDescription(isImplsOnly() ? IMPLS_ONLY_DESC : DESCRIPTION);
-			setTitle(Messages.JSFLibraryWizard_JSFLibrary);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
-		 */
-		public boolean isPageComplete() {
-			if (modified == false) {
-				return false;
-			}
-			return super.isPageComplete();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-		 */
-		public void createControl(Composite parent) {
-			initializeDialogUnits(parent);
-
-			jsfLibraryEditControl = new JSFLibraryEditControl(workingCopyLibrary, parent);
-			jsfLibraryEditControl.setImplOnly(isImplsOnly());
-			jsfLibraryEditControl.setNonImplOnly(isNonImplsOnly());
-			jsfLibraryEditControl.setLayout(new GridLayout(2, false));
-			jsfLibraryEditControl.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-			jsfLibraryEditControl.addValidationListener(new JSFLibraryValidationListener(){
-				public void notifyValidation(JSFLibraryValidationEvent e) {
-					setErrorMessage(e.getMessage());
-					modified = true;
-					setPageComplete(getErrorMessage()==null);
-				}				
-			});
-
-			setControl(jsfLibraryEditControl);
-			setPageComplete(false);
-		}
-
-	}
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizardPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizardPage.java
deleted file mode 100644
index f2209f9..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizardPage.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Dialog for creating or editing a JSF Library or Implementation.
- * <br>
- * If the selection passed in init is not null then the item will be edit mode.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFLibraryWizardPage extends WizardPage {
-
-	private boolean modified = false;
-	private JSFLibrary workingCopyLibrary;
-
-	private static final String DESCRIPTION = Messages.JSFLibraryWizard_DESCRIPTION;
-
-	/**
-	 * Constructor
-	 */
-	public JSFLibraryWizardPage(){
-		super("JSFLibrary"); //$NON-NLS-1$
-	}
-
-	/**
-	 * @return JSF Library working copy 
-	 */
-	public JSFLibrary getJSFLibrary() {
-		return workingCopyLibrary;
-	}
-
-	/**
-	 * Constructor
-	 * @param pageName
-	 */
-	public JSFLibraryWizardPage(String pageName) {
-		super(pageName);
-		setDescription(DESCRIPTION);//implsOnly ? IMPLS_ONLY_DESC : 
-		setTitle(Messages.JSFLibraryWizard_JSFLibrary);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
-	 */
-	public boolean isPageComplete() {
-		if (modified == false) {
-			return false;
-		}
-		return super.isPageComplete();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createControl(Composite parent) {
-		initializeDialogUnits(parent);
-
-		JSFLibraryEditControl editControl = new JSFLibraryEditControl(workingCopyLibrary, parent);		
-		editControl.addValidationListener(new JSFLibraryValidationListener(){
-			public void notifyValidation(JSFLibraryValidationEvent e) {
-				setErrorMessage(e.getMessage());
-				modified = true;
-				setPageComplete(getErrorMessage()==null);					
-			}			
-		});
-		setControl(editControl);
-		setPageComplete(false);
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java
deleted file mode 100644
index ad3b136..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Customized warning dialog for JSF Library Upgrade warnings.
- * 
- * @author cbateman
- *
- */
-class WarningMessageDialog extends MessageDialog 
-{
-    private Text    _messageLabel;
-    
-    /**
-     * @param parent
-     * @param title
-     * @param message
-     * @return true if the user hit OK
-     * 
-     * Overriden to set the default button to CANCEL and use this dialog.
-     */
-    public static boolean openConfirm(Shell parent, String title, String message) {
-        MessageDialog dialog = new WarningMessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, QUESTION, new String[] { IDialogConstants.OK_LABEL,
-                        IDialogConstants.CANCEL_LABEL }, 1); // CANCEL is the
-        // default
-        return dialog.open() == 0;
-    }
-    
-    WarningMessageDialog(Shell parentShell, String dialogTitle,
-            Image dialogTitleImage, String dialogMessage, int dialogImageType,
-            String[] dialogButtonLabels, int defaultIndex) {
-        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage,
-                dialogImageType, dialogButtonLabels, defaultIndex);
-    }
-
-    @Override
-    protected Control createMessageArea(Composite composite) 
-    {
-        // create composite
-        // create image
-        Image image = getImage();
-        if (image != null) {
-            imageLabel = new Label(composite, SWT.NULL);
-            image.setBackground(imageLabel.getBackground());
-            imageLabel.setImage(image);
-            addAccessibleListeners(imageLabel, image);
-            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.BEGINNING)
-                    .applyTo(imageLabel);
-        }
-        // create message
-        if (message != null) {
-            _messageLabel = new Text(composite, getMessageLabelStyle()|SWT.READ_ONLY);
-            _messageLabel.setText(message);
-            GridDataFactory
-                    .fillDefaults()
-                    .align(SWT.FILL, SWT.BEGINNING)
-                    .grab(true, false)
-                    .hint(
-                            convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH),
-                            SWT.DEFAULT).applyTo(_messageLabel);
-        }
-        return composite;   
-    }
-    
-    /**
-     * NOTE: copied from IconAndMessageDialog
-     * Add an accessible listener to the label if it can be inferred from the
-     * image.
-     * 
-     * @param label
-     * @param image
-     */
-    private void addAccessibleListeners(Label label, final Image image) {
-        label.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-            public void getName(AccessibleEvent event) {
-                final String accessibleMessage = getAccessibleMessageFor(image);
-                if (accessibleMessage == null) {
-                    return;
-                }
-                event.result = accessibleMessage;
-            }
-        });
-    }
-    
-    /**
-     * NOTE: copied from IconAndMessageDialog
-     * @param image
-     * @return an accesible string
-     */
-    private String getAccessibleMessageFor(Image image) {
-        if (image.equals(getErrorImage())) {
-            return JFaceResources.getString("error");//$NON-NLS-1$
-        }
-
-        if (image.equals(getWarningImage())) {
-            return JFaceResources.getString("warning");//$NON-NLS-1$
-        }
-
-        if (image.equals(getInfoImage())) {
-            return JFaceResources.getString("info");//$NON-NLS-1$
-        }
-
-        if (image.equals(getQuestionImage())) {
-            return JFaceResources.getString("question"); //$NON-NLS-1$
-        }
-
-        return null;
-    }
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java
deleted file mode 100644
index 834889d..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Customized warning dialog for JSF Library Upgrade warnings.
- * 
- * @author cbateman
- *
- */
-class WarningMessageDialogWithToggle extends MessageDialogWithToggle 
-{
-    private Text    _messageLabel;
-
-    /**
-     * @param parent
-     * @param title
-     * @param message
-     * @param toggleMessage
-     * @param toggleState
-     * @param store
-     * @param key
-     * @return the dialog.
-     * 
-     * Overriden to make default button CANCEL and use this dialog
-     */
-    public static MessageDialogWithToggle openOkCancelConfirm(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new WarningMessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, QUESTION, new String[] { IDialogConstants.OK_LABEL,
-                        IDialogConstants.CANCEL_LABEL }, 1, // CANCEL is the default
-                toggleMessage, toggleState);
-        dialog.open();
-        return dialog;
-    }
-    
-    WarningMessageDialogWithToggle(Shell parentShell, String dialogTitle,
-            Image image, String message, int dialogImageType,
-            String[] dialogButtonLabels, int defaultIndex,
-            String toggleMessage, boolean toggleState) {
-        super(parentShell, dialogTitle, image, message, dialogImageType,
-                dialogButtonLabels, defaultIndex, toggleMessage, toggleState);
-    }
-
-    @Override
-    protected Control createMessageArea(Composite composite) 
-    {
-        // create composite
-        // create image
-        Image image = getImage();
-        if (image != null) {
-            imageLabel = new Label(composite, SWT.NULL);
-            image.setBackground(imageLabel.getBackground());
-            imageLabel.setImage(image);
-            addAccessibleListeners(imageLabel, image);
-            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.BEGINNING)
-                    .applyTo(imageLabel);
-        }
-        // create message
-        if (message != null) {
-            _messageLabel = new Text(composite, getMessageLabelStyle()|SWT.READ_ONLY);
-            _messageLabel.setText(message);
-            GridDataFactory
-                    .fillDefaults()
-                    .align(SWT.FILL, SWT.BEGINNING)
-                    .grab(true, false)
-                    .hint(
-                            convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH),
-                            SWT.DEFAULT).applyTo(_messageLabel);
-        }
-        return composite;   
-    }
-    
-    /**
-     * NOTE: copied from IconAndMessageDialog
-     * Add an accessible listener to the label if it can be inferred from the
-     * image.
-     * 
-     * @param label
-     * @param image
-     */
-    private void addAccessibleListeners(Label label, final Image image) {
-        label.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-            public void getName(AccessibleEvent event) {
-                final String accessibleMessage = getAccessibleMessageFor(image);
-                if (accessibleMessage == null) {
-                    return;
-                }
-                event.result = accessibleMessage;
-            }
-        });
-    }
-    
-    /**
-     * NOTE: copied from IconAndMessageDialog
-     * @param image
-     * @return an accesible string
-     */
-    private String getAccessibleMessageFor(Image image) {
-        if (image.equals(getErrorImage())) {
-            return JFaceResources.getString("error");//$NON-NLS-1$
-        }
-
-        if (image.equals(getWarningImage())) {
-            return JFaceResources.getString("warning");//$NON-NLS-1$
-        }
-
-        if (image.equals(getInfoImage())) {
-            return JFaceResources.getString("info");//$NON-NLS-1$
-        }
-
-        if (image.equals(getQuestionImage())) {
-            return JFaceResources.getString("question"); //$NON-NLS-1$
-        }
-
-        return null;
-    }
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/JSFContentAssistProcessor.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/JSFContentAssistProcessor.java
deleted file mode 100644
index 625bf5a..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/JSFContentAssistProcessor.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Gerry Kessler/Oracle - initial API and implementation
- *    
- ********************************************************************************/
-
-package org.eclipse.jst.jsf.ui.internal.contentassist;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.contentassist.IContextInformationValidator;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.ITaglibContextResolver;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ITextRegionContextResolver;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
-import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
-import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValue;
-import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants;
-import org.eclipse.wst.xml.ui.internal.taginfo.MarkupTagInfoProvider;
-import org.osgi.framework.Bundle;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * The content assist processor for non-EL attribute values.
- * 
- * @author Gerry Kessler - Oracle
- * 
- */
-public class JSFContentAssistProcessor implements IContentAssistProcessor {
-	private ITextRegionContextResolver resolver;
-	private ITaglibContextResolver tlResolver;
-	private String defaultAdditionalInfo;
-
-	private String defaultIconPath = "/icons/attr_val.gif"; //$NON-NLS-1$
-	
-	private ImageDescriptor defaultAttrValImgDesc;
-	
-	private MarkupTagInfoProvider fInfoProvider;
-
-	/**
-	 * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(org.eclipse.jface.text.ITextViewer,
-	 *      int)
-	 */
-	public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
-			int documentPosition) {
-		List proposals = new ArrayList();
-		IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE
-				.getContext(viewer, documentPosition);
-
-		if (context != null) {
-			resolver = IStructuredDocumentContextResolverFactory.INSTANCE
-					.getTextRegionResolver(context);
-
-			if (resolver != null) {
-				final String regionType = resolver.getRegionType();
-
-				if (regionType != null
-						&& regionType.equals(DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)) {
-					
-					tlResolver = IStructuredDocumentContextResolverFactory.INSTANCE
-							.getTaglibContextResolver(context);
-
-					if (tlResolver != null) {
-						
-						Attr attr = getAttribute(context);
-						if (attr != null) {
-							Node tagElement = attr.getOwnerElement();
-							if (tagElement != null) {
-								String uri = tlResolver.getTagURIForNodeName(tagElement);
-								if (uri != null) {									
-									proposals = createProposals(context, uri, tagElement, attr);
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return (ICompletionProposal[]) proposals
-				.toArray(new ICompletionProposal[0]);
-	}
-
-	private String getDefaultAdditionalInfo(Node tagElement, Attr attr) {
-		if (defaultAdditionalInfo == null){
-			CMElementDeclaration elementNode = getCMElementDeclaration(tagElement);
-			if (elementNode != null){
-				CMAttributeDeclaration attrNode = getCMAttributeDeclaration(elementNode, attr);
-				if (attrNode != null)
-					defaultAdditionalInfo = getInfoProvider().getInfo(attrNode);
-			}
-		}
-		return defaultAdditionalInfo;
-	}
-	
-	private CMElementDeclaration getCMElementDeclaration(Node node) {
-		CMElementDeclaration result = null;
-		if (node.getNodeType() == Node.ELEMENT_NODE) {
-			ModelQuery modelQuery = ModelQueryUtil.getModelQuery(node.getOwnerDocument());
-			if (modelQuery != null)
-				result = modelQuery.getCMElementDeclaration((Element) node);
-		}
-		return result;
-	}
-
-	private CMAttributeDeclaration getCMAttributeDeclaration(CMElementDeclaration tagElement, Attr attr) {
-		CMNamedNodeMap attrs = tagElement.getAttributes();
-		for (Iterator it = attrs.iterator();it.hasNext();){
-			CMAttributeDeclaration CMAttr = (CMAttributeDeclaration)it.next();
-			if (CMAttr.getAttrName().equals(attr.getName()))
-				return CMAttr;
-		}
-		return null;
-	}
-	
-	private MarkupTagInfoProvider getInfoProvider() {
-		if (fInfoProvider == null) {
-			fInfoProvider = new MarkupTagInfoProvider();
-		}
-		return fInfoProvider;
-	}
-	
-	private List createProposals(IStructuredDocumentContext context, String uri, Node tagElement, Attr attr) {
-		List ret = new ArrayList();
-		List processors = MetaDataEnabledProcessingFactory.getInstance()
-						.getAttributeValueRuntimeTypeFeatureProcessors(
-								IPossibleValues.class, context, uri,
-								tagElement.getLocalName(), attr.getLocalName());
-		
-		if (processors != null) {
-			for (int i = 0; i < processors.size(); i++) {
-				IPossibleValues p = (IPossibleValues) processors.get(i);
-				ret.addAll(createProposals(p, tagElement, attr));
-			}
-		}
-		return ret;
-	}
-
-	private List createProposals(IPossibleValues p, Node tagElement, Attr attr) {
-		List ret = new ArrayList();
-		defaultAdditionalInfo = null;
-		Iterator it = p.getPossibleValues().iterator();
-		while (it.hasNext()) {
-			IPossibleValue val = (IPossibleValue) it.next();
-			if (val != null){ //just in case...
-				ICompletionProposal proposal = new CustomCompletionProposal(
-						val.getValue(), 		//replacement text
-						getReplacementOffset(), //replacementOffset
-						getReplacementLength(), //replacementLength
-						getCursorPosition(val), //cursor pos
-						getImage(val), 			//image
-						val.getDisplayValue(), 	//display value
-						null, 					//IContextInformation
-						getAdditionalInfo(val,tagElement,attr), //addditional info
-						XMLRelevanceConstants.R_JSP_ATTRIBUTE_VALUE,	//relevance
-						true);					//updateReplace
-	
-				ret.add(proposal);
-			}
-		}
-		return ret;
-	}
-
-
-	private String getAdditionalInfo(IPossibleValue val, Node tagElement, Attr attr) {
-		if (val.getAdditionalInformation() != null)
-			return val.getAdditionalInformation();
-		
-		return 	getDefaultAdditionalInfo(tagElement, attr);
-	}
-
-	private int getReplacementLength() {
-		return resolver.getRegionText().length() - 2;
-	}
-
-	private int getCursorPosition(IPossibleValue val) {
-		//Something changed in 1.5RC2 CustomCompletionProposal 
-		//it appears that the cursor position is now relative to where it is currently
-		//rather than relative to document
-		
-		//return getReplacementOffset() + val.getValue().length();
-		return val.getValue().length();
-	}
-
-	private int getReplacementOffset() {
-		return resolver.getStartOffset() + 1;
-	}
-
-	private Image getImage(IPossibleValue val) {
-		ImageDescriptor icon = val.getIcon();		
-		if (icon == null || icon.equals("")){ //$NON-NLS-1$
-			return getDefaultAttributeValueImage();
-		}
-		
-		return getOrCreateImage(icon);		
-	}
-
-	private Image getOrCreateImage(ImageDescriptor icon) {
-		if (icon == null)
-			return null;
-			
-		Image img = JSFUiPlugin.getDefault().getImageRegistry().get(icon.toString());
-		if (img == null){
-			try {
-				img = icon.createImage();
-				JSFUiPlugin.getDefault().getImageRegistry().put(icon.toString(), img);
-			} catch (RuntimeException e) {
-                // empty block; C.B: handle exception?
-			}
-		}
-		return img;
-	}
-
-	private Image getDefaultAttributeValueImage() {
-		if (defaultAttrValImgDesc == null){
-			Bundle bundle = Platform.getBundle(JSFUiPlugin.PLUGIN_ID);
-			URL url= FileLocator.find(bundle,new Path(defaultIconPath ), null);
-			defaultAttrValImgDesc = ImageDescriptor.createFromURL(url);
-		}
-		return getOrCreateImage(defaultAttrValImgDesc);
-	}
-
-	private Attr getAttribute(IStructuredDocumentContext context) {
-		final IDOMContextResolver domResolver = IStructuredDocumentContextResolverFactory.INSTANCE
-				.getDOMContextResolver(context);
-
-		if (domResolver != null) {
-			final Node curNode = domResolver.getNode();
-
-			if (curNode instanceof Attr) {
-				return (Attr) curNode;
-			}
-		}
-		return null;
-
-	}
-
-	public IContextInformation[] computeContextInformation(ITextViewer viewer,
-			int offset) {
-		// no context info
-		return null;
-	}
-
-	public char[] getCompletionProposalAutoActivationCharacters() {
-		// auto activate when user hits a '.'
-		return new char[] { '.' };
-	}
-
-	public char[] getContextInformationAutoActivationCharacters() {
-		// no auto-activation for context info
-		return null;
-	}
-
-	public String getErrorMessage() {
-		// don't flag errors
-		return null;
-	}
-
-	public IContextInformationValidator getContextInformationValidator() {
-		// don't validate context information
-		return null;
-	}
-
-}
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/el/JSFELContentAssistProcessor.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/el/JSFELContentAssistProcessor.java
deleted file mode 100644
index c398843..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/contentassist/el/JSFELContentAssistProcessor.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Cameron Bateman/Oracle - initial API and implementation
- *    
- ********************************************************************************/
-
-package org.eclipse.jst.jsf.ui.internal.contentassist.el;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.contentassist.IContextInformationValidator;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ITextRegionContextResolver;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
-import org.eclipse.jst.jsf.core.internal.contentassist.el.ContentAssistParser;
-import org.eclipse.jst.jsf.core.internal.contentassist.el.ContentAssistStrategy;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-import org.eclipse.wst.xml.ui.internal.contentassist.ProposalComparator;
-
-/**
- * The content assist processor for JSF EL partitions on attribute values.
- * 
- * @author cbateman
- *
- */
-public class JSFELContentAssistProcessor implements IContentAssistProcessor 
-{
-	/**
-	 * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(org.eclipse.jface.text.ITextViewer, int)
-	 */
-	public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
-			int documentPosition) 
-	{
-		final List  proposals = new ArrayList();
-		final IStructuredDocumentContext context = 
-			IStructuredDocumentContextFactory.INSTANCE.getContext(viewer, documentPosition);
-		
-		if (context != null)
-		{
-			ITextRegionContextResolver  resolver = 
-				IStructuredDocumentContextResolverFactory.INSTANCE.getTextRegionResolver(context);
-			
-			if (resolver != null)
-			{
-				final String regionType = resolver.getRegionType();
-				
-				if (regionType != null
-						&& resolver.matchesRelative(new String[] {DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE}))
-				{
-					
-					String elText = null;
-					
-					// if we are in the EL content, then get the current region text
-					if (DOMJSPRegionContexts.JSP_VBL_CONTENT.equals(regionType))
-					{
-						elText = resolver.getRegionText().trim();
-					}
-					// otherwise, we may be at the end of a content region but at
-					// the beginning of a closing brace so check to see if the previous
-					// region was a VBL_CONTENT
-					// TODO: this search algorithm may need improvement
-					else if (regionType.equals(DOMJSPRegionContexts.JSP_VBL_CLOSE))
-					{
-						IStructuredDocumentContext previousContext = 
-							resolver.getPreviousContext();
-						
-						ITextRegionContextResolver prevResolver =
-							IStructuredDocumentContextResolverFactory.INSTANCE.getTextRegionResolver(previousContext);
-						
-						if (prevResolver != null)
-						{
-                            if (DOMJSPRegionContexts.JSP_VBL_CONTENT.equals(prevResolver.getRegionType()))
-                            {
-    							resolver = prevResolver;
-    							elText = prevResolver.getRegionText().trim();
-                            }
-                            else if (DOMJSPRegionContexts.JSP_VBL_OPEN.equals(prevResolver.getRegionType()))
-                            {
-                                elText = ""; //$NON-NLS-1$
-                            }
-						}
-					}
-					
-                    
-					final ContentAssistStrategy strategy = 
-                        ContentAssistParser.getPrefix(documentPosition - resolver.getStartOffset() + 1, elText);
-                    
-					if (strategy != null)
-						proposals.addAll(strategy.getProposals(context));
-				}
-			}
-		}
-		
-        Collections.sort(proposals, new ProposalComparator());
-		return (ICompletionProposal[]) proposals.toArray(new ICompletionProposal[0]);
-	}
-
-
-	public IContextInformation[] computeContextInformation(ITextViewer viewer,
-			int offset) {
-		// no context info
-		return null;
-	}
-
-	public char[] getCompletionProposalAutoActivationCharacters() {
-		// auto activate when user hits a '.'
-		return new char[] {'.'};
-	}
-
-	public char[] getContextInformationAutoActivationCharacters() {
-		// no auto-activation for context info
-		return null;
-	}
-
-	public String getErrorMessage() {
-		// don't flag errors
-		return null;
-	}
-
-	public IContextInformationValidator getContextInformationValidator() {
-		// don't validate context information
-		return null;
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java
deleted file mode 100644
index 85fc288..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Justin Chen - development check in
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;
-
-/**
- * Listener interface when a new JSF implementation library is created.
- * 
- * @author Justin Chen - Oracle
- *
- */
-public interface IJSFImplLibraryCreationListener extends java.util.EventListener {
-	/**
-	 * Ok button is pressed in JSF Library dialog.
-	 * 
-	 * @param event
-	 */
-	public void okClicked(JSFImplLibraryCreationEvent event);
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java
deleted file mode 100644
index df3b0f1..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Justin Chen - development check in
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;
-
-import java.util.EventObject;
-
-/**
- * JSF Implementation library creation event.
- * 
- * @author Justin Chen - Oracle
- *
- */
-public class JSFImplLibraryCreationEvent extends EventObject {
-
-	private static final long serialVersionUID = 6390319185522362453L;
-	private boolean isLibCreated; 
-	
-	/**
-	 * @param source
-	 * @param okClicked
-	 */
-	public JSFImplLibraryCreationEvent(Object source, boolean okClicked) {
-		super(source);
-		this.isLibCreated = okClicked;
-	}
-
-	/**
-	 * Ok button pressed.
-	 * 
-	 * @return boolean
-	 */
-	public boolean isLibraryCreated() {
-		return isLibCreated;
-	}
-	
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java
deleted file mode 100644
index 26386cd..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java
+++ /dev/null
@@ -1,1000 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 Oracle Corporation.
- * 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:
- *    Justin Chen
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EventObject;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigModel;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfiglModelSource;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistry;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.jst.jsf.ui.internal.classpath.JSFLibraryWizard;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-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;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
-
-/**
- * A custom control used in wizard and property pages.
- * 
- * @author Justin Chen
- */
-public class JSFLibraryConfigControl extends Composite { 
-	private static final String IMPL_DESC = Messages.JSFLibrariesPreferencePage_IMPL_DESC;
-	private static final String DEFAULT_IMPL_DESC = Messages.JSFLibrariesPreferencePage_DEFAULT_IMPL_DESC;
-	private static final String MISSING = Messages.JSFLibrariesPreferencePage_MISSING_DESC;
-
-	final private int COLUMN_DEPLOY = 0;
-	final private int COLUMN_LIB_NAME = 1;
-
-	private JSFLibraryConfigModel workingCopyModel = null;
-	
-	private Button btnServerSupplied;
-	private Button btnUserSupplied;
-	private ComboViewer cvImplLib;
-	private CheckboxTableViewer ctvSelCompLib;
-	private Button btnDeployJars;
-	private TreeViewer tvCompLib;
-	private TreeViewerAdapter tvAdapter;
-	private TreeLabelProvider tvLabelProvider;
-	private Combo comboImplLib;
-	private Button btnAddAll;
-	private Button btnRemoveAll;
-	
-	private Vector newJSFLibCreatedListeners = new Vector();
-	private Set _changeListeners;
-	private boolean _initing;
-	private IDataModel model;	
-
-	/**
-	 * @param listener
-	 */
-	public void addOkClickedListener(IJSFImplLibraryCreationListener listener) {
-		newJSFLibCreatedListeners.addElement(listener);
-	}
-	/**
-	 * @param listener
-	 */
-	public void removeOkClickedListener(IJSFImplLibraryCreationListener listener) {
-		newJSFLibCreatedListeners.removeElement(listener);
-	}
-	
-	/**
-	 * @param listener
-	 */
-	public void addChangeListener(JSFLibraryConfigControlChangeListener listener){
-		getChangeListeners().add(listener);
-	}
-	
-	/**
-	 * @param listener
-	 */
-	public void removeChangeListener(JSFLibraryConfigControlChangeListener listener){
-		if (getChangeListeners().contains(listener))
-			getChangeListeners().remove(listener);
-	}
-	
-	private Set getChangeListeners() {
-		if (_changeListeners == null){
-			_changeListeners = new HashSet();
-		}
-		return _changeListeners;
-	}
-	
-	private void fireChangedEvent(final EventObject e){
-		if (_initing) return;
-		SafeRunnable.run(new ISafeRunnable(){
-			public void handleException(Throwable exception) {
-			    // TODO: should we perhaps do something here?
-			    JSFUiPlugin.log(IStatus.ERROR, exception.getLocalizedMessage());
-			}
-			public void run() throws Exception {
-				for (Iterator it=getChangeListeners().iterator();it.hasNext();){
-					((JSFLibraryConfigControlChangeListener)it.next()).changed(new JSFLibraryConfigControlChangeEvent(e));
-				}
-			}
-		});
-	}
-	
-	/**
-	 * Create the composite
-	 * @param parent
-	 * @param style
-	 */	
-	public JSFLibraryConfigControl(Composite parent, int style) {
-		super(parent, style);
-		_initing = true;
-		createControls();
-	}	
-	
-	/**
-	 * set control values from provided model.
-	 * 
-	 * @param source
-	 */
-	public void loadControlValuesFromModel(JSFLibraryConfiglModelSource source) {
-		if (source != null) {
-			// never read persistentModel = source;
-			workingCopyModel = JSFLibraryConfigModel.JSFLibraryConfigModelFactory.createInstance(source);
-			initializeControlValues();
-			_initing = false;
-		} else {
-			JSFUiPlugin.log(IStatus.ERROR, Messages.JSFLibraryConfigControl_NullProject);
-		}
-		
-	}
-		
-	/* (non-Javadoc)
-	 * @see org.eclipse.swt.widgets.Widget#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-	}
-	
-	/**
-	 * Return current selected JSF Implementation Library.
-	 * Otherwise, return null.
-	 *  
-	 * @return JSFLibraryInternalReference
-	 */
-	public JSFLibraryInternalReference getSelectedJSFLibImplementation() {
-		return workingCopyModel.getCurrentJSFImplementationLibrarySelection();
-	}
-	 
-	/**
-	 * Return a list of selected JSF Component Libraries.
-	 * Otherwise, return an empty list.
-	 * 
-	 * @return a list of selected JSF Component Libraries
-	*/
-	public List getSelectedJSFLibComponents() {
-		return workingCopyModel.getCurrentJSFComponentLibrarySelection();
-	}
-	
-	/**
-	 * 
-	 * @return JSFLibraryConfigModelAdapter
-	 */
-	public JSFLibraryConfigModel getWorkingModel() {
-		return workingCopyModel;
-	}
-	
-	private void initializeControlValues() {
-		loadJSFImplList();
-		
-		btnDeployJars.setSelection(false);
-		JSFLibraryInternalReference savedImplLib = workingCopyModel.getSavedJSFImplementationLibrary();
-		if ( savedImplLib != null ) {
-			/*
-			 * Get the input for the control to set selection.
-			 */
-			JSFLibraryInternalReference selected = JSFLibraryRegistryUtil.getInstance().getJSFLibraryReferencebyID(savedImplLib.getID());
-			if (selected != null) {
-				btnDeployJars.setSelection(selected.isCheckedToBeDeployed());			
-				cvImplLib.setSelection(new StructuredSelection(selected), true);
-			}
-		} else {
-			JSFLibraryInternalReference dftJSFImplLib = JSFLibraryRegistryUtil.getInstance().getDefaultJSFImplementationLibrary();
-			if (dftJSFImplLib != null) {			
-				btnDeployJars.setSelection(dftJSFImplLib.isCheckedToBeDeployed());	
-				cvImplLib.setSelection(new StructuredSelection(dftJSFImplLib), true);				
-			}
-			else 
-				btnDeployJars.setEnabled(false);
-		}
-		
-		loadJSFCompList();
-
-		JSFLibraryInternalReference savedCompLib = null; 
-		JSFLibraryInternalReference selected = null;
-		//Iterator it = persistentModel.getJSFComponentLibraries().iterator();
-		Iterator it = workingCopyModel.getJSFComponentLibraries().iterator();
-		while (it.hasNext()) {
-			savedCompLib = (JSFLibraryInternalReference) it.next();
-			selected = JSFLibraryRegistryUtil.getInstance().getJSFLibraryReferencebyID(savedCompLib.getID());
-			if (selected != null) {
-				ctvSelCompLib.setChecked(selected, selected.isCheckedToBeDeployed());
-			}
-		}
-
-		setCompListModelProperty();
-		
-		initializeImplementationType();
-		
-		redraw();
-	}
-	
-	private void initializeImplementationType() {
-		IMPLEMENTATION_TYPE implType = workingCopyModel.getImplementationType();
-		if (implType == IMPLEMENTATION_TYPE.SERVER_SUPPLIED) {
-			btnServerSupplied.setSelection(true);
-			btnUserSupplied.setSelection(false);
-			enableUserSupplied(false);
-		} else if (implType == IMPLEMENTATION_TYPE.CLIENT_SUPPLIED) {
-			btnServerSupplied.setSelection(false);
-			btnUserSupplied.setSelection(true);
-			enableUserSupplied(true);
-		} else {
-			enableUserSupplied(false);
-		}	
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, implType);
-	}
-	private void loadJSFImplList() {
-		cvImplLib.setInput(workingCopyModel.getJSFImplementationLibraries());
-	}
-	
-	private void loadJSFCompList() {
-		tvCompLib.setInput(workingCopyModel.getJSFComponentLibraries());
-		ctvSelCompLib.setInput(workingCopyModel.getJSFComponentLibraries());		
-	}
-	
-	private JSFLibraryInternalReference getCurrentSelectedJSFImplLib() {
-		JSFLibraryInternalReference selJSFImpl = null;
-		StructuredSelection objs = (StructuredSelection)cvImplLib.getSelection();
-		if (objs != null){
-			if (objs.getFirstElement() instanceof JSFLibraryInternalReference){
-				selJSFImpl = (JSFLibraryInternalReference)objs.getFirstElement();
-			}
-		}
-		return selJSFImpl;		
-	}
-
-	private void createImplLibControls(Composite parent) {
-		final Composite cmpImpls = new Composite(parent, SWT.NONE);
-		final GridLayout gridLayoutImpls = new GridLayout();
-		gridLayoutImpls.numColumns = 4;
-		gridLayoutImpls.marginLeft = 0;
-		gridLayoutImpls.marginTop = 0;
-		gridLayoutImpls.marginBottom = 0;
-		
-		cmpImpls.setLayout(gridLayoutImpls);
-		GridData gdCmpImpls = new GridData();
-		gdCmpImpls.horizontalAlignment = SWT.FILL;
-		gdCmpImpls.grabExcessHorizontalSpace = true;
-		cmpImpls.setLayoutData(gdCmpImpls);
-
-		btnServerSupplied = new Button(cmpImpls, SWT.RADIO);
-		btnServerSupplied.setToolTipText(Messages.JSFLibraryConfigControl_ServerSuppliedButtonTooltip);
-		GridData gdSS = new GridData();
-		gdSS.horizontalAlignment = SWT.BEGINNING;
-		btnServerSupplied.setLayoutData(gdSS);
-		
-		btnServerSupplied.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				setServerSuppliedLibrarySelection(e);
-			}			
-		});
-		
-		Label lblServerSupplied = new Label(cmpImpls, SWT.NONE);
-		lblServerSupplied.setText(Messages.JSFLibraryConfigControl_ServerSuppliedButtonLabel);
-		GridData lblSS = new GridData();
-		lblSS.grabExcessHorizontalSpace = true;
-		lblServerSupplied.setLayoutData(lblSS);
-		lblServerSupplied.addMouseListener(new MouseAdapter(){
-			public void mouseUp(MouseEvent e) {
-				btnServerSupplied.setSelection(true);
-				setServerSuppliedLibrarySelection(e);				
-			}			
-		});
-		
-		
-		Label lblSpacer1 = new Label(cmpImpls, SWT.NONE);
-		GridData gdSpc1 = new GridData();
-		gdSpc1.horizontalAlignment = SWT.END;
-		gdSpc1.horizontalSpan = 2;
-		lblSpacer1.setLayoutData(gdSpc1);
-		
-		btnUserSupplied = new Button(cmpImpls, SWT.RADIO);
-		btnUserSupplied.setLayoutData(new GridData());
-		btnUserSupplied.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				setUserSuppliedLibrarySelection(e);
-			}			
-		});
-		
-		this.addOkClickedListener(new IJSFImplLibraryCreationListener() {
-			public void okClicked(JSFImplLibraryCreationEvent event) {				
-				if (! btnUserSupplied.getSelection()  && event.isLibraryCreated()) {
-					btnServerSupplied.setSelection(false);
-					setUserSuppliedLibrarySelection(event);
-				}				
-			}			
-		});
-			
-		cvImplLib = new ComboViewer(cmpImpls, SWT.READ_ONLY);
-		cvImplLib.setLabelProvider(new ImplLibCVListLabelProvider());
-		cvImplLib.setContentProvider(new ImplLibCVContentProvider());
-		comboImplLib = cvImplLib.getCombo();
-		GridData gd_cvImplLib = new GridData();
-		gd_cvImplLib.horizontalAlignment = SWT.FILL;
-		gd_cvImplLib.grabExcessHorizontalSpace = true;
-		comboImplLib.setLayoutData(gd_cvImplLib);
-		cvImplLib.addSelectionChangedListener(
-			new ISelectionChangedListener() {
-				public void selectionChanged(SelectionChangedEvent event) {
-					StructuredSelection ss = (StructuredSelection) event.getSelection();
-					JSFLibraryInternalReference crtSelImplLib = (JSFLibraryInternalReference) ss.getFirstElement();
-					if (crtSelImplLib != null) btnDeployJars.setEnabled(true);
-					crtSelImplLib.setToBeDeployed(btnDeployJars.getSelection());
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(crtSelImplLib);
-					model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION, crtSelImplLib);
-					fireChangedEvent(event);
-				}
-			}
-		);
-			
-		btnDeployJars = new Button(cmpImpls, SWT.CHECK);
-		GridData gdDeploy = new GridData();
-		btnDeployJars.setLayoutData(gdDeploy);
-		btnDeployJars.setText(Messages.JSFLibraryConfigControl_DeployButtonLabel);
-		btnDeployJars.setToolTipText(Messages.JSFLibraryConfigControl_DeployJAR);
-		btnDeployJars.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (! _initing){
-					JSFLibraryInternalReference jsflib = getCurrentSelectedJSFImplLib();
-					if (jsflib != null)
-						jsflib.setToBeDeployed(btnDeployJars.getSelection());
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(jsflib);//why r we doing this here???
-	//				model.setProperty(IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION, btnDeployJars.getSelection());
-					fireChangedEvent(e);
-				}
-			}
-		}
-		);
-		
-		final Button btnNewImpl = new Button(cmpImpls, SWT.NONE); //compTest,
-		GridData gdNew = new GridData();
-		gdNew.horizontalAlignment = SWT.END;
-		btnNewImpl.setLayoutData(gdNew);
-		btnNewImpl.setText(Messages.JSFLibraryConfigControl_NewImplementationLibrary);	
-		btnNewImpl.setToolTipText(Messages.JSFLibraryConfigControl_NewImplButtonTooltip);
-		btnNewImpl.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				JSFLibraryWizard wizard = new JSFLibraryWizard(JSFLibraryWizard.IMPLS);
-				IWorkbench wb = PlatformUI.getWorkbench();
-				wizard.init(wb, null);
-				WizardDialog dialog = new WizardDialog(wb
-						.getActiveWorkbenchWindow().getShell(), wizard);
-				int ret = dialog.open();
-				if (ret == Window.OK) {	
-					JSFLibraryInternalReference lib = new JSFLibraryInternalReference(wizard.getJSFLibrary(), true, true);
-					JSFLibraryRegistryUtil.getInstance().addJSFLibrary(lib);
-					workingCopyModel.getJSFImplementationLibraries().add(lib);
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(lib);
-					
-					loadJSFImplList();
-					btnDeployJars.setSelection(true);
-					cvImplLib.setSelection(new StructuredSelection(lib), true);
-					
-				}
-				// notify listeners that a JSF implementation is created.
-				JSFImplLibraryCreationEvent event = new JSFImplLibraryCreationEvent(this, (ret == Window.OK));
-				int size = newJSFLibCreatedListeners.size();
-				for (int i = 0; i < size; i++) {
-					IJSFImplLibraryCreationListener listener = 
-						(IJSFImplLibraryCreationListener) newJSFLibCreatedListeners.elementAt(i);
-					listener.okClicked(event);
-				}
-			}
-		});		
-	}
-	
-	private void setServerSuppliedLibrarySelection(final EventObject e) {
-		btnUserSupplied.setSelection(false);
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.SERVER_SUPPLIED);
-		enableUserSupplied(false);
-		fireChangedEvent(e);
-		
-	}
-	
-	private void setUserSuppliedLibrarySelection(final EventObject e) {
-		btnUserSupplied.setSelection(true);
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.CLIENT_SUPPLIED);
-		enableUserSupplied(true);	
-		fireChangedEvent(e);
-	}
-	
-	private void enableUserSupplied(boolean enabled) {
-		cvImplLib.getCombo().setEnabled(enabled);
-		btnDeployJars.setEnabled(enabled);		
-	}
-	
-	private void createCompLibControls(Composite parent) {
-		final Composite cmpCompLibs = new Composite(parent, SWT.NONE);
-		final GridLayout gridLayoutCompLibs = new GridLayout();
-		gridLayoutCompLibs.numColumns = 4;
-		gridLayoutCompLibs.marginLeft = 0;
-		gridLayoutCompLibs.marginRight = 0;
-		gridLayoutCompLibs.marginWidth = 0;
-		cmpCompLibs.setLayout(gridLayoutCompLibs);
-		GridData gdComp = new GridData();
-		gdComp.horizontalAlignment = SWT.FILL;
-		gdComp.grabExcessHorizontalSpace = true;
-		cmpCompLibs.setLayoutData(gdComp);
-		
-		
-		final Label lblCompLib = new Label(cmpCompLibs, SWT.NONE);
-		final GridData gd_lbl_complib = new GridData(GridData.FILL, GridData.CENTER, false, false, 4, 1);
-		lblCompLib.setLayoutData(gd_lbl_complib);
-		lblCompLib.setText(Messages.JSFLibraryConfigControl_ComponentLibrary);
-				
-		tvCompLib = new TreeViewer(cmpCompLibs, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-		tvAdapter = new TreeViewerAdapter();
-		tvLabelProvider = new TreeLabelProvider();
-		tvCompLib.setContentProvider(tvAdapter);
-		tvCompLib.setLabelProvider(tvLabelProvider);
-		tvCompLib.addDoubleClickListener(new IDoubleClickListener(){
-			public void doubleClick(DoubleClickEvent event) {
-				resetComponentLibSelection((StructuredSelection)event.getSelection(), 
-						tvCompLib, 
-						ctvSelCompLib, 
-						true);	
-				fireChangedEvent(event);
-			}			
-		});
-		tvCompLib.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
-		tvCompLib.addFilter(new TreeViewerFilter());		
-		
-		final Composite composite_buttons = new Composite(cmpCompLibs, SWT.NONE);
-		composite_buttons.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-		composite_buttons.setLayout(new GridLayout());
-
-		final Composite composite_Single = new Composite(composite_buttons, SWT.None);
-		composite_Single.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		final GridLayout gl_Single = new GridLayout();
-		gl_Single.marginHeight = 4;
-		composite_Single.setLayout(gl_Single);
-		
-		final Button btnAdd = new Button(composite_Single, SWT.NONE);
-		btnAdd.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-		btnAdd.setText(Messages.JSFLibraryConfigControl_Add);
-		btnAdd.setEnabled(false);
-
-		final Button btnRemove = new Button(composite_Single, SWT.NONE);
-		btnRemove.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-		btnRemove.setText(Messages.JSFLibraryConfigControl_Remove);
-		btnRemove.setEnabled(false);
-		
-		final Composite composite_All = new Composite(composite_buttons, SWT.None);
-		composite_All.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		final GridLayout gl_All = new GridLayout();
-		gl_Single.marginHeight = 4;
-		composite_All.setLayout(gl_All);
-		
-		btnAddAll = new Button(composite_All, SWT.NONE);
-		btnAddAll.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-		btnAddAll.setText(Messages.JSFLibraryConfigControl_AddAll);
-
-		btnRemoveAll = new Button(composite_All, SWT.NONE);
-		btnRemoveAll.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-		btnRemoveAll.setText(Messages.JSFLibraryConfigControl_RemoveAll);
-
-		final Composite composite_New = new Composite(composite_buttons, SWT.None);
-		composite_New.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		final GridLayout gl_New = new GridLayout();
-		gl_Single.marginHeight = 4;
-		composite_New.setLayout(gl_New);
-		
-		final Button btnNewCompLib = new Button(composite_New, SWT.NONE);
-		btnNewCompLib.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
-		btnNewCompLib.setText(Messages.JSFLibraryConfigControl_NewComponentLibrary);		
-		btnNewCompLib.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				JSFLibraryWizard wizard = new JSFLibraryWizard(JSFLibraryWizard.NONIMPLS);				
-				IWorkbench wb = PlatformUI.getWorkbench();
-				wizard.init(wb, null);
-				WizardDialog dialog = new WizardDialog(wb
-						.getActiveWorkbenchWindow().getShell(), wizard);						
-				int ret = dialog.open();
-				if (ret == Window.OK) {
-					JSFLibraryInternalReference lib = new JSFLibraryInternalReference(
-							wizard.getJSFLibrary(), 
-							true, 
-							true);
-					JSFLibraryRegistryUtil.getInstance().addJSFLibrary(lib);					
-					workingCopyModel.getJSFComponentLibraries().add(lib);
-					
-					loadJSFCompList();
-					setCompListModelProperty();
-					ctvSelCompLib.setChecked(lib, true);
-				}
-			}
-		});	
-
-		ctvSelCompLib = CheckboxTableViewer.newCheckList(cmpCompLibs, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
-		ctvSelCompLib.addFilter(new CheckedTableViewerFilter());
-		final Table table = ctvSelCompLib.getTable();
-		table.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));		
-		table.setHeaderVisible(true);
-		final TableColumn tcDeploy = new TableColumn(table, SWT.LEFT);
-		tcDeploy.setWidth(50);
-		tcDeploy.setText(Messages.JSFLibraryConfigControl_TH_Deploy);
-		tcDeploy.setToolTipText(Messages.JSFLibraryConfigControl_DeployJAR);
-		final TableColumn tcLibName = new TableColumn(table, SWT.LEFT);
-		tcLibName.setWidth(150);
-		tcLibName.setText(Messages.JSFLibraryConfigControl_TH_LibraryName);
-		
-		//ctvSelCompLib.setCellModifier(new CellModifierCTVSelCompLib());
-		ctvSelCompLib.setSorter(new SelectedCompLibCTVSorter());
-		ctvSelCompLib.setLabelProvider(new SelectedCompLibCTVLabelProvider());
-		ctvSelCompLib.setContentProvider(new CompLibCTVContentProvider());
-		ctvSelCompLib.addDoubleClickListener(new IDoubleClickListener(){
-			public void doubleClick(DoubleClickEvent event) {
-				resetComponentLibSelection((StructuredSelection)event.getSelection(), 
-						tvCompLib, 
-						ctvSelCompLib, 
-						false);	
-				fireChangedEvent(event);
-			}			
-		});
-		ctvSelCompLib.addCheckStateListener(new ICheckStateListener() {
-			public void checkStateChanged(CheckStateChangedEvent event) {
-				JSFLibraryInternalReference changedItem = (JSFLibraryInternalReference) event.getElement();
-				boolean isChecked4Deploy = event.getChecked();
-				
-				List list = workingCopyModel.getJSFComponentLibraries();
-				Iterator it = list.iterator();
-				JSFLibraryInternalReference crtjsflib = null;
-				while (it.hasNext()) {
-					crtjsflib = (JSFLibraryInternalReference) it.next();
-					if (crtjsflib.getID().equals(changedItem.getID())) {
-						crtjsflib.setToBeDeployed(isChecked4Deploy);
-						fireChangedEvent(event);
-						break;
-					}
-				}
-			}
-		});
-		
-		btnAdd.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				resetComponentLibSelection((StructuredSelection)tvCompLib.getSelection(), 
-						tvCompLib, 
-						ctvSelCompLib, 
-						true);	
-				fireChangedEvent(e);
-			}
-		});
-		
-		btnAddAll.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				resetCompontLibSelectionAll(tvCompLib, ctvSelCompLib, true);
-				fireChangedEvent(e);
-			}
-		});		
-		btnRemove.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				resetComponentLibSelection((StructuredSelection)ctvSelCompLib.getSelection(), 
-						tvCompLib, 
-						ctvSelCompLib, 
-						false);	
-				fireChangedEvent(e);
-			}
-		});
-		
-		btnRemoveAll.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				resetCompontLibSelectionAll(tvCompLib, ctvSelCompLib, false);
-				fireChangedEvent(e);
-			}
-		});
-		
-		tvCompLib.addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event) {
-				StructuredSelection sel= (StructuredSelection)event.getSelection();
-				btnAdd.setEnabled(!sel.isEmpty() && sel.getFirstElement() instanceof JSFLibraryInternalReference);
-				btnAddAll.setEnabled(tvCompLib.getTree().getItemCount() > 0);
-			}			
-		});
-		
-		ctvSelCompLib.addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event) {
-				StructuredSelection sel= (StructuredSelection)event.getSelection();
-				btnRemove.setEnabled(!sel.isEmpty());
-				btnRemoveAll.setEnabled(ctvSelCompLib.getTable().getItemCount() > 0);
-			}			
-		});
-		
-	}
-	private void createControls() {
-		setRedraw(true);
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 1;
-		gridLayout.marginLeft = 0;
-		gridLayout.marginRight = 0;
-		gridLayout.marginWidth = 0;
-		gridLayout.marginTop = 0;
-		this.setLayout(gridLayout);
-		
-		createImplLibControls(this);
-		createSeparator(this);
-		createCompLibControls(this);
-		
-
-
-
-	}
-
-	private void createSeparator(Composite parent) {
-		final Label lblSeparator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL );
-		GridData gd_lbl_spacer = new GridData();
-		gd_lbl_spacer.horizontalAlignment = SWT.FILL;
-		lblSeparator.setLayoutData(gd_lbl_spacer);
-		lblSeparator.setAlignment(SWT.CENTER);
-	}
-	
-	/*
-	 * Event handling helper methods
-	 */	
-	
-	// Set selected item to the given state on model and update viewers.  
-	private void resetComponentLibSelection(StructuredSelection item, 
-			TreeViewer srcViewer, 
-			CheckboxTableViewer destViewer,
-			boolean state) {
-		if (item != null && !item.isEmpty()) {
-			List selected = new ArrayList(item.size());
-			for (Iterator sel=item.iterator();sel.hasNext();){
-				JSFLibraryInternalReference jsfLibDctr = (JSFLibraryInternalReference)sel.next();
-				selected.add(jsfLibDctr);
-				List list = workingCopyModel.getJSFComponentLibraries();
-				Iterator it = list.iterator();
-				JSFLibraryInternalReference crtjsfLibDctr = null;
-				while(it.hasNext()) {
-					crtjsfLibDctr = (JSFLibraryInternalReference)it.next();
-					if (crtjsfLibDctr.getID().equals(jsfLibDctr.getID())) {
-						crtjsfLibDctr.setToBeDeployed(state);
-						crtjsfLibDctr.setSelected(state);
-					}
-				}					
-			}
-						
-			loadJSFCompList();
-			
-			srcViewer.refresh();
-			destViewer.refresh();	
-			for (Iterator it=selected.iterator();it.hasNext();){
-				destViewer.setChecked(it.next(), state);
-			}
-			
-			setCompListModelProperty();
-		}		
-	}
-	
-	// Reset all component library from given state to model and update viewers.   
-	private void resetCompontLibSelectionAll(TreeViewer srcViewer, 
-			CheckboxTableViewer destViewer, 
-			boolean state) {
-
-			List list = workingCopyModel.getJSFComponentLibraries();
-			Iterator it = list.iterator();
-			JSFLibraryInternalReference jsfLibDctr;
-			while(it.hasNext()) {
-				jsfLibDctr = (JSFLibraryInternalReference)it.next();
-				jsfLibDctr.setSelected(state);
-				jsfLibDctr.setToBeDeployed(state);
-			}				
-			
-			loadJSFCompList();
-
-			srcViewer.refresh();
-			destViewer.refresh();
-			destViewer.setAllChecked(state);		
-			
-			btnAddAll.setEnabled(! state);
-			btnRemoveAll.setEnabled(state);
-			
-			setCompListModelProperty();
-	}
-	
-	//synchHelper is not able to track changes to data elements in tableviewer... manual set of property
-	private void setCompListModelProperty() {		
-		TableItem[] tableItems = ctvSelCompLib.getTable().getItems();
-		List compLibs = new ArrayList(tableItems.length);
-		for (int i=0;i<tableItems.length;i++){
-			compLibs.add(tableItems[i].getData());
-		}
-		JSFLibraryInternalReference[] libs = (JSFLibraryInternalReference[])compLibs.toArray(new JSFLibraryInternalReference[0]);		
-		model.setProperty(IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES, libs);		
-	}
-	
-
-	/**
-	 * Configure the JSFLibraryConfigControl elements to used the containers synchHelper
-	 * @param synchHelper
-	 */
-	public void setSynchHelper(DataModelSynchHelper synchHelper) {	
-		model = synchHelper.getDataModel();
-		synchHelper.synchCombo(cvImplLib.getCombo(), IJSFFacetInstallDataModelProperties.IMPLEMENTATION_LIBRARIES, null);
-		synchHelper.synchCheckbox(btnDeployJars, IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION, null);
-		//not using synch helper for IMPLEMENTATION_TYPE
-//		synchHelper.synchCheckBoxTableViewer(ctvSelCompLib, IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES, new Control[]{hiddenList});
-	}
-
-	/**
-	 * 	Inner Classes for filtering.
-	 *
-	 */
-	class CheckedTableViewerFilter extends ViewerFilter {
-		public boolean select(Viewer viewer, Object parentElement, Object element) {
-			if (element instanceof JSFLibraryInternalReference) {
-				return ((JSFLibraryInternalReference)element).isSelected();
-			}
-			return false;
-		}
-	}
-	class TreeViewerFilter extends ViewerFilter {
-
-		public boolean select(Viewer viewer, Object parentElement, Object element) {
-			if (element instanceof JSFLibraryInternalReference) {
-				return !((JSFLibraryInternalReference)element).isSelected();
-			}
-			return true;
-		}
-	}
-
-	class CompLibCTVContentProvider implements IStructuredContentProvider {
-		private List jsfComplLibs = new ArrayList(0);
-		
-		public Object[] getElements(Object inputElement) {						
-			return jsfComplLibs.toArray();
-		}
-		public void dispose() {
-            // do nothing
-		}
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			if (newInput == null) {
-				jsfComplLibs = Collections.EMPTY_LIST;
-			} else {
-				jsfComplLibs = (List)newInput;
-			}
-		}
-	}
-	class ImplLibCVContentProvider implements IStructuredContentProvider {
-		private List jsfImplLibs = new ArrayList(0);
-		
-		public Object[] getElements(Object inputElement) {
-			return jsfImplLibs.toArray();
-		}
-		public void dispose() {
-            // do nothing
-		}
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			if (newInput == null) {
-				jsfImplLibs = Collections.EMPTY_LIST;
-			} else {
-				jsfImplLibs = (List)newInput;
-			}
-		}
-	}
-	
-	// Label Provider
-	class SelectedCompLibCTVLabelProvider extends LabelProvider implements ITableLabelProvider {
-		public String getColumnText(Object element, int columnIndex) {
-			if (element instanceof JSFLibraryInternalReference){
-				
-			    switch(columnIndex) {
-			    case COLUMN_DEPLOY:
-			    	return " ";	  //$NON-NLS-1$
-			    case COLUMN_LIB_NAME:
-			    	return ((JSFLibraryInternalReference)element).getLabel();
-			    }				
-			}			
-		    return ""; //$NON-NLS-1$
-			
-		}
-		public Image getColumnImage(Object element, int columnIndex) {
-			return null;
-		}
-	}
-	class ImplLibCVListLabelProvider extends LabelProvider {
-		private JSFLibrary defaultImpl = null;
-		
-		public String getText(Object element) {
-			if (element instanceof JSFLibraryInternalReference){
-				StringBuffer labelBuf = new StringBuffer(((JSFLibraryInternalReference)element).getLabel());
-				JSFLibrary lib = ((JSFLibraryInternalReference)element).getLibrary();
-				if (getDefaultImpl()!= null && lib != null && lib.getID().equals(getDefaultImpl().getID()))
-					labelBuf.append(" ").append(JSFLibraryRegistry.DEFAULT_IMPL_LABEL); //$NON-NLS-1$
-				return labelBuf.toString() ;
-			}
-			return null;
-		}
-		private JSFLibrary getDefaultImpl() {
-			if (defaultImpl == null){
-				JSFLibraryRegistry jsflibreg = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry();
-				defaultImpl = jsflibreg.getDefaultImplementation();
-			}
-			return defaultImpl;
-		}
-		public Image getImage(Object element) {
-			return null;
-		}
-	}
-	
-	// Sorter
-	class SelectedCompLibCTVSorter extends ViewerSorter {
-		public int compare(Viewer viewer, Object e1, Object e2) {
-			if (e1 instanceof JSFLibraryInternalReference && 
-					e2 instanceof JSFLibraryInternalReference) {
-			JSFLibraryInternalReference item1 = (JSFLibraryInternalReference)e1;
-			JSFLibraryInternalReference item2 = (JSFLibraryInternalReference)e2;			
-			return item1.getLabel().compareToIgnoreCase(item2.getLabel());
-			}
-			return 0;
-		}
-	}
-	
-	/*
-	 * Content provider Adapter for TreeViewer
-	 */
-	private class TreeViewerAdapter implements ITreeContentProvider {
-		private final Object[] NO_ELEMENTS= new Object[0];
-
-		// ------- ITreeContentProvider Interface ------------
-
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			// will never happen
-		}
-
-		public void dispose() {
-            // do nothing
-		}
-
-		public Object[] getElements(Object obj) {
-			return workingCopyModel.getJSFComponentLibraries().toArray();
-		}
-		
-		public Object[] getChildren(Object element) {
-			if (element instanceof JSFLibraryInternalReference) {
-				return ((JSFLibraryInternalReference)element).getArchiveFiles().toArray();				
-			}
-			return NO_ELEMENTS;
-		}
-
-		public Object getParent(Object element) {
-			return null;
-		}
-
-		public boolean hasChildren(Object element) {
-			if (element instanceof JSFLibraryInternalReference) {
-				return true;
-			}
-			return false;
-		}		
-		
-	}
-	
-	private class TreeLabelProvider implements ILabelProvider {
-		Image libImg;
-		Image jarImg;
-
-		TreeLabelProvider(){
-			if (jarImg == null){
-				ImageDescriptor jarImgDesc = JSFUiPlugin.getImageDescriptor("obj16/jar_obj.gif"); //$NON-NLS-1$
-				jarImg = jarImgDesc.createImage();
-			}
-			if (libImg == null){
-				ImageDescriptor libImgDesc = JSFUiPlugin.getImageDescriptor("obj16/library_obj.gif"); //$NON-NLS-1$
-				libImg = libImgDesc.createImage();
-			}
-		}
-		
-		public Image getImage(Object element) {
-			if (element instanceof JSFLibraryInternalReference)
-            {
-			    return libImg;
-            }
-			return jarImg;
-		}
-
-		public String getText(Object element) {
-			StringBuffer labelBuf = new StringBuffer();
-			if (element instanceof JSFLibraryInternalReference) {
-				JSFLibraryInternalReference libWrapper = (JSFLibraryInternalReference)element;
-				JSFLibrary lib = libWrapper.getLibrary();
-				labelBuf.append(lib.getLabel());
-				if (lib.isImplementation()) {
-					labelBuf.append(" "); //$NON-NLS-1$
-					if (lib == JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getDefaultImplementation()) {
-						labelBuf.append(DEFAULT_IMPL_DESC); 
-					} else {
-						labelBuf.append(IMPL_DESC); 
-					}
-				}
-			}
-			if (element instanceof ArchiveFile) {
-				ArchiveFile jar = (ArchiveFile)element;
-				labelBuf.append(jar.getName());
-				if (!jar.exists())
-					labelBuf.append(MISSING);
-				labelBuf.append(" - ").append(((ArchiveFile)element).getSourceLocation()); //$NON-NLS-1$
-			}
-			return labelBuf.toString();
-		}
-
-		public void addListener(ILabelProviderListener listener) {
-            // not handling listeners
-		}
-
-		public void dispose() {
-			if (libImg != null){
-				libImg.dispose();
-			}			
-			if (jarImg != null){
-				jarImg.dispose();
-			}		
-		}
-
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-		public void removeListener(ILabelProviderListener listener) {
-            // not handling listeners
-		}
-	}
-	
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java
deleted file mode 100644
index 1611218..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;
-
-import java.util.EventObject;
-
-/**
- * Event that something has changed in the JSFLibraryConfigControl
- *
- */
-public class JSFLibraryConfigControlChangeEvent {
-	private EventObject event;
-
-	/**
-	 * Constructor
-	 * @param ev
-	 */
-	public JSFLibraryConfigControlChangeEvent(EventObject ev){
-		this.event = ev;
-	}
-
-	/**
-	 * @return java.util.EventObject
-	 */
-	public EventObject getEvent(){
-		return event;
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java
deleted file mode 100644
index 945f9ef..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 Oracle 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:
- *     Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.jsflibraryconfig;
-
-
-/**
- * Interface to be implemented to listen to changes in the JSFLibraryConfigControl object
- *
- */
-public interface JSFLibraryConfigControlChangeListener {
-	/**
-	 * Callback method
-	 * @param e
-	 */
-	public void changed(JSFLibraryConfigControlChangeEvent e);
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties
deleted file mode 100644
index e43aca1..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties
+++ /dev/null
@@ -1,109 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 Oracle Corporation.
-# 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:
-#    Gerry Kessler - initial API and implementation
-#    Ian Trimble - change key names for use with org.eclipse.osgi.util.NLS
-###############################################################################
-JSFFacetInstallPage_title=JSF Capabilities
-JSFFacetInstallPage_description=Add JSF capabilities to this Web Project
-JSFFacetInstallPage_JSFImplLabel=JSF &Implementation:
-JSFFacetInstallPage_Add1=A&dd...
-JSFFacetInstallPage_Add2=&Add...
-JSFFacetInstallPage_DeployJarsLabel=&Deploy jars to WEB-INF/lib
-JSFFacetInstallPage_JSFConfigLabel=JSF &Configuration File:
-JSFFacetInstallPage_JSFServletNameLabel=JSF &Servlet Name:
-JSFFacetInstallPage_JSFServletClassNameLabel=JSF Servlet C&lassname:
-JSFFacetInstallPage_JSFURLMappingLabel=&URL Mapping Patterns:
-JSFFacetInstallPage_JSFLibraryLabel0=JSF Libraries:
-JSFFacetInstallPage_PatternDialogTitle=Specify URL Pattern
-JSFFacetInstallPage_PatternDialogDesc=URL Pattern
-JSFFacetInstallPage_Remove=&Remove
-JSFFacetInstallPage_PatternEmptyMsg=Pattern must not be empty
-JSFFacetInstallPage_PatternSpecifiedMsg=Pattern is already specified
-JSFFacetInstallPage_ErrorNoWebAppDataModel=Unable to locate WebApp datamodel
-
-JSFLibrariesPreferencePage_DefinedJSFLibraries=Defined JSF Libraries:
-JSFLibrariesPreferencePage_DEFAULT_IMPL_DESC=[implementation - default]
-JSFLibrariesPreferencePage_New=New...
-JSFLibrariesPreferencePage_Edit=Edit...
-JSFLibrariesPreferencePage_Remove=Remove
-JSFLibrariesPreferencePage_CannotRemovePluginProvidedTitle=Cannot Remove
-JSFLibrariesPreferencePage_CannotRemovePluginProvidedMessage=Plugin provided libraries cannot be removed from the registry
-JSFLibrariesPreferencePage_MakeDefault=Make Default
-JSFLibrariesPreferencePage_MISSING_DESC=[missing]
-JSFLibrariesPreferencePage_Description=JSF Libraries contain jars with JSF components and tag libraries.   Some JSF Libraries can be specially marked as implementations so that the WebApp can be executed.
-JSFLibrariesPreferencePage_IMPL_DESC=[implementation]
-JSFLibrariesPreferencePage_CannotModifyPluginProvidedTitle=Cannot Modify
-JSFLibraryPropertyPage_No_JSF_Implementation_Lib_Selected=No JSF implementation library selected.
-JSFLibrariesPreferencePage_CannotModifyPluginProvidedMessage=Plugin provided libraries cannot be edited
-
-JSFLibraryContainerWizardPage_PageName=Add JSF Library
-JSFLibraryContainerWizardPage_Title=JSF Library
-JSFLibraryContainerWizardPage_Description=Select JavaServer Face Libraries to add to the classpath
-JSFLibraryContainerWizardPage_WarningNoJSFFacet=JavaServer Face Libraries can only be configured for Dynamic Web projects with the JSF facet installed.
-JSFLibraryContainerWizardPage_JSFLibraries=JSF Libraries:
-JSFLibraryContainerWizardPage_Add=Add...
-JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle=Backward compatibility issue
-JSFLibraryWizard_JSFLibraryWizard_DontShowThisAgain_CheckBoxLabel=Do not show this message again (affects all listed projects)
-JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText=This project is currently configured for use with an obsolete version of JSF libraries. \
-Changing JSF library settings on this project may break backward compatibility with older versions of JSF tools.\
-\n\nSee http://wiki.eclipse.org/index.php/JSF_Library_Migration for more information.
-JSFLibraryContainerWizardPage_EditLibrary_DescriptionText=Select JSF Library for this reference to use.  Choose 'Edit...' to modify contents of the selected library.
-JSFLibraryContainerWizardPage_Edit=Edit...
-JSFLibraryContainerWizardPage_ImplAlreadyPresent=An implementation has already been chosen.  Please remove before adding different one
-JSFLibraryContainerWizardPage_ErrorInitializing=Error during initialization
-JSFLibraryContainerWizardPage_SelectOneImpl=Choose only one implementation
-
-JSFLibraryWizard_DESCRIPTION=Create a library of jars that make up a JSF component library.
-JSFLibraryWizard_IMPLS_ONLY_DESC=Create a library of jars that make up a JSF implementation library.
-JSFLibraryWizard_CreateImplementation=Create JSF Implementation Library
-JSFLibraryWizard_CreateJSFLibrary=Create JSF Library
-JSFLibraryWizard_EditJSFLibrary=Edit JSF Library
-JSFLibraryWizard_JSFLibrary=JSF Library
-JSFLibraryWizard_LibraryName=Library &Name:
-JSFLibraryWizard_VersionSupported=&Version Supported:
-JSFLibraryWizard_LibraryJars=Library &Jars
-JSFLibraryWizard_IsJSFImplementation=Is JSF &Implementation
-JSFLibraryWizard_DeployJars=&Deploy Jars
-JSFLibraryWizard_Add=&Add...
-JSFLibraryWizard_Remove=&Remove
-JSFLibraryWizard_ExtJarFileDialogTitle=Browse for Jars/Zips
-JSFLibraryWizard_ValidateNoJars=The library must contain at least one jar.
-JSFLibraryWizard_ValidateNoLibraryName=A library name must be supplied.
-JSFLibraryWizard_ValidateExistingLibraryName=A library or implementation by this name already exists.
-JSFLibraryWizard_V1JSFLibrary_DialogMessage=The projects listed below contain JSF library references that are\
-obsolete and may not be automatically updated by this change. To fix this issue, you need to update these\
-these projects.\
-\n\nSee http://wiki.eclipse.org/index.php/JSF_Library_Migration for more information. \n\nProjects: {0}
-JSFLibraryWizard_V1JSFLibrary_DialogTitle=Backward compatibility issue
-
-JSFLibraryConfigControl_ImplementationLibrary=Implementation Library
-JSFLibraryPropertyPage_No_JSF_Facet_Installed=JSF Facet not installed.
-JSFLibraryConfigControl_NewImplementationLibrary=New...
-JSFLibraryConfigControl_ServerSuppliedButtonTooltip=Chosen server adapter must supply the JSF Implementation jars.
-JSFLibraryConfigControl_ServerSuppliedButtonLabel=Server Supplied JSF Implementation
-JSFLibraryConfigControl_NewImplButtonTooltip=Create new user supplied implementation library
-JSFLibraryConfigControl_DeployJAR=Deploy jars to WEB-INF/lib
-JSFLibraryConfigControl_ComponentLibrary=Component Libraries
-JSFLibraryConfigControl_DeployButtonLabel=Deploy
-JSFLibraryConfigControl_Add=\ \ >  
-JSFLibraryConfigControl_Remove=\ \ <  
-JSFLibraryConfigControl_AddAll=\ \ >>  
-JSFLibraryConfigControl_RemoveAll=\ \ <<  
-JSFLibraryConfigControl_NewComponentLibrary=New...
-JSFLibraryConfigControl_TH_Deploy=Deploy
-JSFLibraryConfigControl_NullProject=No project specified.
-JSFLibraryConfigControl_TH_LibraryName=Library Name
-
-JSFValidationPreferencePage_ELPrefPanel_Title=Expression Language (EL) Validation
-JSFValidationPreferencePage_ELPrefPanel_BuildValidationCheckBoxTitle=Validate EL on &Build/Run Validation
-JSFValidationPreferencePage_ELPrefPanel_IncrementalValidationCheckBoxTitle= Validate EL as &you type (may be slow on some pages)
-
-JSFLibraryEditControl_ImplVersion_UNKNOWN=UNKNOWN
-
-JSFPreferences_RootPage_Description=Expand the tree to edit preferences for a specific feature.
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/preferences/EmptyRootPreferencePage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/preferences/EmptyRootPreferencePage.java
deleted file mode 100644
index d269dd2..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/preferences/EmptyRootPreferencePage.java
+++ /dev/null
@@ -1,109 +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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     Oracle - adapted for JSF tooling
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.preferences;
-
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * The empty pref page used as the root of all other JSF feature preference pages
- * under the Web&XML top-level pref page
- * 
- * @author cbateman
- *
- */
-public class EmptyRootPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
-    private Composite createComposite(Composite parent, int numColumns) {
-        noDefaultAndApplyButton();
-        
-        Composite composite = new Composite(parent, SWT.NULL);
-
-        // GridLayout
-        GridLayout layout = new GridLayout();
-        layout.numColumns = numColumns;
-        composite.setLayout(layout);
-
-        // GridData
-        GridData data = new GridData(GridData.FILL);
-        data.horizontalIndent = 0;
-        data.verticalAlignment = GridData.FILL;
-        data.horizontalAlignment = GridData.FILL;
-        composite.setLayoutData(data);
-
-        return composite;
-    }
-
-    protected Control createContents(Composite parent) {
-        Composite composite = createScrolledComposite(parent);
-
-        String description = Messages.JSFPreferences_RootPage_Description;
-        Text text = new Text(composite, SWT.READ_ONLY);
-        // some themes on GTK have different background colors for Text and Labels
-        text.setBackground(composite.getBackground());
-        text.setText(description);
-
-        setSize(composite);
-        return composite;
-    }
-
-    private Composite createScrolledComposite(Composite parent) {
-        // create scrollbars for this parent when needed
-        final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
-        sc1.setLayoutData(new GridData(GridData.FILL_BOTH));
-        Composite composite = createComposite(sc1, 1);
-        sc1.setContent(composite);
-
-        // not calling setSize for composite will result in a blank composite,
-        // so calling it here initially
-        // setSize actually needs to be called after all controls are created,
-        // so scrolledComposite
-        // has correct minSize
-        setSize(composite);
-        return composite;
-    }
-
-    public void init(IWorkbench workbench) {
-        // do  nothing
-    }
-
-    private void setSize(Composite composite) {
-        if (composite != null) {
-            // Note: The font is set here in anticipation that the class inheriting
-            //       this base class may add widgets to the dialog.   setSize
-            //       is assumed to be called just before we go live.
-            applyDialogFont(composite);
-            Point minSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-            composite.setSize(minSize);
-            // set scrollbar composite's min size so page is expandable but
-            // has scrollbars when needed
-            if (composite.getParent() instanceof ScrolledComposite) {
-                ScrolledComposite sc1 = (ScrolledComposite) composite.getParent();
-                sc1.setMinSize(minSize);
-                sc1.setExpandHorizontal(true);
-                sc1.setExpandVertical(true);
-            }
-        }
-    }
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java
deleted file mode 100644
index 48a7ea7..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java
+++ /dev/null
@@ -1,610 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.project.facet;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.DialogSettings;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigDialogSettingData;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfiglModelSource;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.IJSFImplLibraryCreationListener;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFImplLibraryCreationEvent;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControl;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControlChangeEvent;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControlChangeListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
-import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
-import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.ui.IFacetWizardPage;
-import org.eclipse.wst.common.project.facet.ui.IWizardContext;
-
-/**
- * JSF Facet installation wizard page.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFFacetInstallPage extends DataModelWizardPage implements
-		IJSFFacetInstallDataModelProperties, IFacetWizardPage {
-	// UI
-	private Label lblJSFImpl;
-	private Label lblJSFConfig;
-	private Text txtJSFConfig;
-	private Label lblJSFServletName;
-	private Text txtJSFServletName;
-	private Label lblJSFServletClassName;
-	private Text txtJSFServletClassName;	
-	private Label lblJSFServletURLPatterns;
-	private List lstJSFServletURLPatterns;
-	private Button btnAddPattern;
-	private Button btnRemovePattern;
-
-	private IDialogSettings dialogSettings;
-	private IDataModel webAppDataModel;
-	private static final String SETTINGS_ROOT = JSFUiPlugin.PLUGIN_ID
-			+ ".jsfFacetInstall"; //$NON-NLS-1$
-	private static final String SETTINGS_CONFIG = "configPath"; //$NON-NLS-1$
-	private static final String SETTINGS_SERVLET = "servletName"; //$NON-NLS-1$
-	private static final String SETTINGS_SERVLET_CLASSNAME = "servletClassname"; //$NON-NLS-1$
-	private static final String SETTINGS_URL_MAPPINGS = "urlMappings"; //$NON-NLS-1$
-	private static final String SETTINGS_URL_PATTERN = "pattern"; //$NON-NLS-1$
-	private static final String SETTINGS_DEPLOY_IMPL = "deployImplementation"; //$NON-NLS-1$
-	private static final String SETTINGS_IMPL_TYPE = "deployImplType";//$NON-NLS-1$
-	private static final String SETTINGS_COMPLIB = "selectedComponent"; //$NON-NLS-1$
-	private static final String SETTINGS_COMPLIB_SELECT_DEPLOY = "selectdeploycomplib"; //$NON-NLS-1$
-
-	private static final String SEPARATOR = ":"; //$NON-NLS-1$
-	
-	//Part of temporary fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=190304
-	private static final String DEFAULT_TO_CLIENT = "initialDefaultToClientSupplied";
-	private static final String DEFAULT_TO_SERVER = "initialDefaultToServerSupplied";
-
-
-	private JSFLibraryConfigControl jsfLibCfgComp = null;
-	// private String projectName = null;
-	private Composite composite = null;
-
-	/**
-	 * Zero argument constructor
-	 */
-	public JSFFacetInstallPage() {
-		// FIXME: following WebFacetInstallPage pattern which will be fixed at somepoint
-		super(DataModelFactory.createDataModel(new AbstractDataModelProvider() {/*
-																				 * do
-																				 * nothing
-																				 */
-		}), "jsf.facet.install.page"); //$NON-NLS-1$
-		setTitle(Messages.JSFFacetInstallPage_title);
-		setDescription(Messages.JSFFacetInstallPage_description);
-		dialogSettings = JSFUiPlugin.getDefault().getDialogSettings();
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#createTopLevelComposite(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Composite createTopLevelComposite(final Composite parent) {
-		initializeDialogUnits(parent);
-		composite = new Composite(parent, SWT.NONE);
-		final GridLayout jsfCompositeLayout = new GridLayout(3, false);
-		jsfCompositeLayout.marginTop = 0;
-		jsfCompositeLayout.marginBottom = 0;
-		jsfCompositeLayout.marginRight = 0;
-		jsfCompositeLayout.marginLeft = 0;
-		composite.setLayout(jsfCompositeLayout);
-
-		lblJSFImpl = new Label(composite, SWT.None);
-		GridData gdLbl = new GridData();
-		gdLbl.verticalIndent = 5;
-		gdLbl.verticalAlignment = SWT.BEGINNING;
-		lblJSFImpl.setLayoutData(gdLbl);
-		lblJSFImpl.setText(Messages.JSFFacetInstallPage_JSFLibraryLabel0);
-		
-		jsfLibCfgComp = new JSFLibraryConfigControl(composite, SWT.NONE);
-		jsfLibCfgComp
-				.addOkClickedListener(new IJSFImplLibraryCreationListener() {
-					public void okClicked(JSFImplLibraryCreationEvent event) {
-						if (event.isLibraryCreated()) {
-							validatePage();
-						}
-					}
-				});
-		
-		jsfLibCfgComp.addChangeListener( new JSFLibraryConfigControlChangeListener(){
-
-			public void changed(JSFLibraryConfigControlChangeEvent e) {
-				validatePage();				
-			}
-			
-		});
-		GridData gd_comp = new GridData();
-		gd_comp.horizontalSpan = 2;
-		gd_comp.grabExcessHorizontalSpace = true;
-		gd_comp.grabExcessVerticalSpace = true;
-		gd_comp.horizontalAlignment = SWT.FILL;
-		jsfLibCfgComp.setLayoutData(gd_comp);
-
-		lblJSFConfig = new Label(composite, SWT.NONE);
-		lblJSFConfig.setText(Messages.JSFFacetInstallPage_JSFConfigLabel);
-		lblJSFConfig.setLayoutData(new GridData(GridData.BEGINNING));
-
-		txtJSFConfig = new Text(composite, SWT.BORDER);
-		GridData gd1 = new GridData(GridData.FILL_HORIZONTAL);
-		gd1.horizontalSpan = 2;
-		txtJSFConfig.setLayoutData(gd1);
-
-		lblJSFServletName = new Label(composite, SWT.NONE);
-		lblJSFServletName
-				.setText(Messages.JSFFacetInstallPage_JSFServletNameLabel);
-		lblJSFServletName.setLayoutData(new GridData(GridData.BEGINNING));
-
-		txtJSFServletName = new Text(composite, SWT.BORDER);
-		GridData gd2 = new GridData(GridData.FILL_HORIZONTAL);
-		gd2.horizontalSpan = 2;
-		txtJSFServletName.setLayoutData(gd2);
-
-		lblJSFServletClassName = new Label(composite, SWT.NONE);
-		lblJSFServletClassName
-				.setText(Messages.JSFFacetInstallPage_JSFServletClassNameLabel);
-		lblJSFServletClassName.setLayoutData(new GridData(GridData.BEGINNING));
-
-		txtJSFServletClassName = new Text(composite, SWT.BORDER);
-		GridData gd2c = new GridData(GridData.FILL_HORIZONTAL);
-		gd2c.horizontalSpan = 2;
-		txtJSFServletClassName.setLayoutData(gd2c);
-		
-		lblJSFServletURLPatterns = new Label(composite, SWT.NULL);
-		lblJSFServletURLPatterns
-				.setText(Messages.JSFFacetInstallPage_JSFURLMappingLabel);
-		lblJSFServletURLPatterns.setLayoutData(new GridData(GridData.BEGINNING
-				| GridData.VERTICAL_ALIGN_BEGINNING));
-		lstJSFServletURLPatterns = new List(composite, SWT.BORDER);
-		GridData gd3 = new GridData(GridData.FILL_HORIZONTAL);
-		gd3.heightHint = convertHeightInCharsToPixels(5);
-		lstJSFServletURLPatterns.setLayoutData(gd3);
-		lstJSFServletURLPatterns.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				btnRemovePattern.setEnabled(lstJSFServletURLPatterns
-						.getSelectionCount() > 0);
-			}
-		});
-
-		Composite btnComposite = new Composite(composite, SWT.NONE);
-		GridLayout gl = new GridLayout(1, false);
-		// gl.marginBottom = 0;
-		// gl.marginTop = 0;
-		// gl.marginRight = 0;
-		gl.marginLeft = 0;
-		btnComposite.setLayout(gl);
-		btnComposite.setLayoutData(new GridData(GridData.END
-				| GridData.VERTICAL_ALIGN_FILL));
-
-		btnAddPattern = new Button(btnComposite, SWT.NONE);
-		btnAddPattern.setText(Messages.JSFFacetInstallPage_Add2);
-		btnAddPattern.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
-				| GridData.VERTICAL_ALIGN_BEGINNING));
-		btnAddPattern.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				InputDialog dialog = new InputDialog(getShell(),
-						Messages.JSFFacetInstallPage_PatternDialogTitle,
-						Messages.JSFFacetInstallPage_PatternDialogDesc, null,
-						new IInputValidator() {
-
-							public String isValid(String newText) {
-								return isValidPattern(newText);
-							}
-
-						});
-				dialog.open();
-				if (dialog.getReturnCode() == Window.OK) {
-					addItemToList(dialog.getValue(), true);
-				}
-			}
-		});
-
-		btnRemovePattern = new Button(btnComposite, SWT.NONE);
-		btnRemovePattern.setText(Messages.JSFFacetInstallPage_Remove);
-		btnRemovePattern.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
-				| GridData.VERTICAL_ALIGN_BEGINNING));
-		btnRemovePattern.setEnabled(false);
-		btnRemovePattern.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				removeItemFromList(lstJSFServletURLPatterns.getSelection());
-				btnRemovePattern.setEnabled(false);
-			}
-		});
-
-		addModificationListeners();
-
-		this.getContainer().getShell().pack();
-
-		return composite;
-	}
-
-	private void initializeValues() {
-		IDialogSettings root = dialogSettings.getSection(SETTINGS_ROOT);
-
-		initJSFCfgCtrlValues(root);
-
-		String conf = null;
-		if (root != null)
-			conf = root.get(SETTINGS_CONFIG);
-		if (conf == null || conf.equals("")) { //$NON-NLS-1$
-			conf = (String) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH);
-		}
-		txtJSFConfig.setText(conf);
-
-		String servletName = null;
-		if (root != null)
-			servletName = root.get(SETTINGS_SERVLET);
-		if (servletName == null || servletName.equals("")) { //$NON-NLS-1$
-			servletName = (String) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.SERVLET_NAME);
-		}
-		txtJSFServletName.setText(servletName);
-
-		String servletClassname = null;
-		if (root != null)
-			servletClassname = root.get(SETTINGS_SERVLET_CLASSNAME);
-		if (servletClassname == null || servletClassname.equals("")) { //$NON-NLS-1$
-			servletClassname = (String) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.SERVLET_CLASSNAME);
-		}
-		txtJSFServletClassName.setText(servletClassname);
-
-		loadURLMappingPatterns(root);
-	}
-
-	private void initJSFCfgCtrlValues(IDialogSettings root) {
-		IMPLEMENTATION_TYPE implType = IMPLEMENTATION_TYPE.UNKNOWN;
-		String deployImpl = null;
-		
-		if (root != null) {
-			implType = IMPLEMENTATION_TYPE.getValue(root.get(SETTINGS_IMPL_TYPE));
-			deployImpl = root.get(SETTINGS_DEPLOY_IMPL);
-			
-		}
-				
-		//Part of temporary fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=190304
-		if (implType == IMPLEMENTATION_TYPE.UNKNOWN) {			
-			// if the impl type is still unknown, check if the product provided a default
-			IPreferenceStore prefs = JSFUiPlugin.getDefault().getPreferenceStore();
-			if(prefs.getBoolean(DEFAULT_TO_CLIENT)) {			
-				implType = IMPLEMENTATION_TYPE.CLIENT_SUPPLIED;
-			}
-			else if(prefs.getBoolean(DEFAULT_TO_SERVER)) {	
-				implType = IMPLEMENTATION_TYPE.SERVER_SUPPLIED;
-			}
-		}
-
-		if (deployImpl == null || deployImpl.equals("")) { //$NON-NLS-1$
-			deployImpl = ((Boolean) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION))
-					.toString();
-		}
-
-		IDialogSettings complibs = null;
-		if (root != null) {
-			complibs = root.getSection(SETTINGS_COMPLIB);
-		}
-
-		String[] selection = null;
-		if (complibs != null) {
-			selection = complibs.getArray(SETTINGS_COMPLIB_SELECT_DEPLOY);
-		}
-
-		JSFLibraryConfiglModelSource source = new JSFLibraryConfigDialogSettingData(implType,
-				Boolean.valueOf(deployImpl).booleanValue(), selection);
-		jsfLibCfgComp.loadControlValuesFromModel(source);
-	}
-
-	
-	private void saveSettings() {
-		DialogSettings root = new DialogSettings(SETTINGS_ROOT);
-		dialogSettings.addSection(root);
-
-		root.put(SETTINGS_IMPL_TYPE, getJSFImplType());
-		root.put(SETTINGS_DEPLOY_IMPL, String.valueOf(getDeployJSFImpl()));
-		root.put(SETTINGS_CONFIG, getJSFConfig());
-		root.put(SETTINGS_SERVLET, getJSFServletName());
-		root.put(SETTINGS_SERVLET_CLASSNAME, getJSFServletClassname());
-		DialogSettings mappings = new DialogSettings(SETTINGS_URL_MAPPINGS);
-		root.addSection(mappings);
-		mappings.put(SETTINGS_URL_PATTERN, getJSFPatterns());
-
-		DialogSettings complibs = new DialogSettings(SETTINGS_COMPLIB);
-		root.addSection(complibs);
-		complibs.put(SETTINGS_COMPLIB_SELECT_DEPLOY, getCompLibSelections());
-	}
-
-	private String getJSFImplType() {
-		return IMPLEMENTATION_TYPE.getStringValue((IMPLEMENTATION_TYPE)model.getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME));
-	}
-
-	private boolean getDeployJSFImpl() {
-		if (jsfLibCfgComp.getSelectedJSFLibImplementation() == null) {
-			return false;
-		}
-		return jsfLibCfgComp.getSelectedJSFLibImplementation()
-				.isCheckedToBeDeployed();
-	}
-
-	private String getJSFConfig() {
-		return txtJSFConfig.getText().trim();
-	}
-
-	private String getJSFServletName() {
-		return txtJSFServletName.getText().trim();
-	}
-
-	private String getJSFServletClassname() {
-		return txtJSFServletClassName.getText().trim();
-	}
-	
-	private String[] getJSFPatterns() {
-		return lstJSFServletURLPatterns.getItems();
-	}
-
-	private String[] getCompLibSelections() {
-		/*
-		 * Iterate thru the selected component libraries and return selected
-		 * component libraries and their deployment flags in a string array.
-		 */
-		JSFLibraryInternalReference complib = null;
-		String str = null;
-		ArrayList al = new ArrayList();
-
-		java.util.List list = jsfLibCfgComp.getSelectedJSFLibComponents();
-		Iterator it = list.iterator();
-		while (it.hasNext()) {
-			complib = (JSFLibraryInternalReference) it.next();
-			str = complib.getID() + SEPARATOR + complib.isCheckedToBeDeployed();
-			al.add(str);
-		}
-
-		return (String[]) al.toArray(new String[al.size()]);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.project.facet.ui.IFacetWizardPage#setConfig(java.lang.Object)
-	 */
-	public void setConfig(Object config) {
-		model.removeListener(this);
-		synchHelper.dispose();
-
-		model = (IDataModel) config;
-		model.addListener(this);
-		synchHelper = initializeSynchHelper(model);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.project.facet.ui.IFacetWizardPage#transferStateToConfig()
-	 */
-	public void transferStateToConfig() {
-		saveSettings(); // convenient place for this. don't want to save if user
-						// cancelled.
-		// do nothing else now. being handled by synchHelper
-		// config.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION,
-		// getJSFImpl());
-//		model
-//				.setStringProperty(
-//						IJSFFacetInstallDataModelProperties.CONFIG_PATH,
-//						getJSFConfig());
-//		model.setStringProperty(
-//				IJSFFacetInstallDataModelProperties.SERVLET_NAME,
-//				getJSFServletName());
-		// config.setProperty(IJSFFacetInstallDataModelProperties.SERVLET_URL_PATTERNS,
-		// getJSFPatterns());
-
-//		java.util.List implLibs = new ArrayList();
-//		implLibs.add(jsfLibCfgComp.getSelectedJSFLibImplementation());
-//		java.util.List compLibs = jsfLibCfgComp.getSelectedJSFLibComponents();
-//		model.setProperty(
-//				IJSFFacetInstallDataModelProperties.IMPLEMENTATION_LIBRARIES,
-//				implLibs);
-//		model.setProperty(
-//				IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES,
-//				compLibs);
-	}
-
-	private void addModificationListeners() {
-		 jsfLibCfgComp.setSynchHelper(synchHelper);		 
-		 synchHelper.synchText(txtJSFConfig, CONFIG_PATH, null);
-		 synchHelper.synchText(txtJSFServletName, SERVLET_NAME, null);
-		 synchHelper.synchText(txtJSFServletClassName, SERVLET_CLASSNAME, null);
-		 synchHelper.synchList(lstJSFServletURLPatterns, SERVLET_URL_PATTERNS, null);
-		 
-		// synchHelper.synchCheckbox(chkDeployImpl, DEPLOY_IMPLEMENTATION,
-		// null);
-	}
-
-	private String isValidPattern(String value) {
-		if (value == null || value.trim().equals("")) //$NON-NLS-1$
-			return Messages.JSFFacetInstallPage_PatternEmptyMsg;
-		if (lstJSFServletURLPatterns.indexOf(value) >= 0)
-			return Messages.JSFFacetInstallPage_PatternSpecifiedMsg;
-
-		return null;
-	}
-
-	private void loadURLMappingPatterns(IDialogSettings root) {
-		lstJSFServletURLPatterns.removeAll();
-		IDialogSettings mappings = null;
-		if (root != null)
-			mappings = root.getSection(SETTINGS_URL_MAPPINGS);
-		String[] patterns = null;
-		if (mappings != null)
-			patterns = mappings.getArray(SETTINGS_URL_PATTERN);
-
-		if (patterns == null || patterns.length == 0) {
-			patterns = (String[]) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.SERVLET_URL_PATTERNS);
-		}
-		for (int i = 0; i < patterns.length; i++) {
-			addItemToList(patterns[i], false);
-		}
-	}
-
-	private void addItemToList(String pattern, boolean selectMe) {
-		lstJSFServletURLPatterns.add(pattern == null ? "" : pattern); //$NON-NLS-1$
-		if (pattern == null && selectMe)
-			lstJSFServletURLPatterns.setSelection(lstJSFServletURLPatterns
-					.getItemCount() - 1);
-		// When 119321 is fixed - remove code below
-		updateModelForURLPattern();
-	}
-
-	private void removeItemFromList(String[] selection) {
-		for (int i = 0; i < selection.length; i++) {
-			String sel = selection[i];
-			lstJSFServletURLPatterns.remove(sel);
-		}
-		// When 119321 is fixed - remove code below
-		updateModelForURLPattern();
-	}
-
-	private void updateModelForURLPattern() {
-		model.setProperty(
-				IJSFFacetInstallDataModelProperties.SERVLET_URL_PATTERNS,
-				lstJSFServletURLPatterns.getItems());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#getValidationPropertyNames()
-	 */
-	protected String[] getValidationPropertyNames() {
-		return new String[] { IMPLEMENTATION_TYPE_PROPERTY_NAME, IMPLEMENTATION, DEPLOY_IMPLEMENTATION,
-				CONFIG_PATH, SERVLET_NAME, SERVLET_CLASSNAME, COMPONENT_LIBRARIES };
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.project.facet.ui.IFacetWizardPage#setWizardContext(org.eclipse.wst.common.project.facet.ui.IWizardContext)
-	 */
-	public void setWizardContext(IWizardContext context) {
-		// hook into web datamodel if new project wizard.
-		Iterator it = context.getSelectedProjectFacets().iterator();
-		IProjectFacetVersion webFacetVersion = null;
-		while (it.hasNext()) {
-			// find Web facet
-			IProjectFacetVersion pfv = (IProjectFacetVersion) it.next();
-			if (pfv.getProjectFacet().getId().equals("jst.web")) { //$NON-NLS-1$
-				webFacetVersion = pfv;
-				break;
-			}
-		}
-		if (webFacetVersion != null) {
-			try {
-				webAppDataModel = (IDataModel) context.getConfig(
-						webFacetVersion, IFacetedProject.Action.Type.INSTALL,
-						context.getProjectName());
-				if (webAppDataModel != null) {
-					webAppDataModel.addListener(this);
-				}
-			} catch (CoreException e) {
-				JSFUiPlugin.log(IStatus.ERROR,
-						Messages.JSFFacetInstallPage_ErrorNoWebAppDataModel, e);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#propertyChanged(org.eclipse.wst.common.frameworks.datamodel.DataModelEvent)
-	 */
-	public void propertyChanged(DataModelEvent event) {
-		if (webAppDataModel != null) {
-			String propertyName = event.getPropertyName();
-			if (propertyName
-					.equals(IJ2EEModuleFacetInstallDataModelProperties.CONFIG_FOLDER)) {
-				model.setStringProperty(WEBCONTENT_DIR, event.getProperty()
-						.toString());
-			}
-		}
-		super.propertyChanged(event);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#dispose()
-	 */
-	public void dispose() {
-		if (webAppDataModel != null)
-			webAppDataModel.removeListener(this);
-		
-		jsfLibCfgComp.dispose();
-		super.dispose();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#restoreDefaultSettings()
-	 */
-	protected void restoreDefaultSettings() {
-		initializeValues();
-
-		checkToCompletePage(jsfLibCfgComp);
-	}
-
-	/*
-	 * To force a JSF facet install page configuration to be performed    
-	 * when the JSF facet is selected but no JSF implementation library exists.
-	 */
-	private void checkToCompletePage(Composite control) {
-		boolean enableFinish = false;
-		IMPLEMENTATION_TYPE implType = (IMPLEMENTATION_TYPE)model.getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME);
-		if (implType == IMPLEMENTATION_TYPE.SERVER_SUPPLIED)
-			enableFinish = true;
-		else if (implType == IMPLEMENTATION_TYPE.CLIENT_SUPPLIED && 
-				control != null && control instanceof JSFLibraryConfigControl) {
-			enableFinish = (((JSFLibraryConfigControl)control).getSelectedJSFLibImplementation() != null);
-		} //else must be unknown type and requires user interaction
-		setPageComplete(enableFinish);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#showValidationErrorsOnEnter()
-	 */
-	protected boolean showValidationErrorsOnEnter() {
-		return true;
-	}
-
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ELPrefPanel.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ELPrefPanel.java
deleted file mode 100644
index 261413c..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ELPrefPanel.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Cameron Bateman/Oracle - initial API and implementation
- *    
- ********************************************************************************/
-
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-/**
- * Creates and manages a panel for configuring 
- * 
- * @author cbateman
- */
-/*package*/ class ELPrefPanel 
-{
-    /* view */
-    private final Group                                 _container;
-    private final Button                                _chkBuildValidation;
-    private final Button                                _chkIncrementalValidation;
-    private final ProblemSeveritiesConfigurationBlock   _problemSeverities;
-    
-    /* model */
-    private ELValidationPreferences  _prefs;
-    
-    /**
-     * Allocates new container in parent.
-     * @param parent
-     * @param container 
-     * @param prefs 
-     */
-    public ELPrefPanel(Composite parent, IWorkbenchPreferenceContainer container, ELValidationPreferences prefs)
-    {
-        _prefs = prefs;
-
-        _container = new Group(parent, SWT.NONE);
-        _container.setText(Messages.JSFValidationPreferencePage_ELPrefPanel_Title);
-        RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
-        rowLayout.marginTop = 5;
-        rowLayout.marginLeft = 5; 
-        _container.setLayout(rowLayout);
-
-        _chkBuildValidation = new Button(_container, SWT.CHECK);
-        _chkBuildValidation.setText(Messages.JSFValidationPreferencePage_ELPrefPanel_BuildValidationCheckBoxTitle);
-        _chkBuildValidation.addSelectionListener(new SelectionAdapter()
-        {
-            public void widgetSelected(SelectionEvent e) 
-            {
-                _prefs.setEnableBuildValidation(_chkBuildValidation.getSelection());
-                refresh();
-            }
-        });
-        
-        _chkIncrementalValidation = new Button(_container, SWT.CHECK);
-        _chkIncrementalValidation.setText(Messages.JSFValidationPreferencePage_ELPrefPanel_IncrementalValidationCheckBoxTitle);
-        _chkIncrementalValidation.addSelectionListener(new SelectionAdapter()
-        {
-            public void widgetSelected(SelectionEvent e) 
-            {
-                _prefs.setEnableIncrementalValidation(_chkIncrementalValidation.getSelection());
-                refresh();
-            }
-        });
-
-        new Label(_container, SWT.NONE);
-        
-        _problemSeverities = new ProblemSeveritiesConfigurationBlock(prefs, null, container);
-        _problemSeverities.createContents(_container);
-    }
-    
-    /**
-     * @return the top-level container managed by this panel
-     */
-    public Control getControl()
-    {
-        return _container;
-    }
-    
-    
-    /**
-     * Refreshes the UI from the model
-     */
-    public void refresh()
-    {
-        _chkBuildValidation.setSelection(_prefs.isEnableBuildValidation());
-        _chkIncrementalValidation.
-            setSelection(_prefs.isEnableIncrementalValidation());
-        _problemSeverities.updateControls();
-    }
-
-    /**
-     * 
-     */
-    public void processChanges() {
-        _problemSeverities.performOk();
-    }
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidationPreferencePage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidationPreferencePage.java
deleted file mode 100644
index a003a58..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidationPreferencePage.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Cameron Bateman/Oracle - initial API and implementation
- *    
- ********************************************************************************/
-
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.validation.internal.ValidationPreferences;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-/**
- * Workbench preference page for configuring JSF validation
- * 
- * @author cbateman
- *
- */
-public class JSFValidationPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage 
-{
-    private final ValidationPreferences     _prefs;
-    
-    private ELPrefPanel                     _elPrefPanel;
-    
-    /**
-     * Constructor
-     */
-    public JSFValidationPreferencePage()
-    {
-        super(/* TODO: title*/);
-        _prefs = new ValidationPreferences(getPreferenceStore());
-        _prefs.load();
-    }
-    
-    protected Control createContents(Composite parent) 
-    {
-        _elPrefPanel = new ELPrefPanel(parent, (IWorkbenchPreferenceContainer) getContainer(), _prefs.getElPrefs());
-        _elPrefPanel.refresh();
-        return _elPrefPanel.getControl();
-    }
-
-    public void init(IWorkbench workbench) 
-    {
-        // do nothing
-    }
-
-    protected void performApply() 
-    {
-        // process changes before committing to pref store
-        _elPrefPanel.processChanges();
-        _prefs.commit(getPreferenceStore());
-    }
-
-    protected void performDefaults() 
-    {
-        _prefs.setDefaults();
-        _elPrefPanel.refresh();
-        super.performDefaults();
-    }
-
-    public boolean performOk() 
-    {
-        performApply();
-        return true;
-    }
-
-    protected IPreferenceStore doGetPreferenceStore() 
-    {
-        // load the validation pref store
-        return JSFCorePlugin.getDefault().getPreferenceStore();
-    }
-    
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java
deleted file mode 100644
index f26a660..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java
+++ /dev/null
@@ -1,979 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cameron Bateman/Oracle - adapted for use in JSF validation tooling
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.ui.JavaUI;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jst.jsf.core.internal.IJSFPreferenceModel;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences.Severity;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.forms.events.ExpansionAdapter;
-import org.eclipse.ui.forms.events.ExpansionEvent;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-import org.eclipse.ui.preferences.IWorkingCopyManager;
-import org.eclipse.ui.preferences.WorkingCopyManager;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * Abstract options configuration block providing a general implementation for setting up
- * an options configuration page.
- * 
- * @since 2.1
- */
-abstract class OptionsConfigurationBlock 
-{
-    /**
-     * The preference model to be used
-     */
-    protected final IJSFPreferenceModel     _prefs;
-    
-    static final class Key 
-    {
-        private String fQualifier;
-        private String fKey;
-        
-        Key(String qualifier, String key) {
-            fQualifier= qualifier;
-            fKey= key;
-        }
-        
-        /**
-         * @return the key name
-         */
-        public String getName() {
-            return fKey;
-        }
-        
-//        private IEclipsePreferences getNode(IScopeContext context, IWorkingCopyManager manager) {
-//            IEclipsePreferences node= context.getNode(fQualifier);
-//            if (manager != null) {
-//                return manager.getWorkingCopy(node);
-//            }
-//            return node;
-//            
-//        }
-        
-        /**
-         * @param prefModel
-         * @param context
-         * @param manager
-         * @return the value stored for the key
-         */
-        public Object getStoredValue(IJSFPreferenceModel prefModel, IScopeContext context, IWorkingCopyManager manager)
-        {
-            return prefModel.getStoredValueByKey(context, fKey);
-        }
-        
-        /**
-         * @param prefModel
-         * @param context
-         * @param manager
-         * @return the stored value in prefModel under context for
-         * this key
-         */
-        public Object getCurValue(IJSFPreferenceModel prefModel, IScopeContext context, IWorkingCopyManager manager) {
-            //return getNode(context, manager).get(fKey, null);
-            return prefModel.getValueByKey(context, fKey);
-        }
-        
-        /**
-         * @param prefModel
-         * @param lookupOrder
-         * @param ignoreTopScope
-         * @param manager
-         * @return the stored value in the prefModelunder context
-         * using the list of lookupOrder for precedence of scopes
-         * in which to look.  Return first found based on order in lookupOrder
-         */
-        public Object getCurValue(IJSFPreferenceModel prefModel, IScopeContext[] lookupOrder, boolean ignoreTopScope, IWorkingCopyManager manager) {
-            for (int i= ignoreTopScope ? 1 : 0; i < lookupOrder.length; i++) {
-                Object value= getCurValue(prefModel, lookupOrder[i], manager);
-                if (value != null) {
-                    return value;
-                }
-            }
-            return null;
-        }
-        
-        /**
-         * Set the stored value
-         * @param prefModel 
-         * @param context
-         * @param value
-         * @param manager
-         * @return the old value or null if none
-         */
-        public Object setCurValue(IJSFPreferenceModel prefModel, IScopeContext context, Object value, IWorkingCopyManager manager) {
-            return prefModel.setValueByKey(context, fKey, value);
-//            if (value != null) {
-//                getNode(context, manager).put(fKey, value);
-//            } else {
-//                getNode(context, manager).remove(fKey);
-//            }
-        }
-            
-        /* (non-Javadoc)
-         * @see java.lang.Object#toString()
-         */
-        public String toString() {
-            return fQualifier + '/' + fKey;
-        }
-
-        /**
-         * @return the plugin qualifier
-         */
-        public String getQualifier() {
-            return fQualifier;
-        }
-
-    }
-    
-
-    static class ControlData {
-        private Key fKey;
-        private String[] fValues;
-        
-        ControlData(Key key, String[] values) {
-            fKey= key;
-            fValues= values;
-        }
-        
-        Key getKey() {
-            return fKey;
-        }
-        
-        String getValue(boolean selection) {
-            int index= selection ? 0 : 1;
-            return fValues[index];
-        }
-        
-        String getValue(int index) {
-            return fValues[index];
-        }       
-        
-        int getSelection(String value) {
-            if (value != null) {
-                for (int i= 0; i < fValues.length; i++) {
-                    if (value.equals(fValues[i])) {
-                        return i;
-                    }
-                }
-            }
-            return fValues.length -1; // assume the last option is the least severe
-        }
-    }
-    
-    private static final String REBUILD_COUNT_KEY= "preferences_build_requested"; //$NON-NLS-1$
-    
-    private static final String SETTINGS_EXPANDED= "expanded"; //$NON-NLS-1$
-
-    private final ArrayList fCheckBoxes;
-    private final ArrayList fComboBoxes;
-    private final ArrayList fTextBoxes;
-    private final HashMap fLabels;
-    private final ArrayList fExpandedComposites;
-    
-    private SelectionListener fSelectionListener;
-    private ModifyListener fTextModifyListener;
-
-    // TODO: protected IStatusChangeListener fContext;
-    private final IProject fProject; // project or null
-    private final Key[] fAllKeys;
-    
-    private IScopeContext[] fLookupOrder;
-    
-    private Shell fShell;
-
-    private final IWorkingCopyManager fManager;
-    private IWorkbenchPreferenceContainer fContainer;
-
-    private Map fDisabledProjectSettings; // null when project specific settings are turned off
-    
-    private int fRebuildCount; /// used to prevent multiple dialogs that ask for a rebuild
-    
-    OptionsConfigurationBlock(/*IStatusChangeListener context,*/IJSFPreferenceModel prefs, IProject project, Key[] allKeys, IWorkbenchPreferenceContainer container) {
-        //fContext= context;
-        fProject= project;
-        fAllKeys= allKeys;
-        fContainer= container;
-        _prefs = prefs;
-        
-        if (container == null) {
-            fManager= new WorkingCopyManager();
-        } else {
-            fManager= container.getWorkingCopyManager();
-        }
-        
-        if (fProject != null) {
-            fLookupOrder= new IScopeContext[] {
-                new ProjectScope(fProject),
-                new InstanceScope(),
-                new DefaultScope()
-            };
-        } else {
-            fLookupOrder= new IScopeContext[] {
-                new InstanceScope(),
-                new DefaultScope()
-            };
-        }
-        
-        testIfOptionsComplete(allKeys);
-        if (fProject == null || hasProjectSpecificOptions(fProject)) {
-            fDisabledProjectSettings= null;
-        } else {
-            fDisabledProjectSettings= new IdentityHashMap();
-            for (int i= 0; i < allKeys.length; i++) {
-                Key curr= allKeys[i];
-                fDisabledProjectSettings.put(curr, curr.getCurValue(_prefs, fLookupOrder, false, fManager));
-            }
-        }
-        
-        fCheckBoxes= new ArrayList();
-        fComboBoxes= new ArrayList();
-        fTextBoxes= new ArrayList(2);
-        fLabels= new HashMap();
-        fExpandedComposites= new ArrayList();
-        
-        fRebuildCount= getRebuildCount();
-    }   
-    
-    /**
-     * @return the preference container
-     */
-    protected final IWorkbenchPreferenceContainer getPreferenceContainer() {
-        return fContainer;
-    }
-    
-    /**
-     * @param plugin
-     * @param key
-     * @return construct a new Key based on the on the plugin id and
-     * preference key
-     */
-    protected static Key getKey(String plugin, String key) {
-        return new Key(plugin, key);
-    }
-    
-    /**
-     * @param key
-     * @return construct a new Key for a JSF core plugin preference
-     */
-    protected final static Key getJSFCoreKey(String key) {
-        return getKey(JSFCorePlugin.PLUGIN_ID, key);
-    }
-    
-    private void testIfOptionsComplete(Key[] allKeys) {
-        for (int i= 0; i < allKeys.length; i++) {
-            if (allKeys[i].getCurValue(_prefs, fLookupOrder, false, fManager) == null) {
-                JSFUiPlugin.log(IStatus.ERROR, "preference option missing: " + allKeys[i] + " (" + this.getClass().getName() +')');  //$NON-NLS-1$//$NON-NLS-2$
-            }
-        }
-    }
-    
-    private int getRebuildCount() {
-        return fManager.getWorkingCopy(new DefaultScope().getNode(JavaUI.ID_PLUGIN)).getInt(REBUILD_COUNT_KEY, 0);
-    }
-    
-    private void incrementRebuildCount() {
-        fRebuildCount++;
-        fManager.getWorkingCopy(new DefaultScope().getNode(JavaUI.ID_PLUGIN)).putInt(REBUILD_COUNT_KEY, fRebuildCount);
-    }
-    
-//    public void selectOption(String key, String qualifier) {
-//        for (int i= 0; i < fAllKeys.length; i++) {
-//            Key curr= fAllKeys[i];
-//            if (curr.getName().equals(key) && curr.getQualifier().equals(qualifier)) {
-//                selectOption(curr);
-//            }
-//        }
-//    }
-//    
-//    public void selectOption(Key key) {
-//        Control control= findControl(key);
-//        if (control != null) {
-//            if (!fExpandedComposites.isEmpty()) {
-//                ExpandableComposite expandable= getParentExpandableComposite(control);
-//                if (expandable != null) {
-//                    for (int i= 0; i < fExpandedComposites.size(); i++) {
-//                        ExpandableComposite curr= (ExpandableComposite) fExpandedComposites.get(i);
-//                        curr.setExpanded(curr == expandable);
-//                    }
-//                    expandedStateChanged(expandable);
-//                }
-//            }
-//            control.setFocus();
-//        }
-//    }
-    
-    
-    /**
-     * @param project
-     * @return true if there are project specific overrides in the 
-     * preferences for 'project'
-     */
-    public final boolean hasProjectSpecificOptions(IProject project) {
-        if (project != null) {
-            IScopeContext projectContext= new ProjectScope(project);
-            Key[] allKeys= fAllKeys;
-            for (int i= 0; i < allKeys.length; i++) {
-                if (allKeys[i].getCurValue(_prefs, projectContext, fManager) != null) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }   
-            
-    /**
-     * @return the shell hosting the UI
-     */
-    protected Shell getShell() {
-        return fShell;
-    }
-    
-    /**
-     * Set the shell hosting the UI.
-     * @param shell
-     */
-    protected void setShell(Shell shell) {
-        fShell= shell;
-    }   
-    
-    /**
-     * @param parent
-     * @return the parent of the UI control to be created
-     */
-    protected abstract Control createContents(Composite parent);
-    
-//    protected Button addCheckBox(Composite parent, String label, Key key, String[] values, int indent) {
-//        ControlData data= new ControlData(key, values);
-//        
-//        GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-//        gd.horizontalSpan= 3;
-//        gd.horizontalIndent= indent;
-//        
-//        Button checkBox= new Button(parent, SWT.CHECK);
-//        checkBox.setFont(JFaceResources.getDialogFont());
-//        checkBox.setText(label);
-//        checkBox.setData(data);
-//        checkBox.setLayoutData(gd);
-//        checkBox.addSelectionListener(getSelectionListener());
-//        
-//        makeScrollableCompositeAware(checkBox);
-//        
-//        String currValue= getValue(key);
-//        checkBox.setSelection(data.getSelection(currValue) == 0);
-//        
-//        fCheckBoxes.add(checkBox);
-//        
-//        return checkBox;
-//    }
-    
-    /**
-     * @param parent
-     * @param label
-     * @param key
-     * @param values
-     * @param indent
-     * @param widthHint
-     * @param listener
-     * @return a check box styled button with a related link
-     */
-    protected Button addCheckBoxWithLink(Composite parent, String label, Key key, String[] values, int indent, int widthHint, SelectionListener listener) {
-        ControlData data= new ControlData(key, values);
-        
-        GridData gd= new GridData(GridData.FILL, GridData.FILL, true, false);
-        gd.horizontalSpan= 3;
-        gd.horizontalIndent= indent;
-        
-        Composite composite= new Composite(parent, SWT.NONE);
-        GridLayout layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        layout.numColumns= 2;
-        composite.setLayout(layout);
-        composite.setLayoutData(gd);
-        
-        Button checkBox= new Button(composite, SWT.CHECK);
-        checkBox.setFont(JFaceResources.getDialogFont());
-        checkBox.setData(data);
-        checkBox.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false));
-        checkBox.addSelectionListener(getSelectionListener());
-        
-        gd= new GridData(GridData.FILL, GridData.CENTER, true, false);
-        gd.widthHint= widthHint;
-        
-        Link link= new Link(composite, SWT.NONE);
-        link.setText(label);
-        link.setLayoutData(gd);
-        if (listener != null) {
-            link.addSelectionListener(listener);
-        }
-        
-        makeScrollableCompositeAware(link);
-        makeScrollableCompositeAware(checkBox);
-        
-        String currValue= getValue(key);
-        checkBox.setSelection(data.getSelection(currValue) == 0);
-        
-        fCheckBoxes.add(checkBox);
-        
-        return checkBox;
-    }
-    
-    /**
-     * @param parent
-     * @param label
-     * @param key
-     * @param values
-     * @param valueLabels
-     * @param indent
-     * @return a Combo box added to parent with the label and key
-     */
-    protected Combo addComboBox(Composite parent, String label, Key key, String[] values, String[] valueLabels, int indent) {
-        GridData gd= new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1);
-        gd.horizontalIndent= indent;
-                
-        Label labelControl= new Label(parent, SWT.LEFT);
-        labelControl.setFont(JFaceResources.getDialogFont());
-        
-        labelControl.setText(label);
-        labelControl.setLayoutData(gd);
-                
-        Combo comboBox= newComboControl(parent, key, values, valueLabels);
-        comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-
-        fLabels.put(comboBox, labelControl);
-        
-        return comboBox;
-    }
-    
-    Combo addInversedComboBox(Composite parent, String label, Key key, String[] values, String[] valueLabels, int indent) {
-        GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-        gd.horizontalIndent= indent;
-        gd.horizontalSpan= 3;
-        
-        Composite composite= new Composite(parent, SWT.NONE);
-        GridLayout layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        layout.numColumns= 2;
-        composite.setLayout(layout);
-        composite.setLayoutData(gd);
-        
-        Combo comboBox= newComboControl(composite, key, values, valueLabels);
-        comboBox.setFont(JFaceResources.getDialogFont());
-        comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-        
-        Label labelControl= new Label(composite, SWT.LEFT | SWT.WRAP);
-        labelControl.setText(label);
-        labelControl.setLayoutData(new GridData());
-        
-        fLabels.put(comboBox, labelControl);
-        return comboBox;
-    }
-    
-    Combo newComboControl(Composite composite, Key key, String[] values, String[] valueLabels) {
-        ControlData data= new ControlData(key, values);
-        
-        Combo comboBox= new Combo(composite, SWT.READ_ONLY);
-        comboBox.setItems(valueLabels);
-        comboBox.setData(data);
-        comboBox.addSelectionListener(getSelectionListener());
-        comboBox.setFont(JFaceResources.getDialogFont());
-            
-        makeScrollableCompositeAware(comboBox);
-        
-        String currValue= getValue(key);    
-        comboBox.select(data.getSelection(currValue));
-        
-        fComboBoxes.add(comboBox);
-        return comboBox;
-    }
-
-    Text addTextField(Composite parent, String label, Key key, int indent, int widthHint) {   
-        Label labelControl= new Label(parent, SWT.WRAP);
-        labelControl.setText(label);
-        labelControl.setFont(JFaceResources.getDialogFont());
-        labelControl.setLayoutData(new GridData());
-                
-        Text textBox= new Text(parent, SWT.BORDER | SWT.SINGLE);
-        textBox.setData(key);
-        textBox.setLayoutData(new GridData());
-        
-        makeScrollableCompositeAware(textBox);
-        
-        fLabels.put(textBox, labelControl);
-        
-        String currValue= getValue(key);    
-        if (currValue != null) {
-            textBox.setText(currValue);
-        }
-        textBox.addModifyListener(getTextModifyListener());
-
-        GridData data= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        if (widthHint != 0) {
-            data.widthHint= widthHint;
-        }
-        data.horizontalIndent= indent;
-        data.horizontalSpan= 2;
-        textBox.setLayoutData(data);
-
-        fTextBoxes.add(textBox);
-        return textBox;
-    }
-    
-    ScrolledPageContent getParentScrolledComposite(Control control) {
-        Control parent= control.getParent();
-        while (!(parent instanceof ScrolledPageContent) && parent != null) {
-            parent= parent.getParent();
-        }
-        if (parent instanceof ScrolledPageContent) {
-            return (ScrolledPageContent) parent;
-        }
-        return null;
-    }
-    
-    ExpandableComposite getParentExpandableComposite(Control control) {
-        Control parent= control.getParent();
-        while (!(parent instanceof ExpandableComposite) && parent != null) {
-            parent= parent.getParent();
-        }
-        if (parent instanceof ExpandableComposite) {
-            return (ExpandableComposite) parent;
-        }
-        return null;
-    }
-    
-    private void makeScrollableCompositeAware(Control control) {
-        ScrolledPageContent parentScrolledComposite= getParentScrolledComposite(control);
-        if (parentScrolledComposite != null) {
-            parentScrolledComposite.adaptChild(control);
-        }
-    }
-    
-    ExpandableComposite createStyleSection(Composite parent, String label, int nColumns) {
-        ExpandableComposite excomposite= new ExpandableComposite(parent, SWT.NONE, ExpandableComposite.TWISTIE | ExpandableComposite.CLIENT_INDENT);
-        excomposite.setText(label);
-        excomposite.setExpanded(false);
-        excomposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
-        excomposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, nColumns, 1));
-        excomposite.addExpansionListener(new ExpansionAdapter() {
-            public void expansionStateChanged(ExpansionEvent e) {
-                expandedStateChanged((ExpandableComposite) e.getSource());
-            }
-        });
-        fExpandedComposites.add(excomposite);
-        makeScrollableCompositeAware(excomposite);
-        return excomposite;
-    }
-    
-    final void expandedStateChanged(ExpandableComposite expandable) {
-        ScrolledPageContent parentScrolledComposite= getParentScrolledComposite(expandable);
-        if (parentScrolledComposite != null) {
-            parentScrolledComposite.reflow(true);
-        }
-    }
-    
-    void restoreSectionExpansionStates(IDialogSettings settings) {
-        for (int i= 0; i < fExpandedComposites.size(); i++) {
-            ExpandableComposite excomposite= (ExpandableComposite) fExpandedComposites.get(i);
-            if (settings == null) {
-                excomposite.setExpanded(i == 0); // only expand the first node by default
-            } else {
-                excomposite.setExpanded(settings.getBoolean(SETTINGS_EXPANDED + String.valueOf(i)));
-            }
-        }
-    }
-    
-    void storeSectionExpansionStates(IDialogSettings settings) {
-        for (int i= 0; i < fExpandedComposites.size(); i++) {
-            ExpandableComposite curr= (ExpandableComposite) fExpandedComposites.get(i);
-            settings.put(SETTINGS_EXPANDED + String.valueOf(i), curr.isExpanded());
-        }
-    }
-    
-    SelectionListener getSelectionListener() {
-        if (fSelectionListener == null) {
-            fSelectionListener= new SelectionListener() {
-                public void widgetDefaultSelected(SelectionEvent e) {/*do nothing*/}
-    
-                public void widgetSelected(SelectionEvent e) {
-                    controlChanged(e.widget);
-                }
-            };
-        }
-        return fSelectionListener;
-    }
-    
-    ModifyListener getTextModifyListener() {
-        if (fTextModifyListener == null) {
-            fTextModifyListener= new ModifyListener() {
-                public void modifyText(ModifyEvent e) {
-                    textChanged((Text) e.widget);
-                }
-            };
-        }
-        return fTextModifyListener;
-    }       
-    
-    void controlChanged(Widget widget) {
-        ControlData data= (ControlData) widget.getData();
-        String newValue= null;
-        if (widget instanceof Button) {
-            newValue= data.getValue(((Button)widget).getSelection());           
-        } else if (widget instanceof Combo) {
-            newValue= data.getValue(((Combo)widget).getSelectionIndex());
-        } else {
-            return;
-        }
-        String oldValue= setValue(data.getKey(), newValue);
-        validateSettings(data.getKey(), oldValue, newValue);
-    }
-    
-    void textChanged(Text textControl) {
-        Key key= (Key) textControl.getData();
-        String number= textControl.getText();
-        String oldValue= setValue(key, number);
-        validateSettings(key, oldValue, number);
-    }   
-
-    boolean checkValue(Key key, String value) {
-        return value.equals(getValue(key));
-    }
-    
-    String getValue(Key key) {
-        if (fDisabledProjectSettings != null) {
-            return (String) fDisabledProjectSettings.get(key);
-        }
-        return key.getCurValue(_prefs, fLookupOrder, false, fManager).toString();
-    }
-    
-    
-    boolean getBooleanValue(Key key) {
-        return Boolean.valueOf(getValue(key)).booleanValue();
-    }
-    
-    String setValue(Key key, String value) {
-        if (fDisabledProjectSettings != null) {
-            return (String) fDisabledProjectSettings.put(key, value);
-        }
-        Object newValue =  key.setCurValue(_prefs, fLookupOrder[0], Severity.valueOfString(value), fManager);
-        return newValue != null ? newValue.toString() : "";
-    }
-    
-    String setValue(Key key, boolean value) {
-        return setValue(key, String.valueOf(value));
-    }
-
-    /**
-     * Returns the value as actually stored in the preference store.
-     * @param key
-     * @return the value as actually stored in the preference store.
-     */
-    Object getStoredValue(Key key) {
-        return key.getCurValue(_prefs, fLookupOrder, false, fManager);
-    }
-    
-    /**
-     * Update fields and validate.
-     * @param changedKey Key that changed, or null, if all changed.
-     * @param oldValue 
-     * @param newValue 
-     */ 
-    protected abstract void validateSettings(Key changedKey, String oldValue, String newValue);
-    
-    
-    String[] getTokens(String text, String separator) {
-        StringTokenizer tok= new StringTokenizer(text, separator); 
-        int nTokens= tok.countTokens();
-        String[] res= new String[nTokens];
-        for (int i= 0; i < res.length; i++) {
-            res[i]= tok.nextToken().trim();
-        }
-        return res;
-    }
-
-    private boolean getChanges(IScopeContext currContext, List changedSettings) {
-        boolean needsBuild= false;
-        for (int i= 0; i < fAllKeys.length; i++) {
-            Key key= fAllKeys[i];
-            Object oldVal= key.getStoredValue(_prefs, currContext, null);
-            Object val= key.getCurValue(_prefs, currContext, fManager);
-            if (val == null) {
-                if (oldVal != null) {
-                    changedSettings.add(key);
-                    needsBuild |= !oldVal.equals(key.getCurValue(_prefs, fLookupOrder, true, fManager));
-                }
-            } else if (!val.equals(oldVal)) {
-                changedSettings.add(key);
-                needsBuild |= oldVal != null || !val.equals(key.getCurValue(_prefs, fLookupOrder, true, fManager));
-            }
-        }
-        return needsBuild;
-    }
-    
-    void useProjectSpecificSettings(boolean enable) {
-        boolean hasProjectSpecificOption= fDisabledProjectSettings == null;
-        if (enable != hasProjectSpecificOption && fProject != null) {
-            if (enable) {
-                for (int i= 0; i < fAllKeys.length; i++) {
-                    Key curr= fAllKeys[i];
-                    String val= (String) fDisabledProjectSettings.get(curr);
-                    curr.setCurValue(_prefs, fLookupOrder[0], Severity.valueOfString(val), fManager);
-                }
-                fDisabledProjectSettings= null;
-                updateControls();
-                validateSettings(null, null, null);
-            } else {
-                fDisabledProjectSettings= new IdentityHashMap();
-                for (int i= 0; i < fAllKeys.length; i++) {
-                    Key curr= fAllKeys[i];
-                    Object oldSetting= curr.getCurValue(_prefs, fLookupOrder, false, fManager);
-                    fDisabledProjectSettings.put(curr, oldSetting);
-                    curr.setCurValue(_prefs, fLookupOrder[0], null, fManager); // clear project settings
-                }
-            }
-        }
-    }
-    
-    boolean areSettingsEnabled() {
-        return fDisabledProjectSettings == null || fProject == null;
-    }
-    
-    
-    boolean performOk() {
-        return processChanges(fContainer);
-    }
-    
-//    public boolean performApply() {
-//        return processChanges(null); // apply directly
-//    }
-    
-    boolean processChanges(IWorkbenchPreferenceContainer container) {
-        IScopeContext currContext= fLookupOrder[0];
-        
-        List /* <Key>*/ changedOptions= new ArrayList();
-        boolean needsBuild= getChanges(currContext, changedOptions);
-        if (changedOptions.isEmpty()) {
-            return true;
-        }
-        if (needsBuild) {
-            int count= getRebuildCount();
-            if (count > fRebuildCount) {
-                needsBuild= false; // build already requested
-                fRebuildCount= count;
-            }
-        }
-
-        boolean doBuild= false;
-        
-        final String  showBuildWarningKey = JSFCorePlugin.PLUGIN_ID + "." + "buildwarning_dont_show_again";
-        final IPreferenceStore prefStore = JSFCorePlugin.getDefault().getPreferenceStore();
-        final boolean showDialog = !MessageDialogWithToggle.ALWAYS.equals(prefStore.getString(showBuildWarningKey));
-        
-        if (needsBuild && showDialog) {
-            String[] strings= getFullBuildDialogStrings(fProject == null);
-            if (strings != null) {
-                MessageDialogWithToggle.openInformation
-                	(getShell(), strings[0], strings[1], 
-                			PreferencesMessages.ProblemSeveritiesConfigurationBlock_buildwarning_dont_show_again
-                			, false, prefStore, showBuildWarningKey);
-//                int res= dialog.open();
-//                if (res == 0) {
-//                    doBuild= true;
-//                } else if (res != 1) {
-//                    return false; // cancel pressed
-//                }
-            }
-        }
-        if (container != null) {
-            // no need to apply the changes to the original store: will be done by the page container
-            if (doBuild) { // post build
-                incrementRebuildCount();
-                // TODO: container.registerUpdateJob(CoreUtility.getBuildJob(fProject));
-            }
-        } else {
-            // apply changes right away
-            try {
-                fManager.applyChanges();
-            } catch (BackingStoreException e) {
-                JSFUiPlugin.log(IStatus.ERROR, "Error applying changes", e);
-                return false;
-            }
-            if (doBuild) {
-                //CoreUtility.getBuildJob(fProject).schedule();
-            }
-            
-        }
-        return true;
-    }
-    
-    abstract String[] getFullBuildDialogStrings(boolean workspaceSettings);
-            
-    
-//    public void performDefaults() {
-//        for (int i= 0; i < fAllKeys.length; i++) {
-//            Key curr= fAllKeys[i];
-//            String defValue= curr.getStoredValue(fLookupOrder, true, fManager);
-//            setValue(curr, defValue);
-//        }
-//        
-//        settingsUpdated();
-//        updateControls();
-//        validateSettings(null, null, null);
-//    }
-
-    /**
-     * @since 3.1
-     */
-    void performRevert() {
-        for (int i= 0; i < fAllKeys.length; i++) {
-            Key curr= fAllKeys[i];
-            String origValue= curr.getCurValue(_prefs, fLookupOrder, false, null).toString();
-            setValue(curr, origValue);
-        }
-
-        updateControls();
-        validateSettings(null, null, null);
-    }
-    
-    void dispose() {
-        // do nothing; sub-class should override
-    }
-    
-    void updateControls() {
-        // update the UI
-        for (int i= fCheckBoxes.size() - 1; i >= 0; i--) {
-            updateCheckBox((Button) fCheckBoxes.get(i));
-        }
-        for (int i= fComboBoxes.size() - 1; i >= 0; i--) {
-            updateCombo((Combo) fComboBoxes.get(i));
-        }
-        for (int i= fTextBoxes.size() - 1; i >= 0; i--) {
-            updateText((Text) fTextBoxes.get(i));
-        }
-    }
-    
-    void updateCombo(Combo curr) {
-        ControlData data= (ControlData) curr.getData();
-        
-        String currValue= getValue(data.getKey());  
-        curr.select(data.getSelection(currValue));                  
-    }
-    
-    void updateCheckBox(Button curr) {
-        ControlData data= (ControlData) curr.getData();
-        
-        String currValue= getValue(data.getKey());  
-        curr.setSelection(data.getSelection(currValue) == 0);                       
-    }
-    
-    void updateText(Text curr) {
-        Key key= (Key) curr.getData();
-        
-        String currValue= getValue(key);
-        if (currValue != null) {
-            curr.setText(currValue);
-        }
-    }
-    
-    Button getCheckBox(Key key) {
-        for (int i= fCheckBoxes.size() - 1; i >= 0; i--) {
-            Button curr= (Button) fCheckBoxes.get(i);
-            ControlData data= (ControlData) curr.getData();
-            if (key.equals(data.getKey())) {
-                return curr;
-            }
-        }
-        return null;        
-    }
-    
-    Combo getComboBox(Key key) {
-        for (int i= fComboBoxes.size() - 1; i >= 0; i--) {
-            Combo curr= (Combo) fComboBoxes.get(i);
-            ControlData data= (ControlData) curr.getData();
-            if (key.equals(data.getKey())) {
-                return curr;
-            }
-        }
-        return null;        
-    }
-    
-    Text getTextControl(Key key) {
-        for (int i= fTextBoxes.size() - 1; i >= 0; i--) {
-            Text curr= (Text) fTextBoxes.get(i);
-            ControlData data= (ControlData) curr.getData();
-            if (key.equals(data.getKey())) {
-                return curr;
-            }
-        }
-        return null;        
-    }
-    
-    Control findControl(Key key) {
-        Combo comboBox= getComboBox(key);
-        if (comboBox != null) {
-            return comboBox;
-        }
-        Button checkBox= getCheckBox(key);
-        if (checkBox != null) {
-            return checkBox;
-        }
-        Text text= getTextControl(key);
-        if (text != null) {
-            return text;
-        }
-        return null;
-    }
-    
-    void setComboEnabled(Key key, boolean enabled) {
-        Combo combo= getComboBox(key);
-        Label label= (Label) fLabels.get(combo);
-        combo.setEnabled(enabled);
-        label.setEnabled(enabled);
-    }
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PixelConverter.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PixelConverter.java
deleted file mode 100644
index a5ed503..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PixelConverter.java
+++ /dev/null
@@ -1,74 +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
- *     Oracle - copied for use in JSF validation tooling
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.widgets.Control;
-
-import org.eclipse.jface.dialogs.Dialog;
-
-/**
- * Copied from JDT.  Used by OptionsConfigurationBlock
- *
- */
-class PixelConverter {
-    
-    private final FontMetrics fFontMetrics;
-    
-    /**
-     * @param control
-     */
-    PixelConverter(Control control) {
-        this(control.getFont());
-    }
-    
-    /**
-     * @param font
-     */
-    PixelConverter(Font font) {
-        GC gc = new GC(font.getDevice());
-        gc.setFont(font);
-        fFontMetrics= gc.getFontMetrics();
-        gc.dispose();
-    }
-    
-    /*
-     * see org.eclipse.jface.dialogs.DialogPage#convertHeightInCharsToPixels(int)
-     */
-    int convertHeightInCharsToPixels(int chars) {
-        return Dialog.convertHeightInCharsToPixels(fFontMetrics, chars);
-    }
-
-    /*
-     * see org.eclipse.jface.dialogs.DialogPage#convertHorizontalDLUsToPixels(int)
-     */
-    int convertHorizontalDLUsToPixels(int dlus) {
-        return Dialog.convertHorizontalDLUsToPixels(fFontMetrics, dlus);
-    }
-
-    /*
-     * see org.eclipse.jface.dialogs.DialogPage#convertVerticalDLUsToPixels(int)
-     */
-    int convertVerticalDLUsToPixels(int dlus) {
-        return Dialog.convertVerticalDLUsToPixels(fFontMetrics, dlus);
-    }
-    
-    /*
-     * see org.eclipse.jface.dialogs.DialogPage#convertWidthInCharsToPixels(int)
-     */
-    int convertWidthInCharsToPixels(int chars) {
-        return Dialog.convertWidthInCharsToPixels(fFontMetrics, chars);
-    }   
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PreferencesMessages.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PreferencesMessages.java
deleted file mode 100644
index 8877117..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/PreferencesMessages.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     John Kaplan, johnkaplantech@gmail.com - 108071 [code templates] template for body of newly created class
- *     Oracle - adapted for JSF tooling
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * NLS messages for validation severity preferences
- * 
- * @author cbateman
- *
- */
-public final class PreferencesMessages extends NLS {
-
-    private static final String BUNDLE_NAME= "org.eclipse.jst.jsf.ui.internal.validation.messages";//$NON-NLS-1$
-
-    private PreferencesMessages() {
-        // Do not instantiate
-    }
-
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesPreferencePage_title;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_error;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_warning;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_ignore;
-
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_section_id_resolution;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_section_general;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_section_type_coercion_problems;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_section_constant_folding_and_unused_code;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_section_programming_errors;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_needsbuild_title;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_needsfullbuild_message;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_needsprojectbuild_message;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_buildwarning_dont_show_again;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_common_description;
-
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_general_syntax_error;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_empty_el_expression;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_missing_closing_expr_bracket;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_cannot_apply_operator_to_method_binding;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_dotted_property_key_should_use_array;
-
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_variable_not_found;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_member_not_found;
-
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_binary_op_numeric_coercion_error;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_binary_op_boolean_coercion_error;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_binary_op_no_coercion_available;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_binary_op_literal_to_number_coercion_error;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_unary_op_numeric_coercion_error;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_unary_op_boolean_coercion_error;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_unary_op_string_coercion_not_guaranteed;
-    
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_both_binary_operands_null;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_binary_expression_always_evaluates_same;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_equality_with_null_always_same;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_unary_expression_always_evaluates_same;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_empty_expression_always_false;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_enumeration_comparision_always_same;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_minus_on_null_always_zero;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_first_argument_short_circuits_expression;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_second_argument_always_evaluates_same;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_apply_dot_operator_with_null;
-    
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_possible_division_by_zero;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_possible_array_index_out_of_bounds;
-    /**
-     * see messages.properties
-     */
-    public static String  ProblemSeveritiesConfigurationBlock_pb_incompatible_enumeration_comparison;
-    /**
-     * see messages.properties
-     */
-    public static String ProblemSeveritiesConfigurationBlock_pb_member_is_intermediate;
-    
-    static {
-        NLS.initializeMessages(BUNDLE_NAME, PreferencesMessages.class);
-    }
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ProblemSeveritiesConfigurationBlock.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ProblemSeveritiesConfigurationBlock.java
deleted file mode 100644
index 69b31a7..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ProblemSeveritiesConfigurationBlock.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Oracle - adapted for use in JSF Tooling
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jst.jsf.core.internal.IJSFPreferenceModel;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences;
-import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences.Severity;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-
-/**
-  */
-/*package*/ class ProblemSeveritiesConfigurationBlock extends OptionsConfigurationBlock {
-
-    private static final String SETTINGS_SECTION_NAME= "ProblemSeveritiesConfigurationBlock";  //$NON-NLS-1$
-    
-    /**
-     * preference key.  Match to DiagnosticFactory constants
-     */
-    private final static Key PREF_BINARY_OP_BOTH_OPERANDS_NULL = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_BOTH_OPERANDS_NULL);
-    private final static Key PREF_BINARY_OP_POSSIBLE_DIVISION_BY_ZERO = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_POSSIBLE_DIVISION_BY_ZERO);
-    private final static Key PREF_BINARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION);
-    private final static Key PREF_BINARY_OP_CONSTANT_EXPRESSION_ALWAYS_EVAL_SAME = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_CONSTANT_EXPRESSION_ALWAYS_EVAL_SAME);
-    private final static Key PREF_BINARY_OP_EQUALITY_COMP_WITH_NULL_ALWAYS_EVAL_SAME = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_EQUALITY_COMP_WITH_NULL_ALWAYS_EVAL_SAME);
-    private final static Key PREF_BINARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN);
-    private final static Key PREF_BINARY_OP_FIRST_ARGUMENT_SHORT_CIRCUITS = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_FIRST_ARGUMENT_SHORT_CIRCUITS);
-    private final static Key PREF_BINARY_OP_SECOND_ARGUMENT_ALWAYS_EVAL_SAME =
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_SECOND_ARGUMENT_ALWAYS_EVAL_SAME);
-    private final static Key PREF_BINARY_OP_NO_AVAILABLE_TYPE_COERCION = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_NO_AVAILABLE_TYPE_COERCION);
-    private final static Key PREF_BINARY_OP_COULD_NOT_COERCE_LITERALS_TO_NUMBERS = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_COULD_NOT_COERCE_LITERALS_TO_NUMBERS);
-    private final static Key PREF_UNARY_OP_CONSTANT_EXPRESSION_EVAL_SAME = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_CONSTANT_EXPRESSION_EVAL_SAME);
-    private final static Key PREF_UNARY_OP_EMPTY_ALWAYS_FALSE_ON_TYPE = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_EMPTY_ALWAYS_FALSE_ON_TYPE);
-    private final static Key PREF_UNARY_OP_MINUS_ON_NULL_ALWAYS_ZERO = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_MINUS_ON_NULL_ALWAYS_ZERO);
-    private final static Key PREF_UNARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION);
-    private final static Key PREF_UNARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN);
-//    private final static Key PREF_TERNARY_OP_CHOICE_IS_ALWAYS_SAME = 
-//        getJSFCoreKey(ELValidationPreferences.TERNARY_OP_CHOICE_IS_ALWAYS_SAME);
-//    private final static Key PREF_TERNARY_OP_CANNOT_COERCE_CHOICE_TO_BOOLEAN = 
-//        getJSFCoreKey(ELValidationPreferences.TERNARY_OP_CANNOT_COERCE_CHOICE_TO_BOOLEAN);
-    private final static Key PREF_UNARY_OP_STRING_CONVERSION_NOT_GUARANTEED = 
-        getJSFCoreKey(ELValidationPreferences.UNARY_OP_STRING_CONVERSION_NOT_GUARANTEED);
-    private final static Key PREF_CANNOT_APPLY_OPERATOR_TO_METHOD_BINDING = 
-        getJSFCoreKey(ELValidationPreferences.CANNOT_APPLY_OPERATOR_TO_METHOD_BINDING);
-    private final static Key PREF_MEMBER_NOT_FOUND = 
-        getJSFCoreKey(ELValidationPreferences.MEMBER_NOT_FOUND);
-    private final static Key PREF_VARIABLE_NOT_FOUND = 
-        getJSFCoreKey(ELValidationPreferences.VARIABLE_NOT_FOUND);
-    private final static Key PREF_MISSING_CLOSING_EXPR_BRACKET =
-        getJSFCoreKey(ELValidationPreferences.MISSING_CLOSING_EXPR_BRACKET);
-    private final static Key PREF_GENERAL_SYNTAX_ERROR = 
-        getJSFCoreKey(ELValidationPreferences.GENERAL_SYNTAX_ERROR);
-    private final static Key PREF_EMPTY_EL_EXPRESSION = 
-        getJSFCoreKey(ELValidationPreferences.EMPTY_EL_EXPRESSION);
-    private final static Key PREF_BINARY_OP_DOT_WITH_VALUEB_NULL = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_DOT_WITH_VALUEB_NULL);
-    private final static Key PREF_BINARY_OP_DOT_WITH_DOTTED_KEY_SHOULD_USE_ARRAY =
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_DOT_WITH_DOTTED_KEY_SHOULD_USE_ARRAY);
-    private final static Key PREF_POSSIBLE_ARRAY_INDEX_OUT_OF_BOUNDS = 
-        getJSFCoreKey(ELValidationPreferences.POSSIBLE_ARRAY_INDEX_OUT_OF_BOUNDS);
-    private final static Key PREF_BINARY_COMPARISON_WITH_ENUM_ALWAYS_SAME = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_COMPARISON_WITH_ENUM_ALWAYS_SAME);
-    private final static Key PREF_BINARY_OP_COMPARISON_OF_ENUMS_INCOMPATIBLE = 
-        getJSFCoreKey(ELValidationPreferences.BINARY_OP_COMPARISON_OF_ENUMS_INCOMPATIBLE);
-    private final static Key PREF_MEMBER_IS_INTERMEDIATE =
-        getJSFCoreKey(ELValidationPreferences.MEMBER_IS_INTERMEDIATE);
-
-    private final static int EXPECTED_PREFS = 28;
-    
-    private PixelConverter fPixelConverter;
-    
-    /**
-     * @param prefs 
-     * @param project
-     * @param container
-     */
-    public ProblemSeveritiesConfigurationBlock(/*TODO:IStatusChangeListener context,*/ IJSFPreferenceModel prefs, IProject project, IWorkbenchPreferenceContainer container) {
-        super(prefs, project, getKeys(), container);
-    }
-    
-    private static Key[] getKeys() 
-    {
-        Key[] keys = new Key[] {
-                PREF_BINARY_OP_BOTH_OPERANDS_NULL
-                , PREF_BINARY_OP_POSSIBLE_DIVISION_BY_ZERO
-                , PREF_BINARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION 
-                , PREF_BINARY_OP_CONSTANT_EXPRESSION_ALWAYS_EVAL_SAME
-                , PREF_BINARY_OP_EQUALITY_COMP_WITH_NULL_ALWAYS_EVAL_SAME
-                , PREF_BINARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN
-                , PREF_BINARY_OP_FIRST_ARGUMENT_SHORT_CIRCUITS
-                , PREF_BINARY_OP_SECOND_ARGUMENT_ALWAYS_EVAL_SAME
-                , PREF_BINARY_OP_NO_AVAILABLE_TYPE_COERCION 
-                , PREF_BINARY_OP_COULD_NOT_COERCE_LITERALS_TO_NUMBERS 
-                , PREF_UNARY_OP_CONSTANT_EXPRESSION_EVAL_SAME
-                , PREF_UNARY_OP_EMPTY_ALWAYS_FALSE_ON_TYPE 
-                , PREF_UNARY_OP_MINUS_ON_NULL_ALWAYS_ZERO 
-                , PREF_UNARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION
-                , PREF_UNARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN
-                , PREF_UNARY_OP_STRING_CONVERSION_NOT_GUARANTEED
-                , PREF_CANNOT_APPLY_OPERATOR_TO_METHOD_BINDING
-                , PREF_MEMBER_NOT_FOUND 
-                , PREF_VARIABLE_NOT_FOUND
-                , PREF_MISSING_CLOSING_EXPR_BRACKET
-                , PREF_GENERAL_SYNTAX_ERROR
-                , PREF_EMPTY_EL_EXPRESSION
-                , PREF_BINARY_OP_DOT_WITH_VALUEB_NULL
-                , PREF_BINARY_OP_DOT_WITH_DOTTED_KEY_SHOULD_USE_ARRAY
-                , PREF_POSSIBLE_ARRAY_INDEX_OUT_OF_BOUNDS 
-                , PREF_BINARY_COMPARISON_WITH_ENUM_ALWAYS_SAME
-                , PREF_BINARY_OP_COMPARISON_OF_ENUMS_INCOMPATIBLE
-                , PREF_MEMBER_IS_INTERMEDIATE
-          };
-        
-        if (EXPECTED_PREFS != keys.length)
-        {
-            JSFUiPlugin.log(IStatus.WARNING, "Expected "+EXPECTED_PREFS+" preferences but was "+keys.length, new Throwable());
-        }
-
-        return keys;
-    }
-    
-    /*
-     * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite)
-     */
-    protected Control createContents(Composite parent) {
-        fPixelConverter= new PixelConverter(parent);
-        setShell(parent.getShell());
-        
-        Group mainComp= new Group(parent, SWT.NONE);
-        mainComp.setFont(parent.getFont());
-        GridLayout layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        mainComp.setLayout(layout);
-        mainComp.setText(PreferencesMessages.ProblemSeveritiesConfigurationBlock_common_description);
-        
-        Composite commonComposite= createStyleTabContent(mainComp);
-        GridData gridData= new GridData(GridData.FILL, GridData.FILL, true, true);
-        gridData.heightHint= fPixelConverter.convertHeightInCharsToPixels(20);
-        commonComposite.setLayoutData(gridData);
-        
-        validateSettings(null, null, null);
-    
-        return mainComp;
-    }
-    
-    private Composite createStyleTabContent(Composite folder) {
-        String[] errorWarningIgnore= new String[] { Severity.ERROR.toString(), Severity.WARNING.toString(), Severity.IGNORE.toString() };
-        
-        String[] errorWarningIgnoreLabels= new String[] {
-            PreferencesMessages.ProblemSeveritiesConfigurationBlock_error,  
-            PreferencesMessages.ProblemSeveritiesConfigurationBlock_warning, 
-            PreferencesMessages.ProblemSeveritiesConfigurationBlock_ignore
-        };
-        
-        //String[] enabledDisabled= new String[] { ENABLED, DISABLED };
-        
-        int nColumns= 3;
-        
-        final ScrolledPageContent sc1 = new ScrolledPageContent(folder);
-        
-        Composite composite= sc1.getBody();
-        GridLayout layout= new GridLayout(nColumns, false);
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        composite.setLayout(layout);
-        
-//        Label description= new Label(composite, SWT.LEFT | SWT.WRAP);
-//        description.setFont(description.getFont());
-//        description.setText(PreferencesMessages.ProblemSeveritiesConfigurationBlock_common_description); 
-//        description.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, true, false, nColumns - 1, 1));
-                
-        int indentStep=  fPixelConverter.convertWidthInCharsToPixels(1);
-        
-        int defaultIndent= indentStep * 0;
-        //int extraIndent= indentStep * 2;
-        String label;
-        ExpandableComposite excomposite;
-        Composite inner;
-        
-        // -- general errors
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_general; 
-        excomposite= createStyleSection(composite, label, nColumns);
-        
-        inner= new Composite(excomposite, SWT.NONE);
-        inner.setFont(composite.getFont());
-        inner.setLayout(new GridLayout(nColumns, false));
-        excomposite.setClient(inner);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_general_syntax_error; 
-        addComboBox(inner, label, PREF_GENERAL_SYNTAX_ERROR, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_empty_el_expression; 
-        addComboBox(inner, label, PREF_EMPTY_EL_EXPRESSION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_missing_closing_expr_bracket; 
-        addComboBox(inner, label, PREF_MISSING_CLOSING_EXPR_BRACKET, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_cannot_apply_operator_to_method_binding; 
-        addComboBox(inner, label, PREF_CANNOT_APPLY_OPERATOR_TO_METHOD_BINDING, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_dotted_property_key_should_use_array; 
-        addComboBox(inner, label, PREF_BINARY_OP_DOT_WITH_DOTTED_KEY_SHOULD_USE_ARRAY, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-        
-        // --- id resolution
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_id_resolution; 
-        excomposite= createStyleSection(composite, label, nColumns);
-        
-        inner= new Composite(excomposite, SWT.NONE);
-        inner.setFont(composite.getFont());
-        inner.setLayout(new GridLayout(nColumns, false));
-        excomposite.setClient(inner);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_variable_not_found; 
-        addComboBox(inner, label, PREF_VARIABLE_NOT_FOUND, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_member_not_found; 
-        addComboBox(inner, label, PREF_MEMBER_NOT_FOUND, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_member_is_intermediate; 
-        addComboBox(inner, label, PREF_MEMBER_IS_INTERMEDIATE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        // --- type coercion problems
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_type_coercion_problems; 
-        excomposite= createStyleSection(composite, label, nColumns);
-        
-        inner= new Composite(excomposite, SWT.NONE);
-        inner.setFont(composite.getFont());
-        inner.setLayout(new GridLayout(nColumns, false));
-        excomposite.setClient(inner);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_binary_op_numeric_coercion_error; 
-        addComboBox(inner, label, PREF_BINARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_binary_op_boolean_coercion_error; 
-        addComboBox(inner, label, PREF_BINARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_binary_op_no_coercion_available; 
-        addComboBox(inner, label, PREF_BINARY_OP_NO_AVAILABLE_TYPE_COERCION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_binary_op_literal_to_number_coercion_error; 
-        addComboBox(inner, label, PREF_BINARY_OP_COULD_NOT_COERCE_LITERALS_TO_NUMBERS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unary_op_numeric_coercion_error; 
-        addComboBox(inner, label, PREF_UNARY_OP_COULD_NOT_MAKE_NUMERIC_COERCION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unary_op_boolean_coercion_error; 
-        addComboBox(inner, label, PREF_UNARY_OP_CANNOT_COERCE_ARGUMENT_TO_BOOLEAN, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unary_op_string_coercion_not_guaranteed; 
-        addComboBox(inner, label, PREF_UNARY_OP_STRING_CONVERSION_NOT_GUARANTEED, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        // --- constant folder and unused code
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_constant_folding_and_unused_code; 
-        excomposite= createStyleSection(composite, label, nColumns);
-        
-        inner= new Composite(excomposite, SWT.NONE);
-        inner.setFont(composite.getFont());
-        inner.setLayout(new GridLayout(nColumns, false));
-        excomposite.setClient(inner);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_both_binary_operands_null; 
-        addComboBox(inner, label, PREF_BINARY_OP_BOTH_OPERANDS_NULL, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_binary_expression_always_evaluates_same; 
-        addComboBox(inner, label, PREF_BINARY_OP_CONSTANT_EXPRESSION_ALWAYS_EVAL_SAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_equality_with_null_always_same; 
-        addComboBox(inner, label, PREF_BINARY_OP_EQUALITY_COMP_WITH_NULL_ALWAYS_EVAL_SAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_enumeration_comparision_always_same; 
-        addComboBox(inner, label, PREF_BINARY_COMPARISON_WITH_ENUM_ALWAYS_SAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unary_expression_always_evaluates_same; 
-        addComboBox(inner, label, PREF_UNARY_OP_CONSTANT_EXPRESSION_EVAL_SAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_empty_expression_always_false; 
-        addComboBox(inner, label, PREF_UNARY_OP_EMPTY_ALWAYS_FALSE_ON_TYPE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);          
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_minus_on_null_always_zero; 
-        addComboBox(inner, label, PREF_UNARY_OP_MINUS_ON_NULL_ALWAYS_ZERO, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);          
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_first_argument_short_circuits_expression; 
-        addComboBox(inner, label, PREF_BINARY_OP_FIRST_ARGUMENT_SHORT_CIRCUITS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);          
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_second_argument_always_evaluates_same; 
-        addComboBox(inner, label, PREF_BINARY_OP_SECOND_ARGUMENT_ALWAYS_EVAL_SAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);          
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_apply_dot_operator_with_null; 
-        addComboBox(inner, label, PREF_BINARY_OP_DOT_WITH_VALUEB_NULL, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);          
-
-        // --- possible programming errors
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_programming_errors; 
-        excomposite= createStyleSection(composite, label, nColumns);
-        
-        inner= new Composite(excomposite, SWT.NONE);
-        inner.setFont(composite.getFont());
-        inner.setLayout(new GridLayout(nColumns, false));
-        excomposite.setClient(inner);
-        
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_possible_division_by_zero; 
-        addComboBox(inner, label, PREF_BINARY_OP_POSSIBLE_DIVISION_BY_ZERO, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_possible_array_index_out_of_bounds; 
-        addComboBox(inner, label, PREF_POSSIBLE_ARRAY_INDEX_OUT_OF_BOUNDS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);        
-    
-        label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_incompatible_enumeration_comparison; 
-        addComboBox(inner, label, PREF_BINARY_OP_COMPARISON_OF_ENUMS_INCOMPATIBLE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
-
-
-        new Label(composite, SWT.NONE);
-        
-        IDialogSettings section= JSFUiPlugin.getDefault().getDialogSettings().getSection(SETTINGS_SECTION_NAME);
-        restoreSectionExpansionStates(section);
-        
-        return sc1;
-    }
-    
-    /* (non-javadoc)
-     * Update fields and validate.
-     * @param changedKey Key that changed, or null, if all changed.
-     */ 
-    protected void validateSettings(Key changedKey, String oldValue, String newValue) {
-        if (!areSettingsEnabled()) {
-            return;
-        }
-        
-//        if (changedKey != null) {
-//            if (PREF_PB_UNUSED_PARAMETER.equals(changedKey) ||
-//                    PREF_PB_DEPRECATION.equals(changedKey) ||
-//                    PREF_PB_LOCAL_VARIABLE_HIDING.equals(changedKey) ||
-//                    PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION.equals(changedKey)) {              
-//                updateEnableStates();
-//            } else if (PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING.equals(changedKey)) {
-//                // merging the two options
-//                setValue(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT, newValue);
-//            } else {
-//                return;
-//            }
-//        } else {
-            updateEnableStates();
-//        }       
-        // TODO: fContext.statusChanged(new StatusInfo());
-    }
-    
-    private void updateEnableStates() {
-//        boolean enableUnusedParams= !checkValue(PREF_PB_UNUSED_PARAMETER, Severity.IGNORE.toString());
-//        getCheckBox(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING).setEnabled(enableUnusedParams);
-//        getCheckBox(PREF_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE).setEnabled(enableUnusedParams);
-//        
-//        boolean enableDeprecation= !checkValue(PREF_PB_DEPRECATION, Severity.IGNORE.toString());
-//        getCheckBox(PREF_PB_DEPRECATION_IN_DEPRECATED_CODE).setEnabled(enableDeprecation);
-//        getCheckBox(PREF_PB_DEPRECATION_WHEN_OVERRIDING).setEnabled(enableDeprecation);
-//        
-//        boolean enableThrownExceptions= !checkValue(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION, Severity.IGNORE.toString());
-//        getCheckBox(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING).setEnabled(enableThrownExceptions);
-//
-//        boolean enableHiding= !checkValue(PREF_PB_LOCAL_VARIABLE_HIDING, Severity.IGNORE.toString());
-//        getCheckBox(PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD).setEnabled(enableHiding);
-    }
-
-    protected String[] getFullBuildDialogStrings(boolean workspaceSettings) {
-        String title= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsbuild_title; 
-        String message;
-        if (workspaceSettings) {
-            message= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsfullbuild_message; 
-        } else {
-            message= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsprojectbuild_message; 
-        }
-        return new String[] { title, message };
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jdt.internal.ui.preferences.OptionsConfigurationBlock#dispose()
-     */
-    public void dispose() {
-        IDialogSettings section= JSFUiPlugin.getDefault().getDialogSettings().addNewSection(SETTINGS_SECTION_NAME);
-        storeSectionExpansionStates(section);
-        super.dispose();
-    }
-    
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ScrolledPageContent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ScrolledPageContent.java
deleted file mode 100644
index 74c21a8..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ScrolledPageContent.java
+++ /dev/null
@@ -1,72 +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
- *     Oracle - updated for JSF tools
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.validation;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.SharedScrolledComposite;
-
-import org.eclipse.jdt.internal.ui.JavaPlugin;
-
-
-/**
- * Customized SharedScrolledComposite
- */
-/*package*/ class ScrolledPageContent extends SharedScrolledComposite {
-
-    private FormToolkit fToolkit;
-    
-    /**
-     * @param parent
-     */
-    public ScrolledPageContent(Composite parent) {
-        this(parent, SWT.V_SCROLL | SWT.H_SCROLL);
-    }
-    
-    /**
-     * @param parent
-     * @param style
-     */
-    public ScrolledPageContent(Composite parent, int style) {
-        super(parent, style);
-        
-        setFont(parent.getFont());
-        
-        fToolkit= JavaPlugin.getDefault().getDialogsFormToolkit();
-        
-        setExpandHorizontal(true);
-        setExpandVertical(true);
-        
-        Composite body= new Composite(this, SWT.NONE);
-        body.setFont(parent.getFont());
-        setContent(body);
-    }
-    
-    
-    /**
-     * @param childControl
-     */
-    public void adaptChild(Control childControl) {
-        fToolkit.adapt(childControl, true, true);
-    }
-    
-    /**
-     * @return the content composite
-     */
-    public Composite getBody() {
-        return (Composite) getContent();
-    }
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/messages.properties
deleted file mode 100644
index eaeea75..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/messages.properties
+++ /dev/null
@@ -1,64 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-#     John Kaplan, johnkaplantech@gmail.com - 108071 [code templates] template for body of newly created class
-#     Cameron Bateman/Oracle - adapted for use in JSF validation tooling
-###############################################################################
-
-ProblemSeveritiesPreferencePage_title=Problem Severities
-
-ProblemSeveritiesConfigurationBlock_error=Error
-ProblemSeveritiesConfigurationBlock_warning=Warning
-ProblemSeveritiesConfigurationBlock_ignore=Ignore
-
-ProblemSeveritiesConfigurationBlock_section_id_resolution=&Identifier Resolution
-ProblemSeveritiesConfigurationBlock_section_general=&General Problems
-ProblemSeveritiesConfigurationBlock_section_type_coercion_problems=&Type Coercion Problems
-ProblemSeveritiesConfigurationBlock_section_constant_folding_and_unused_code=&Constant folding and unused code
-ProblemSeveritiesConfigurationBlock_section_programming_errors=&Possible programming errors
-
-ProblemSeveritiesConfigurationBlock_needsbuild_title=Error/Warning Settings Changed
-ProblemSeveritiesConfigurationBlock_needsfullbuild_message=The Error/Warning settings have changed. You will need to rebuild or revalidate for these changes to take effect.
-ProblemSeveritiesConfigurationBlock_needsprojectbuild_message=The Error/Warning settings have changed. A rebuild of the project is required for changes to take effect. Build the project now?
-ProblemSeveritiesConfigurationBlock_buildwarning_dont_show_again=Don't show this dialog again
-
-ProblemSeveritiesConfigurationBlock_common_description=Select the severity level for the following problems
-
-ProblemSeveritiesConfigurationBlock_pb_general_syntax_error=General Syntax Error
-ProblemSeveritiesConfigurationBlock_pb_empty_el_expression=Empty EL expression
-ProblemSeveritiesConfigurationBlock_pb_missing_closing_expr_bracket=Missing closing bracket on expression
-ProblemSeveritiesConfigurationBlock_pb_cannot_apply_operator_to_method_binding=Applying operator to method binding
-ProblemSeveritiesConfigurationBlock_pb_dotted_property_key_should_use_array=Dotted property names should use array ([]) syntax
-
-ProblemSeveritiesConfigurationBlock_pb_variable_not_found=Variable not found
-ProblemSeveritiesConfigurationBlock_pb_member_not_found=Member not found
-ProblemSeveritiesConfigurationBlock_pb_member_is_intermediate=Member is intermediate
-
-ProblemSeveritiesConfigurationBlock_pb_binary_op_numeric_coercion_error=Binary operation number coercion problems
-ProblemSeveritiesConfigurationBlock_pb_binary_op_boolean_coercion_error=Binary operation boolean coercion problems
-ProblemSeveritiesConfigurationBlock_pb_binary_op_no_coercion_available=Binary operation no available coercions
-ProblemSeveritiesConfigurationBlock_pb_binary_op_literal_to_number_coercion_error=Binary coercion of literal to number
-ProblemSeveritiesConfigurationBlock_pb_unary_op_numeric_coercion_error=Unary operation number coercion problems
-ProblemSeveritiesConfigurationBlock_pb_unary_op_boolean_coercion_error=Unary operation boolean coercion problems
-ProblemSeveritiesConfigurationBlock_pb_unary_op_string_coercion_not_guaranteed=Unary operation string coercion not guaranteed
-
-ProblemSeveritiesConfigurationBlock_pb_both_binary_operands_null=Both operands null
-ProblemSeveritiesConfigurationBlock_pb_binary_expression_always_evaluates_same=Binary expression always evaluates to same value
-ProblemSeveritiesConfigurationBlock_pb_equality_with_null_always_same=Equality comparison with null always evaluates to same value
-ProblemSeveritiesConfigurationBlock_pb_unary_expression_always_evaluates_same=Unary expression always evaluates to same value
-ProblemSeveritiesConfigurationBlock_pb_empty_expression_always_false=Empty operator always resolves to false on type
-ProblemSeveritiesConfigurationBlock_pb_enumeration_comparision_always_same=Enumeration comparison always evaluates to same value
-ProblemSeveritiesConfigurationBlock_pb_minus_on_null_always_zero=Minus applied to null always evaluates to zero
-ProblemSeveritiesConfigurationBlock_pb_first_argument_short_circuits_expression=First argument short-circuits expression
-ProblemSeveritiesConfigurationBlock_pb_second_argument_always_evaluates_same=Second argument always evaluates the same
-ProblemSeveritiesConfigurationBlock_pb_apply_dot_operator_with_null=Applying the dot ('.') operator with null always returns null
-
-ProblemSeveritiesConfigurationBlock_pb_possible_division_by_zero=Possible division by zero
-ProblemSeveritiesConfigurationBlock_pb_possible_array_index_out_of_bounds=Possible array index out of bounds
-ProblemSeveritiesConfigurationBlock_pb_incompatible_enumeration_comparison=Incompatible enumeration comparison
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/metadata/jsf_html.xml b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/metadata/jsf_html.xml
index dfbdb43..aa8c7e8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/metadata/jsf_html.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/metadata/jsf_html.xml
@@ -230,6 +230,16 @@
 		<trait id="large-icon">
 			<value>large/JSF_OUTPUTFORMAT.gif</value>
 		</trait>	
+		<trait id="tag-create">
+			<value xsi:type="pi:TagCreationInfo">
+				<template><![CDATA[
+					<param value=""
+						_uri_="http://java.sun.com/jsf/core" />
+					]]>
+				</template>
+				<attribute id="value" value="outputFormat" />
+			</value>			
+		</trait>
 	</entity>
 	<entity id="outputLabel" type="tag">		
 		<trait id="display-label">
@@ -241,6 +251,12 @@
 		<trait id="large-icon">
 			<value>large/JSF_OUTPUTLABEL.gif</value>
 		</trait>		
+ 		<trait id="tag-create">
+ 			<value xsi:type="pi:TagCreationInfo">
+ 				<attribute id="for" />
+				<attribute id="value" value="outputLabel" />
+ 			</value>
+ 		</trait>
 	</entity>
 	<entity id="outputLink" type="tag">
 		<trait id="display-label">
@@ -255,7 +271,7 @@
 		<trait id="tag-create">
 			<value xsi:type="pi:TagCreationInfo">
 				<template><![CDATA[
-				<outputText value="OutputLink"
+				<outputText value="outputLink"
 					_$uri$="http://java.sun.com/jsf/html" />
 				]]></template>
 
@@ -272,6 +288,11 @@
 		<trait id="large-icon">
 			<value>large/JSF_OUTPUTTEXT.gif</value>
 		</trait>			
+		<trait id="tag-create">
+			<value xsi:type="pi:TagCreationInfo">
+				<attribute id="value" value="outputText" />
+			</value>
+		</trait>
 	</entity>
 	<entity id="panelGrid" type="tag">
 		<trait id="display-label">
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/ExpressionAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/ExpressionAction.java
index 78f1782..3204dca 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/ExpressionAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/ExpressionAction.java
@@ -40,15 +40,7 @@
     private String          _action;
     private IProject        _project;
     private IFile           _file;
-    private int             _type;
 
-    /**
-     * @param type
-     */
-    public ExpressionAction(int type)
-    {
-        _type = type;
-    }
 
     /**
      * @param attribute
@@ -85,21 +77,7 @@
                 IPageVariablesProvider.class);
         pageVarProvider.refresh();
 
-        Object result = null;
-        if (_type == METHOD)
-        {
-//            result = VariableResolverUtils.resolveMethodBinding(_action, _project, IWebFrameworkResolver.ACTION_METHOD,                    true);
-        	result = null;
-        }
-        else
-        {
-//            result = VariableResolverUtils.resolveValueBinding(_action, _project, true);
-        	result = null;
-        }
-        if (result == null)
-        {
-            JSFUIPlugin.getAlerts().warning("Message.Warning.Title", "Message.Warning.InvalidateExpression");//$NON-NLS-1$ $NON-NLS-2$
-        }
+        JSFUIPlugin.getAlerts().warning("Message.Warning.Title", "Message.Warning.InvalidateExpression");//$NON-NLS-1$ $NON-NLS-2$
     }
 
     /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java
index 8f2e179..4d593e3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java
@@ -69,11 +69,11 @@
     {
         if (support.isActionSource())
         {
-            ExpressionAction action = new ExpressionAction(ExpressionAction.METHOD);
+            ExpressionAction action = new ExpressionAction();
             action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Action"));//$NON-NLS-1$
-            action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_ACTION));
             if (ele != null)
             {
+                action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_ACTION));
                 IDOMModel model = ele.getModel();
                 action.setProject(StructuredModelUtil.getProjectFor(model));
                 action.setFile(StructuredModelUtil.getFileFor(model));
@@ -82,11 +82,11 @@
         }
         if (support.isValueHolder())
         {
-            ExpressionAction action = new ExpressionAction(ExpressionAction.VARIABLE);
+            ExpressionAction action = new ExpressionAction();
             action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Value"));//$NON-NLS-1$
-            action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_VALUE));
             if (ele != null)
             {
+                action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_VALUE));
                 IDOMModel model = ele.getModel();
                 action.setProject(StructuredModelUtil.getProjectFor(model));
                 action.setFile(StructuredModelUtil.getFileFor(model));
@@ -95,11 +95,11 @@
         }
 
         {
-            ExpressionAction action = new ExpressionAction(ExpressionAction.VARIABLE);
+            ExpressionAction action = new ExpressionAction();
             action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Binding"));//$NON-NLS-1$
-            action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_BINDING));
             if (ele != null)
             {
+                action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_BINDING));
                 IDOMModel model = ele.getModel();
                 action.setProject(StructuredModelUtil.getProjectFor(model));
                 action.setFile(StructuredModelUtil.getFileFor(model));
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java
index f43db4f..293965d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java
@@ -72,7 +72,7 @@
         }
     }
 
-    class PageFlowAction extends Action
+    private static class PageFlowAction extends Action
     {
         /**
          * this action's id
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/ConverterValidatorIdDialogField.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/ConverterValidatorIdDialogField.java
index 07c7ce3..a18eaa6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/ConverterValidatorIdDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/ConverterValidatorIdDialogField.java
@@ -11,8 +11,6 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.jsf.ui.celleditors;
 
-import java.util.Arrays;
-
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField;
 import org.eclipse.jst.pagedesigner.properties.attrgroup.IElementContextable;
 import org.eclipse.swt.SWT;
@@ -40,25 +38,7 @@
      */
     public void setElementContext(IDOMNode ancester, IDOMElement element)
     {
-        String[] results = null;
-        if ("validator-id".equalsIgnoreCase(_elementId))
-        {
-            //results = FacesUtil.getRegisteredConverterIds(project);
-        	
-        }
-        else
-        {
-            // results = FacesUtil.getRegisteredValidatorIds(project);
-        }
-        if (results != null)
-        {
-            Arrays.sort(results);
-            setItems(results);
-        }
-        else
-        {
-            setItems(new String[0]);
-        }
+        setItems(new String[0]);
     }
 
     /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/JSFAttributeCellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/JSFAttributeCellEditorFactory.java
index e9931e6..aecbc42 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/JSFAttributeCellEditorFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/celleditors/JSFAttributeCellEditorFactory.java
@@ -46,33 +46,15 @@
     public CellEditor createCellEditor(Composite parent, IAttributeDescriptor attr, Element element)
     {
         String type = attr.getValueType();
-        String[] results = null;
+
         if (type.equalsIgnoreCase(CONVERTERID))
         {
-        	// XXX
-            // results = FacesUtil.getRegisteredConverterIds(project);
             Map map = new HashMap();
-            if (results != null)
-            {
-                for (int i = 0; i < results.length; i++)
-                {
-                    map.put(results[i], results[i]);
-                }
-            }
             return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
         }
         else if (type.equalsIgnoreCase(VALIDATORID))
         {
-        	// XXX
-            // results = FacesUtil.getRegisteredValidatorIds(project);
             Map map = new HashMap();
-            if (results != null)
-            {
-                for (int i = 0; i < results.length; i++)
-                {
-                    map.put(results[i], results[i]);
-                }
-            }
             return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
         }
         return null;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/LoadBundleTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/LoadBundleTagConverter.java
index 7608080..7cb56ba 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/LoadBundleTagConverter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/LoadBundleTagConverter.java
@@ -103,17 +103,17 @@
                 PropertyResourceBundle bundle = new PropertyResourceBundle(ins);
                 if (bundle != null)
                 {
-                    if (PreviewUtil.BUNDLE_MAP == null)
+                    if (PreviewUtil.getBUNDLE_MAP() == null)
                     {
-                        PreviewUtil.BUNDLE_MAP = new HashMap();
+                        PreviewUtil.setBUNDLE_MAP(new HashMap());
                     }
                     else
                     {
-                        PreviewUtil.BUNDLE_MAP.clear();
+                        PreviewUtil.getBUNDLE_MAP().clear();
                     }
-                    PreviewUtil.BUNDLE_MAP.put(varString, bundle);
-                    PreviewUtil.BUNDLE = bundle;
-                    PreviewUtil.VAR = varString;
+                    PreviewUtil.getBUNDLE_MAP().put(varString, bundle);
+                    PreviewUtil.setBUNDLE(bundle);
+                    PreviewUtil.setVAR(varString);
                 }
             }
         }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/operations/jsf/LoadBundleOperation.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/operations/jsf/LoadBundleOperation.java
index af1d68d..4299133 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/operations/jsf/LoadBundleOperation.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/operations/jsf/LoadBundleOperation.java
@@ -90,14 +90,14 @@
 											inputStream = new BufferedInputStream(inputStream);
 											PropertyResourceBundle bundle = new PropertyResourceBundle(inputStream);
 											if (bundle != null) {
-												if (PreviewUtil.BUNDLE_MAP == null) {
-													PreviewUtil.BUNDLE_MAP = new HashMap();
+												if (PreviewUtil.getBUNDLE_MAP() == null) {
+													PreviewUtil.setBUNDLE_MAP(new HashMap());
 												} else {
-													PreviewUtil.BUNDLE_MAP.clear();
+													PreviewUtil.getBUNDLE_MAP().clear();
 												}
-												PreviewUtil.BUNDLE_MAP.put(var, bundle);
-												PreviewUtil.BUNDLE = bundle;
-												PreviewUtil.VAR = var;
+												PreviewUtil.getBUNDLE_MAP().put(var, bundle);
+												PreviewUtil.setBUNDLE(bundle);
+												PreviewUtil.setVAR(var);
 											}
 										}
 									} catch(IOException ioe) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfcore/JarEntryEditorInput.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfcore/JarEntryEditorInput.java
index f6b5697..17ee5a4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfcore/JarEntryEditorInput.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfcore/JarEntryEditorInput.java
@@ -51,6 +51,15 @@
         return fJarEntryFile.equals(other.fJarEntryFile);
     }
 
+    
+    @Override
+    public int hashCode() 
+    {
+        // two editor inputs are equal if their fJarEntryFile's are
+        // equal.  Therefore use the same criteria for hashcodes
+        return fJarEntryFile.hashCode();
+    }
+
     /*
      * @see IEditorInput#getPersistable()
      */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
index bd40493..17b8281 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
@@ -169,6 +169,9 @@
         }
     }
 
+    /**
+     * Default constructor
+     */
     public JSFHtmlActionListenerSection()
     {
         super();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
index d284853..1aad0e6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
@@ -62,9 +62,9 @@
     private TableViewer            _columnsViewer;
     private Button                 _addButton, _removeButton, _moveUpButton, _moveDownButton;
 
-    final private String           DEFAULT_COLUMN_NAME = "column"; //$NON-NLS-1$
-    final private String           DEFAULT_FACET_NAME  = "header"; //$NON-NLS-1$
-    final private String           DEFAULT_TEXT_NAME   = "text"; //$NON-NLS-1$
+    final static private String           DEFAULT_COLUMN_NAME = "column"; //$NON-NLS-1$
+    final static private String           DEFAULT_FACET_NAME  = "header"; //$NON-NLS-1$
+    final static private String           DEFAULT_TEXT_NAME   = "text"; //$NON-NLS-1$
 
     class ColumnCotentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
     {
@@ -169,6 +169,9 @@
 
     }
 
+    /**
+     * default constructor
+     */
     public JSFHtmlDataTableColumnsSection()
     {
         super();
@@ -332,7 +335,10 @@
         );
     }
 
-    public void updateButtonStatus()
+    /**
+     * Update the button status
+     */
+    private void updateButtonStatus()
     {
         _removeButton.setEnabled(true);
         _moveUpButton.setEnabled(true);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
index 403fe09..ec1ad7c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
@@ -242,6 +242,9 @@
         }
     }
 
+    /**
+     * Default constructor
+     */
     public JSFHtmlOutputFormatParamsSection()
     {
         super();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
index f35fb1f..9a6a0fc 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
@@ -171,6 +171,9 @@
 
     }
 
+    /**
+     * Default constructor
+     */
     public JSFHtmlOutputTextConverterSection()
     {
         super();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
index 4eb9eeb..a2940c8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
@@ -168,6 +168,9 @@
         }
     }
 
+    /**
+     * Default constructor
+     */
     public JSFHtmlSelectChoicesSection()
     {
         super();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
index d984f0d..40e2e83 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
@@ -18,6 +18,12 @@
 		</editor>
 	</extension>
 
+	<extension point="org.eclipse.ui.actionSetPartAssociations">
+    	<actionSetPartAssociation targetID="org.eclipse.debug.ui.launchActionSet">
+        	<part id="org.eclipse.jst.pagedesigner.PageDesignerEditor"/>
+    	</actionSetPartAssociation>
+	</extension>
+
 	<extension point="org.eclipse.core.runtime.adapters">
 		<factory
 			class="org.eclipse.jst.pagedesigner.utils.UriAdapterFactory"
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/PDPlugin.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/PDPlugin.java
index 178b7bb..2c9f403 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/PDPlugin.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/PDPlugin.java
@@ -45,8 +45,6 @@
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.osgi.framework.BundleContext;
 
 /**
@@ -139,6 +137,7 @@
 
 	/**
 	 * Returns the shared instance.
+	 * @return the default plugin
 	 */
 	public static PDPlugin getDefault() {
 		return _plugin;
@@ -147,7 +146,7 @@
 	/**
 	 * get the alerts objects associated with this plugin for alerting the user.
 	 * 
-	 * @return
+	 * @return the Alerts object
 	 */
 	public static Alerts getAlerts() {
 		return _alerts;
@@ -155,6 +154,8 @@
 
 	/**
 	 * Returns a logger for the new class using this plugin for reference.
+	 * @param theClass
+	 * @return the Logger object associated with theClass
 	 */
 	public static Logger getLogger(Class theClass) {
 		if (getDefault() != null && getDefault().getRootLogger() != null) {
@@ -165,6 +166,7 @@
 
 	/**
 	 * Returns the plugin's root logger
+	 * @return the root logger
 	 */
 	public Logger getRootLogger() {
 		return _log;
@@ -172,22 +174,22 @@
 
 	/**
 	 * Returns this plugin's unique identifier
-	 * 
-	 * @retun this plugin's unique identifier
+	 * @return the plugin id
 	 */
 	public static String getPluginId() {
 		return getDefault().getBundle().getSymbolicName();
 	}
 
 	/**
-	 * Returns the plugin's resource bundle,
+	 * @return the plugin's resource bundle
 	 */
 	public ResourceBundle getResourceBundle() {
 		return _resourceBundle;
 	}
 
 	/**
-	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * @param key 
+	 * @return the string from the plugin's resource bundle, or 'key' if not
 	 * found.
 	 */
 	public static String getResourceString(String key) {
@@ -200,14 +202,14 @@
 	}
 
 	/**
-	 * Returns the plugin's descriptor's resource bundle,
+	 * @return the plugin's descriptor's resource bundle,
 	 */
 	public ResourceBundle getPluginDecriptorBundle() {
 		return Platform.getResourceBundle(getDefault().getBundle());
 	}
 
 	/**
-	 * Returns the plugin's default properties. These are normally used for
+	 * @return the plugin's default properties. These are normally used for
 	 * default preferences.
 	 */
 	public Properties getProperties() {
@@ -215,7 +217,7 @@
 	}
 
 	/**
-	 * Returns the standard display to be used. The method first checks, if the
+	 * @return the standard display to be used. The method first checks, if the
 	 * thread calling this method has an associated dispaly. If so, this display
 	 * is returned. Otherwise the method returns the default display.
 	 */
@@ -229,7 +231,7 @@
 	}
 
 	/**
-	 * Returns the workspace instance.
+	 * @return the workspace instance.
 	 */
 	public static IWorkspace getWorkspace() {
 		return ResourcesPlugin.getWorkspace();
@@ -304,16 +306,30 @@
 	 * Read a file resource. The file should contain any partial path and the
 	 * filename from the plugin base. The caller is responsible for closing the
 	 * file.
+	 * @param file 
+	 * @return the input stream for the file
+	 * @throws MalformedURLException 
+	 * @throws IOException 
 	 */
 	public InputStream readFile(String file) throws MalformedURLException,
 			IOException {
 		return (new URL(_pluginBase, file)).openStream();
 	}
 
+	/**
+	 * @param file
+	 * @return the File associate with the name 'file'
+	 * @throws MalformedURLException
+	 * @throws IOException
+	 */
 	public File getFile(String file) throws MalformedURLException, IOException {
 		return new File((new URL(_pluginBase, file)).getPath());
 	}
 
+	/**
+	 * @return the plugin's install location with the leading "/" removed
+	 * and normalized to the the os string.
+	 */
 	public static Path getInstallLocation() {
 		try {
 			URL url = getDefault().getBundle().getEntry("/");
@@ -336,11 +352,7 @@
 		}
 	}
 
-	public static IModelManager getModelManager() {
-		return StructuredModelManager.getModelManager();
-	}
-
-	/**
+    /**
 	 * Returns the active workbench window.
 	 * 
 	 * @return the active workbench window. this can be null but I've never seen
@@ -379,10 +391,8 @@
 	}
 
 	/**
-	 * Returns the active workbench Shell. Used for some funciton need IShell
+	 * @return the active workbench Shell. Used for some funciton need IShell
 	 * Parameter.
-	 * 
-	 * @return
 	 */
 	public static Shell getActiveWorkbenchShell() {
 		IWorkbenchWindow window = getActiveWorkbenchWindow();
@@ -398,9 +408,7 @@
 	}
 
 	/**
-	 * Returns the active display.
-	 * 
-	 * @return
+	 * @return the active display.
 	 */
 	public static Display getDisplay() {
 		Shell shell = getActiveWorkbenchShell();
@@ -411,9 +419,7 @@
 	}
 
 	/**
-	 * Returns current active project.
-	 * 
-	 * @return
+	 * @return current active project.
 	 */
 	public static IProject getCurrentProject() {
 		IProject curProject = null;
@@ -428,6 +434,10 @@
 		return curProject;
 	}
 	
+	/**
+	 * Log status using the default plugin logger
+	 * @param status
+	 */
 	public static void log(IStatus status)
 	{
 	    ILog log = getDefault().getLog();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/AbstractLinkCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/AbstractLinkCreator.java
index c2f6e25..0e7f371 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/AbstractLinkCreator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/AbstractLinkCreator.java
@@ -23,6 +23,10 @@
 public abstract class AbstractLinkCreator implements ILinkCreator,
 		IExecutableExtension {
 	private String _identifier;
+    /**
+     * the link identifier attribute name
+     */
+    private static final String LINK_IDENTIFIER = "linkIdentifier";
 
 	/*
 	 * (non-Javadoc)
@@ -50,6 +54,6 @@
 	 */
 	public void setInitializationData(IConfigurationElement config,
 			String propertyName, Object data) throws CoreException {
-		this._identifier = config.getAttribute(ILinkCreator.LINK_IDENTIFIER);
+		this._identifier = config.getAttribute(LINK_IDENTIFIER);
 	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/CreateLinkWizard.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/CreateLinkWizard.java
index e36848a..b385663 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/CreateLinkWizard.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/CreateLinkWizard.java
@@ -37,11 +37,16 @@
 
 	private DesignRange _range;
 
-	private Map _linkMap;
+	private Map<String, ILinkCreator> _linkMap;
 
 	private String _linkType;
 
-	public CreateLinkWizard(EditPart part, DesignRange range, Map linkMap) {
+	/**
+	 * @param part
+	 * @param range
+	 * @param linkMap
+	 */
+	public CreateLinkWizard(EditPart part, DesignRange range, Map<String, ILinkCreator> linkMap) {
 		this._part = part;
 		this._range = range;
 		this._linkMap = linkMap;
@@ -77,11 +82,17 @@
 		return true;
 	}
 
+	/**
+	 * @param pageTitle
+	 */
 	public void setPageTitle(String pageTitle) {
 		_pageTitle = pageTitle;
 		initializeDefaultPageImageDescriptor();
 	}
 
+	/**
+	 * 
+	 */
 	protected void initializeDefaultPageImageDescriptor() {
 		ImageDescriptor desc = PDPlugin.getDefault().getImageDescriptor(
 				INTIAL_DEFAULT_PAGE_IMAGE);
@@ -89,6 +100,9 @@
 		setWindowTitle(WIZARD_TITLE);
 	}
 
+	/**
+	 * @return the link type
+	 */
 	public String getChosenLinkType() {
 		return this._linkType;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ExtensionReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ExtensionReader.java
index 5ef0c1d..6cf3d9f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ExtensionReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ExtensionReader.java
@@ -12,6 +12,7 @@
 package org.eclipse.jst.pagedesigner.actions.link;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.core.runtime.CoreException;
@@ -30,20 +31,24 @@
 public class ExtensionReader {
 	private static Logger _log = PDPlugin.getLogger(ExtensionReader.class);
 
-	private static ILinkCreator[] _handlers = null;
+	private static List<ILinkCreator> _handlers = null;
 
 	private static final String ATTR_CLASS = "class";
 
-	public static synchronized ILinkCreator[] getAllLinkHandlers() {
+	/** 
+	 * @return the ext-pts for the link handler
+	 * List is not modifiable
+	 */
+	public static synchronized List<ILinkCreator> getAllLinkHandlers() {
 		if (_handlers == null) {
 			_handlers = readAllLinkHandlers();
 		}
-		return _handlers;
+		return Collections.unmodifiableList(_handlers);
 
 	}
 
-	private static ILinkCreator[] readAllLinkHandlers() {
-		List result = new ArrayList();
+	private static List<ILinkCreator> readAllLinkHandlers() {
+	    List<ILinkCreator> result = new ArrayList<ILinkCreator>();
 		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
 				.getExtensionPoint(PDPlugin.getPluginId(),
 						IJMTConstants.EXTENSION_POINT_PAGEDESIGNER);
@@ -64,7 +69,7 @@
 								.createExecutableExtension(ATTR_CLASS);
 
 						if (obj instanceof ILinkCreator) {
-							result.add(obj);
+							result.add((ILinkCreator)obj);
 						}
 					} catch (CoreException e) {
 						_log
@@ -73,8 +78,6 @@
 				}
 			}
 		}
-		ILinkCreator[] ret = new ILinkCreator[result.size()];
-		result.toArray(ret);
-		return ret;
+		return result;
 	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ILinkCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ILinkCreator.java
index 83b332b..0652f37 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ILinkCreator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/ILinkCreator.java
@@ -20,13 +20,30 @@
  * @version 1.5
  */
 public interface ILinkCreator {
-	public static final String LINK_IDENTIFIER = "linkIdentifier";
 
+	/**
+	 * @param part
+	 * @param range
+	 * @return the link element
+	 */
 	public Element makeLinkElement(EditPart part, DesignRange range);
 
+	/**
+	 * @return link identifier
+	 */
 	public String getLinkIdentifier();
 
+	/**
+	 * @param range
+	 * @return true if can call makeLinkElement
+	 */
 	public boolean canExecute(DesignRange range);
 
+	/**
+	 * @param part
+	 * @param range
+	 * @return a preview string that approximates the result
+	 * of makeLinkElement
+	 */
 	public String getSourcePreview(EditPart part, DesignRange range);
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkRequest.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkRequest.java
index 4f1152e..1caa1f8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkRequest.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkRequest.java
@@ -19,19 +19,29 @@
  * @version 1.5
  */
 public class LinkRequest extends Request {
-	private String _identifier = "";
+	private final String _identifier;
 
-	private DesignRange _range = null;
+	private final DesignRange _range;
 
+	/**
+	 * @param identifier
+	 * @param range
+	 */
 	public LinkRequest(String identifier, DesignRange range) {
 		this._identifier = identifier;
 		this._range = range;
 	}
 
+	/**
+	 * @return the identifier
+	 */
 	public String getIdentifier() {
 		return this._identifier;
 	}
 
+	/**
+	 * @return the design range
+	 */
 	public DesignRange getDesignRange() {
 		return this._range;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkUtil.java
index 271b8c1..aeeaf41 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkUtil.java
@@ -26,6 +26,11 @@
  * @version 1.5
  */
 public class LinkUtil {
+	/**
+	 * @param part
+	 * @param range
+	 * @return the select text if part is a text node or null.
+	 */
 	public static String getSelectedText(EditPart part, DesignRange range) {
 		if (part instanceof TextEditPart) {
 			TextEditPart textPart = (TextEditPart) part;
@@ -38,6 +43,11 @@
 		return null;
 	}
 
+	/**
+	 * @param part
+	 * @param range
+	 * @return the text from part split if it is a text node or null
+	 */
 	public static Text splitDomText(EditPart part, DesignRange range) {
 		if (part instanceof TextEditPart) {
 			Text textNode = (Text) part.getModel();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkWizardPage.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkWizardPage.java
index f64d5e4..25e120c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkWizardPage.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/LinkWizardPage.java
@@ -35,7 +35,7 @@
  * @author mengbo
  * @version 1.5
  */
-public class LinkWizardPage extends WizardPage {
+/*package*/ class LinkWizardPage extends WizardPage {
 	private static final String GROUP_TITLE = PDPlugin
 			.getResourceString("LinkWizardPage.GroupTitle");
 
@@ -44,16 +44,23 @@
 
 	private StyledText _text = null;
 
-	private Map _linkMap = null;
+	private final Map<String, ILinkCreator> _linkMap;
 
 	private String _linkType = null;
 
-	private EditPart _part = null;
+	private final EditPart _part;
 
-	private DesignRange _range = null;
+	private final DesignRange _range;
 
+	/**
+	 * @param pageName
+	 * @param title
+	 * @param editPart
+	 * @param range
+	 * @param linkMap
+	 */
 	public LinkWizardPage(String pageName, String title, EditPart editPart,
-			DesignRange range, Map linkMap) {
+			DesignRange range, Map<String, ILinkCreator> linkMap) {
 		super(pageName, title, null);
 		this._part = editPart;
 		this._range = range;
@@ -83,13 +90,13 @@
 		group.setLayoutData(data);
 
 		String defaultLink = "";
-		Set set = this._linkMap.keySet();
+		Set<String> set = this._linkMap.keySet();
 		int size = set.size();
 		String[] keys = new String[size];
-		Iterator itr = set.iterator();
+		Iterator<String> itr = set.iterator();
 		int i = 0;
 		while (itr.hasNext()) {
-			String key = (String) itr.next();
+			String key = itr.next();
 			keys[i++] = key;
 		}
 		Arrays.sort(keys);
@@ -113,7 +120,7 @@
 		data.heightHint = 50;
 		_text.setLayoutData(data);
 
-		ILinkCreator creator = (ILinkCreator) _linkMap.get(defaultLink);
+		ILinkCreator creator = _linkMap.get(defaultLink);
 		_linkType = creator.getLinkIdentifier();
 		String previewText = creator.getSourcePreview(_part, _range);
 		previewText = previewText == null ? "" : previewText;
@@ -132,19 +139,25 @@
 		return true;
 	}
 
+	/**
+	 * @return the link type
+	 */
 	public String getChosenLinkType() {
 		return this._linkType;
 	}
 
-	class SelectLinkListener extends SelectionAdapter {
+    class SelectLinkListener extends SelectionAdapter {
 		private String _key;
 
+		/**
+		 * @param key
+		 */
 		public SelectLinkListener(String key) {
 			this._key = key;
 		}
 
 		public void widgetSelected(SelectionEvent e) {
-			ILinkCreator creator = (ILinkCreator) _linkMap.get(this._key);
+			ILinkCreator creator = _linkMap.get(this._key);
 			_linkType = creator.getLinkIdentifier();
 			String previewText = creator.getSourcePreview(_part, _range);
 			previewText = previewText == null ? "" : previewText;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkAction.java
index ea6c413..ee8df16 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkAction.java
@@ -13,6 +13,7 @@
 
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -64,7 +65,7 @@
 	 * @see org.eclipse.jface.action.Action#run()
 	 */
 	public void run() {
-		Map map = calAvailableLinkCreator();
+		Map<String, ILinkCreator> map = calAvailableLinkCreator();
 		if (map.size() > 1) {
 			CreateLinkWizard wizard = new CreateLinkWizard(_editPart, _range,
 					map);
@@ -78,10 +79,10 @@
 		}
 		// else must be html link
 		else if (map.size() == 1) {
-			Set set = map.entrySet();
-			Iterator itr = set.iterator();
+			Set<Map.Entry<String, ILinkCreator>> set = map.entrySet();
+			Iterator<Map.Entry<String,ILinkCreator>> itr = set.iterator();
 			while (itr.hasNext()) {
-				ILinkCreator creator = (ILinkCreator) itr.next();
+				ILinkCreator creator =  itr.next().getValue();
 				_linkType = creator.getLinkIdentifier();
 			}
 		}
@@ -199,14 +200,14 @@
 		return null;
 	}
 
-	private Map calAvailableLinkCreator() {
-		Map map = new HashMap();
-		ILinkCreator[] linkCreators = ExtensionReader.getAllLinkHandlers();
-		for (int i = 0, size = linkCreators.length; i < size; i++) {
-			String identifier = linkCreators[i].getLinkIdentifier();
-			boolean canExecute = linkCreators[i].canExecute(_range);
+	private Map<String, ILinkCreator> calAvailableLinkCreator() {
+		Map<String, ILinkCreator> map = new HashMap<String, ILinkCreator>();
+		List<ILinkCreator> linkCreators = ExtensionReader.getAllLinkHandlers();
+		for (ILinkCreator linkCreator : linkCreators) {
+			String identifier = linkCreator.getLinkIdentifier();
+			boolean canExecute = linkCreator.canExecute(_range);
 			if (canExecute) {
-				map.put(identifier, linkCreators[i]);
+				map.put(identifier, linkCreator);
 			}
 		}
 		return map;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkCommand.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkCommand.java
index 9ccd1d1..7c4835f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkCommand.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/link/MakeLinkCommand.java
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.actions.link;
 
+import java.util.List;
+
 import org.eclipse.gef.EditPart;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jst.pagedesigner.PDPlugin;
@@ -35,6 +37,12 @@
 
 	private Element _ele = null;
 
+	/**
+	 * @param identifier
+	 * @param viewer
+	 * @param part
+	 * @param range
+	 */
 	public MakeLinkCommand(String identifier, IHTMLGraphicalViewer viewer,
 			EditPart part, DesignRange range) {
 		super(identifier, viewer);
@@ -50,10 +58,9 @@
 	 * @see org.eclipse.gef.commands.Command#canExecute()
 	 */
 	public boolean canExecute() {
-		ILinkCreator[] creators = ExtensionReader.getAllLinkHandlers();
+		List<ILinkCreator> creators = ExtensionReader.getAllLinkHandlers();
 		if (creators != null) {
-			for (int i = 0, size = creators.length; i < size; i++) {
-				ILinkCreator linkCreator = creators[i];
+			for (ILinkCreator linkCreator : creators) {
 				String identifier = linkCreator.getLinkIdentifier();
 				if (this._identifier.equalsIgnoreCase(identifier)) {
 					this._linkcreator = linkCreator;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/AlignSupport.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/AlignSupport.java
index e1ac246..aaab7e9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/AlignSupport.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/AlignSupport.java
@@ -23,7 +23,7 @@
  */
 public class AlignSupport {
 
-	public static final String[] ALIGN_VALUES = new String[] {
+	private static final String[] ALIGN_VALUES = new String[] {
 			PDPlugin.getResourceString("AlignSupport.ActionLabel.Left"), //$NON-NLS-1$
 			PDPlugin.getResourceString("AlignSupport.ActionLabel.Center"), //$NON-NLS-1$
 			PDPlugin.getResourceString("AlignSupport.ActionLabel.Right"), //$NON-NLS-1$
@@ -32,6 +32,10 @@
 
 	private static Element[] _nodes = null;
 
+	/**
+	 * @param menu
+	 * @param viewer
+	 */
 	public static void createAlignActions(IMenuManager menu,
 			IHTMLGraphicalViewer viewer) {
 		for (int i = 0; i < ALIGN_VALUES.length; i++) {
@@ -42,6 +46,9 @@
 		}
 	}
 
+	/**
+	 * @param nodes
+	 */
 	public static void setAlignNodes(Element[] nodes) {
 		if (_nodes != nodes) {
 			_nodes = nodes;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ChangeStyleAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ChangeStyleAction.java
index 81ae111..d710e3c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ChangeStyleAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ChangeStyleAction.java
@@ -28,11 +28,13 @@
  * @author mengbo
  */
 public class ChangeStyleAction extends DesignerToolBarAction {
-	private String _expectedTag;
+	private final String _expectedTag;
 
 	/**
 	 * @param text
+	 * @param name 
 	 * @param image
+	 * @param style 
 	 */
 	public ChangeStyleAction(String text, String name, ImageDescriptor image,
 			int style) {
@@ -41,6 +43,13 @@
 		this.setImageDescriptor(image);
 	}
 
+	/**
+	 * @param text
+	 * @param name
+	 * @param enabled
+	 * @param disabled
+	 * @param style
+	 */
 	public ChangeStyleAction(String text, String name, ImageDescriptor enabled,
 			ImageDescriptor disabled, int style) {
 		super(text, style);
@@ -49,13 +58,6 @@
 		setDisabledImageDescriptor(disabled);
 	}
 
-	protected String getExpectedCSSProperty() {
-		return null;
-	}
-
-	protected String getExpectedCSSPropertyValue() {
-		return null;
-	}
 
 	protected boolean isApplied(DOMRange range) {
 		if (range == null) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/DesignerToolBarAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/DesignerToolBarAction.java
index 2e506a4..3e241e3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/DesignerToolBarAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/DesignerToolBarAction.java
@@ -66,12 +66,10 @@
 		}
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.texteditor.IUpdate#update()
+	/**
+	 * Update the status
 	 */
-	public void updateStatus() {
+	protected void updateStatus() {
 		DesignRange range = _viewer.getRangeSelection();
 		DOMRange domRange = null;
 		if (range != null) {
@@ -86,8 +84,16 @@
 		}
 	}
 
+	/**
+	 * @param range
+	 * @return ??
+	 */
 	protected abstract boolean isApplied(DOMRange range);
 
+	/**
+	 * @param viewer
+	 * @return true if this action can run
+	 */
 	protected boolean canRun(IHTMLGraphicalViewer viewer) {
 		if (viewer != null && viewer.isInRangeMode()
 				&& viewer.getModel().getDocument().hasChildNodes()) {
@@ -99,6 +105,9 @@
 		return false;
 	}
 
+	/**
+	 * @param viewer
+	 */
 	public void setViewer(IHTMLGraphicalViewer viewer) {
 		if (viewer == _viewer) {
 			return;
@@ -131,6 +140,9 @@
 		}
 	}
 
+	/**
+	 * @return the command for this action or null
+	 */
 	protected abstract Command getCommand();
 
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/HTagsInsertGroupAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/HTagsInsertGroupAction.java
index ec5ee27..28352ca 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/HTagsInsertGroupAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/HTagsInsertGroupAction.java
@@ -24,7 +24,6 @@
 import org.eclipse.jst.pagedesigner.IHTMLConstants;
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.dom.DOMRange;
-import org.eclipse.jst.pagedesigner.viewer.DesignRange;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Menu;
@@ -38,6 +37,10 @@
 
 	private static Map _actions = new HashMap();
 
+	/**
+	 * @param image
+	 * @param style
+	 */
 	public HTagsInsertGroupAction(ImageDescriptor image, int style) {
 		super(
 				PDPlugin
@@ -74,6 +77,10 @@
 		return null;
 	}
 
+	/**
+	 * @param parent
+	 * @param name
+	 */
 	protected void addActionToMenu(Menu parent, String name) {
 		DesignerToolBarAction action;
 		if (_actions.get(name) == null) {
@@ -114,15 +121,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jst.pagedesigner.commands.range.InsertTagChangeStyleAction#supportSingle(org.eclipse.jst.pagedesigner.dom.DOMRange)
-	 */
-	protected boolean supportSingle() {
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.jst.pagedesigner.editors.actions.DesignerToolBarAction#canRun(org.eclipse.jst.pagedesigner.dom.DOMRange)
 	 */
 	protected boolean isApplied(DOMRange range) {
@@ -132,15 +130,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jst.pagedesigner.commands.range.InsertTagChangeStyleAction#setEnabled(org.eclipse.jst.pagedesigner.viewer.DesignRange)
-	 */
-	public void setStatus(DesignRange range) {
-		this.setEnabled(true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.jface.action.IAction#run()
 	 */
 	public void run() {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/InsertTagChangeStyleAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/InsertTagChangeStyleAction.java
index fd03625..7624a2b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/InsertTagChangeStyleAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/InsertTagChangeStyleAction.java
@@ -26,6 +26,7 @@
 public class InsertTagChangeStyleAction extends ChangeStyleAction {
 	/**
 	 * @param text
+	 * @param tag 
 	 * @param image
 	 * @param style
 	 */
@@ -44,36 +45,14 @@
 		return null;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.texteditor.IUpdate#update()
-	 */
-	public void update() {
-		if (_viewer == null) {
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		if (!_viewer.isInRangeMode()) {
-			// XXX: later we may support in range mode.
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		DesignRange range = _viewer.getRangeSelection();
-		if (range == null || !range.isValid()) {
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		setEnabled(range);
-	}
+	@Override
+    protected void updateState() 
+	{
+        setEnabled(getDesignRange());
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.texteditor.IUpdate#update()
+	/**
+	 * @param range
 	 */
 	public void setEnabled(DesignRange range) {
 		DOMRange domRange = null;
@@ -90,7 +69,7 @@
 
 	private boolean canRun(DOMRange range) {
 		if (range != null) {
-			if (EditModelQuery.isSame(range) && !supportSingle()) {
+			if (EditModelQuery.isSame(range)) {
 				return false;
 			}
 			boolean ordered = range.isOrdered();
@@ -109,8 +88,4 @@
 		}
         return false;
 	}
-
-	protected boolean supportSingle() {
-		return false;
-	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphStyleAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphStyleAction.java
index bcc8a21..5cefa47 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphStyleAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphStyleAction.java
@@ -44,6 +44,12 @@
 		setImageDescriptor(image);
 	}
 
+	/**
+	 * @param text
+	 * @param node
+	 * @param image
+	 * @param style
+	 */
 	public ParagraphStyleAction(String text, Node node, ImageDescriptor image,
 			int style) {
 		super(text, style);
@@ -82,6 +88,10 @@
         return false;
 	}
 
+	/**
+	 * @param common
+	 * @return ??? 
+	 */
 	protected boolean containsTag(Node common) {
 		// the lowest common block parent is the container to apply style.
 		if (_applyingNode == null) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphSupport.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphSupport.java
index 52616e4..2d03548 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphSupport.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/ParagraphSupport.java
@@ -47,12 +47,13 @@
 			PDPlugin.getResourceString("ParagraphSupport.CommandLabel.P"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H1"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H2"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H3"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H4"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H5"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.H6"), PDPlugin.getResourceString("ParagraphSupport.CommandLabel.PRE") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
 	};
 
-	public static int getCurrentParagraphMode(DesignRange range) {
-		return 0;
-	}
-
+	/**
+	 * @param man
+	 * @param range
+	 * @param viewer
+	 */
 	public static void createParagraphActions(IMenuManager man,
-			DesignRange range, int currentMode, IHTMLGraphicalViewer viewer) {
+			DesignRange range, IHTMLGraphicalViewer viewer) {
 		ParagraphStyleAction action = new NoneParagraphStyleAction(
 				PDPlugin
 						.getResourceString("ParagraphSupport.CommandLabel.None"), tags, null, IAction.AS_CHECK_BOX); //$NON-NLS-1$
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java
index 4203ccc..ac453f9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java
@@ -193,14 +193,13 @@
 				.getResourceString("ActionGroup.Submenu.ParagraphFormat"));//$NON-NLS-1$
 		submenu.add(action);
 		// Add the submenu.
-		final int mode = ParagraphSupport.getCurrentParagraphMode(selection);
 
 		submenu.addMenuListener(new IMenuListener() {
 
 			public void menuAboutToShow(IMenuManager manager) {
 				submenu.removeAll();
 				ParagraphSupport.createParagraphActions(submenu, selection,
-						mode, viewer);
+						viewer);
 			}
 		});
 		menu.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, submenu);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleAction.java
index ba633ab..2346403 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleAction.java
@@ -21,6 +21,10 @@
 public class RangeStyleAction extends Action {
 	/**
 	 * @param text
+	 * @param range 
+	 * @param htmlTag 
+	 * @param cssProperty 
+	 * @param cssValue 
 	 */
 	public RangeStyleAction(String text, DesignRange range, String htmlTag,
 			String cssProperty, String cssValue) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleSupport.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleSupport.java
index 754870a..60f2364 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleSupport.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeStyleSupport.java
@@ -20,20 +20,24 @@
  * @version 1.5
  */
 public class RangeStyleSupport {
-	public static final String[] ActionLabel = new String[] {
+	private static final String[] ActionLabel = new String[] {
 			PDPlugin.getResourceString("RangeStyleSupport.ActionLabel.Bold"),//$NON-NLS-1$
 			PDPlugin.getResourceString("RangeStyleSupport.ActionLabel.Italic"),//$NON-NLS-1$
 			PDPlugin
 					.getResourceString("RangeStyleSupport.ActionLabel.Underline"), }; //$NON-NLS-1$
 
-	public static final String[] HtmlTag = new String[] { "STRONG", "I", "U", }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	private static final String[] HtmlTag = new String[] { "STRONG", "I", "U", }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-	public static final String[] CSSProperty = new String[] {
+	private static final String[] CSSProperty = new String[] {
 			"font-weight", "font-style", "text-decoration", }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-	public static final String[] CSSValue = new String[] { "bolder", "italic",
+	private static final String[] CSSValue = new String[] { "bolder", "italic",
 			"underline", };
 
+	/**
+	 * @param menu
+	 * @param range
+	 */
 	public static void createRangeStyleActions(IMenuManager menu,
 			DesignRange range) {
 		for (int i = 0; i < ActionLabel.length; i++) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java
index 40c23a8..2124d94 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java
@@ -21,7 +21,7 @@
 import org.eclipse.jface.text.source.SourceViewer;
 import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID;
 import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.w3c.dom.Element;
 
 /**
@@ -54,7 +54,7 @@
 		if (part != null) {
 			EditPartViewer viewer = ((ScalableRootEditPart) part.getParent())
 					.getViewer();
-			HTMLEditor editor = ((HTMLEditor) ((DefaultEditDomain) ((HTMLGraphicalViewer) viewer)
+			HTMLEditor editor = ((HTMLEditor) ((DefaultEditDomain) ((IHTMLGraphicalViewer) viewer)
 					.getEditDomain()).getEditorPart());
 			_viewer = editor.getTextEditor().getTextViewer();
 		}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/AbstractTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/AbstractTagConverter.java
index 0d34b94..8c9054c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/AbstractTagConverter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/AbstractTagConverter.java
@@ -56,6 +56,7 @@
 	private boolean _needBorderDecorator;
 
 	/**
+	 * @param host 
 	 * 
 	 */
 	public AbstractTagConverter(Element host) {
@@ -193,6 +194,10 @@
         // need to review this
 	}
 
+	/**
+	 * @param node
+	 * @return true if the node should be ignored for  conversion purposes
+	 */
 	protected boolean shouldIgnore(Node node) {
 		int nodeType = node.getNodeType();
 		switch (nodeType) {
@@ -209,6 +214,8 @@
 	/**
 	 * utility method for those converter that only converts the host tag's name
 	 * and directly copy children.
+	 * @param src 
+	 * @param dest 
 	 * 
 	 */
 	protected void copyChildren(Element src, Element dest) {
@@ -223,6 +230,8 @@
 
 	/**
 	 * utility method for those converter that directly copy children.
+	 * @param src 
+	 * @param dest 
 	 * 
 	 */
 	protected void dumCopyChildren(Element src, Element dest) {
@@ -271,6 +280,10 @@
 		return getDestDocument().createTextNode(text);
 	}
 
+	/**
+	 * @param original
+	 * @return the mapped String  TODO: currently does nothing
+	 */
 	protected String mapURL(String original) {
 		// TODO: how to map URL? such as original url look like:
 		// getContext().getPath()+...
@@ -279,6 +292,10 @@
 
 	// TODO: FIXME: XXX:
 	// if the value is expression, we may want to do something here!!!
+	/**
+	 * @param value
+	 * @return value mapped based on EL expression
+	 */
 	protected String mapValue(String value) {
 		if (value == null) {
 			return null;
@@ -362,6 +379,9 @@
 		return this._needBorderDecorator;
 	}
 
+	/**
+	 * @param b
+	 */
 	public void setNeedBorderDecorator(boolean b) {
 		this._needBorderDecorator = b;
 	}
@@ -394,14 +414,23 @@
 		this._mode = mode;
 	}
 
+	/**
+	 * @return true if the converter mode is preview
+	 */
 	public final boolean isPreviewMode() {
 		return this._mode == IConverterFactory.MODE_PREVIEW;
 	}
 
+	/**
+	 * @return true if the converter mode is designer
+	 */
 	public final boolean isDesignerMode() {
 		return this._mode == IConverterFactory.MODE_DESIGNER;
 	}
 
+	/**
+	 * @return the converter mode
+	 */
 	public final int getMode() {
 		return this._mode;
 	}
@@ -434,6 +463,9 @@
 		return this._minWidth;
 	}
 
+	/**
+	 * @param minWidth
+	 */
 	public void setMinWidth(int minWidth) {
 		this._minWidth = minWidth;
 	}
@@ -447,10 +479,18 @@
 		return this._minHeight;
 	}
 
+	/**
+	 * @param minHeight
+	 */
 	public void setMinHeight(int minHeight) {
 		this._minHeight = minHeight;
 	}
 
+	/**
+	 * @param element
+	 * @param attrname
+	 * @return the attribute on element with the name attrname
+	 */
 	public static boolean hasAttribute(Element element, String attrname) {
 		return element.hasAttribute(attrname);
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConvertPosition.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConvertPosition.java
index 97f2ba8..130ec40 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConvertPosition.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConvertPosition.java
@@ -20,11 +20,13 @@
  * @version 1.5
  */
 public class ConvertPosition {
-	Node _parentNode;
+	private final Node _parentNode;
 
-	int _index;
+	private final int _index;
 
 	/**
+	 * @param parent \
+	 * @param index 
 	 * 
 	 */
 	public ConvertPosition(Node parent, int index) {
@@ -32,10 +34,16 @@
 		this._index = index;
 	}
 
+	/**
+	 * @return the parent node
+	 */
 	public Node getParentNode() {
 		return _parentNode;
 	}
 
+	/**
+	 * @return the index
+	 */
 	public int getIndex() {
 		return _index;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFacRegistryReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFacRegistryReader.java
index 21f3d88..147850e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFacRegistryReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFacRegistryReader.java
@@ -12,6 +12,7 @@
 package org.eclipse.jst.pagedesigner.converter;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.core.runtime.CoreException;
@@ -27,18 +28,22 @@
  * @version 1.5
  */
 public class ConverterFacRegistryReader {
-	static IConverterFactory[] _handlers = null;
+	private static List<IConverterFactory> _handlers = null;
 
-	public static synchronized IConverterFactory[] getAllHandlers() {
+	/**
+	 * @return the list of handlers.  The list is not modifiable and will
+	 * throw exceptions if it is attempted.
+	 */
+	public static synchronized List<IConverterFactory> getAllHandlers() {
 		if (_handlers == null) {
 			_handlers = readAllHandlers();
 		}
-		return _handlers;
+		return Collections.unmodifiableList(_handlers);
 
 	}
 
-	private static IConverterFactory[] readAllHandlers() {
-		List result = new ArrayList();
+	private static List<IConverterFactory> readAllHandlers() {
+		List result = new ArrayList<IConverterFactory>();
 		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
 				.getExtensionPoint(PDPlugin.getPluginId(),
 						IJMTConstants.EXTENSION_POINT_PAGEDESIGNER);
@@ -68,9 +73,7 @@
 				}
 			}
 		}
-		IConverterFactory[] ret = new IConverterFactory[result.size()];
-		result.toArray(ret);
-		return ret;
+		return result;
 	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java
index 5a54c1b..4cbeafe 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java
@@ -41,18 +41,27 @@
 		_factories.add(new JSPConverterFactory());
 		_factories.add(new HTMLConverterFactory());
 
-		IConverterFactory facs[] = ConverterFacRegistryReader.getAllHandlers();
+		List<IConverterFactory> facs = ConverterFacRegistryReader.getAllHandlers();
 		if (facs != null) {
-			for (int i = 0; i < facs.length; i++) {
-				addFactory(facs[i]);
+			for (IConverterFactory fac : facs) {
+				addFactory(fac);
 			}
 		}
 	}
 
+	/**
+	 * @param fac
+	 */
 	public void addFactory(IConverterFactory fac) {
 		_factories.add(fac);
 	}
 
+	/**
+	 * @param ele
+	 * @param mode
+	 * @param targetDocument
+	 * @return the new btag converter
+	 */
 	public ITagConverter createTagConverter(Element ele, int mode,
 			IDOMDocument targetDocument) {
 		ITagConverter converter = internalCreateTagConverter(ele, mode);
@@ -62,7 +71,12 @@
 		return converter;
 	}
 
-	public ITagConverter internalCreateTagConverter(Element ele, int mode) {
+	/**
+	 * @param ele
+	 * @param mode
+	 * @return the new tag converter
+	 */
+	protected final ITagConverter internalCreateTagConverter(Element ele, int mode) {
 		String uri = CMUtil.getElementNamespaceURI(ele);
 		// first round, match uri
 		for (int i = 0, size = _factories.size(); i < size; i++) {
@@ -118,6 +132,9 @@
 				"palette/GENERIC/small/PD_Palette_Default.gif");
 	}
 
+	/**
+	 * @return the singleton instance of the registry
+	 */ 
 	public static ConverterFactoryRegistry getInstance() {
 		if (_instance == null) {
 			_instance = new ConverterFactoryRegistry();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterUtil.java
index 2dd2678..ade2b79 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterUtil.java
@@ -83,6 +83,11 @@
 		return true;
 	}
 
+	/**
+	 * @param document
+	 * @param text
+	 * @return the descripton element in the document containing text
+	 */
 	public static Element createDescriptionElement(IDOMDocument document,
 			String text) {
 		if (document == null) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java
index 397fcf7..7050685 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java
@@ -25,6 +25,7 @@
 
 	/**
 	 * @param host
+	 * @param mode 
 	 */
 	public DefaultUnknownTagConverter(Element host, int  mode) {
 		super(host);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DumTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DumTagConverter.java
index 43c987e..455bc85 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DumTagConverter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DumTagConverter.java
@@ -20,13 +20,17 @@
  */
 public class DumTagConverter extends AbstractTagConverter {
 	/**
-	 * 
+	 * @param host 
+	 * @param needBorder 
 	 */
 	public DumTagConverter(Element host, boolean needBorder) {
 		this(host);
 		this.setNeedBorderDecorator(needBorder);
 	}
 
+	/**
+	 * @param host
+	 */
 	public DumTagConverter(Element host) {
 		super(host);
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter.java
index 4b4a8a6..51a6c1d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter.java
@@ -35,6 +35,8 @@
 	private int _mode;
 
 	/**
+	 * @param host 
+	 * @param labelProvider 
 	 * 
 	 */
 	public HiddenTagConverter(Element host, ILabelProvider labelProvider) {
@@ -153,6 +155,9 @@
 		this._mode = mode;
 	}
 
+	/**
+	 * @return the mode
+	 */
 	public int getMode() {
 		return _mode;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter2.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter2.java
index cd09809..f51af22 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter2.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/HiddenTagConverter2.java
@@ -33,6 +33,10 @@
 
 	private Image _image;
 
+	/**
+	 * @param host
+	 * @param image
+	 */
 	public HiddenTagConverter2(Element host, Image image) {
 		super(host);
 		this._image = image;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/IConverterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/IConverterFactory.java
index 002a7b0..f8aebf2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/IConverterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/IConverterFactory.java
@@ -18,13 +18,20 @@
  * @version 1.5
  */
 public interface IConverterFactory {
+	/**
+	 * indicates designer mode 
+	 */
 	public static final int MODE_DESIGNER = 0;
 
+	/**
+	 * indicates preview mode
+	 */
 	public static final int MODE_PREVIEW = 1;
 
 	/**
 	 * 
 	 * @param element
+	 * @param mode 
 	 * @return null if this factory don't support this element
 	 */
 	public ITagConverter createConverter(Element element, int mode);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/PreferenceReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/PreferenceReader.java
index 71b2830..ea9dc4e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/PreferenceReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/PreferenceReader.java
@@ -16,12 +16,24 @@
  * @version 1.5
  */
 public class PreferenceReader {
+	/**
+	 * expression type
+	 */
 	public final static int FULL_EXPRESSION_TYPE = 0;
 
+    /**
+     * expression type
+     */
 	public final static int LAST_EXPRESSION_TYPE = 1;
 
+    /**
+     * expression type
+     */
 	public final static int REAL_VALUE_TYPE = 2;
 
+	/**
+	 * @return the map value type
+	 */
 	public static int getMapValueType() {
 		return LAST_EXPRESSION_TYPE;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/IncludeTagConverterPreview.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/IncludeTagConverterPreview.java
index cc9de36..73aa825 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/IncludeTagConverterPreview.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/IncludeTagConverterPreview.java
@@ -30,6 +30,7 @@
 import org.eclipse.jst.pagedesigner.jsp.core.pagevar.adapter.PageVariableAdapterFactory;
 import org.eclipse.jst.pagedesigner.preview.PageExpressionContext;
 import org.eclipse.jst.pagedesigner.preview.PreviewConvertContext;
+import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.util.URIResolver;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
@@ -51,6 +52,7 @@
 
 	/**
 	 * @param host
+	 * @param fileAttrname 
 	 */
 	public IncludeTagConverterPreview(Element host, String fileAttrname) {
 		super(host);
@@ -77,6 +79,10 @@
         return previewFile(file);
 	}
 
+	/**
+	 * @param includedPath
+	 * @return the IFile corresponding to the IPath
+	 */
 	public IFile getFile(IPath includedPath) {
 		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
 		IProject[] projects = workspaceRoot.getProjects();
@@ -95,13 +101,17 @@
 		return null;
 	}
 
+	/**
+	 * @param file
+	 * @return the Element
+	 */
 	public Element previewFile(IFile file) {
 		IDOMModel xmlModel = null;
 		DocumentPageVariableAdapter provider = null;
 		boolean pushedPageVarProvider = false;
 		try {
 
-			xmlModel = (IDOMModel) PDPlugin.getModelManager().getModelForRead(
+			xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(
 					file);
 			if (xmlModel != null) {
 				IDOMDocument doc = xmlModel.getDocument();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/font/CSSFontManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/font/CSSFontManager.java
index 3fc1c94..a47a81f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/font/CSSFontManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/font/CSSFontManager.java
@@ -64,27 +64,25 @@
 	}
 
 	private CacheManager _cacheManager = new CacheManager(
-			new ICacheEntryCreator() {
-				public Object createEntry(Object key) {
+			new ICacheEntryCreator<CSSFont, Font>() {
+				public Font createEntry(CSSFont key) {
 					if (DEBUG) {
 						_totalFont++;
 						System.out.println("TotalFont++: " + _totalFont);
 					}
-					CSSFont cssfont = (CSSFont) key;
-
-					Font font = new Font(null, cssFontToLocalFont(cssfont
-							.getFontFamily()), (int) Math.round(cssfont
+					Font font = new Font(null, cssFontToLocalFont(key
+							.getFontFamily()), (int) Math.round(key
 							.getFontSize()
-							/ FONT_SCALE), cssfont.getSwtFontStyle());
+							/ FONT_SCALE), key.getSwtFontStyle());
 					return font;
 				}
 
-				public void dispose(Object key, Object entry) {
+				public void dispose(CSSFont key, Font entry) {
 					if (DEBUG) {
 						_totalFont--;
 						System.out.println("TotalFont--: " + _totalFont);
 					}
-					((Font) entry).dispose();
+					entry.dispose();
 
 				}
 			}, CACHESIZE);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/LocalSelectionDropTargetListener.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/LocalSelectionDropTargetListener.java
index 91ff8b5..08594c8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/LocalSelectionDropTargetListener.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/LocalSelectionDropTargetListener.java
@@ -24,7 +24,7 @@
 import org.eclipse.jst.jsf.common.ui.internal.guiutils.Alerts;
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.dnd.LocalDropRequest;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetEvent;
 import org.eclipse.ui.views.navigator.LocalSelectionTransfer;
@@ -107,7 +107,7 @@
 	 * @see org.eclipse.swt.dnd.DropTargetListener#drop(org.eclipse.swt.dnd.DropTargetEvent)
 	 */
 	public void drop(DropTargetEvent event) {
-		String path = ((HTMLGraphicalViewer) getViewer()).getModel()
+		String path = ((IHTMLGraphicalViewer) getViewer()).getModel()
 				.getBaseLocation();
 		IWorkspace workspace = ResourcesPlugin.getWorkspace();
 		IWorkspaceRoot root = workspace.getRoot();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DTManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DTManager.java
index 5db2db9..f62e2a5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DTManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DTManager.java
@@ -29,7 +29,7 @@
 public class DTManager {
 
 	private static DTManager instance;
-	private IDTInfoFactory dtInfoFactory;
+	private IDTInfoFactory _dtInfoFactory;
 
 	private DTManager() {
         // no external instantiation
@@ -108,10 +108,10 @@
 	 * @return An IDTInfoFactory instance for the specified namespace URI.
 	 */
 	protected IDTInfoFactory getDTInfoFactory(String nsURI) {
-		if (dtInfoFactory == null) {
-			dtInfoFactory = new DefaultDTInfoFactory();
+		if (_dtInfoFactory == null) {
+			_dtInfoFactory = new DefaultDTInfoFactory();
 		}
-		return dtInfoFactory;
+		return _dtInfoFactory;
 	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/converter/operations/AbstractTransformOperation.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/converter/operations/AbstractTransformOperation.java
index 48f1a80..9352d60 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/converter/operations/AbstractTransformOperation.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/converter/operations/AbstractTransformOperation.java
@@ -160,7 +160,7 @@
 			Node curNode = childNodes.item(i);
 			if (curNode.getNodeType() == Node.ELEMENT_NODE) {
 				String curNodeName = curNode.getLocalName();
-				if (curNode != null && curNodeName.equals(tagName)) {
+				if (curNodeName != null && curNodeName.equals(tagName)) {
 					childElements.add(curNode);
 				}
 			}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java
index 5865a27..510a604 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java
@@ -52,8 +52,8 @@
 import org.eclipse.jst.pagedesigner.editors.actions.DesignerUndoRedoAction;
 import org.eclipse.jst.pagedesigner.editors.actions.RelatedViewActionGroup;
 import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteCustomizer;
-import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteViewerProvider;
 import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteRootFactory;
+import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteViewerProvider;
 import org.eclipse.jst.pagedesigner.jsp.core.internal.pagevar.DocumentPageVariableAdapter;
 import org.eclipse.jst.pagedesigner.jsp.core.pagevar.adapter.PageVariableAdapterFactory;
 import org.eclipse.jst.pagedesigner.parts.CSSStyleAdapterFactory;
@@ -61,7 +61,6 @@
 import org.eclipse.jst.pagedesigner.parts.HTMLEditPartsFactory;
 import org.eclipse.jst.pagedesigner.parts.RefresherFactory;
 import org.eclipse.jst.pagedesigner.utils.SelectionHelper;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
@@ -94,7 +93,7 @@
 
     private HTMLEditor _delegate;
 
-	private HTMLGraphicalViewer _viewer;
+	private IHTMLGraphicalViewer _viewer;
 
 	private IStructuredModel _model;
 
@@ -143,7 +142,7 @@
 	}
 
 	protected void createGraphicalViewer(Composite parent) {
-		_viewer = new HTMLGraphicalViewer(this);
+		_viewer = IHTMLGraphicalViewer.Factory.createGraphicalViewer(this);
 		Control control = _viewer.createControl(parent);
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(control,
 				PDPlugin.getResourceString("SimpleGraphicalEditor.help.id"));
@@ -526,7 +525,7 @@
 				updateActions(getSelectionActions());
 				if (selection instanceof IStructuredSelection && //
 						!(((IStructuredSelection) selection).getFirstElement() instanceof DocumentEditPart)) {
-					((HTMLGraphicalViewer) viewerViewer)
+					((IHTMLGraphicalViewer) viewerViewer)
 							.updateRangeSelection(selection);
 				}
 			}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ChangeStyleAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ChangeStyleAction.java
index 2a2e784..70e5a68 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ChangeStyleAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ChangeStyleAction.java
@@ -18,6 +18,7 @@
 import org.eclipse.jst.pagedesigner.commands.range.ApplyStyleCommand;
 import org.eclipse.jst.pagedesigner.range.RangeUtil;
 import org.eclipse.jst.pagedesigner.viewer.DesignRange;
+import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewerListenenerAdapter;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewerListener;
 import org.eclipse.ui.texteditor.IUpdate;
@@ -26,24 +27,12 @@
  * @author mengbo
  */
 public abstract class ChangeStyleAction extends Action implements IUpdate {
-	protected IHTMLGraphicalViewer _viewer;
+	private IHTMLGraphicalViewer _viewer;
 
-	String _expectedTag;
+	private String _expectedTag;
 
-	String _expectedCSSProperty;
-
-	String _expectedCSSPropertyValue;
-
-	IHTMLGraphicalViewerListener _listener = new IHTMLGraphicalViewerListener() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewerListener#selectionAboutToChange()
-		 */
-		public void selectionAboutToChange() {
-            // do nothing
-		}
-
+	private IHTMLGraphicalViewerListener _listener = new HTMLGraphicalViewerListenenerAdapter() 
+	{
 		/*
 		 * (non-Javadoc)
 		 * 
@@ -65,7 +54,9 @@
 
 	/**
 	 * @param text
+	 * @param name 
 	 * @param image
+	 * @param style 
 	 */
 	public ChangeStyleAction(String text, String name, ImageDescriptor image,
 			int style) {
@@ -74,16 +65,19 @@
 		this.setImageDescriptor(image);
 	}
 
+	/**
+	 * @param viewer
+	 */
 	public void setViewer(IHTMLGraphicalViewer viewer) {
 		if (viewer == _viewer) {
 			return;
 		}
 		if (_viewer != null) {
-			_viewer.removeSelectionChangedListener(_listener);
+			_viewer.removeHTMLViewerListener(_listener);
 		}
 		_viewer = viewer;
 		if (_viewer != null) {
-			_viewer.addSelectionChangedListener(_listener);
+			_viewer.addHTMLViewerListener(_listener);
 		}
 		update();
 	}
@@ -91,27 +85,59 @@
 	/**
 	 * 
 	 */
-	public void update() {
-		if (_viewer == null) {
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		if (!_viewer.isInRangeMode()) {
-			// XXX: later we may support in range mode.
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		DesignRange range = _viewer.getRangeSelection();
-		if (range == null || !range.isValid()) {
-			this.setChecked(false);
-			this.setEnabled(false);
-			return;
-		}
-		updateStatus(RangeUtil.normalize(range));
+	public void update() 
+	{
+	    boolean update = checkForUpdateAndMaybeDisableState();
+	    
+	    if (update)
+	    {
+	        updateState();
+	    }
 	}
 
+   /**
+    * Update the state 
+    */
+	protected void updateState()
+    {
+       DesignRange range = _viewer.getRangeSelection();
+       updateStatus(RangeUtil.normalize(range));
+    }
+
+	/**
+	 * Update the checked/enabled state
+	 * @return true if we should update status
+	 */
+	protected final boolean checkForUpdateAndMaybeDisableState()
+	{
+        if (_viewer == null) {
+            this.setChecked(false);
+            this.setEnabled(false);
+            return false;
+        }
+        if (!_viewer.isInRangeMode()) {
+            // XXX: later we may support in range mode.
+            this.setChecked(false);
+            this.setEnabled(false);
+            return false;
+        }
+        DesignRange range = _viewer.getRangeSelection();
+        if (range == null || !range.isValid()) {
+            this.setChecked(false);
+            this.setEnabled(false);
+            return false;
+        }
+        return true;
+	}
+	
+
+	/**
+	 * @return the viewer's current design range
+	 */
+	protected final DesignRange getDesignRange()
+	{
+	    return _viewer.getRangeSelection();
+	}
 	/**
 	 * @param range
 	 */
@@ -162,17 +188,17 @@
 	}
 
 	/**
-	 * @return
+	 * @return  the expected property value
 	 */
 	protected abstract String getExpectedCSSPropertyValue();
 
 	/**
-	 * @return
+	 * @return  the expected property
 	 */
 	protected abstract String getExpectedCSSProperty();
 
 	/**
-	 * @return
+	 * @return the expected tag
 	 */
 	protected String getExpectedTag() {
 		return _expectedTag;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteCustomizerDialog.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteCustomizerDialog.java
index 2f64b2b..a46fbbf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteCustomizerDialog.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteCustomizerDialog.java
@@ -179,12 +179,12 @@
 		 */
 		public void update() {
 			//boolean enabled = false;
-			PaletteEntry entry = getSelectedPaletteEntry();
-			if (entry != null) {
+//			PaletteEntry entry = getSelectedPaletteEntry();
+//			if (entry != null) {
 				// if (getCustomizer() instanceof DesignerPaletteCustomizer)
 				// enabled = ((DesignerPaletteCustomizer)
 				// getCustomizer()).canExport(entry);
-			}
+//			}
 			setEnabled(true);
 		}
 
@@ -297,7 +297,7 @@
 	 * Content provider for dialog.
 	 * Displays only {@link TaglibPaletteDrawer}s
 	 */
-	private class DesignerPaletteContentProvider implements ITreeContentProvider {
+	private static class DesignerPaletteContentProvider implements ITreeContentProvider {
 
 		public Object[] getChildren(Object parentElement) {
 			if (parentElement instanceof DesignerPaletteRoot){
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java
index b836d30..203e40f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java
@@ -83,7 +83,7 @@
 		return pViewer;
 	}
 	
-	private class HideTagLibAction extends Action {
+	private static class HideTagLibAction extends Action {
 		private DrawerEditPart tagLib;
 		
 		/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfo.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfo.java
index c65cdeb..0cfd389 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfo.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfo.java
@@ -33,12 +33,33 @@
  * @generated
  */
 public interface PaletteInfo extends EObject {
+	/**
+	 * the trait id name
+	 */
 	public static final String TRAIT_ID				= "paletteInfo";
+	/**
+	 * the display label name
+	 */
 	public static final String TRAIT_DISPLAY_LABEL 	= "display-label";
+	/**
+	 * the trait description name
+	 */
 	public static final String TRAIT_DESCRIPTION 	= "description";
+	/**
+	 * the expert trait
+	 */
 	public static final String TRAIT_IS_EXPERT 		= "expert";
+	/**
+	 * the hiddent trait
+	 */
 	public static final String TRAIT_IS_HIDDEN 		= "hidden";
+	/**
+	 * the small icon trait
+	 */
 	public static final String TRAIT_SMALL_ICON 	= "small-icon";
+	/**
+	 * the large icon trait
+	 */
 	public static final String TRAIT_LARGE_ICON 	= "large-icon";
 
 	/**
@@ -284,6 +305,7 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @return true if the expert flag is set 
 	 * <!-- end-user-doc -->
 	 * @model kind="operation"
 	 * @generated
@@ -292,6 +314,7 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @return true if the hidden flag is set 
 	 * <!-- end-user-doc -->
 	 * @model kind="operation"
 	 * @generated
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfos.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfos.java
index 684a78d..4afcd23 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfos.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/PaletteInfos.java
@@ -27,6 +27,9 @@
  * @generated
  */
 public interface PaletteInfos extends EObject {
+	/**
+	 * the palette infos trait id
+	 */
 	public static final String TRAIT_ID				= "paletteInfos";
 	/**
 	 * <!-- begin-user-doc -->
@@ -54,6 +57,8 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @param id 
+     * @return the palette info by id 
 	 * <!-- end-user-doc -->
 	 * @model idRequired="true"
 	 * @generated
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/TagCreationInfo.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/TagCreationInfo.java
index 5ce6f92..dba7e5d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/TagCreationInfo.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/TagCreationInfo.java
@@ -28,6 +28,9 @@
  * @generated
  */
 public interface TagCreationInfo extends EObject {
+	/**
+	 * the name of the trait id
+	 */
 	public static final String TRAIT_ID = "tag-create";
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfoImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfoImpl.java
index 37f4f93..a916e68 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfoImpl.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfoImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PaletteInfoImpl.java,v 1.5 2007/04/16 19:55:08 itrimble Exp $
+ * $Id: PaletteInfoImpl.java,v 1.6 2007/09/25 00:31:41 cbateman Exp $
  */
 package org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl;
 
@@ -31,7 +31,7 @@
  * The following features are implemented:
  * <ul>
  *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getId <em>Id</em>}</li>
- *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getTag <em>Tag</em>}</li>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getTag() <em>Tag</em>}</li>
  *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getDisplayLabel <em>Display Label</em>}</li>
  *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl.PaletteInfoImpl#getExpert <em>Expert</em>}</li>
@@ -322,9 +322,9 @@
 	 * @generated NOT
 	 */
 	private EObject getTagTraitValue(final String tagName, final String traitKey) {
-		Entity tag = getTag(tagName);
-		if (tag != null){
-			for (Iterator it=tag.getTraits().iterator();it.hasNext();){
+		Entity tag_ = getTag(tagName);
+		if (tag_ != null){
+			for (Iterator it=tag_.getTraits().iterator();it.hasNext();){
 				Trait trait = (Trait)it.next();
 				if (traitKey.equals(trait.getId()))
 					return trait.getValue(); 	
@@ -361,9 +361,9 @@
 	 */
 	private Entity findTag(Model model, String tagid) {
 		for (Iterator it=model.getChildEntities().iterator();it.hasNext();){
-			Entity tag = (Entity)it.next();
-			if (tagid.equals(tag.getId()))
-					return tag;
+			Entity tag_ = (Entity)it.next();
+			if (tagid.equals(tag_.getId()))
+					return tag_;
 		}
 		return null;
 	}
@@ -517,6 +517,7 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @return the tag creation info 
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosFactoryImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosFactoryImpl.java
index 4d68fe7..4b1af20 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosFactoryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosFactoryImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PaletteInfosFactoryImpl.java,v 1.3 2007/04/16 19:55:08 itrimble Exp $
+ * $Id: PaletteInfosFactoryImpl.java,v 1.4 2007/09/25 00:32:06 cbateman Exp $
  */
 package org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl;
 
@@ -36,6 +36,7 @@
 	/**
 	 * Creates the default factory implementation.
 	 * <!-- begin-user-doc -->
+     * @return the palette info factory 
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
@@ -140,6 +141,7 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @return the palette info package 
 	 * <!-- end-user-doc -->
 	 * @deprecated
 	 * @generated
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosPackageImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosPackageImpl.java
index 53bebb0..88acc00 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosPackageImpl.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/PaletteInfosPackageImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PaletteInfosPackageImpl.java,v 1.3 2007/04/16 19:55:08 itrimble Exp $
+ * $Id: PaletteInfosPackageImpl.java,v 1.4 2007/09/25 00:32:06 cbateman Exp $
  */
 package org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl;
 
@@ -112,6 +112,7 @@
 	 * <p>Invocation of this method will not affect any packages that have
 	 * already been initialized.
 	 * <!-- begin-user-doc -->
+     * @return the palette info package 
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
 	 * @see #createPackageContents()
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/TagCreationTemplateImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/TagCreationTemplateImpl.java
index 1250ab1..d4b9955 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/TagCreationTemplateImpl.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/impl/TagCreationTemplateImpl.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: TagCreationTemplateImpl.java,v 1.3 2007/04/16 19:55:08 itrimble Exp $
+ * $Id: TagCreationTemplateImpl.java,v 1.4 2007/09/25 00:32:06 cbateman Exp $
  */
 package org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl;
 
@@ -76,6 +76,9 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+     * @param newTemplate 
+     * @param msgs 
+     * @return the notification chain 
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/util/PaletteInfosSwitch.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/util/PaletteInfosSwitch.java
index 0a980ac..8ef782e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/util/PaletteInfosSwitch.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/paletteinfos/internal/util/PaletteInfosSwitch.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PaletteInfosSwitch.java,v 1.2 2007/04/16 19:55:16 itrimble Exp $
+ * $Id: PaletteInfosSwitch.java,v 1.3 2007/09/25 00:31:06 cbateman Exp $
  */
 package org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.util;
 
@@ -57,6 +57,7 @@
 	/**
 	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
+     * @param theEObject 
 	 * <!-- end-user-doc -->
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
@@ -68,6 +69,8 @@
 	/**
 	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
+     * @param theEClass 
+     * @param theEObject 
 	 * <!-- end-user-doc -->
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
@@ -76,18 +79,18 @@
 		if (theEClass.eContainer() == modelPackage) {
 			return doSwitch(theEClass.getClassifierID(), theEObject);
 		}
-		else {
-			List eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch((EClass)eSuperTypes.get(0), theEObject);
-		}
+        List eSuperTypes = theEClass.getESuperTypes();
+        return
+        	eSuperTypes.isEmpty() ?
+        		defaultCase(theEObject) :
+        		doSwitch((EClass)eSuperTypes.get(0), theEObject);
 	}
 
 	/**
 	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
+     * @param classifierID 
+     * @param theEObject 
 	 * <!-- end-user-doc -->
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/PolicyHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/PolicyHelper.java
index 2496013..79b8f7f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/PolicyHelper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/PolicyHelper.java
@@ -16,7 +16,7 @@
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
 import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 
 /**
  * @author mengbo
@@ -24,10 +24,14 @@
 public class PolicyHelper {
 	private static Logger _log = PDPlugin.getLogger(PolicyHelper.class);
 
+	/**
+	 * @param part
+	 * @return the current viewer's status line manager or null
+	 */
 	public static IStatusLineManager getStatusLineManager(EditPart part) {
 		EditPartViewer v = part.getViewer();
-		if (v instanceof HTMLGraphicalViewer) {
-			HTMLGraphicalViewer htmlviewer = (HTMLGraphicalViewer) v;
+		if (v instanceof IHTMLGraphicalViewer) {
+			IHTMLGraphicalViewer htmlviewer = (IHTMLGraphicalViewer) v;
 			IStatusLineManager m = htmlviewer.getStatusLineManager();
 			if (m == null) {
 				_log.info("Warn.PolicyHelper.0", (String) null); //$NON-NLS-1$
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFacRegistryReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFacRegistryReader.java
index 5e91f07..e0e1b7b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFacRegistryReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFacRegistryReader.java
@@ -12,6 +12,7 @@
 package org.eclipse.jst.pagedesigner.elementedit;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.core.runtime.CoreException;
@@ -27,20 +28,20 @@
  * @version 1.5
  */
 public class ElementEditFacRegistryReader {
-	static IElementEditFactory[] _handlers = null;
+	private static List<IElementEditFactory> _handlers = null;
 
 	/**
-	 * @return all available handers for the ext-pt
+	 * @return all available handers for the ext-pt.  List is not
+	 * modifiable
 	 */
-	public static synchronized IElementEditFactory[] getAllHandlers() {
+	public static synchronized List<IElementEditFactory> getAllHandlers() {
 		if (_handlers == null) {
 			_handlers = readAllHandlers();
 		}
-		return _handlers;
-
+		return Collections.unmodifiableList(_handlers);
 	}
 
-	private static IElementEditFactory[] readAllHandlers() {
+	private static List<IElementEditFactory> readAllHandlers() {
 		List result = new ArrayList();
 		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
 				.getExtensionPoint(PDPlugin.getPluginId(),
@@ -71,9 +72,7 @@
 				}
 			}
 		}
-		IElementEditFactory[] ret = new IElementEditFactory[result.size()];
-		result.toArray(ret);
-		return ret;
+		return result;
 	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFactoryRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFactoryRegistry.java
index 198a4c3..7ca7daf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFactoryRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/ElementEditFactoryRegistry.java
@@ -36,11 +36,14 @@
 		addFactory(new HTMLElementEditFactory());
         addFactory(new JSPElementEditFactory());
 
-		IElementEditFactory facs[] = ElementEditFacRegistryReader
-				.getAllHandlers();
-		if (facs != null) {
-			for (int i = 0; i < facs.length; i++) {
-				addFactory(facs[i]);
+		List<IElementEditFactory> facs = 
+		    ElementEditFacRegistryReader.getAllHandlers();
+
+		if (facs != null) 
+		{
+			for (IElementEditFactory fac : facs) 
+			{
+				addFactory(fac);
 			}
 		}
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/extensionpoint/IContextMenuItemContributor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/extensionpoint/IContextMenuItemContributor.java
index 51dd66d..83bd334 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/extensionpoint/IContextMenuItemContributor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/extensionpoint/IContextMenuItemContributor.java
@@ -23,10 +23,22 @@
  */
 
 public interface IContextMenuItemContributor {
+	/**
+	 * @param uri
+	 */
 	void setURI(String uri);
 
+	/**
+	 * @return the uri
+	 */
 	String getURI();
 
+	/**
+	 * @param manager
+	 * @param selection
+	 * @param model
+	 * @param parentUI
+	 */
 	void fillContextMenu(IMenuManager manager, ISelection selection,
 			IStructuredModel model, Control parentUI);
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java
index 3e0eee9..1ba1fd0 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java
@@ -43,7 +43,7 @@
 	}
 
 	/**
-	 * @return
+	 * @return the factory instance
 	 */
 	public static CSSStyleAdapterFactory getInstance() {
         // TODO: this 'singleton' is broken
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/EditProxyAdapter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/EditProxyAdapter.java
index 9cd7ff0..cac1252 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/EditProxyAdapter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/EditProxyAdapter.java
@@ -28,7 +28,7 @@
 	ElementEditPart _part;
 
 	/**
-	 * 
+	 * @param part 
 	 */
 	public EditProxyAdapter(ElementEditPart part) {
 		_part = part;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java
index be35c7d..408d1d6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java
@@ -133,8 +133,7 @@
 	}
 
 	/**
-	 * @param node
-	 * @return
+	 * @return the associated element edit
 	 */
 	public IElementEdit getElementEdit() {
 		// XXX: should we cache it?
@@ -186,16 +185,16 @@
 	 * @see org.eclipse.gef.editparts.AbstractEditPart#getModelChildren()
 	 */
 	protected List getModelChildren() {
-		List children = new ArrayList(_tagConverter.getChildModeList());
+		List children_ = new ArrayList(_tagConverter.getChildModeList());
         
         for (Iterator it = _tagConverter.getNonVisualChildren().iterator(); it.hasNext();)
         {
             Element nonVisualChild = (Element) it.next();
-            children.add(DTManager.getInstance().getTagConverter(nonVisualChild,
+            children_.add(DTManager.getInstance().getTagConverter(nonVisualChild,
                 IConverterFactory.MODE_DESIGNER,
                 this.getDestDocumentForDesign()));
         }
-        return children;
+        return children_;
 	}
 
 	/*
@@ -242,6 +241,7 @@
 
 	/**
 	 * called by the
+	 * @param recursive
 	 * 
 	 */
 	public void refreshModelChange(boolean recursive) {
@@ -261,6 +261,9 @@
 		refresh(false);
 	}
 
+	/**
+	 * @param recursive
+	 */
 	public void refresh(boolean recursive) {
 		if (!_tagConverter.isVisualByHTML()) {
 			_tagConverter.convertRefresh(null);
@@ -374,7 +377,8 @@
 	}
 
 	/**
-	 * @return
+	 * @return true if we are in range mode and this is in 
+	 * the selection range
 	 */
 	public boolean isRangeSelected() {
 		IHTMLGraphicalViewer viewer = (IHTMLGraphicalViewer) this.getViewer();
@@ -398,7 +402,7 @@
 	}
 
 	/**
-	 * @return
+	 * @return true if our model node can have direct text children
 	 */
 	public boolean canHaveDirectTextChild() {
 		return CMUtil.canHaveDirectTextChild(this._elementNode);
@@ -546,7 +550,7 @@
 	}
 
 	/**
-	 * @return
+	 * @return the associated tag converter
 	 */
 	public ITagConverter getTagConvert() {
 		return _tagConverter;
@@ -575,7 +579,7 @@
 	}
 
 	/**
-	 * @return
+	 * @return true this part's node has non whitespace child nodes
 	 */
 	public boolean haveNonWhitespaceTextChild() {
 		List children1 = this.getChildren();
@@ -600,6 +604,9 @@
         return _nonVisualElementBar;
     }
 
+    /**
+     * @return the element menu bar for this element
+     */
     public ElementMenuBar getElementMenuBar() {
         return getNonVisualElementBar();
     }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java
index ec44b37..66dd085 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java
@@ -25,6 +25,9 @@
 public class HTMLEditPartsFactory implements EditPartFactory {
 	private IDOMDocument _destDocument;
 
+	/**
+	 * @param destDoc
+	 */
 	public HTMLEditPartsFactory(IDOMDocument destDoc) {
 		this._destDocument = destDoc;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NodeEditPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NodeEditPart.java
index 8b122db..653ba15 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NodeEditPart.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NodeEditPart.java
@@ -56,6 +56,9 @@
 		this._destDocument = doc;
 	}
 
+	/**
+	 * @return to owner document of this part's model node
+	 */
 	public IDOMDocument getDestDocumentForDesign() {
 		if (this._destDocument == null) {
 			return (IDOMDocument) this.getIDOMNode().getOwnerDocument();
@@ -158,12 +161,15 @@
 	}
 
 	/**
-	 * @return
+	 * @return the model node as an IDOMNode
 	 */
 	public IDOMNode getIDOMNode() {
 		return ((IDOMNode) getModel());
 	}
 
+    /**
+     * @return the model node as a node
+     */
     public Node getDOMNode()
     {
         return ((Node)getModel());
@@ -189,7 +195,7 @@
 	 * if a EditPart don't support caret inside it, and don't can't have child
 	 * edit part, then we call it as a widget.
 	 * 
-	 * @return
+	 * @return true if this part represents a widget
 	 */
 	public boolean isWidget() {
 		return false; // child class must override.
@@ -199,30 +205,36 @@
 	 * whether this EditPart allow the selection range to have one edge in the
 	 * edit part and one edge outside the edit part.
 	 * 
-	 * @return
+	 * @return true if selection range across is allowed
 	 */
 	public boolean allowSelectionRangeAcross() {
 		return true;
 	}
 
 	/**
-	 * @return
+	 * @return true if this part is resizable
 	 */
 	public boolean isResizable() {
 		return false;
 	}
     
+    /**
+     * @return true if drag is active on this part
+     */
     public boolean isDragActive() {
         return _isDragActive;
     }
     
+    /**
+     * @param newValue
+     */
     public void setDragActive(boolean newValue)
     {
         _isDragActive = newValue;
     }
     
     /**
-     * @param defaultCursor
+     * @param mouseLocation
      * @return this edit part's cursor or null if this edit part
      * does not wish to specify a specific cursor (the default
      * should be used).  
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NonVisualComponentEditPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NonVisualComponentEditPart.java
index 1bc6b08..5ce56b4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NonVisualComponentEditPart.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/NonVisualComponentEditPart.java
@@ -23,11 +23,16 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+/**
+ * Represents a node that is non-visual in the runtime rendering
+ * but which may wish to have a meta-representation on the design canvas.
+ *
+ */
 public class NonVisualComponentEditPart extends NodeEditPart 
 {
     protected IFigure createFigure() 
     {
-        IFigure figure = new ImageFigure(getTagConverter().getVisualImage())
+        IFigure figure_ = new ImageFigure(getTagConverter().getVisualImage())
         {
 
             protected void paintFigure(Graphics graphics) {
@@ -42,8 +47,8 @@
             
         };
         
-        figure.setMinimumSize(new Dimension(0,0));
-        return figure;
+        figure_.setMinimumSize(new Dimension(0,0));
+        return figure_;
     }
 
     public void notifyChanged(INodeNotifier notifier, int eventType,
@@ -59,6 +64,9 @@
                 null);
     }
 
+    /**
+     * @return the tag converter
+     */
     protected ITagConverter getTagConverter()
     {
     	ITagConverter tagConverter = (ITagConverter)getModel();
@@ -69,6 +77,9 @@
     	return tagConverter;
     }
     
+    /**
+     * @return the host element for this edit part
+     */
     protected Element getModelElement()
     {
         return getTagConverter().getHostElement();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/Refresher.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/Refresher.java
index 3f6f120..67e62f2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/Refresher.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/Refresher.java
@@ -13,7 +13,7 @@
 
 import org.eclipse.gef.EditPart;
 import org.eclipse.jst.pagedesigner.css2.ICSSStyle;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
@@ -70,7 +70,7 @@
 
 			part = (EditPart) node.getAdapterFor(EditPart.class);
 			if (part != null) {
-				((HTMLGraphicalViewer) part.getViewer()).clearSelectionRange();
+				((IHTMLGraphicalViewer) part.getViewer()).clearSelectionRange();
 			}
 		}
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/RefresherFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/RefresherFactory.java
index 04aa76e..bb9c599 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/RefresherFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/RefresherFactory.java
@@ -20,7 +20,7 @@
  * @version 1.5
  */
 public class RefresherFactory extends AbstractAdapterFactory {
-	Refresher refresher = new Refresher();
+	private final Refresher refresher = new Refresher();
 
 	RefresherFactory() {
 		super(Refresher.class, true);
@@ -36,6 +36,9 @@
 
 	static RefresherFactory _instance = new RefresherFactory();
 
+	/**
+	 * @return the factory singleton
+	 */
 	public static RefresherFactory getInstance() {
 		return _instance;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/TextEditPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/TextEditPart.java
index dc4ec9d..60377b5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/TextEditPart.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/TextEditPart.java
@@ -96,10 +96,9 @@
 		}
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jst.pagedesigner.css2.provider.ICSSTextProvider#getCSSStyle()
+
+	/**
+	 * @return the associated css style for this text node
 	 */
 	public ICSSStyle getCSSStyle() {
 		IFigure figure1 = this.getFigure();
@@ -124,7 +123,7 @@
 	 * This method return the really value that is going to be presented to
 	 * user. EditPartPosition's offset is referencing this value.
 	 * 
-	 * @return
+	 * @return the text data
 	 * @see org.eclipse.jst.pagedesigner.viewer.DesignPosition
 	 */
 	public String getTextData() {
@@ -139,7 +138,7 @@
 	/**
 	 * check what part of this text node is in the range selection.
 	 * 
-	 * @return
+	 * @return text node ranges
 	 */
 	public int[] getSelectedRange() {
 		IHTMLGraphicalViewer viewer = (IHTMLGraphicalViewer) this.getViewer();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/PageExpressionContext.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/PageExpressionContext.java
index 9e26c21..83d190d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/PageExpressionContext.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/PageExpressionContext.java
@@ -69,22 +69,38 @@
 		_prj = prj;
 	}
 
+	/**
+	 * reset the context.
+	 */
 	public static void reset() {
 		_current = null;
 	}
 
+	/**
+	 * Initialize the current context
+	 * @param prj
+	 */
 	public static void initialize(IProject prj) {
 		_current = new PageExpressionContext(prj);
 	}
 
+	/**
+	 * @return the current context
+	 */
 	public static PageExpressionContext getCurrent() {
 		return _current;
 	}
 
+	/**
+	 * @param provider
+	 */
 	public void pushPageVarProvider(IPageVariablesProvider provider) {
 		_pageVarProviders.add(provider);
 	}
 
+	/**
+	 * @param provider
+	 */
 	public void popPageVarProvider(IPageVariablesProvider provider) {
 		try {
 			_pageVarProviders.remove(_pageVarProviders.size() - 1);
@@ -99,12 +115,12 @@
 	 * handles
 	 * 
 	 * @param expression
-	 * @param pageVars
-	 * @param jspFile
+	 * @param expectedClass 
 	 * @param options
 	 *            XXX: not used today. In the future, we may support things like
 	 *            locale in options
-	 * @return
+	 * @return the result of evaluating the expression
+	 * @throws ELException 
 	 */
 	public Object evaluateExpression(String expression, Class expectedClass,
 			Map options) throws ELException {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/WindowsIEBrowser.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/WindowsIEBrowser.java
index 6bf32d5..2901f70 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/WindowsIEBrowser.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/preview/WindowsIEBrowser.java
@@ -18,26 +18,37 @@
 import org.eclipse.swt.browser.ProgressListener;
 import org.eclipse.swt.widgets.Composite;
 
+/**
+ * Models the windows IE browser for preview
+ *
+ */
 public class WindowsIEBrowser implements ProgressListener {
 	private Browser _browser;
 
-	private File _file;
-
+	/**
+	 * @param composite
+	 * @param i
+	 */
 	public void create(Composite composite, int i) {
 		_browser = new Browser(composite, i);
 		_browser.addProgressListener(this);
 	}
 
+	/**
+	 * @param file
+	 */
 	public synchronized void loadFile(File file) {
 		if (_browser == null) {
 			return;
 		}
-        _file = file;
         String s = "file:" + file.getAbsolutePath();
         _browser.setUrl(s);
         return;
 	}
 
+	/**
+	 * dispose the instance
+	 */
 	public void dispose() {
 		if (_browser == null) {
 			return;
@@ -51,16 +62,12 @@
         // do nothing
 	}
 
-	public synchronized void completed(ProgressEvent progressevent) {
-		if (_file != null) {
-			// XXX: don't delete, for debug purpose.
-			// _file.delete();
-			// _file = null;
-		}
+	public void completed(ProgressEvent progressevent) {
+	    // do nothing
 	}
 
 	/**
-	 * 
+	 * @return the underlying swt Browser instance
 	 */
 	public Browser getBrowser() {
 		return _browser;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/range/RangeUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/range/RangeUtil.java
index 9febaaa..1d85654 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/range/RangeUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/range/RangeUtil.java
@@ -17,15 +17,8 @@
 
 import org.eclipse.gef.EditPart;
 import org.eclipse.jst.pagedesigner.parts.DocumentEditPart;
-import org.eclipse.jst.pagedesigner.parts.TextEditPart;
 import org.eclipse.jst.pagedesigner.viewer.DesignPosition;
 import org.eclipse.jst.pagedesigner.viewer.DesignRange;
-import org.eclipse.jst.pagedesigner.viewer.TextPosition;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMText;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
 
 /**
  * @author mengbo
@@ -38,19 +31,27 @@
 	 *            can't be null
 	 * @param reference
 	 *            can't be null
+	 * @return ??
 	 */
-	public static Node appendAfter(Node child, Node reference) {
-		Node next = reference.getNextSibling();
-		if (next == null)
-        {
-			return reference.getParentNode().appendChild(child);
-        }
-        return reference.getParentNode().insertBefore(child, next);
-	}
+    //TODO: dead
+//	private static Node appendAfter(Node child, Node reference) {
+//		Node next = reference.getNextSibling();
+//		if (next == null)
+//        {
+//			return reference.getParentNode().appendChild(child);
+//        }
+//        return reference.getParentNode().insertBefore(child, next);
+//	}
 
-	public static Node insertBefore(Node child, Node reference) {
-		return reference.getParentNode().insertBefore(child, reference);
-	}
+	/**
+	 * @param child
+	 * @param reference
+	 * @return ??
+	 */
+    // TODO: dead
+//	private static Node insertBefore(Node child, Node reference) {
+//		return reference.getParentNode().insertBefore(child, reference);
+//	}
 
 	/**
 	 * Insert a node into the specified position. The node can be an element or
@@ -59,38 +60,39 @@
 	 * @param node
 	 * @param position
 	 */
-	public static Node insertElement(DesignPosition position, Element node) {
-		EditPart containerEditPart = position.getContainerPart();
-		int offset = position.getOffset();
-
-		if (containerEditPart instanceof TextEditPart) {
-			TextEditPart textPart = (TextEditPart) containerEditPart;
-			String textData = textPart.getTextData();
-			Node textNode = (Node) textPart.getModel();
-			if (offset == 0)
-				return insertBefore(node, textNode);
-			else if (offset == textData.length())
-				return appendAfter(node, textNode);
-			else {
-				// inserting the element in the middle of text.
-				String before = textData.substring(0, offset);
-				String after = textData.substring(offset);
-
-				// XXX: don't know whether setNodeValue() will do all those
-				// escape or not.
-				textNode.setNodeValue(after);
-				Node newnode = insertBefore(node, textNode);
-
-				// XXX: don't know whether createTextNode() will do all those
-				// escape or not
-				Text t = textNode.getOwnerDocument().createTextNode(before);
-
-				insertBefore(t, newnode);
-				return newnode;
-			}
-		}
-        return insertIntoEditPart(containerEditPart, node, offset);
-	}
+	// TODO: dead
+//	private static Node insertElement(DesignPosition position, Element node) {
+//		EditPart containerEditPart = position.getContainerPart();
+//		int offset = position.getOffset();
+//
+//		if (containerEditPart instanceof TextEditPart) {
+//			TextEditPart textPart = (TextEditPart) containerEditPart;
+//			String textData = textPart.getTextData();
+//			Node textNode = (Node) textPart.getModel();
+//			if (offset == 0)
+//				return insertBefore(node, textNode);
+//			else if (offset == textData.length())
+//				return appendAfter(node, textNode);
+//			else {
+//				// inserting the element in the middle of text.
+//				String before = textData.substring(0, offset);
+//				String after = textData.substring(offset);
+//
+//				// XXX: don't know whether setNodeValue() will do all those
+//				// escape or not.
+//				textNode.setNodeValue(after);
+//				Node newnode = insertBefore(node, textNode);
+//
+//				// XXX: don't know whether createTextNode() will do all those
+//				// escape or not
+//				Text t = textNode.getOwnerDocument().createTextNode(before);
+//
+//				insertBefore(t, newnode);
+//				return newnode;
+//			}
+//		}
+//        return insertIntoEditPart(containerEditPart, node, offset);
+//	}
 
 	/**
 	 * @param containerEditPart
@@ -98,49 +100,51 @@
 	 * @param offset
 	 * @return
 	 */
-	private static Node insertIntoEditPart(EditPart containerEditPart,
-			Node node, int offset) {
-		Node parent = (Node) containerEditPart.getModel();
-		List childParts = containerEditPart.getChildren();
-		if (offset >= childParts.size()) {
-			// to the end of parent
-			return parent.appendChild(node);
-		}
-        Node child = (Node) ((EditPart) childParts.get(offset)).getModel();
-        return insertBefore(node, child);
-	}
+	// TODO: dead
+//	private static Node insertIntoEditPart(EditPart containerEditPart,
+//			Node node, int offset) {
+//		Node parent = (Node) containerEditPart.getModel();
+//		List childParts = containerEditPart.getChildren();
+//		if (offset >= childParts.size()) {
+//			// to the end of parent
+//			return parent.appendChild(node);
+//		}
+//        Node child = (Node) ((EditPart) childParts.get(offset)).getModel();
+//        return insertBefore(node, child);
+//	}
 
-	public static TextPosition insertText(DesignPosition position, String data) {
-		// TODO: never read EditPart containerEditPart = position.getContainerPart();
-
-		position = moveIntoText(position);
-		int offset = position.getOffset();
-
-		if (position.getContainerPart() instanceof TextEditPart) {
-			// it is guaranteeed that now the containing edit part is text node.
-			TextEditPart textPart = (TextEditPart) position.getContainerPart();
-			String textData = textPart.getTextData();
-			String before = textData.substring(0, offset);
-			String after = textData.substring(offset);
-			if (data.startsWith(" ") && before.endsWith(" ")) {
-				before = before.substring(0, before.length() - 1) + "&nbsp;";
-			}
-			if (after.startsWith(" ") && data.endsWith(" ")) {
-				data = data.substring(0, data.length() - 1) + (char) 160;
-			}
-			String nextData = before + data + after;
-			IDOMText text = (IDOMText) textPart.getModel();
-			text.setData(nextData);
-			return new TextPosition(text, offset + data.length());
-		}
-        // can't merge into a neighboring text node. So create a text node
-        // of it's own
-        EditPart part = position.getContainerPart();
-        Node parent = (Node) part.getModel();
-        Text text = parent.getOwnerDocument().createTextNode(data);
-        insertIntoEditPart(part, text, offset);
-        return new TextPosition((IDOMText) text, offset);
-	}
+	// TODO: dead
+//	private static TextPosition insertText(DesignPosition position, String data) {
+//		// TODO: never read EditPart containerEditPart = position.getContainerPart();
+//
+//		position = moveIntoText(position);
+//		int offset = position.getOffset();
+//
+//		if (position.getContainerPart() instanceof TextEditPart) {
+//			// it is guaranteeed that now the containing edit part is text node.
+//			TextEditPart textPart = (TextEditPart) position.getContainerPart();
+//			String textData = textPart.getTextData();
+//			String before = textData.substring(0, offset);
+//			String after = textData.substring(offset);
+//			if (data.startsWith(" ") && before.endsWith(" ")) {
+//				before = before.substring(0, before.length() - 1) + "&nbsp;";
+//			}
+//			if (after.startsWith(" ") && data.endsWith(" ")) {
+//				data = data.substring(0, data.length() - 1) + (char) 160;
+//			}
+//			String nextData = before + data + after;
+//			IDOMText text = (IDOMText) textPart.getModel();
+//			text.setData(nextData);
+//			return new TextPosition(text, offset + data.length());
+//		}
+//        // can't merge into a neighboring text node. So create a text node
+//        // of it's own
+//        EditPart part = position.getContainerPart();
+//        Node parent = (Node) part.getModel();
+//        Text text = parent.getOwnerDocument().createTextNode(data);
+//        insertIntoEditPart(part, text, offset);
+//        return new TextPosition((IDOMText) text, offset);
+//	}
 
 	/**
 	 * Try to make the position move into a text node.
@@ -148,27 +152,28 @@
 	 * @param position
 	 * @return
 	 */
-	public static DesignPosition moveIntoText(DesignPosition position) {
-		EditPart container = position.getContainerPart();
-		if (container instanceof TextEditPart)
-			return position;
-		if (position.getOffset() > 0) {
-			EditPart pre = (EditPart) container.getChildren().get(
-					position.getOffset() - 1);
-			if (pre instanceof TextEditPart) {
-				return new DesignPosition(pre, ((TextEditPart) pre)
-						.getTextData().length());
-			}
-		}
-		if (position.getOffset() < container.getChildren().size()) {
-			EditPart next = (EditPart) container.getChildren().get(
-					position.getOffset());
-			if (next instanceof TextEditPart) {
-				return new DesignPosition(next, 0);
-			}
-		}
-		return position;
-	}
+    // TODO: dead
+//	private static DesignPosition moveIntoText(DesignPosition position) {
+//		EditPart container = position.getContainerPart();
+//		if (container instanceof TextEditPart)
+//			return position;
+//		if (position.getOffset() > 0) {
+//			EditPart pre = (EditPart) container.getChildren().get(
+//					position.getOffset() - 1);
+//			if (pre instanceof TextEditPart) {
+//				return new DesignPosition(pre, ((TextEditPart) pre)
+//						.getTextData().length());
+//			}
+//		}
+//		if (position.getOffset() < container.getChildren().size()) {
+//			EditPart next = (EditPart) container.getChildren().get(
+//					position.getOffset());
+//			if (next instanceof TextEditPart) {
+//				return new DesignPosition(next, 0);
+//			}
+//		}
+//		return position;
+//	}
 
 	/**
 	 * try to move the position up to not inside a text. if the position is at 0
@@ -177,32 +182,34 @@
 	 * @param position
 	 * @return
 	 */
-	public static DesignPosition moveOutFromText(DesignPosition position) {
-		EditPart container = position.getContainerPart();
-		if (container instanceof TextEditPart) {
-			int offset = position.getOffset();
-			String text = ((TextEditPart) container).getTextData();
-			if (offset == 0) {
-				return new DesignPosition(container.getParent(), container
-						.getParent().getChildren().indexOf(container));
-			} else if (offset == text.length()) {
-				return new DesignPosition(container.getParent(), container
-						.getParent().getChildren().indexOf(container) + 1);
-			}
-		}
-		return position;
-	}
+    // TODO: dead
+//	private static DesignPosition moveOutFromText(DesignPosition position) {
+//		EditPart container = position.getContainerPart();
+//		if (container instanceof TextEditPart) {
+//			int offset = position.getOffset();
+//			String text = ((TextEditPart) container).getTextData();
+//			if (offset == 0) {
+//				return new DesignPosition(container.getParent(), container
+//						.getParent().getChildren().indexOf(container));
+//			} else if (offset == text.length()) {
+//				return new DesignPosition(container.getParent(), container
+//						.getParent().getChildren().indexOf(container) + 1);
+//			}
+//		}
+//		return position;
+//	}
 
-	public static void insertDocumentFragment(DesignPosition position,
-			DocumentFragment fragment) {
-		// FIXME: NOT DONE.
-	}
+//	private static void insertDocumentFragment(DesignPosition position,
+//			DocumentFragment fragment) {
+//		// FIXME: NOT DONE.
+//	}
 
 	/**
 	 * Test whether the range intersect with the part.
 	 * 
 	 * @param range
 	 * @param part
+	 * @return true if thereis an intersection
 	 */
 	public static boolean intersect(DesignRange range, EditPart part) {
 		if (range == null || !range.isValid())
@@ -231,7 +238,7 @@
 	 * without constructing a new one.
 	 * 
 	 * @param range
-	 * @return
+	 * @return the normalized range
 	 */
 	public static DesignRange normalize(DesignRange range) {
 		if (range == null || !range.isValid()) {
@@ -254,7 +261,7 @@
 	 * @return 0 means equal. 1 Means p1 is after p2. -1 means p1 is before p2.
 	 *         Integer.MIN_VALUE means some error and can't compare.
 	 */
-	public static int compareDesignPosition(DesignPosition p1, DesignPosition p2) {
+	private static int compareDesignPosition(DesignPosition p1, DesignPosition p2) {
 		if (!p1.isValid() || !p2.isValid())
 			return Integer.MIN_VALUE;
 		if (p1.equals(p2))
@@ -330,7 +337,7 @@
 	 * @param part2
 	 * @return
 	 */
-	public static EditPart findCommonAncester(EditPart part1, EditPart part2) {
+	private static EditPart findCommonAncester(EditPart part1, EditPart part2) {
 		if (part1 == part2) {
 			return part1;
 		}
@@ -355,6 +362,10 @@
 
 	}
 
+	/**
+	 * @param range
+	 * @return the common ancestor
+	 */
 	public static EditPart findCommonAncestor(DesignRange range) {
 		if (!range.isValid()) {
 			return null;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeDragTracker.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeDragTracker.java
index 162c499..bca561c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeDragTracker.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeDragTracker.java
@@ -29,7 +29,6 @@
 import org.eclipse.jst.pagedesigner.viewer.DesignPosition;
 import org.eclipse.jst.pagedesigner.viewer.DesignRange;
 import org.eclipse.jst.pagedesigner.viewer.EditPartPositionHelper;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.swt.graphics.Cursor;
 
@@ -261,6 +260,9 @@
 		this.editpart = part;
 	}
 
+	/**
+	 * @return the html graphical viewer
+	 */
 	public IHTMLGraphicalViewer getHTMLGraphicalViewer() {
 		return (IHTMLGraphicalViewer) getCurrentViewer();
 	}
@@ -300,10 +302,7 @@
 		} else {
 			getHTMLGraphicalViewer().setRange(position, position);
 		}
-		if (getHTMLGraphicalViewer() instanceof HTMLGraphicalViewer) {
-			((HTMLGraphicalViewer) getHTMLGraphicalViewer())
-					.updateHorizontalPos();
-		}
+		getHTMLGraphicalViewer().updateHorizontalPos();
 	}
 
     protected boolean handleHover() {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeSelectionTool.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeSelectionTool.java
index c5da846..c5d5df1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeSelectionTool.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/tools/RangeSelectionTool.java
@@ -36,7 +36,6 @@
 import org.eclipse.jst.pagedesigner.parts.DocumentEditPart;
 import org.eclipse.jst.pagedesigner.parts.NodeEditPart;
 import org.eclipse.jst.pagedesigner.requests.LocationModifierRequest;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
 import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyEvent;
@@ -152,8 +151,8 @@
 						(IHTMLGraphicalViewer) this.getCurrentViewer());
 				e.doit = false;
 			} else {
-				if (getCurrentViewer() instanceof HTMLGraphicalViewer
-						&& ((HTMLGraphicalViewer) getCurrentViewer())
+				if (getCurrentViewer() instanceof IHTMLGraphicalViewer
+						&& ((IHTMLGraphicalViewer) getCurrentViewer())
 								.isInRangeMode()
 						&& (!Character.isIdentifierIgnorable(e.character) && !Character
 								.isISOControl(e.character))
@@ -174,8 +173,8 @@
 			command.execute();
 			e.doit = false;
 			if (command instanceof ICaretPositionMover) {
-				if (getCurrentViewer() instanceof HTMLGraphicalViewer) {
-					((HTMLGraphicalViewer) getCurrentViewer())
+				if (getCurrentViewer() instanceof IHTMLGraphicalViewer) {
+					((IHTMLGraphicalViewer) getCurrentViewer())
 							.updateHorizontalPos();
 				}
 			}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CacheManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CacheManager.java
index 5f513f4..5483281 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CacheManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CacheManager.java
@@ -34,6 +34,10 @@
 	// keep track of LRU
 	LinkedList _keys = new LinkedList();
 
+	/**
+	 * @param creator
+	 * @param maxSize
+	 */
 	public CacheManager(ICacheEntryCreator creator, int maxSize) {
 		_creator = creator;
 		_maxSize = maxSize;
@@ -42,6 +46,10 @@
 		}
 	}
 
+	/**
+	 * @param key
+	 * @return the cache entry for key
+	 */
 	public Object getEntry(Object key) {
 		Object result = _map.get(key);
 		if (result == null) {
@@ -62,6 +70,9 @@
         return result;
 	}
 
+	/**
+	 * Dispose the cache
+	 */
 	public void disposeAll() {
 		_keys.clear();
 		for (Iterator iter = _map.keySet().iterator(); iter.hasNext();) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/DOMUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/DOMUtil.java
index c266580..098d285 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/DOMUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/DOMUtil.java
@@ -26,6 +26,12 @@
  * @author mengbo
  */
 public class DOMUtil {
+	/**
+	 * @param parent
+	 * @param tag
+	 * @return the list of child elements  of parent that are Elements
+	 * and that have name 'tag' ignoring case
+	 */
 	public static List getChildElementsByTagIgnoreCase(Element parent,
 			String tag) {
 		List ret = new ArrayList();
@@ -44,7 +50,8 @@
 
 	/**
 	 * @param ele
-	 * @return
+	 * @return the element value of the TEXT_NODE children of element
+	 * concat'd together
 	 */
 	public static String getTextElementValue(Element ele) {
 		StringBuffer buffer = new StringBuffer();
@@ -63,7 +70,8 @@
 	/**
 	 * @param element
 	 * @param string
-	 * @return
+	 * @return the attribute named string on element ignoring case in the comparison
+	 * or null if not found
 	 */
 	public static String getAttributeIgnoreCase(Element element, String string) {
 		NamedNodeMap map = element.getAttributes();
@@ -77,9 +85,9 @@
 	}
 
 	/**
-	 * @param tr
-	 * @param strings
-	 * @return
+	 * @param parent
+	 * @param tags
+	 * @return the list of children of parent with name in tags ignoring case
 	 */
 	public static List getChildrenByTagsIgnoreCase(Element parent, String[] tags) {
 		List result = new ArrayList();
@@ -99,10 +107,17 @@
 		return result;
 	}
 
+	/**
+	 * @param ele
+	 */
 	public static void removeAllChildren(Element ele) {
 		((ElementImpl) ele).removeChildNodes();
 	}
 
+	/**
+	 * @param ele
+	 * @param value
+	 */
 	public static void setTextElementValue(Element ele, String value) {
 		removeAllChildren(ele);
 		Text txt = ele.getOwnerDocument().createTextNode(value);
@@ -110,10 +125,11 @@
 	}
 
 	/**
-	 * @param htmlElement
-	 * @param string
-	 * @param i
-	 * @return
+	 * @param ele 
+	 * @param attr 
+	 * @param defaultvalue 
+	 * @return the integer attribute of ele called attr.  Default value
+	 * is returned if the attribute is not found.
 	 */
 	public static int getIntAttributeIgnoreCase(Element ele, String attr,
 			int defaultvalue) {
@@ -135,7 +151,7 @@
 	 * get all child elements
 	 * 
 	 * @param ele
-	 * @return
+	 * @return the list of element children of type ELEMENT_NODE
 	 */
 	public static List getElementChildren(Element ele) {
 		List ret = new ArrayList();
@@ -154,7 +170,8 @@
 	 * 
 	 * @param ele
 	 * @param attrName
-	 * @return
+	 * @return true if element has attribute called attrName ignoring
+	 * case  in the comparison.
 	 */
 	public static boolean hasAttribute(Element ele, String attrName) {
 		NamedNodeMap map = ele.getAttributes();
@@ -167,6 +184,10 @@
 		return false;
 	}
 
+	/**
+	 * @param node
+	 * @param sb
+	 */
 	public static void nodeToString(Node node, StringBuffer sb) {
 		int type = node.getNodeType();
 		switch (type) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/EntityMap.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/EntityMap.java
index 14b7213..0b68bad 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/EntityMap.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/EntityMap.java
@@ -20,6 +20,10 @@
 public class EntityMap {
 	private static Logger _log = PDPlugin.getLogger(EntityMap.class);
 
+	/**
+	 * @param s
+	 * @return s translated for HTML entities.
+	 */
 	public static String translate(String s) {
 		char[] array = s.toCharArray();
 		StringBuffer buffer = new StringBuffer();
@@ -64,6 +68,8 @@
 	 * Translate entity maps and compact whitespace. For heading and training
 	 * space, will not trim, only compact (making multiple whitespace to become
 	 * a single ' ' char).
+	 * @param s 
+	 * @return the result string.
 	 */
 	public static String translateAndCompact(String s) {
 		char[] array = s.toCharArray();
@@ -121,6 +127,8 @@
 	 * 
 	 * @param s
 	 *            the form &#number or &letterordigit without the trailing ";"
+	 * @param strBuf 
+	 * @return true  the translation can be done
 	 */
 	public static boolean translateEntity(String s, StringBuffer strBuf) {
 		int i = HTMLSpecialCharHelper.getSpecial(s); // HTMLSpecialCharHelper
@@ -160,7 +168,7 @@
 	 * 
 	 * @param n
 	 * @return
-	 * @see http://www.w3.org/Talks/1999/0830-tutorial-unicode-mjd/slide27-0.html
+	 * see http://www.w3.org/Talks/1999/0830-tutorial-unicode-mjd/slide27-0.html
 	 */
 	private static char replaceBadEntity(char n) {
 		if (n < 132 || n > 156)
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLSpecialCharHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLSpecialCharHelper.java
index 9e2a880..4959198 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLSpecialCharHelper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLSpecialCharHelper.java
@@ -34,260 +34,260 @@
 	static {
 		_table = new Hashtable(256);
 
-		_table.put(new Integer(34), "&quot;"); //$NON-NLS-1$
-		_table.put(new Integer(38), "&amp;"); //$NON-NLS-1$
-		_table.put(new Integer(60), "&lt;"); //$NON-NLS-1$
-		_table.put(new Integer(62), "&gt;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(34), "&quot;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(38), "&amp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(60), "&lt;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(62), "&gt;"); //$NON-NLS-1$
 
-		_table.put(new Integer(160), "&nbsp;"); //$NON-NLS-1$
-		_table.put(new Integer(161), "&iexcl;"); //$NON-NLS-1$
-		_table.put(new Integer(162), "&cent;"); //$NON-NLS-1$
-		_table.put(new Integer(163), "&pound;"); //$NON-NLS-1$
-		_table.put(new Integer(164), "&curren;"); //$NON-NLS-1$
-		_table.put(new Integer(165), "&yen;"); //$NON-NLS-1$
-		_table.put(new Integer(166), "&brvbar;"); //$NON-NLS-1$
-		_table.put(new Integer(167), "&sect;"); //$NON-NLS-1$
-		_table.put(new Integer(168), "&uml;"); //$NON-NLS-1$
-		_table.put(new Integer(169), "&copy;"); //$NON-NLS-1$
-		_table.put(new Integer(170), "&ordf;"); //$NON-NLS-1$
-		_table.put(new Integer(171), "&laquo;"); //$NON-NLS-1$
-		_table.put(new Integer(172), "&not;"); //$NON-NLS-1$
-		_table.put(new Integer(173), "&shy;"); //$NON-NLS-1$
-		_table.put(new Integer(174), "&reg;"); //$NON-NLS-1$
-		_table.put(new Integer(175), "&macr;"); //$NON-NLS-1$
-		_table.put(new Integer(176), "&deg;"); //$NON-NLS-1$
-		_table.put(new Integer(177), "&plusmn;"); //$NON-NLS-1$
-		_table.put(new Integer(178), "&sup2;"); //$NON-NLS-1$
-		_table.put(new Integer(179), "&sup3;"); //$NON-NLS-1$
-		_table.put(new Integer(180), "&acute;"); //$NON-NLS-1$
-		_table.put(new Integer(181), "&micro;"); //$NON-NLS-1$
-		_table.put(new Integer(182), "&para;"); //$NON-NLS-1$
-		_table.put(new Integer(183), "&middot;"); //$NON-NLS-1$
-		_table.put(new Integer(184), "&cedil;"); //$NON-NLS-1$
-		_table.put(new Integer(185), "&sup1;"); //$NON-NLS-1$
-		_table.put(new Integer(186), "&ordm;"); //$NON-NLS-1$
-		_table.put(new Integer(187), "&raquo;"); //$NON-NLS-1$
-		_table.put(new Integer(188), "&frac14;"); //$NON-NLS-1$
-		_table.put(new Integer(189), "&frac12;"); //$NON-NLS-1$
-		_table.put(new Integer(190), "&frac34;"); //$NON-NLS-1$
-		_table.put(new Integer(191), "&iquest;"); //$NON-NLS-1$
-		_table.put(new Integer(192), "&Agrave;"); //$NON-NLS-1$
-		_table.put(new Integer(193), "&Aacute;"); //$NON-NLS-1$
-		_table.put(new Integer(194), "&Acirc;"); //$NON-NLS-1$
-		_table.put(new Integer(195), "&Atilde;"); //$NON-NLS-1$
-		_table.put(new Integer(196), "&Auml;"); //$NON-NLS-1$
-		_table.put(new Integer(197), "&Aring;"); //$NON-NLS-1$
-		_table.put(new Integer(198), "&AElig;"); //$NON-NLS-1$
-		_table.put(new Integer(199), "&Ccedil;"); //$NON-NLS-1$
-		_table.put(new Integer(200), "&Egrave;"); //$NON-NLS-1$
-		_table.put(new Integer(201), "&Eacute;"); //$NON-NLS-1$
-		_table.put(new Integer(202), "&Ecirc;"); //$NON-NLS-1$
-		_table.put(new Integer(203), "&Euml;"); //$NON-NLS-1$
-		_table.put(new Integer(204), "&Igrave;"); //$NON-NLS-1$
-		_table.put(new Integer(205), "&Iacute;"); //$NON-NLS-1$
-		_table.put(new Integer(206), "&Icirc;"); //$NON-NLS-1$
-		_table.put(new Integer(207), "&Iuml;"); //$NON-NLS-1$
-		_table.put(new Integer(208), "&ETH;"); //$NON-NLS-1$
-		_table.put(new Integer(209), "&Ntilde;"); //$NON-NLS-1$
-		_table.put(new Integer(210), "&Ograve;"); //$NON-NLS-1$
-		_table.put(new Integer(211), "&Oacute;"); //$NON-NLS-1$
-		_table.put(new Integer(212), "&Ocirc;"); //$NON-NLS-1$
-		_table.put(new Integer(213), "&Otilde;"); //$NON-NLS-1$
-		_table.put(new Integer(214), "&Ouml;"); //$NON-NLS-1$
-		_table.put(new Integer(215), "&times;"); //$NON-NLS-1$
-		_table.put(new Integer(216), "&Oslash;"); //$NON-NLS-1$
-		_table.put(new Integer(217), "&Ugrave;"); //$NON-NLS-1$
-		_table.put(new Integer(218), "&Uacute;"); //$NON-NLS-1$
-		_table.put(new Integer(219), "&Ucirc;"); //$NON-NLS-1$
-		_table.put(new Integer(220), "&Uuml;"); //$NON-NLS-1$
-		_table.put(new Integer(221), "&Yacute;"); //$NON-NLS-1$
-		_table.put(new Integer(222), "&THORN;"); //$NON-NLS-1$
-		_table.put(new Integer(223), "&szlig;"); //$NON-NLS-1$
-		_table.put(new Integer(224), "&agrave;"); //$NON-NLS-1$
-		_table.put(new Integer(225), "&aacute;"); //$NON-NLS-1$
-		_table.put(new Integer(226), "&acirc;"); //$NON-NLS-1$
-		_table.put(new Integer(227), "&atilde;"); //$NON-NLS-1$
-		_table.put(new Integer(228), "&auml;"); //$NON-NLS-1$
-		_table.put(new Integer(229), "&aring;"); //$NON-NLS-1$
-		_table.put(new Integer(230), "&aelig;"); //$NON-NLS-1$
-		_table.put(new Integer(231), "&ccedil;"); //$NON-NLS-1$
-		_table.put(new Integer(232), "&egrave;"); //$NON-NLS-1$
-		_table.put(new Integer(233), "&eacute;"); //$NON-NLS-1$
-		_table.put(new Integer(234), "&ecirc;"); //$NON-NLS-1$
-		_table.put(new Integer(235), "&euml;"); //$NON-NLS-1$
-		_table.put(new Integer(236), "&igrave;"); //$NON-NLS-1$
-		_table.put(new Integer(237), "&iacute;"); //$NON-NLS-1$
-		_table.put(new Integer(238), "&icirc;"); //$NON-NLS-1$
-		_table.put(new Integer(239), "&iuml;"); //$NON-NLS-1$
-		_table.put(new Integer(240), "&eth;"); //$NON-NLS-1$
-		_table.put(new Integer(241), "&ntilde;"); //$NON-NLS-1$
-		_table.put(new Integer(242), "&ograve;"); //$NON-NLS-1$
-		_table.put(new Integer(243), "&oacute;"); //$NON-NLS-1$
-		_table.put(new Integer(244), "&ocirc;"); //$NON-NLS-1$
-		_table.put(new Integer(245), "&otilde;"); //$NON-NLS-1$
-		_table.put(new Integer(246), "&ouml;"); //$NON-NLS-1$
-		_table.put(new Integer(247), "&divide;"); //$NON-NLS-1$
-		_table.put(new Integer(248), "&oslash;"); //$NON-NLS-1$
-		_table.put(new Integer(249), "&ugrave;"); //$NON-NLS-1$
-		_table.put(new Integer(250), "&uacute;"); //$NON-NLS-1$
-		_table.put(new Integer(251), "&ucirc;"); //$NON-NLS-1$
-		_table.put(new Integer(252), "&uuml;"); //$NON-NLS-1$
-		_table.put(new Integer(253), "&yacute;"); //$NON-NLS-1$
-		_table.put(new Integer(254), "&thorn;"); //$NON-NLS-1$
-		_table.put(new Integer(255), "&yuml;"); //$NON-NLS-1$
-		_table.put(new Integer(402), "&fnof;"); //$NON-NLS-1$
-		_table.put(new Integer(913), "&Alpha;"); //$NON-NLS-1$
-		_table.put(new Integer(914), "&Beta;"); //$NON-NLS-1$
-		_table.put(new Integer(915), "&Gamma;"); //$NON-NLS-1$
-		_table.put(new Integer(916), "&Delta;"); //$NON-NLS-1$
-		_table.put(new Integer(917), "&Epsilon;"); //$NON-NLS-1$
-		_table.put(new Integer(918), "&Zeta;"); //$NON-NLS-1$
-		_table.put(new Integer(919), "&Eta;"); //$NON-NLS-1$
-		_table.put(new Integer(920), "&Theta;"); //$NON-NLS-1$
-		_table.put(new Integer(921), "&Iota;"); //$NON-NLS-1$
-		_table.put(new Integer(922), "&Kappa;"); //$NON-NLS-1$
-		_table.put(new Integer(923), "&Lambda;"); //$NON-NLS-1$
-		_table.put(new Integer(924), "&Mu;"); //$NON-NLS-1$
-		_table.put(new Integer(925), "&Nu;"); //$NON-NLS-1$
-		_table.put(new Integer(926), "&Xi;"); //$NON-NLS-1$
-		_table.put(new Integer(927), "&Omicron;"); //$NON-NLS-1$
-		_table.put(new Integer(928), "&Pi;"); //$NON-NLS-1$
-		_table.put(new Integer(929), "&Rho;"); //$NON-NLS-1$
-		_table.put(new Integer(931), "&Sigma;"); //$NON-NLS-1$
-		_table.put(new Integer(932), "&Tau;"); //$NON-NLS-1$
-		_table.put(new Integer(933), "&Upsilon;"); //$NON-NLS-1$
-		_table.put(new Integer(934), "&Phi;"); //$NON-NLS-1$
-		_table.put(new Integer(935), "&Chi;"); //$NON-NLS-1$
-		_table.put(new Integer(936), "&Psi;"); //$NON-NLS-1$
-		_table.put(new Integer(937), "&Omega;"); //$NON-NLS-1$
-		_table.put(new Integer(945), "&alpha;"); //$NON-NLS-1$
-		_table.put(new Integer(946), "&beta;"); //$NON-NLS-1$
-		_table.put(new Integer(947), "&gamma;"); //$NON-NLS-1$
-		_table.put(new Integer(948), "&delta;"); //$NON-NLS-1$
-		_table.put(new Integer(949), "&epsilon;"); //$NON-NLS-1$
-		_table.put(new Integer(950), "&zeta;"); //$NON-NLS-1$
-		_table.put(new Integer(951), "&eta;"); //$NON-NLS-1$
-		_table.put(new Integer(952), "&theta;"); //$NON-NLS-1$
-		_table.put(new Integer(953), "&iota;"); //$NON-NLS-1$
-		_table.put(new Integer(954), "&kappa;"); //$NON-NLS-1$
-		_table.put(new Integer(955), "&lambda;"); //$NON-NLS-1$
-		_table.put(new Integer(956), "&mu;"); //$NON-NLS-1$
-		_table.put(new Integer(957), "&nu;"); //$NON-NLS-1$
-		_table.put(new Integer(958), "&xi;"); //$NON-NLS-1$
-		_table.put(new Integer(959), "&omicron;"); //$NON-NLS-1$
-		_table.put(new Integer(960), "&pi;"); //$NON-NLS-1$
-		_table.put(new Integer(961), "&rho;"); //$NON-NLS-1$
-		_table.put(new Integer(962), "&sigmaf;"); //$NON-NLS-1$
-		_table.put(new Integer(963), "&sigma;"); //$NON-NLS-1$
-		_table.put(new Integer(964), "&tau;"); //$NON-NLS-1$
-		_table.put(new Integer(965), "&upsilon;"); //$NON-NLS-1$
-		_table.put(new Integer(966), "&phi;"); //$NON-NLS-1$
-		_table.put(new Integer(967), "&chi;"); //$NON-NLS-1$
-		_table.put(new Integer(968), "&psi;"); //$NON-NLS-1$
-		_table.put(new Integer(969), "&omega;"); //$NON-NLS-1$
-		_table.put(new Integer(977), "&thetasym;"); //$NON-NLS-1$
-		_table.put(new Integer(978), "&upsih;"); //$NON-NLS-1$
-		_table.put(new Integer(982), "&piv;"); //$NON-NLS-1$
-		_table.put(new Integer(8226), "&bull;"); //$NON-NLS-1$
-		_table.put(new Integer(8230), "&hellip;"); //$NON-NLS-1$
-		_table.put(new Integer(8242), "&prime;"); //$NON-NLS-1$
-		_table.put(new Integer(8243), "&Prime;"); //$NON-NLS-1$
-		_table.put(new Integer(8254), "&oline;"); //$NON-NLS-1$
-		_table.put(new Integer(8260), "&frasl;"); //$NON-NLS-1$
-		_table.put(new Integer(8472), "&weierp;"); //$NON-NLS-1$
-		_table.put(new Integer(8465), "&image;"); //$NON-NLS-1$
-		_table.put(new Integer(8476), "&real;"); //$NON-NLS-1$
-		_table.put(new Integer(8482), "&trade;"); //$NON-NLS-1$
-		_table.put(new Integer(8501), "&alefsym;"); //$NON-NLS-1$
-		_table.put(new Integer(8592), "&larr;"); //$NON-NLS-1$
-		_table.put(new Integer(8593), "&uarr;"); //$NON-NLS-1$
-		_table.put(new Integer(8594), "&rarr;"); //$NON-NLS-1$
-		_table.put(new Integer(8595), "&darr;"); //$NON-NLS-1$
-		_table.put(new Integer(8596), "&harr;"); //$NON-NLS-1$
-		_table.put(new Integer(8629), "&crarr;"); //$NON-NLS-1$
-		_table.put(new Integer(8656), "&lArr;"); //$NON-NLS-1$
-		_table.put(new Integer(8657), "&uArr;"); //$NON-NLS-1$
-		_table.put(new Integer(8658), "&rArr;"); //$NON-NLS-1$
-		_table.put(new Integer(8659), "&dArr;"); //$NON-NLS-1$
-		_table.put(new Integer(8660), "&hArr;"); //$NON-NLS-1$
-		_table.put(new Integer(8704), "&forall;"); //$NON-NLS-1$
-		_table.put(new Integer(8706), "&part;"); //$NON-NLS-1$
-		_table.put(new Integer(8707), "&exist;"); //$NON-NLS-1$
-		_table.put(new Integer(8709), "&empty;"); //$NON-NLS-1$
-		_table.put(new Integer(8711), "&nabla;"); //$NON-NLS-1$
-		_table.put(new Integer(8712), "&isin;"); //$NON-NLS-1$
-		_table.put(new Integer(8713), "&notin;"); //$NON-NLS-1$
-		_table.put(new Integer(8715), "&ni;"); //$NON-NLS-1$
-		_table.put(new Integer(8719), "&prod;"); //$NON-NLS-1$
-		_table.put(new Integer(8722), "&sum;"); //$NON-NLS-1$
-		_table.put(new Integer(8722), "&minus;"); //$NON-NLS-1$
-		_table.put(new Integer(8727), "&lowast;"); //$NON-NLS-1$
-		_table.put(new Integer(8730), "&radic;"); //$NON-NLS-1$
-		_table.put(new Integer(8733), "&prop;"); //$NON-NLS-1$
-		_table.put(new Integer(8734), "&infin;"); //$NON-NLS-1$
-		_table.put(new Integer(8736), "&ang;"); //$NON-NLS-1$
-		_table.put(new Integer(8869), "&and;"); //$NON-NLS-1$
-		_table.put(new Integer(8870), "&or;"); //$NON-NLS-1$
-		_table.put(new Integer(8745), "&cap;"); //$NON-NLS-1$
-		_table.put(new Integer(8746), "&cup;"); //$NON-NLS-1$
-		_table.put(new Integer(8747), "&int;"); //$NON-NLS-1$
-		_table.put(new Integer(8756), "&there4;"); //$NON-NLS-1$
-		_table.put(new Integer(8764), "&sim;"); //$NON-NLS-1$
-		_table.put(new Integer(8773), "&cong;"); //$NON-NLS-1$
-		_table.put(new Integer(8773), "&asymp;"); //$NON-NLS-1$
-		_table.put(new Integer(8800), "&ne;"); //$NON-NLS-1$
-		_table.put(new Integer(8801), "&equiv;"); //$NON-NLS-1$
-		_table.put(new Integer(8804), "&le;"); //$NON-NLS-1$
-		_table.put(new Integer(8805), "&ge;"); //$NON-NLS-1$
-		_table.put(new Integer(8834), "&sub;"); //$NON-NLS-1$
-		_table.put(new Integer(8835), "&sup;"); //$NON-NLS-1$
-		_table.put(new Integer(8836), "&nsub;"); //$NON-NLS-1$
-		_table.put(new Integer(8838), "&sube;"); //$NON-NLS-1$
-		_table.put(new Integer(8839), "&supe;"); //$NON-NLS-1$
-		_table.put(new Integer(8853), "&oplus;"); //$NON-NLS-1$
-		_table.put(new Integer(8855), "&otimes;"); //$NON-NLS-1$
-		_table.put(new Integer(8869), "&perp;"); //$NON-NLS-1$
-		_table.put(new Integer(8901), "&sdot;"); //$NON-NLS-1$
-		_table.put(new Integer(8968), "&lceil;"); //$NON-NLS-1$
-		_table.put(new Integer(8969), "&rceil;"); //$NON-NLS-1$
-		_table.put(new Integer(8970), "&lfloor;"); //$NON-NLS-1$
-		_table.put(new Integer(8971), "&rfloor;"); //$NON-NLS-1$
-		_table.put(new Integer(9001), "&lang;"); //$NON-NLS-1$
-		_table.put(new Integer(9002), "&rang;"); //$NON-NLS-1$
-		_table.put(new Integer(9674), "&loz;"); //$NON-NLS-1$
-		_table.put(new Integer(9824), "&spades;"); //$NON-NLS-1$
-		_table.put(new Integer(9827), "&clubs;"); //$NON-NLS-1$
-		_table.put(new Integer(9829), "&hearts;"); //$NON-NLS-1$
-		_table.put(new Integer(9830), "&diams;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(160), "&nbsp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(161), "&iexcl;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(162), "&cent;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(163), "&pound;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(164), "&curren;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(165), "&yen;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(166), "&brvbar;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(167), "&sect;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(168), "&uml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(169), "&copy;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(170), "&ordf;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(171), "&laquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(172), "&not;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(173), "&shy;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(174), "&reg;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(175), "&macr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(176), "&deg;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(177), "&plusmn;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(178), "&sup2;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(179), "&sup3;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(180), "&acute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(181), "&micro;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(182), "&para;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(183), "&middot;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(184), "&cedil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(185), "&sup1;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(186), "&ordm;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(187), "&raquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(188), "&frac14;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(189), "&frac12;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(190), "&frac34;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(191), "&iquest;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(192), "&Agrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(193), "&Aacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(194), "&Acirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(195), "&Atilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(196), "&Auml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(197), "&Aring;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(198), "&AElig;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(199), "&Ccedil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(200), "&Egrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(201), "&Eacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(202), "&Ecirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(203), "&Euml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(204), "&Igrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(205), "&Iacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(206), "&Icirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(207), "&Iuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(208), "&ETH;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(209), "&Ntilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(210), "&Ograve;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(211), "&Oacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(212), "&Ocirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(213), "&Otilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(214), "&Ouml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(215), "&times;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(216), "&Oslash;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(217), "&Ugrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(218), "&Uacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(219), "&Ucirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(220), "&Uuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(221), "&Yacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(222), "&THORN;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(223), "&szlig;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(224), "&agrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(225), "&aacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(226), "&acirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(227), "&atilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(228), "&auml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(229), "&aring;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(230), "&aelig;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(231), "&ccedil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(232), "&egrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(233), "&eacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(234), "&ecirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(235), "&euml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(236), "&igrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(237), "&iacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(238), "&icirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(239), "&iuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(240), "&eth;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(241), "&ntilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(242), "&ograve;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(243), "&oacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(244), "&ocirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(245), "&otilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(246), "&ouml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(247), "&divide;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(248), "&oslash;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(249), "&ugrave;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(250), "&uacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(251), "&ucirc;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(252), "&uuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(253), "&yacute;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(254), "&thorn;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(255), "&yuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(402), "&fnof;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(913), "&Alpha;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(914), "&Beta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(915), "&Gamma;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(916), "&Delta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(917), "&Epsilon;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(918), "&Zeta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(919), "&Eta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(920), "&Theta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(921), "&Iota;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(922), "&Kappa;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(923), "&Lambda;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(924), "&Mu;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(925), "&Nu;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(926), "&Xi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(927), "&Omicron;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(928), "&Pi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(929), "&Rho;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(931), "&Sigma;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(932), "&Tau;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(933), "&Upsilon;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(934), "&Phi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(935), "&Chi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(936), "&Psi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(937), "&Omega;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(945), "&alpha;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(946), "&beta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(947), "&gamma;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(948), "&delta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(949), "&epsilon;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(950), "&zeta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(951), "&eta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(952), "&theta;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(953), "&iota;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(954), "&kappa;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(955), "&lambda;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(956), "&mu;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(957), "&nu;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(958), "&xi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(959), "&omicron;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(960), "&pi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(961), "&rho;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(962), "&sigmaf;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(963), "&sigma;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(964), "&tau;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(965), "&upsilon;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(966), "&phi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(967), "&chi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(968), "&psi;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(969), "&omega;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(977), "&thetasym;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(978), "&upsih;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(982), "&piv;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8226), "&bull;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8230), "&hellip;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8242), "&prime;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8243), "&Prime;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8254), "&oline;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8260), "&frasl;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8472), "&weierp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8465), "&image;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8476), "&real;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8482), "&trade;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8501), "&alefsym;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8592), "&larr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8593), "&uarr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8594), "&rarr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8595), "&darr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8596), "&harr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8629), "&crarr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8656), "&lArr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8657), "&uArr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8658), "&rArr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8659), "&dArr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8660), "&hArr;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8704), "&forall;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8706), "&part;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8707), "&exist;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8709), "&empty;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8711), "&nabla;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8712), "&isin;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8713), "&notin;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8715), "&ni;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8719), "&prod;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8722), "&sum;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8722), "&minus;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8727), "&lowast;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8730), "&radic;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8733), "&prop;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8734), "&infin;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8736), "&ang;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8869), "&and;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8870), "&or;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8745), "&cap;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8746), "&cup;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8747), "&int;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8756), "&there4;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8764), "&sim;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8773), "&cong;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8773), "&asymp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8800), "&ne;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8801), "&equiv;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8804), "&le;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8805), "&ge;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8834), "&sub;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8835), "&sup;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8836), "&nsub;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8838), "&sube;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8839), "&supe;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8853), "&oplus;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8855), "&otimes;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8869), "&perp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8901), "&sdot;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8968), "&lceil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8969), "&rceil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8970), "&lfloor;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8971), "&rfloor;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9001), "&lang;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9002), "&rang;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9674), "&loz;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9824), "&spades;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9827), "&clubs;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9829), "&hearts;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(9830), "&diams;"); //$NON-NLS-1$
 
-		_table.put(new Integer(338), "&OElig;"); //$NON-NLS-1$
-		_table.put(new Integer(339), "&oelig;"); //$NON-NLS-1$
-		_table.put(new Integer(352), "&Scaron;"); //$NON-NLS-1$
-		_table.put(new Integer(353), "&scaron;"); //$NON-NLS-1$
-		_table.put(new Integer(376), "&Yuml;"); //$NON-NLS-1$
-		_table.put(new Integer(710), "&circ;"); //$NON-NLS-1$
-		_table.put(new Integer(732), "&tilde;"); //$NON-NLS-1$
-		_table.put(new Integer(8194), "&ensp;"); //$NON-NLS-1$
-		_table.put(new Integer(8195), "&emsp;"); //$NON-NLS-1$
-		_table.put(new Integer(8201), "&thinsp;"); //$NON-NLS-1$
-		_table.put(new Integer(8204), "&zwnj;"); //$NON-NLS-1$
-		_table.put(new Integer(8205), "&zwj;"); //$NON-NLS-1$
-		_table.put(new Integer(8206), "&lrm;"); //$NON-NLS-1$
-		_table.put(new Integer(8207), "&rlm;"); //$NON-NLS-1$
-		_table.put(new Integer(8211), "&ndash;"); //$NON-NLS-1$
-		_table.put(new Integer(151), "&mdash;"); //$NON-NLS-1$
-		_table.put(new Integer(8216), "&lsquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8217), "&rsquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8218), "&sbquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8220), "&ldquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8221), "&rdquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8222), "&bdquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8224), "&dagger;"); //$NON-NLS-1$
-		_table.put(new Integer(8225), "&Dagger;"); //$NON-NLS-1$
-		_table.put(new Integer(8240), "&permil;"); //$NON-NLS-1$
-		_table.put(new Integer(8249), "&lsaquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8250), "&rsaquo;"); //$NON-NLS-1$
-		_table.put(new Integer(8364), "&euro;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(338), "&OElig;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(339), "&oelig;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(352), "&Scaron;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(353), "&scaron;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(376), "&Yuml;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(710), "&circ;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(732), "&tilde;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8194), "&ensp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8195), "&emsp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8201), "&thinsp;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8204), "&zwnj;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8205), "&zwj;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8206), "&lrm;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8207), "&rlm;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8211), "&ndash;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(151), "&mdash;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8216), "&lsquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8217), "&rsquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8218), "&sbquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8220), "&ldquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8221), "&rdquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8222), "&bdquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8224), "&dagger;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8225), "&Dagger;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8240), "&permil;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8249), "&lsaquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8250), "&rsaquo;"); //$NON-NLS-1$
+		_table.put(Integer.valueOf(8364), "&euro;"); //$NON-NLS-1$
 
 		_reverse = new Hashtable(256);
 		for (Enumeration e = _table.keys(); e.hasMoreElements();) {
@@ -300,12 +300,18 @@
 	}
 
 	/**
+	 * @param ch 
 	 * @return if not in the special list
 	 */
 	public static String getSpecial(int ch) {
-		return (String) _table.get(new Integer(ch));
+		return (String) _table.get(Integer.valueOf(ch));
 	}
 
+	/**
+	 * @param str
+	 * @return the code value corresponding to the string or null
+	 * if string is unknown
+	 */
 	public static int getSpecial(String str) {
 		Integer result = (Integer) _reverse.get(str);
 		if (result == null) {
@@ -314,6 +320,13 @@
         return result.intValue();
 	}
 
+	/**
+	 * @param str
+	 * @param start
+	 * @param end
+	 * @param writer
+	 * @throws IOException
+	 */
 	public static void encode(String str, int start, int end, Writer writer)
 			throws IOException {
 		for (int i = start; i < end; i++) {
@@ -333,10 +346,22 @@
 		}
 	}
 
+	/**
+	 * @param str
+	 * @param result
+	 * @return the encoded string buffer
+	 */
 	public static StringBuffer encode(String str, StringBuffer result) {
 		return encode(str, 0, str.length(), result);
 	}
 
+	/**
+	 * @param str
+	 * @param start
+	 * @param end
+	 * @param result
+	 * @return the encoded string buffer
+	 */
 	public static StringBuffer encode(String str, int start, int end,
 			StringBuffer result) {
 		for (int i = start; i < end; i++) {
@@ -357,11 +382,25 @@
 		return result;
 	}
 
+	/**
+	 * @param str
+	 * @param buffer
+	 * @return the decoded string buffer
+	 * @throws RuntimeException
+	 */
 	public static StringBuffer decode(String str, StringBuffer buffer)
 			throws RuntimeException {
 		return decode(str, 0, str.length(), buffer);
 	}
 
+	/**
+	 * @param str
+	 * @param start
+	 * @param end
+	 * @param buffer
+	 * @return the decoded string buffer
+	 * @throws RuntimeException
+	 */
 	public static StringBuffer decode(String str, int start, int end,
 			StringBuffer buffer) throws RuntimeException {
 		int pos = start;
@@ -398,6 +437,10 @@
 		return buffer;
 	}
 
+	/**
+	 * @param entityRef
+	 * @return the code for the decoded entity reference
+	 */
 	public static int decodeEntity(String entityRef) {
 		Integer result = (Integer) _reverse.get(entityRef);
 		if (result != null) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLUtil.java
index f469858..a4400d2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/HTMLUtil.java
@@ -24,7 +24,7 @@
 	 * check whether a char is a HTML whitespace.
 	 * 
 	 * @param ch
-	 * @return
+	 * @return true if ch is considered to be HTML whitespace
 	 * @see <a href="http://www.w3.org/TR/html4/struct/text.html#h-9.1">white
 	 *      space </a>
 	 */
@@ -35,7 +35,7 @@
 
 	/**
 	 * @param text
-	 * @return
+	 * @return true if the entire string is considered to be HTML whitespace
 	 */
 	public static boolean isHTMLWhitespaceString(String text) {
 		for (int i = 0, size = text.length(); i < size; i++) {
@@ -46,7 +46,10 @@
 		return true;
 	}
 
-	public static final String[] HiddenTags = new String[] {
+	/**
+	 * the HTML tags considered to be hidden
+	 */
+	static final String[] HiddenTags = new String[] {
 			IHTMLConstants.TAG_APPLET, IHTMLConstants.TAG_AREA,
 			IHTMLConstants.TAG_BASE, IHTMLConstants.TAG_BASEFONT,
 			IHTMLConstants.TAG_HEAD, IHTMLConstants.TAG_IFRAME,
@@ -56,6 +59,10 @@
 			IHTMLConstants.TAG_STYLE, IHTMLConstants.TAG_TITLE,
 			IHTMLConstants.TAG_PARAM };
 
+	/**
+	 * @param tag
+	 * @return true if the tag name is not in the list of hidden tags
+	 */
 	public static boolean isVisualHtmlElement(String tag) {
 		return !Arrays.asList(HiddenTags).contains(tag.toLowerCase());
 	}
@@ -66,10 +73,10 @@
 	 * tag close.
 	 * <p>
 	 * For consequent whitespace, will compact them.
-	 * 
-	 * @param data
-	 * @return
-	 * @see http://www.w3.org/TR/html4/struct/text.html#h-9.1
+	 * @param textNode 
+	 * @param s 
+	 * @return the compacted string
+	 * see http://www.w3.org/TR/html4/struct/text.html#h-9.1
 	 */
 	// XXX: currently, the whitespace handling is in this class, in the future
 	// may consider move it
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ICacheEntryCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ICacheEntryCreator.java
index 8edf749..a63faee 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ICacheEntryCreator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ICacheEntryCreator.java
@@ -11,8 +11,21 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.utils;
 
-public interface ICacheEntryCreator {
-	public Object createEntry(Object key);
+/**
+ * Identifies a factory/dispose advisor for cache entries
+ * @param <KEY> 
+ * @param <ENTRY> 
+ */
+public interface ICacheEntryCreator<KEY,ENTRY> {
+	/**
+	 * @param key
+	 * @return the created entry
+	 */
+	public ENTRY createEntry(KEY key);
 
-	public void dispose(Object key, Object entry);
+	/**
+	 * @param key
+	 * @param entry
+	 */
+	public void dispose(KEY key, ENTRY entry);
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/IntFlexArray.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/IntFlexArray.java
index 0e2ccc1..4c50dcf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/IntFlexArray.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/IntFlexArray.java
@@ -22,16 +22,26 @@
 
 	int size = 0;
 
+	/**
+	 * Create a new flex array with default capacity
+	 */
 	public IntFlexArray() {
 		this(10);
 	}
 
+	/**
+	 * @param initCapacity
+	 */
 	public IntFlexArray(int initCapacity) {
 		if (initCapacity <= 0)
 			initCapacity = 10;
 		array = new int[initCapacity];
 	}
 
+	/**
+	 * @param idx
+	 * @param obj
+	 */
 	public void setAt(int idx, int obj) {
 		ensureCapacity(idx + 1);
 		array[idx] = obj;
@@ -39,12 +49,19 @@
 			size = idx + 1;
 	}
 
+	/**
+	 * @param idx
+	 * @return the value at idx or 0 if idx is out of bounds
+	 */
 	public int getAt(int idx) {
 		if (idx < array.length)
 			return array[idx];
         return 0;
 	}
 
+	/**
+	 * @return the current size of the array
+	 */
 	public int getSize() {
 		return size;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JavaUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JavaUtil.java
index 2cc3eb7..1734707 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JavaUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JavaUtil.java
@@ -29,7 +29,7 @@
 	 * 
 	 * @param javaProject
 	 * @param parent
-	 * @return
+	 * @return the path in javaProject or new Path("") if not found on a class path
 	 * @author mengbo
 	 */
 	public static IPath getPathOnClasspath(IJavaProject javaProject,
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/NodeLocationComparator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/NodeLocationComparator.java
index 87cf105..571819a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/NodeLocationComparator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/NodeLocationComparator.java
@@ -26,19 +26,22 @@
 public class NodeLocationComparator implements Comparator {
 	private final static Map orders = new HashMap();
 
-	private final static Integer DEFAULT_ORDER = new Integer(Integer.MAX_VALUE);
+	private final static Integer DEFAULT_ORDER = Integer.valueOf(Integer.MAX_VALUE);
 
 	private static NodeLocationComparator _instance = new NodeLocationComparator();
 	static {
-		orders.put("taglib", new Integer(0));
-		orders.put("directive.taglib", new Integer(0));
-		orders.put("head", new Integer(1));
+		orders.put("taglib", Integer.valueOf(0));
+		orders.put("directive.taglib", Integer.valueOf(0));
+		orders.put("head", Integer.valueOf(1));
 	}
 
 	private NodeLocationComparator() {
         // no external instantiation
 	}
 
+	/**
+	 * @return the singleton
+	 */
 	public static NodeLocationComparator getInstance() {
 		return _instance;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/PreviewUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/PreviewUtil.java
index 3faf608..1a76aba 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/PreviewUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/PreviewUtil.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 import java.util.MissingResourceException;
 import java.util.PropertyResourceBundle;
+import java.util.Map.Entry;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -47,26 +48,67 @@
 			.getProperty("line.separator"); //$NON-NLS-1$
 
 	/** web root path */
-	public static String WEBROOT_PATH = null;
+	private final static String WEBROOT_PATH = null;
 
 	/** the file being previewed */
-	public static IFile CURRENT_FILE = null;
+	private static IFile CURRENT_FILE = null;
 
 	/** the property bundel */
-	public static PropertyResourceBundle BUNDLE = null;
+	private static PropertyResourceBundle BUNDLE = null;
 
 	/** the property bundel map used for loadbundle preview action */
-	public static Map BUNDLE_MAP = null;
+	private static Map BUNDLE_MAP = null;
 
 	/** the variable name used for loadbundel preview action */
-	public static String VAR = null;
+	private static String VAR = null;
 
 	/** key is prefix value is uri */
 	private static Map _taglibMap = new HashMap();
 
-	// TODO: dead? private static final String PAGE_EXTEND = "_jsppreview_.html"; //$NON-NLS-1$
 
 	/**
+	 * @return the current bundle
+	 */
+	public static final PropertyResourceBundle getBUNDLE() {
+        return BUNDLE;
+    }
+
+    /**
+     * @param bundle
+     */
+    public static final void setBUNDLE(PropertyResourceBundle bundle) {
+        BUNDLE = bundle;
+    }
+
+    /**
+     * @return the current bundle map
+     */
+    public static final Map getBUNDLE_MAP() {
+        return BUNDLE_MAP;
+    }
+
+    /**
+     * @param bundle_map
+     */
+    public static final void setBUNDLE_MAP(Map bundle_map) {
+        BUNDLE_MAP = bundle_map;
+    }
+
+    /**
+     * @return the current variable
+     */
+    public static final String getVAR() {
+        return VAR;
+    }
+
+    /**
+     * @param var
+     */
+    public static final void setVAR(String var) {
+        VAR = var;
+    }
+
+    /**
 	 * @return Returns the _taglibMap.
 	 */
 	public static Map getTaglibMap() {
@@ -86,6 +128,7 @@
 	 * 
 	 * @param map
 	 *            tag attribute map
+	 * @return the attribute string
 	 */
 	public static String getAttributesAsString(Map map) {
 		return getAttributesAsString(map, true);
@@ -96,6 +139,7 @@
 	 * 
 	 * @param uri
 	 *            taglib uri
+	 * @return the path as a string
 	 */
 	public static String getPathFromURI(String uri) {
 		if (uri == null) {
@@ -134,6 +178,7 @@
 	 * 
 	 * @param attrValue
 	 *            expression
+	 * @return the value
 	 */
 	public static String getValueOFEP(String attrValue) {
 		if (attrValue != null) {
@@ -176,16 +221,18 @@
 	 *            tag attribute map
 	 * @param flag
 	 *            state
+	 * @return the attributes as a single string
 	 */
-	public static String getAttributesAsString(Map map, boolean flag) {
+	private static String getAttributesAsString(Map<String, String> map, boolean flag) {
 		if (map == null) {
 			return null;
 		}
 
 		StringBuffer stringbuffer = new StringBuffer();
-		for (Iterator e = map.keySet().iterator(); e.hasNext();) {
-			String attrName = (String) e.next();
-			String attrValue = (String) map.get(attrName);
+		for (Iterator<Entry<String, String>> e = map.entrySet().iterator(); e.hasNext();) {
+		    Map.Entry<String,String> entry = e.next();
+			String attrName = entry.getKey();
+			String attrValue = entry.getValue();
 			attrValue = getValueOFEP(attrValue);
 			if (ICSSPropertyID.ATTR_SRC.equalsIgnoreCase(attrName)
 					|| ICSSPropertyID.ATTR_HREF.equalsIgnoreCase(attrName)
@@ -229,6 +276,7 @@
 	 * 
 	 * @param nodeMap
 	 *            NamedNodeMap type
+	 * @return the map
 	 */
 	public static Map getAttributeMap(NamedNodeMap nodeMap) {
 		if (nodeMap != null) {
@@ -252,7 +300,7 @@
 	/**
 	 * @param result
 	 * @param editorInput
-	 * @return
+	 * @return the file
 	 */
 	public static File toFile(StringBuffer result, IEditorInput editorInput) {
 		try {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java
index 2433df1..ff81f21 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java
@@ -45,6 +45,10 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+/**
+ * A URIResolver implementation
+ *
+ */
 public class ProjectResolver implements URIResolver {
 	private static final String TLD_TAG_URI = "uri";
 
@@ -66,12 +70,16 @@
 	 * project.getAdapter(URIResolver.class) to obtain a URIResolver aware of
 	 * the Project's special requirements. Note that a URIResolver may not be
 	 * returned at all so manually creating this object may still be required.
+	 * @param project
 	 */
 	public ProjectResolver(IProject project) {
 		super();
 		_project = project;
 	}
 
+	/**
+	 * @param path
+	 */
 	public void seekTld(IFolder path) {
 		if (path == null) {
 			return;
@@ -104,6 +112,9 @@
 		}
 	}
 
+	/**
+	 * @param path
+	 */
 	public void seekTld(File path) {
 		if (path == null || !path.isDirectory()) {
 			return;
@@ -140,12 +151,16 @@
 		}
 	}
 
+	/**
+	 * @param tldFile
+	 * @return the uri for the tld in tldFile or null
+	 */
 	public String getURIfromTLD(File tldFile) {
 
 		if (tldFile == null) {
 			return null;
 		}
-		IDOMModel tldModel;
+		IDOMModel tldModel = null;
 
 		InputStream in = null;
 		try {
@@ -156,7 +171,7 @@
 //		IDOMModel xmlModel = null;
 
 		try {
-			tldModel = (IDOMModel) PDPlugin.getModelManager().getModelForRead(
+			tldModel = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(
 					tldFile.getAbsolutePath(), in, null);
 			NodeList uriList = tldModel.getDocument().getElementsByTagName(
 					TLD_TAG_URI);
@@ -170,11 +185,20 @@
 			_log.error("RenderingTraverser.Error.IO", e1);
 		} finally {
 			ResourceUtils.ensureClosed(in);
+			
+			if (tldModel != null)
+			{
+			    tldModel.releaseFromRead();
+			}
 		}
 
 		return null;
 	}
 
+	/**
+	 * @param tldFile
+	 * @return the URI for the TLD in tldFile or null
+	 */
 	public String getURIfromTLD(IFile tldFile) {
 		if (tldFile == null) {
 			return null;
@@ -198,6 +222,9 @@
 		return null;
 	}
 
+	/**
+	 * initialize the map of tlds
+	 */
 	public void initTldMap() {
 		if (_uriMap == null) {
 			_uriMap = new HashMap();
@@ -424,7 +451,7 @@
 		// a.) if path has a device, and if it begins with IPath.SEPARATOR,
 		// remove it
 		final String device = path.getDevice();
-		if ((device != null) && (device.length() > 0)) {
+		if (device != null && device.length() > 0) {
 			if (device.charAt(0) == IPath.SEPARATOR) {
 				final String newDevice = device.substring(1);
 				newPath = path.setDevice(newDevice);
@@ -432,12 +459,17 @@
 		}
 		// b.) if it has a hostname, it is UNC name... Any java or eclipse api
 		// helps it ??
-		if (path != null && host != null && host.length() != 0) {
+		if (newPath != null && host != null && host.length() != 0) {
 			IPath uncPath = new Path(host);
 			uncPath = uncPath.append(path);
 			newPath = uncPath.makeUNC(true);
 		}
-		return newPath.toString();
+		
+		if (newPath != null)
+		{
+		    return newPath.toString();
+		}
+		return path.toString();
 	}
 
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/SelectManyHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/SelectManyHelper.java
index 5fead43..a7f3ff6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/SelectManyHelper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/SelectManyHelper.java
@@ -12,8 +12,10 @@
 package org.eclipse.jst.pagedesigner.utils;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
@@ -31,37 +33,29 @@
  * @author mengbo
  */
 public class SelectManyHelper {
-//	private static final String OPTION_VISUAL_PREFIX = "option: "; //$NON-NLS-1$
-//
-//	private static final String OPTION_VISUAL_PREFIX_BINDING = "option(binding): "; //$NON-NLS-1$
-//
-//	private static final String OPTION_VISUAL_PREFIX_VALUE = "option(value): "; //$NON-NLS-1$
 
-	private static final String NO_VALUE = "<no value>"; //$NON-NLS-1$
+	private final static Set<String> JSF_SELECT_TAGS, HTML_SELECT_TAGS;
 
-	public static HashSet JSF_SELECT_TAGS, HTML_SELECT_TAGS;
-
-	public static HashSet HTML_SELECT_TAG_OPTIONS, JSF_SELECT_TAG_OPTIONS;
 
 	static {
-		HTML_SELECT_TAGS = new HashSet(10);
-		HTML_SELECT_TAGS.add(IHTMLConstants.TAG_SELECT);
-		HTML_SELECT_TAGS.add(IHTMLConstants.TAG_OPTGROUP);
-		HTML_SELECT_TAG_OPTIONS = new HashSet(10);
-		HTML_SELECT_TAG_OPTIONS.add(IHTMLConstants.TAG_OPTGROUP);
-		HTML_SELECT_TAG_OPTIONS.add(IHTMLConstants.TAG_OPTION);
-
-		JSF_SELECT_TAG_OPTIONS = new HashSet(10);
-		JSF_SELECT_TAG_OPTIONS.add(IJSFConstants.TAG_SELECTITEM);
-		JSF_SELECT_TAG_OPTIONS.add(IJSFConstants.TAG_SELECTITEMS);
-		JSF_SELECT_TAGS = new HashSet(10);
-		JSF_SELECT_TAGS.add(IJSFConstants.TAG_SELECTONELISTBOX);
-		JSF_SELECT_TAGS.add(IJSFConstants.TAG_SELECTONEMENU);
-		JSF_SELECT_TAGS.add(IJSFConstants.TAG_SELECTMANYLISTBOX);//
-		JSF_SELECT_TAGS.add(IJSFConstants.TAG_SELECTMANYMENU);//
-		JSF_SELECT_TAGS.add(IJSFConstants.TAG_SELECTMANYCHECKBOX);
+		Set<String> tempSet = new HashSet<String>(4);
+		tempSet.add(IHTMLConstants.TAG_SELECT);
+		tempSet.add(IHTMLConstants.TAG_OPTGROUP);
+		HTML_SELECT_TAGS = Collections.unmodifiableSet(tempSet);
+		
+		tempSet = new HashSet(8);
+		tempSet.add(IJSFConstants.TAG_SELECTONELISTBOX);
+		tempSet.add(IJSFConstants.TAG_SELECTONEMENU);
+		tempSet.add(IJSFConstants.TAG_SELECTMANYLISTBOX);//
+		tempSet.add(IJSFConstants.TAG_SELECTMANYMENU);//
+		tempSet.add(IJSFConstants.TAG_SELECTMANYCHECKBOX);
+		JSF_SELECT_TAGS = Collections.unmodifiableSet(tempSet);
 	}
 
+	/**
+	 * @param node
+	 * @return the select option children of node
+	 */
 	public static Object[] getSelectOptions(Element node) {
 		if (node == null) {
 			return null;
@@ -115,6 +109,10 @@
 		return null;
 	}
 
+	/**
+	 * @param node
+	 * @return the selection option children of node as strings
+	 */
 	public static String[] getSelectOptionsString(Element node) {
 		if (node == null) {
 			return null;
@@ -144,6 +142,10 @@
 		return (String[]) result.toArray(new String[] {});
 	}
 
+	/**
+	 * @param node
+	 * @return true if node has select option children
+	 */
 	public static boolean hasSelectOptions(Element node) {
 		if (node == null) {
 			return false;
@@ -177,6 +179,10 @@
 		return false;
 	}
 
+	/**
+	 * @param node
+	 * @return true if node is a core or HTML select tag
+	 */
 	public static boolean supportSections(Element node) {
 		String uri = CMUtil.getElementNamespaceURI(node);
 		if (ITLDConstants.URI_JSF_HTML.equals(uri)) {
@@ -187,24 +193,4 @@
 		}
 		return false;
 	}
-
-	public static String getJsfSelectionVisualLabel(Element element) {
-		/*
-		 * if (ele.getAttribute(ICSSPropertyID.ATTR_ITEMLABEL) != null) { return
-		 * OPTION_VISUAL_PREFIX +
-		 * ele.getAttribute(ICSSPropertyID.ATTR_ITEMLABEL); //$NON-NLS-1$ } else
-		 * if (ele.getAttribute(ICSSPropertyID.ATTR_BINDING) != null) { return
-		 * OPTION_VISUAL_PREFIX_BINDING +
-		 * ele.getAttribute(ICSSPropertyID.ATTR_BINDING); //$NON-NLS-1$ } else
-		 * if (ele.getAttribute(ICSSPropertyID.ATTR_ITEMVALUE) != null) { return
-		 * OPTION_VISUAL_PREFIX_VALUE +
-		 * ele.getAttribute(ICSSPropertyID.ATTR_ITEMVALUE); //$NON-NLS-1$ }
-		 * 
-		 * return NO_VALUE; //$NON-NLS-1$
-		 */
-		if (element != null) {
-			return element.getNodeName();
-		}
-        return NO_VALUE;
-	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/WebAppUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/WebAppUtil.java
index 35dd36f..d3971e2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/WebAppUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/WebAppUtil.java
@@ -26,6 +26,11 @@
 public class WebAppUtil {
 	private final static String FACES_SERVLET_NAME = "javax.faces.webapp.FacesServlet";
 
+	/**
+	 * @param url
+	 * @param openedFile
+	 * @return the transformed url
+	 */
 	public static String transformJSPURL(String url, IFile openedFile) {
 		boolean canSupportJSF = JSPUtil.supportTaglib(
 				ITLDConstants.URI_JSF_HTML, openedFile);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/XMLUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/XMLUtil.java
index 7a98425..7638cd4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/XMLUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/XMLUtil.java
@@ -35,13 +35,18 @@
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.w3c.dom.Document;
 
+/**
+ * 
+ *
+ */
 public class XMLUtil {
 	private static Logger _log = PDPlugin.getLogger(XMLUtil.class);
 
 	/**
 	 * Returns a DocumentBuilder capable of creating a DOM Document from input.
 	 * 
-	 * @return
+	 * @return a new instance of a document builder or null if an exception
+	 * occurs on creation
 	 */
 	public synchronized static DocumentBuilder getDocumentBuilder() {
 		DocumentBuilder result = null;
@@ -54,21 +59,6 @@
 		return result;
 	}
 
-	public synchronized static DocumentBuilder getDocumentBuilder(
-			boolean validating) {
-		DocumentBuilder result = null;
-		try {
-			DocumentBuilderFactory instance = DocumentBuilderFactory
-					.newInstance();
-			instance.setValidating(validating);
-			result = instance.newDocumentBuilder();
-		} catch (ParserConfigurationException e) {
-			// "Error in create documentBuilder"
-			_log.info("XMLUtil.Error.0", e); //$NON-NLS-1$
-		}
-		return result;
-	}
-
 	/**
 	 * Transforms a DOM document into a lightly-formatted UTF-8 represntation
 	 * and outputs it to an outputstream
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/InlineEditingNavigationMediator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/InlineEditingNavigationMediator.java
index 696dc30..f41da6d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/InlineEditingNavigationMediator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/InlineEditingNavigationMediator.java
@@ -24,7 +24,7 @@
 import org.eclipse.jst.pagedesigner.parts.DocumentEditPart;
 import org.eclipse.jst.pagedesigner.tools.ExposeHelper;
 import org.eclipse.jst.pagedesigner.viewer.DesignPosition;
-import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
@@ -149,11 +149,11 @@
 	public EditPart getConstainedEditableContainer(DesignPosition position,
 			Point p, GraphicalViewer viewer) {
 		Rectangle rect = new Rectangle(p.x, p.y, 1, 1);
-		Viewport port = ((HTMLGraphicalViewer) viewer).getViewport();
+		Viewport port = ((IHTMLGraphicalViewer) viewer).getViewport();
 
 		Point viewLocation = port.getViewLocation();
 		Point lastLocation = viewLocation.getCopy();
-		new ExposeHelper((HTMLGraphicalViewer) viewer).exposeArea(rect);
+		new ExposeHelper((IHTMLGraphicalViewer) viewer).exposeArea(rect);
 		viewLocation = port.getViewLocation();
 		Dimension offset = lastLocation.getDifference(viewLocation);
 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/AbstractDropLocationStrategy.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/AbstractDropLocationStrategy.java
index 62b283b..6dbeb64 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/AbstractDropLocationStrategy.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/AbstractDropLocationStrategy.java
@@ -33,6 +33,9 @@
 {
     private final EditPartViewer        _viewer;
     
+    /**
+     * @param viewer
+     */
     public AbstractDropLocationStrategy(EditPartViewer viewer)
     {
         _viewer = viewer;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretPositionResolver.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretPositionResolver.java
index d3f5ea3..27aae69 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretPositionResolver.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretPositionResolver.java
@@ -34,6 +34,11 @@
 
 	private static CaretPositionResolver _instance;
 
+	/**
+	 * @param validator
+	 * @param point
+	 * @return the singleton instance
+	 */
 	public static CaretPositionResolver getInstance(
 			IPositionMediator validator, Point point) {
 		if (_instance == null) {
@@ -268,7 +273,7 @@
 	 * 
 	 * @param rect
 	 * @param point
-	 * @return
+	 * @return the X distance
 	 */
 	public static int getXDistance(Rectangle rect, Point point) {
 		if (rect.getRight().x <= point.x) {
@@ -287,7 +292,7 @@
 	 * 
 	 * @param rect
 	 * @param point
-	 * @return
+	 * @return the X distance
 	 */
 	public static int toXMiddle(Rectangle rect, Point point) {
 		return (point.x - (rect.x + rect.getRight().x) / 2);
@@ -299,12 +304,17 @@
 	 * 
 	 * @param rect
 	 * @param point
-	 * @return
+	 * @return the Y distance
 	 */
 	public static int toYMiddle(Rectangle rect, Point point) {
 		return (point.y - (rect.y + rect.getBottom().y) / 2);
 	}
 
+	/**
+	 * @param rect
+	 * @param point
+	 * @return the Y distance
+	 */
 	public static int getYDistance(Rectangle rect, Point point) {
 		if (rect.y + rect.height <= point.y) {
 			return point.y - (rect.y + rect.height);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretUpdater.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretUpdater.java
index 95f6742..dde0d69 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretUpdater.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/CaretUpdater.java
@@ -37,7 +37,7 @@
  * 
  * @author mengbo
  */
-public class CaretUpdater implements IHTMLGraphicalViewerListener,
+/*package*/ class CaretUpdater implements IHTMLGraphicalViewerListener,
 		FigureListener {
 //	private static final Logger _log = PDPlugin.getLogger(CaretUpdater.class);
 
@@ -45,6 +45,9 @@
 
 	private boolean _viewerBatchChanging = false;
 
+	/**
+	 * the width value of the caret in pixels
+	 */
 	public static final int CARET_WIDTH = 2;
 
 	/**
@@ -53,15 +56,19 @@
 	 */
 	private IFigure _trackFigure;
 
-	//TODO: dead? private Polyline _rangeStartCaret;
-
+	/**
+	 * @param viewer
+	 */
 	public CaretUpdater(IHTMLGraphicalViewer viewer) {
 		_viewer = viewer;
 		setup();
 	}
 
+	/**
+	 * set up the
+	 */
 	public void setup() {
-		_viewer.addSelectionChangedListener(this);
+		_viewer.addHTMLViewerListener(this);
 	}
 
 	/**
@@ -98,14 +105,15 @@
 		}
 	}
 
+	/**
+	 * dispose the instance
+	 */
 	public void dispose() {
-		_viewer.removeSelectionChangedListener(this);
+		_viewer.removeHTMLViewerListener(this);
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+	/**
+	 * Update the selection
 	 */
 	public void updateSelection() {
 		setCaretVisible(false);
@@ -130,12 +138,14 @@
 	private void updateRangeSelection() {
 		// FIXME: optimization needed here. Normally should not repaint the
 		// whole page.
-		// TODO: dead?? DesignRange range = _viewer.getRangeSelection();
 		((GraphicalEditPart) _viewer.getRootEditPart()).getFigure().repaint();
 		((GraphicalEditPart) _viewer.getRootEditPart()).getFigure()
 				.getUpdateManager().performUpdate();
 	}
 
+	/**
+	 * update the caret
+	 */
 	public void updateCaret() {
 		if (_trackFigure != null) {
 			_trackFigure.removeFigureListener(this);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java
index 2e3bf6f..38f27cf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java
@@ -28,22 +28,38 @@
 import org.eclipse.jst.pagedesigner.parts.ElementEditPart;
 import org.eclipse.jst.pagedesigner.validation.caret.IPositionMediator;
 
+/**
+ * A default implementation of the drop location strategy
+ * @author cbateman
+ *
+ */
 public class DefaultDropLocationStrategy extends AbstractDropLocationStrategy 
 {
     // the amount of vertical offset below the mouse pointer to place
     // the upper left of the drop hint tooltip
     private static final int DROP_HINT_VERTICAL_OFFSET = 20;
 
+    /**
+     * @param viewer
+     */
     public DefaultDropLocationStrategy(EditPartViewer viewer) {
         super(viewer);
     }
 
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.pagedesigner.viewer.AbstractDropLocationStrategy#calculateDesignPosition(org.eclipse.gef.EditPart, org.eclipse.draw2d.geometry.Point, org.eclipse.jst.pagedesigner.validation.caret.IPositionMediator)
+     */
+    @Override
     public DesignPosition calculateDesignPosition(EditPart host, Point p,
             IPositionMediator validator) {
         return EditPartPositionHelper.findEditPartPosition(
                 host, p, validator);
     }
 
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.pagedesigner.viewer.AbstractDropLocationStrategy#showTargetFeedback(org.eclipse.gef.EditPart, org.eclipse.jst.pagedesigner.viewer.DesignPosition, org.eclipse.gef.requests.DropRequest)
+     */
+    @Override
     public List showTargetFeedback(EditPart host, DesignPosition position, DropRequest request) 
     {
         List feedback = new ArrayList(4);
@@ -55,6 +71,10 @@
 
     
     
+    /**
+     * @param rect
+     * @return the default rectangle figure for the requested visual rectangle
+     */
     protected final RectangleFigure showFeedbackRect(Rectangle rect) {
         RectangleFigure pf = createFeedbackFigure();
         pf.translateToRelative(rect);
@@ -62,6 +82,11 @@
         return pf;
     }
     
+    /**
+     * @param position
+     * @return the bounding rectangle for the caret at the current
+     * position in absolute coords
+     */
     protected Rectangle createCaretBounds(DesignPosition position)
     {
         Rectangle rect = EditPartPositionHelper
@@ -73,6 +98,9 @@
         return rect;
     }
     
+    /**
+     * @return the newly created feedback figure
+     */
     protected RectangleFigure createFeedbackFigure() 
     {
         RectangleFigure feedbackFigure = new RectangleFigure();
@@ -90,6 +118,9 @@
      * Shows a label in a position relative to the drop marker
      * that hints where the new component will be dropped in
      * respect of components already there
+     * @param mousePosition 
+     * @param position 
+     * @return the drop hint label
      */
     protected final Label showDropHintLabel(Point mousePosition, DesignPosition position)
     {
@@ -128,6 +159,10 @@
         return dropHintLabel;
     }
     
+    /**
+     * @param position
+     * @return the drop hint text for the current position
+     */
     protected String getDropHintText(DesignPosition position)
     {
         StringBuffer buffer = new StringBuffer("Place");
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java
index 3e10f32..237c656 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java
@@ -21,6 +21,9 @@
  * @author mengbo
  */
 public class DesignPosition {
+	/**
+	 * a singleton that can be used as an invalid position
+	 */
 	public static final DesignPosition INVALID = new DesignPosition(null, -1);
 
 	private EditPart _containerPart;
@@ -41,12 +44,15 @@
 	/**
 	 * if _containerPart is null, means it is invalid
 	 * 
-	 * @return
+	 * @return the container edit part
 	 */
 	public EditPart getContainerPart() {
 		return _containerPart;
 	}
 
+	/**
+	 * @return the container node
+	 */
 	public Node getContainerNode() {
 		if (_containerPart != null) {
 			return (Node) _containerPart.getModel();
@@ -57,12 +63,15 @@
 	/**
 	 * if offset < 0, means it is invalid.
 	 * 
-	 * @return
+	 * @return the offset
 	 */
 	public int getOffset() {
 		return _offset;
 	}
 
+	/**
+	 * @return true if the design position is valid
+	 */
 	public boolean isValid() {
 		return (_containerPart != null) && (_offset >= 0);
 	}
@@ -71,7 +80,9 @@
 	 * This method should not be called when is text node.
 	 * 
 	 * @param forward
-	 * @return
+	 * @return the sibling part one to right in the tree if 
+	 * forward == true, one to the left if forward == false.  May
+	 * return null if position is invalid or there is no valid sibling.
 	 */
 	public EditPart getSiblingEditPart(boolean forward) {
 		if (!isValid()) {
@@ -92,7 +103,7 @@
 	 * factory method
 	 * 
 	 * @param part
-	 * @return
+	 * @return a design position one before part
 	 */
 	public static DesignPosition createPositionBeforePart(EditPart part) {
 		EditPart parent = part.getParent();
@@ -108,7 +119,7 @@
 	 * factory method
 	 * 
 	 * @param part
-	 * @return
+	 * @return the design position for one after part
 	 */
 	public static DesignPosition createPositionAfterPart(EditPart part) {
 		EditPart parent = part.getParent();
@@ -126,6 +137,11 @@
 	 * @see java.lang.Object#equals(java.lang.Object)
 	 */
 	public boolean equals(Object obj) {
+	    if (obj == this)
+	    {
+	        return true;
+	    }
+	    
 		if (obj instanceof DesignPosition) {
 			DesignPosition p = (DesignPosition) obj;
 
@@ -136,10 +152,15 @@
 		return false;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
+	
+	@Override
+    public int hashCode() {
+	    return System.identityHashCode(_containerPart) ^ System.identityHashCode(Integer.valueOf(_offset));
+    }
+
+	/**
+	 * @param buffer
+	 * @return the buffer with the debug dump
 	 */
 	public StringBuffer debugDump(StringBuffer buffer) {
 //		try {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRange.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRange.java
index 468defa..a4a0939 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRange.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRange.java
@@ -16,33 +16,37 @@
 /**
  * @author mengbo
  */
-public class DesignRange implements ISelection {
-	public DesignPosition _start;
+public class DesignRange implements ISelection 
+{
+    private final DesignPosition _start;
+    private final DesignPosition _end;
 
-	public DesignPosition _end;
-
+	/**
+	 * @param start
+	 * @param end
+	 */
 	public DesignRange(DesignPosition start, DesignPosition end) {
 		_start = start;
 		_end = end;
 	}
 
+	/**
+	 * @return the start position in the range
+	 */
 	public DesignPosition getStartPosition() {
 		return _start;
 	}
 
+	/**
+	 * @return the end position in the range
+	 */
 	public DesignPosition getEndPosition() {
 		return _end;
 	}
 
-	// public boolean isCollapsed()
-	// {
-	// }
-
-	// public boolean fullyContains(EditPart part)
-	// {
-	//        
-	// }
-
+	/**
+	 * @return true if the range is valid
+	 */
 	public boolean isValid() {
 		return _start != null && _start.isValid() && _end != null
 				&& _end.isValid();
@@ -58,6 +62,10 @@
 		return !isValid() || _start.equals(_end);
 	}
 
+	/**
+	 * @param buffer
+	 * @return a buffer with the debug dum
+	 */
 	public StringBuffer debugDump(StringBuffer buffer) {
 		if (_start != null) {
 			buffer.append("Start: ").append(_start);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRefPosition.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRefPosition.java
index d02733f..da6e305 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRefPosition.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignRefPosition.java
@@ -23,7 +23,7 @@
 
 	/**
 	 * @param part
-	 * @param offset
+	 * @param caretIsAfter
 	 */
 	public DesignRefPosition(EditPart part, boolean caretIsAfter) {
 		super(part.getParent(), 0);
@@ -33,6 +33,9 @@
 		_caretIsAtRight = caretIsAfter;
 	}
 
+	/**
+	 * @return the reference edit part
+	 */
 	public EditPart getRefPart() {
 		return _refPart;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
index 0e88f0c..423b6df 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
@@ -531,29 +531,29 @@
 	 * @return
 	 */
 	private static EditPart tryTwoWays(DesignPosition position,
-			List caretRefResult) {
+			List<Boolean> caretRefResult) {
 		EditPart result = null;
 		// Sibling first:
 		Node node = EditModelQuery.getInstance().getSibling(
 				DOMPositionHelper.toDOMPosition(position), true);
 		if (node != null && !EditModelQuery.isTransparentText(node)) {
 			result = Target.resolvePart(node);
-			caretRefResult.add(new Boolean(false));
+			caretRefResult.add(Boolean.FALSE);
 		} else {
 			node = EditModelQuery.getInstance().getSibling(
 					DOMPositionHelper.toDOMPosition(position), false);
 			if (node != null && !EditModelQuery.isTransparentText(node)) {
 				result = Target.resolvePart(node);
-				caretRefResult.add(new Boolean(true));
+				caretRefResult.add(Boolean.TRUE);
 			}
 		}
 		if (result == null) {
 			if (getConcretePart(position, false) != null) {
 				result = getConcretePart(position, false);
-				caretRefResult.add(new Boolean(true));
+				caretRefResult.add(Boolean.TRUE);
 			} else if (getConcretePart(position, true) != null) {
 				result = getConcretePart(position, true);
-				caretRefResult.add(new Boolean(false));
+				caretRefResult.add(Boolean.FALSE);
 			}
 		}
 		return result;
@@ -564,13 +564,13 @@
 	 * still need to improve whitespace tags's layout furthure more.
 	 */
 	private static EditPart getNextConcretPart(DesignPosition position,
-			List caretIsAtRightTest) {
+			List<Boolean> caretIsAtRightTest) {
 		EditPart result = null;
 		boolean caretIsAtRight = true;
 		if (position instanceof DesignRefPosition) {
 			caretIsAtRight = ((DesignRefPosition) position).caretIsAtRight();
 			result = ((DesignRefPosition) position).getRefPart();
-			caretIsAtRightTest.add(new Boolean(caretIsAtRight));
+			caretIsAtRightTest.add(Boolean.valueOf(caretIsAtRight));
 		}
 		if (result == null
 				|| EditModelQuery.isTransparentText(Target.resolveNode(result))) {
@@ -637,13 +637,13 @@
 	}
 
 	private static Rectangle getRefRect(DesignPosition position) {
-		List caretLocation = new ArrayList();
+		List<Boolean> caretLocation = new ArrayList<Boolean>();
 		EditPart part = getNextConcretPart(position, caretLocation);
 		LayoutPart layoutPart;
 		Rectangle rect = null;
 		if (part != null) {
 			layoutPart = new LayoutPart(part, null);
-			boolean caretIsAtRight = ((Boolean) caretLocation.get(0))
+			boolean caretIsAtRight = caretLocation.get(0)
 					.booleanValue();
 			final int CARET_OFFSET = 1;
 			Rectangle bounds = null;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/FlowBoxLine.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/FlowBoxLine.java
index bfc0e12..5e45ac1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/FlowBoxLine.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/FlowBoxLine.java
@@ -14,6 +14,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.draw2d.geometry.Point;
@@ -54,6 +55,11 @@
 
 	private Point _point;
 
+	/**
+	 * @param rect
+	 * @param validator
+	 * @param point
+	 */
 	public FlowBoxLine(Rectangle rect, IPositionMediator validator, Point point) {
 		_x = rect.x;
 		_y = rect.y;
@@ -91,14 +97,25 @@
 		return _y;
 	}
 
-	public HashMap getPartsList() {
+	/**
+	 * @return the part list
+	 */
+	public Map getPartsList() {
 		return _parts;
 	}
 
+	/**
+	 * @return the right bottom coordiate
+	 */
 	public Point getRightBottom() {
 		return new Point(_x + _width, _y + _height);
 	}
 
+	/**
+	 * @param part
+	 * @param point
+	 * @return layout part added
+	 */
 	public boolean addLayoutPart(EditPart part, Point point) {
 		Assert.isTrue(part != null && point != null);
 		Rectangle rect = null;
@@ -127,24 +144,45 @@
 		return true;
 	}
 
+	/**
+	 * @param lPart
+	 * @return true if layout part is within the right bottom corner of the line
+	 */
 	public boolean interact(LayoutPart lPart) {
 		Rectangle rect = lPart.getAbsoluteBounds();
 		return !(rect.getBottom().y <= _y || getRightBottom().y <= rect.y);
 	}
 
+	/**
+	 * @param part
+	 * @return true if the line contains part
+	 */
 	public boolean contains(EditPart part) {
 		return _parts.containsKey(part);
 	}
 
+	/**
+	 * @param part
+	 * @return true if the line contains part
+	 */
 	public boolean contains(LayoutPart part) {
 		return _parts.containsValue(part);
 	}
 
+	/**
+	 * @param part
+	 * @return the layout part for part
+	 */
 	public LayoutPart getLayoutPart(EditPart part) {
 		return (LayoutPart) _parts.get(part);
 	}
 
-	// For vertical movement, we need to see if there is part cover p.x.
+	// 
+	/**
+	 * For vertical movement, we need to see if there is part cover p.x.
+	 * 
+	 * @return the closest edit part
+	 */
 	public EditPart getClosestPart() {
 		if (_parts.isEmpty()) {
 			return null;
@@ -187,6 +225,9 @@
 		return lineYOffset > partYOffset;
 	}
 
+	/**
+	 * @return the bounding rectangle of the line
+	 */
 	public Rectangle getBounds() {
 		return new Rectangle(_x, _y, _width, _height);
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewer.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewer.java
index ed7082f..7080136 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewer.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewer.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.viewer;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.draw2d.FigureCanvas;
@@ -47,27 +48,22 @@
  * 
  * @author mengbo
  */
-public class HTMLGraphicalViewer extends ScrollingGraphicalViewer implements
+/*package*/ class HTMLGraphicalViewer extends ScrollingGraphicalViewer implements
 		IHTMLGraphicalViewer, CaretPositionTracker {
 	private IEditorPart _parentPart;
-
 	private Caret _caret;
-
 	// initially nothing selected, treat as object selectin mode.
 	private boolean _rangeMode = false;
-
 	private DesignRange _selectionRange = null;
-
 	private int _inBatch = 0;
-
-	private CaretUpdater _caretUpdater = null;
-
+	private final CaretUpdater _caretUpdater;
 	private int _xOffset;
-
+	private final List<IHTMLGraphicalViewerListener>  _htmlViewerListeners;
 	// private ListenerList _postSelectionChangedListeners = new
 	// ListenerList(1);
 
 	/**
+	 * @param parent 
 	 * 
 	 */
 	public HTMLGraphicalViewer(IEditorPart parent) {
@@ -75,14 +71,36 @@
 		// CaretUpdater is not fully initialized yet, since this time the
 		// viewport is not
 		// initialized yet, and we need add listener to range model change.
+        _htmlViewerListeners = new ArrayList<IHTMLGraphicalViewerListener>();
 		_caretUpdater = new CaretUpdater(this);
 	}
 
 	/**
-	 * @return Returns the _caretUpdater.
+	 * Adds listener both as a selection changed listener and as an
+	 * {@link IHTMLGraphicalViewerListener}.  Callers of this method
+	 * need not call addSelectionChangedListener.
+	 * @param listener
 	 */
-	public CaretUpdater getCaretUpdater() {
-		return _caretUpdater;
+	public void addHTMLViewerListener(IHTMLGraphicalViewerListener listener)
+	{
+	    addSelectionChangedListener(listener);
+	    
+	    if (!_htmlViewerListeners.contains(listener))
+	    {
+	        _htmlViewerListeners.add(listener);
+	    }
+	}
+	
+	/**
+	 * Removes listener both as a selection changed listener and as an
+     * {@link IHTMLGraphicalViewerListener}.  Callers of this method
+     * need not call removeSelectionChangedListener.
+	 * @param listener
+	 */
+	public void removeHTMLViewerListener(IHTMLGraphicalViewerListener listener)
+	{
+	    removeSelectionChangedListener(listener);
+	    _htmlViewerListeners.remove(listener);
 	}
 
 	public Viewport getViewport() {
@@ -102,6 +120,9 @@
         return null;
 	}
 
+	/**
+	 * @return the status line manager
+	 */
 	public IStatusLineManager getStatusLineManager() {
 		if (_parentPart == null) {
 			return null;
@@ -127,7 +148,7 @@
 	/**
 	 * this method normally should only be called when in object selection mode.
 	 * 
-	 * @return
+	 * @return the edit part that has primary selection or null if none
 	 */
 	public EditPart getPrimarySelectedNode() {
 		List list = this.getSelectedEditParts();
@@ -218,26 +239,26 @@
 	 * 
 	 */
 	private void fireSelectionAboutToChange() {
-		Object listeners[] = selectionListeners.toArray();
-		for (int i = 0, n = selectionListeners.size(); i < n; i++) {
-			if (listeners[i] instanceof IHTMLGraphicalViewerListener) {
-				IHTMLGraphicalViewerListener l = (IHTMLGraphicalViewerListener) listeners[i];
-				l.selectionAboutToChange();
-			}
+		IHTMLGraphicalViewerListener listeners[] = 
+		    _htmlViewerListeners.toArray(new IHTMLGraphicalViewerListener[0]);
+
+		for (int i = 0; i < listeners.length; i++) 
+		{
+			listeners[i].selectionAboutToChange();
 		}
 	}
 
 	/**
 	 * 
 	 */
-	private void fireSelectionChangeFinished() {
-		Object listeners[] = selectionListeners.toArray();
-		for (int i = 0, n = selectionListeners.size(); i < n; i++) {
-			if (listeners[i] instanceof IHTMLGraphicalViewerListener) {
-				IHTMLGraphicalViewerListener l = (IHTMLGraphicalViewerListener) listeners[i];
-				l.selectionChangeFinished();
-			}
-		}
+	private void fireSelectionChangeFinished()
+	{
+        IHTMLGraphicalViewerListener listeners[] = 
+            _htmlViewerListeners.toArray(new IHTMLGraphicalViewerListener[0]);
+        for (int i = 0; i < listeners.length; i++) 
+        {
+            listeners[i].selectionChangeFinished();
+        }
 	}
 
 	/*
@@ -273,10 +294,9 @@
 		// else we don't support, ignore
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#setSelection(org.eclipse.jface.viewers.ISelection)
+
+	/**
+	 * @param newSelection
 	 */
 	public void updateRangeSelection(ISelection newSelection) {
 		if (newSelection instanceof IStructuredSelection && //
@@ -474,6 +494,9 @@
 		this._xOffset = xoffset;
 	}
 
+	/**
+	 * 
+	 */
 	public void updateHorizontalPos() {
 		Caret caret = getCaret();
 		if (caret != null && !caret.isDisposed() && isInRangeMode()) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewerListenenerAdapter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewerListenenerAdapter.java
new file mode 100644
index 0000000..11e2c33
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/HTMLGraphicalViewerListenenerAdapter.java
@@ -0,0 +1,26 @@
+package org.eclipse.jst.pagedesigner.viewer;
+
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+
+/**
+ * @author cbateman
+ * 
+ * Default adapter class for IHTMLGraphicalViewerListener
+ *
+ */
+public abstract class HTMLGraphicalViewerListenenerAdapter implements
+        IHTMLGraphicalViewerListener {
+
+    public void selectionAboutToChange() {
+        // do nothing -- override to implement
+    }
+
+    public void selectionChangeFinished() {
+        // do nothing -- override to implement
+    }
+
+    public void selectionChanged(SelectionChangedEvent event) {
+        // do nothing == override to implement
+    }
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewer.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewer.java
index 44e8452..6ee3ce4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewer.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewer.java
@@ -13,24 +13,56 @@
 
 import org.eclipse.draw2d.Viewport;
 import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.widgets.Caret;
+import org.eclipse.ui.IEditorPart;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
 /**
  * @author mengbo
  */
-public interface IHTMLGraphicalViewer extends GraphicalViewer {
+public interface IHTMLGraphicalViewer extends GraphicalViewer 
+{
+    /**
+     * Factory for IHTMLGraphicalViewers
+     *
+     */
+    static class Factory
+    {
+        /**
+         * @param part 
+         * @return a new graphical viewer for part
+         */
+        public static IHTMLGraphicalViewer createGraphicalViewer(IEditorPart part)
+        {
+            return new HTMLGraphicalViewer(part);
+        }
+    }
+
+	/**
+	 * @return the dom model
+	 */
 	public IDOMModel getModel();
 
+	/**
+	 * ensure we are in range selection mode
+	 */
 	public void ensureRangeSelectionMode();
 
+	/**
+	 * 
+	 */
 	public void ensureObjectSelectionMode();
 
 	/**
-	 * @return
+	 * @return true if in range mode
 	 */
 	public boolean isInRangeMode();
 
+	/**
+	 * @return the current selection range
+	 */
 	public DesignRange getRangeSelection();
 
 	/**
@@ -44,6 +76,9 @@
 	 */
 	public void setRangeEndPosition(DesignPosition position);
 
+	/**
+	 * @return the caret
+	 */
 	public Caret getCaret();
 
 	/**
@@ -59,5 +94,46 @@
 	 */
 	public void selectionChanged();
 
+	/**
+	 * @return the view port
+	 */
 	public Viewport getViewport();
+	
+	/**
+	 * @return the status line manager
+	 */
+	public IStatusLineManager getStatusLineManager();
+	
+	/**
+	 * @param newSelection
+	 */
+	public void updateRangeSelection(ISelection newSelection);
+	
+	/**
+	 * Update the horizontal position
+	 */
+	public void updateHorizontalPos();
+
+	/**
+	 * Clear the selection to null. When the model is modified, the selection is
+     * invalid, so we need to clear the selection. We change the selection
+     * directly, it won't need to fire selectionchange event to other part.
+     */
+	public void clearSelectionRange();
+
+	/**
+     * Adds listener both as a selection changed listener and as an
+     * {@link IHTMLGraphicalViewerListener}.  Callers of this method
+     * need not call addSelectionChangedListener.
+     * @param listener
+     */
+    public void addHTMLViewerListener(IHTMLGraphicalViewerListener listener);
+    
+    /**
+     * Removes listener both as a selection changed listener and as an
+     * {@link IHTMLGraphicalViewerListener}.  Callers of this method
+     * need not call removeSelectionChangedListener.
+     * @param listener
+     */
+    public void removeHTMLViewerListener(IHTMLGraphicalViewerListener listener);
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewerListener.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewerListener.java
index 6d16c47..0d48ca9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewerListener.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/IHTMLGraphicalViewerListener.java
@@ -17,7 +17,14 @@
  * @author mengbo
  */
 public interface IHTMLGraphicalViewerListener extends ISelectionChangedListener {
+	/**
+	 * Fired before selection changes
+	 */
 	public void selectionAboutToChange();
 
+	/**
+	 * Fired after selection changed listeners have all been processed
+	 * for a change
+	 */
 	public void selectionChangeFinished();
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/LayoutPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/LayoutPart.java
index 28c74de..15b3998 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/LayoutPart.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/LayoutPart.java
@@ -38,7 +38,7 @@
 /**
  * @author mengbo
  */
-public class LayoutPart {
+public final  class LayoutPart {
 	private final static int MAX_OFFSET_TO_EDGE = 10;
 
 	private EditPart _part;
@@ -96,8 +96,7 @@
 	/**
 	 * Try to get the closest flowbox absolute bounds.
 	 * 
-	 * @param point
-	 * @return
+	 * @return the bounding rectangle
 	 */
 	public Rectangle getAbsoluteBounds() {
 		Rectangle bounds = null;
@@ -111,8 +110,8 @@
 	/**
 	 * Get box's absolute bounds.
 	 * 
-	 * @param point
-	 * @return
+	 * @param box
+	 * @return the box's bounding rectangle
 	 */
 	public Rectangle getAbsoluteBounds(FlowBox box) {
 		if (box != null) {
@@ -180,12 +179,15 @@
 	 * The point is whitin the bounds of the figure.
 	 * 
 	 * @param point
-	 * @return
+	 * @return true if point is the absolute bounds of this
 	 */
 	public boolean contains(Point point) {
 		return getAbsoluteBounds().contains(point);
 	}
 
+	/**
+	 * @return the design position
+	 */
 	public DesignPosition resolveTextPosition() {
 		DesignPosition result = null;
 		if (_part instanceof TextEditPart
@@ -208,16 +210,18 @@
 		return result;
 	}
 
+	/**
+	 * @param validator
+	 * @return resolve the design position using validator
+	 */
 	public DesignPosition resolvePosition(IPositionMediator validator) {
 		DesignPosition result;
 		if ((result = resolveTextPosition()) == null) {
-			boolean atPointLeft = false;
-			boolean atPointRight = false;
-			atPointLeft = isBeforePoint(_point);
-			atPointRight = isAfterPoint(_point);
-			if (!(atPointLeft ^ atPointRight)) {
-			    // TODO: and...?
-			}
+			boolean atPointLeft = isBeforePoint(_point);
+//			boolean atPointRight = isAfterPoint(_point);
+//			if (atPointLeft == atPointRight) {
+//			    // TODO: and...?
+//			}
 			Target target = new Target(getPart());
 			if (validator.isValidPosition(new DOMRefPosition(target.getNode(),
 					atPointLeft))) {
@@ -242,7 +246,7 @@
 //		return ((GraphicalEditPart) _part).getFigure();
 //	}
 
-	public boolean isAfterPoint(Point point) {
+	private boolean isAfterPoint(Point point) {
 		boolean result = false;
 		FlowBox flowBox = getLine(0);
 		if (IHTMLConstants.TAG_BR.equalsIgnoreCase(Target.resolveNode(_part)
@@ -273,14 +277,7 @@
 
 	}
 
-	/**
-	 * EditPart is at point's left
-	 * 
-	 * @param part
-	 * @param point
-	 * @return
-	 */
-	public boolean isBeforePoint(Point point) {
+	/*package*/ boolean isBeforePoint(Point point) {
 		boolean result = false;
 		FlowBox flowBox = getLastLine();
 		if (flowBox != null) {
@@ -305,11 +302,11 @@
 		// return !isAfterPoint(point);
 	}
 
-	public boolean isBeforePoint() {
+	/*package*/ boolean isBeforePoint() {
 		return isBeforePoint(_point);
 	}
 
-	public boolean atLeftPart(Point point) {
+	/*package*/ boolean atLeftPart(Point point) {
 		FlowBox flowBox = getBox();
 		if (flowBox != null) {
 			Rectangle boxRect = getAbsoluteBounds(flowBox);
@@ -318,21 +315,22 @@
 		return true;
 	}
 
-	public boolean isAfterPoint() {
+	/*package*/ boolean isAfterPoint() {
 		return isAfterPoint(_point);
 	}
 
-	public boolean atSameLine(Point point) {
-		Rectangle bounds = getAbsoluteBounds();
-		return bounds.contains(bounds.getTop().x, point.y);
-	}
+	// TODO: dead but possibly useful?
+//	private boolean atSameLine(Point point) {
+//		Rectangle bounds = getAbsoluteBounds();
+//		return bounds.contains(bounds.getTop().x, point.y);
+//	}
 
-	public boolean atSameRow(Point point) {
+	/*package*/ boolean atSameRow(Point point) {
 		Rectangle bounds = getAbsoluteBounds();
 		return bounds.contains(point.x, bounds.getRight().y);
 	}
 
-	public static Rectangle getBounds(FlowBox box) {
+	/*package*/ static Rectangle getBounds(FlowBox box) {
 		return new Rectangle(box._x, box._y, box.getWidth(), box.getHeight());
 	}
 
@@ -383,13 +381,11 @@
 
 	/**
 	 * To search for none empty string, this is not final.
+	 * @param part 
+	 * @return the edit part
 	 * 
-	 * @param lineBox
-	 * @param host
-	 * @param rect
-	 * @param validator
 	 */
-	public static EditPart getConcretePart(EditPart part) {
+	/*package*/ static EditPart getConcretePart(EditPart part) {
 		if (part != null) {
 			Node node = Target.resolveNode(part);
 			Node child = node.getFirstChild();
@@ -407,16 +403,19 @@
 
 	/**
 	 * To search for none empty string, this is not final.
+	 * Equivalent to getConcretePart(getPart())
 	 * 
-	 * @param lineBox
-	 * @param host
-	 * @param rect
-	 * @param validator
+	 * @return the edit part
+	 * 
 	 */
 	public EditPart getConcretePart() {
 		return getConcretePart(_part);
 	}
 
+	/**
+	 * @param node
+	 * @return the node
+	 */
 	public static Node getConcreteNode(Node node) {
 		if (node != null) {
 			Node child = node.getFirstChild();
@@ -430,6 +429,9 @@
 		return null;
 	}
 
+	/**
+	 * @return true if is close to edge
+	 */
 	public boolean isCloseToEdgeFromOutSide() {
 		boolean result = false;
 		if (EditModelQuery.isBlockNode(Target.resolveNode(_part))) {
@@ -449,7 +451,10 @@
 		return getAbsoluteBounds().getTop().y >= _point.y;
 	}
 
-	public boolean isInline() {
+	/**
+	 * @return tru if getPart() is considered inline
+	 */
+	/*package*/ boolean isInline() {
 		return EditModelQuery.isInline(Target.resolveNode(_part));
 	}
 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/TextPosition.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/TextPosition.java
index a88c86b..46850b4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/TextPosition.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/TextPosition.java
@@ -39,7 +39,7 @@
 	/**
 	 * if _containerPart is null, means it is invalid
 	 * 
-	 * @return
+	 * @return the text node
 	 */
 	public IDOMText getTextNode() {
 		return _containerNode;
@@ -48,12 +48,15 @@
 	/**
 	 * if offset < 0, means it is invalid.
 	 * 
-	 * @return
+	 * @return the offset
 	 */
 	public int getOffset() {
 		return _offset;
 	}
 
+	/**
+	 * @return if this position is considered valid
+	 */
 	public boolean isValid() {
 		return _containerNode != null && _offset >= 0;
 	}
@@ -71,4 +74,14 @@
 		}
 		return false;
 	}
+
+    @Override
+    public int hashCode() 
+    {
+        // match hash code to equals criteria
+        return System.identityHashCode(getTextNode()) 
+                ^ System.identityHashCode(Integer.valueOf(getOffset()));
+    }
+	
+	
 }