Use IFile, rather than IProject, for metadata context wherever possible
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 6f94328..52d62f8 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
@@ -15,7 +15,8 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jst.jsf.common.metadata.Trait;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
 import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
@@ -56,19 +57,16 @@
     public List getPropertyValue(final String key) 
     {
         final DOMContextResolver domResolver = new DOMContextResolver(_context);
-        final WorkspaceContextResolver wsResolver = new WorkspaceContextResolver(_context);
         final ITaglibContextResolver  tagResolver =
             _factory.getTaglibContextResolverFromDelegates(_context);
         final Node curNode = domResolver.getNode();
-        
+        final IMetaDataDomainContext mdContext = getMDContext(_context);
         if (curNode instanceof Attr)
         {
             final Attr attribute = (Attr) curNode;
             final Element  element = attribute.getOwnerElement();
             final String uri = tagResolver.getTagURIForNodeName(element);
-            final IProject project = wsResolver.getProject();
-            
-    		final IMetaDataDomainContext mdContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);			
+            			
     		final ITaglibDomainMetaDataQuery query = (ITaglibDomainMetaDataQuery)MetaDataQueryFactory.getInstance().createQuery(mdContext);
             final Trait trait = query.getQueryHelper().getTrait(uri, element.getLocalName()+"/"+attribute.getLocalName(),  key); //$NON-NLS-1$
 //            final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
@@ -83,9 +81,7 @@
         {
             final Element  element = (Element) curNode;
             final String uri = tagResolver.getTagURIForNodeName(element);
-            final IProject project = wsResolver.getProject();
             
-    		final IMetaDataDomainContext mdContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);			
     		final ITaglibDomainMetaDataQuery query = (ITaglibDomainMetaDataQuery)MetaDataQueryFactory.getInstance().createQuery(mdContext);
     		final Trait trait = query.getQueryHelper().getTrait(uri, element.getLocalName(),  key);
 //            final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
@@ -99,7 +95,19 @@
         return Collections.EMPTY_LIST;
     }
 
-    public boolean canResolveContext(IModelContext modelContext) {
+    private IMetaDataDomainContext getMDContext(
+			final IStructuredDocumentContext context) {
+
+        final WorkspaceContextResolver wsResolver = new WorkspaceContextResolver(context);
+        final IResource res = wsResolver.getResource();
+        if (res instanceof IFile)
+        	return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext((IFile)res);
+
+        return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(wsResolver.getProject());
+
+	}
+
+	public boolean canResolveContext(IModelContext modelContext) {
         return (modelContext.getAdapter(IStructuredDocumentContext.class) != 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 17a792f..c30f379 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
@@ -21,7 +21,6 @@
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.resources.WorkspaceJob;
@@ -532,7 +531,7 @@
     {
         final SymbolContribAggregator  aggregator =
             SymbolContribAggregator.
-               create(_file.getProject(), uri, elementName, attribute.getLocalName());
+               create(_file, uri, elementName, attribute.getLocalName());
 
         if (aggregator != null)
         {
@@ -581,7 +580,7 @@
     @SuppressWarnings("deprecation")
     private void processSetsLocale(final String uri, final String elementName, Node attribute)
     {
-        LocaleSetAggregator  aggregator = LocaleSetAggregator.create(_file.getProject(), uri, elementName, attribute.getLocalName());
+        LocaleSetAggregator  aggregator = LocaleSetAggregator.create(_file, uri, elementName, attribute.getLocalName());
 
         if (aggregator != null)
         {
@@ -732,11 +731,11 @@
     {
         private final static String SETS_LOCALE = "sets-locale"; //$NON-NLS-1$
 
-        private static LocaleSetAggregator create(final IProject project,
+        private static LocaleSetAggregator create(final IFile file,
                                               final String uri,
                                               final String elementName, final String attributeName)
         {
-    		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+    		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
     		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
     		final Trait trait = query.getQueryHelper().getTrait(uri, elementName+"/"+attributeName, SETS_LOCALE); //$NON-NLS-1$
 //            final ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
@@ -771,13 +770,13 @@
          * @param attributeName
          * @return a new instance only if attributeName is a symbol contributor
          */
-        private static SymbolContribAggregator create(final IProject project,
+        private static SymbolContribAggregator create(final IFile file,
                                               final String uri,
                                               final String elementName,
                                               final String attributeName)
         {
             final String entityKey = elementName+"/"+attributeName; //$NON-NLS-1$
-    		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+    		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
     		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
     		final Entity entity = query.getQueryHelper().getEntity(uri, entityKey);
     		Trait trait = query.getQueryHelper().getTrait(entity, CONTRIBUTES_VALUE_BINDING);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
index c4da0a1..b2f9848 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
@@ -15,7 +15,9 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.jsf.common.metadata.Entity;
 import org.eclipse.jst.jsf.common.metadata.Trait;
@@ -39,6 +41,7 @@
 	private MetaDataContext mdContext;
 	private IStructuredDocumentContext sdContext;
 	private IProject 					_project;
+	private IFile _file;
 
 	
 	/* (non-Javadoc)
@@ -76,7 +79,14 @@
 		return _project;
 	}
 
-	
+	private IFile getFile(){
+		if (_file == null){
+			IResource res = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(sdContext).getResource();
+			if (res instanceof IFile)
+				_file = (IFile)res;
+		}
+		return _file;
+	}
 	//common metadata accessors
 	/**
 	 * Return the single expected String value for a given property.
@@ -126,12 +136,20 @@
 	}
 	private Trait getTraitForEntityUsingContext(final String traitName) {
 		//look for trait on given entity
-		final Entity entity = getMetaDataContext().getEntity();
-    	final  IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(getProject());
+		final Entity entity = getMetaDataContext().getEntity();		
+		final IMetaDataDomainContext modelContext = getMetaDataDomainContext();
 		final IMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(modelContext);
 		return query.getQueryHelper().getTrait(entity, traitName);
 	}
 
+	private IMetaDataDomainContext getMetaDataDomainContext() {
+		final IFile file = getFile();
+		if (file != null)
+			return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
+		
+		return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(getProject());
+	}
+
 	/**
 	 * @return small-icon name 
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
index a75486b..48e3a5a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
@@ -16,7 +16,9 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jst.jsf.common.dom.AttributeIdentifier;
 import org.eclipse.jst.jsf.common.metadata.Entity;
 import org.eclipse.jst.jsf.common.metadata.Trait;
@@ -92,7 +94,7 @@
 		
 		String attrKey = tagName + "/" + attributeName; //$NON-NLS-1$
 		
-    	final IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(getProject(sdContext));
+    	final IMetaDataDomainContext modelContext = getMetaDataDomainContext(sdContext);
 		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(modelContext);
 
 		Entity attrEntity = query.getQueryHelper().getEntity(uri, attrKey);
@@ -114,6 +116,17 @@
 		return project;
 	}
 
+	private IFile getFile(final IStructuredDocumentContext sdContext) {
+		IFile file = null;
+		if (sdContext != null) {
+			final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
+					.getWorkspaceContextResolver(sdContext);
+			final IResource res = resolver != null ? resolver.getResource() : null;
+			if (res instanceof IFile)
+				file = (IFile)res;
+		}
+		return file;
+	}
 	/**
 	 * A convenience method fully equivalent to:
 	 * 
@@ -148,9 +161,9 @@
 	public List<IMetaDataEnabledFeature> getAttributeValueRuntimeTypeFeatureProcessors(
 			final Class featureType, final IStructuredDocumentContext sdContext,
 			final Entity attrEntity) {
-
-	   	final IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(getProject(sdContext));
-		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(modelContext);
+		
+		final IMetaDataDomainContext modelContext 	= getMetaDataDomainContext(sdContext);
+		final ITaglibDomainMetaDataQuery query 		= MetaDataQueryFactory.getInstance().createQuery(modelContext);
 
 		Trait trait = query.findTrait(attrEntity,
 				ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
@@ -182,4 +195,13 @@
 		return Collections.unmodifiableList(retList);
 	}
 
+	private IMetaDataDomainContext getMetaDataDomainContext(
+			final IStructuredDocumentContext sdContext) {
+		final IFile file = getFile(sdContext);
+		if (file != null)
+			return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
+
+		return MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(getProject(sdContext));
+	}
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/strategy/ContainmentValidatingStrategy.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/strategy/ContainmentValidatingStrategy.java
index 1f0e9dc..d303b26 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/strategy/ContainmentValidatingStrategy.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/strategy/ContainmentValidatingStrategy.java
@@ -133,7 +133,7 @@
         final String tagName = elementAdapter.getLocalName();
         // final Element node = elementAdapter.
         
-		final IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(jsfValidationContext.getFile().getProject());
+		final IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(jsfValidationContext.getFile());
 		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(mdcontext);
 //        final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper
 //                .createMetaDataModelContext(jsfValidationContext.getFile()
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/common/MetadataTagImageManager.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/common/MetadataTagImageManager.java
index b2e7710..e207f4a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/common/MetadataTagImageManager.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/common/MetadataTagImageManager.java
@@ -12,7 +12,7 @@
 
 import java.util.Iterator;
 
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.jsf.common.dom.TagIdentifier;
 import org.eclipse.jst.jsf.common.metadata.Entity;
@@ -41,30 +41,30 @@
     private static final String TRAIT_ICON_LARGE = "large-icon"; //$NON-NLS-1$
 
     /**
-     * @param project
+     * @param file
      * @param tagId
      * @return small image using metadata. May be null.
      */
-    public Image getSmallIconImage(final IProject project, final TagIdentifier tagId)
+    public Image getSmallIconImage(final IFile file, final TagIdentifier tagId)
     {
-        return getSmallIconImage(project, tagId.getUri(), tagId.getTagName());
+        return getSmallIconImage(file, tagId.getUri(), tagId.getTagName());
     }
     
     /**
      * Returns small image using metadata and may be null. Caller should NOT
      * dispose the image, but should call TagImageManager's dispose(image)
      * 
-     * @param project
+     * @param file
      * @param nsUri
      * @param tagName
      * @return small image using metadata. May be null.
      */
-    public Image getSmallIconImage(final IProject project, final String nsUri,
+    public Image getSmallIconImage(final IFile file, final String nsUri,
             final String tagName)
     {
         Image image = null;
         
-		final IMetaDataDomainContext 		context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+		final IMetaDataDomainContext 		context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
 		final ITaglibDomainMetaDataQuery 	query = MetaDataQueryFactory.getInstance().createQuery(context);
 		
         final Model model = getModel(query, nsUri);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/ComponentMasterForm.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/ComponentMasterForm.java
index 568edba..117eafc 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/ComponentMasterForm.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/ComponentMasterForm.java
@@ -207,7 +207,7 @@
                         if (model != null)
                         {
                             image = _metadataIconManager.getSmallIconImage(
-                                    model.getProject(), tagId);
+                                    model.getFile(), tagId);
                         }
                     }
                 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java
index a39d445..29d9df7 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java
@@ -120,6 +120,11 @@
         return _project;
     }
 
+    public final IFile getFile()
+    {
+        return _file;
+    }
+    
     public final String getViewId()
     {
         final DTFacesContext facesContext = getFacesContext();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java
index bb218e5..6bc8871 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java
@@ -14,6 +14,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
@@ -117,7 +118,7 @@
                 if (context != null){   
                 	IWorkspaceContextResolver wsResolver  = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
                 	if (wsResolver != null){
-                		return TagImageManager.getInstance().getSmallIconImage(wsResolver.getProject(),ITLDConstants.URI_JSF_CORE, hostElement.getLocalName());
+                		return TagImageManager.getInstance().getSmallIconImage((IFile)wsResolver.getResource(),ITLDConstants.URI_JSF_CORE, hostElement.getLocalName());
                 	}
                 }
             }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfhtml/JSFHTMLConverterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfhtml/JSFHTMLConverterFactory.java
index 29a48e0..372d1e5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfhtml/JSFHTMLConverterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfhtml/JSFHTMLConverterFactory.java
@@ -14,6 +14,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
@@ -194,7 +195,7 @@
                 if (context != null){   
                 	IWorkspaceContextResolver wsResolver  = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
                 	if (wsResolver != null){
-                		return TagImageManager.getInstance().getSmallIconImage(wsResolver.getProject(),ITLDConstants.URI_JSF_HTML, hostElement.getLocalName());
+                		return TagImageManager.getInstance().getSmallIconImage((IFile)wsResolver.getResource(),ITLDConstants.URI_JSF_HTML, hostElement.getLocalName());
                 	}
                 }
             }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/JSPConverterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/JSPConverterFactory.java
index 5d1844f..8248c31 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/JSPConverterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/jsp/JSPConverterFactory.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.converter.jsp;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
@@ -92,7 +93,7 @@
                 if (context != null){                	
                 	IWorkspaceContextResolver wsResolver  = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
                 	if (wsResolver != null){
-                		return TagImageManager.getInstance().getSmallIconImage(wsResolver.getProject(),"JSP11", ITLDConstants.URI_JSP + ":"+hostElement.getLocalName()); //$NON-NLS-1$ //$NON-NLS-2$
+                		return TagImageManager.getInstance().getSmallIconImage((IFile)wsResolver.getResource(),"JSP11", ITLDConstants.URI_JSP + ":"+hostElement.getLocalName()); //$NON-NLS-1$ //$NON-NLS-2$
                 	}
                 }
             }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DefaultDTInfoFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DefaultDTInfoFactory.java
index fbd8e90..d18b9e6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DefaultDTInfoFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtmanager/DefaultDTInfoFactory.java
@@ -10,6 +10,7 @@
  *******************************************************************************/ 
 package org.eclipse.jst.pagedesigner.dtmanager;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jst.jsf.common.metadata.Trait;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
@@ -46,9 +47,9 @@
 		IDTInfo dtInfo = null;
 		final String nsURI = getURI(element);
 		if (nsURI != null) {
-			final IProject project = getProject(element);
-			if (project != null) {
-				final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+			final IFile file = getFile(element);
+			if (file != null) {
+				final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
 				final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
 				if (query != null) {
 					final Trait trait = query.getQueryHelper().getTrait(nsURI, element.getLocalName(), DTINFO_TRAIT_KEY);
@@ -103,4 +104,22 @@
 		return project;
 	}
 
+	/**
+	 * Gets the IFile of the specified
+	 * Element.
+	 * 
+	 * @param element Element instance.
+	 * @return IFile instance that contains the specified
+	 * Element.
+	 */
+	protected IFile getFile(final Element element) {
+		IFile file = null;
+		if (element instanceof IDOMNode) {
+			final IDOMModel model = ((IDOMNode)element).getModel();
+			if (model != null) {
+				file = StructuredModelUtil.getFileFor(model);
+			}
+		}
+		return file;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
index 375b52c..274c6d2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
@@ -13,6 +13,7 @@
 
 import java.util.Iterator;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.jsf.common.metadata.Entity;
@@ -70,38 +71,59 @@
 	
 	/**
 	 * Returns small image using metadata and may be null.  Caller should NOT dispose the image, but should call TagImageManager's dispose(image)
-	 * @param project
+	 * @param file
 	 * @param nsUri
 	 * @param tagName
 	 * @return small image using metadata.  May be null.
 	 */
+	public Image getSmallIconImage(IFile file, String nsUri, String tagName) {
+		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);			
+		return getImage(context, nsUri, tagName, true);
+	}
+	
+	/**
+	 * Returns small image using metadata and may be null.  Caller should NOT dispose the image, but should call TagImageManager's dispose(image)
+	 * @param project 
+	 * @param nsUri
+	 * @param tagName
+	 * @return small image using metadata.  May be null.
+	 * @deprecated - use file rather than project
+	 */
 	public Image getSmallIconImage(IProject project, String nsUri, String tagName) {
-		Image image = null;
-		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
-		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
-		Model model = getModel(query, nsUri);
-		if (model != null){
-			ImageDescriptor imgDesc = getSmallIconImageDescriptor(query, model, tagName);
-			image = getOrCreateImage(imgDesc);
-		}
-		
-		return image;
+		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);			
+		return getImage(context, nsUri, tagName, true);
 	}
 
 	/**
+	 * @param file
+	 * @param nsUri
+	 * @param tagName
+	 * @return large image using metadata.  May be null.
+	 */
+	public Image getLargeIconImage(IFile file, String nsUri, String tagName) {
+		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
+		return getImage(context, nsUri, tagName, false);
+	}
+	
+	/**
 	 * @param project
 	 * @param nsUri
 	 * @param tagName
 	 * @return large image using metadata.  May be null.
+	 * @deprecated - use file rather than project
 	 */
 	public Image getLargeIconImage(IProject project, String nsUri, String tagName) {
-		Image image = null;
 		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+		return getImage(context, nsUri, tagName, false);
+	}
+	
+	private Image getImage(final IMetaDataDomainContext context, final String nsUri, final String tagName, boolean getSmallImage) {
+		Image image = null;
 		final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
 		Model model = getModel(query, nsUri);
 		if (model != null){
-			ImageDescriptor imgDesc = getLargeIconImageDescriptor(query, model, nsUri);
-			image = getOrCreateImage(imgDesc);	
+			ImageDescriptor imgDesc = getIconImageDescriptor(query, model, tagName, getSmallImage);
+			image = getOrCreateImage(imgDesc);
 		}
 		
 		return image;
@@ -129,35 +151,9 @@
 	}
 	
 	private Model getModel(ITaglibDomainMetaDataQuery query, String nsUri) {
-		Model model =query.findTagLibraryModel(nsUri);
-		// no caching at this time so there is no need to listen to model notifications
-//		if (model != null && !hasAdapter(model))
-//			addAdapter(model);
-		return model;
+		return query.findTagLibraryModel(nsUri);		
 	}
 
-
-//	private void addAdapter(Model model) {
-//		if (model != null){			
-////			model.eAdapters().add(INSTANCE);  
-//		}		
-//	}
-//
-//	private boolean hasAdapter(Model model) {
-//		for(Adapter a : model.eAdapters()){
-//			if (a == INSTANCE)
-//				return true;
-//		}
-//		return false;
-//	}
-
-	private ImageDescriptor getSmallIconImageDescriptor(ITaglibDomainMetaDataQuery query, Model model, String tagName) {
-		return getIconImageDescriptor(query, model, tagName, true);
-	}
-	
-	private ImageDescriptor getLargeIconImageDescriptor(ITaglibDomainMetaDataQuery query, Model model, String tagName) {
-		return getIconImageDescriptor(query, model, tagName, false);
-	}
 	
 	private ImageDescriptor getIconImageDescriptor(ITaglibDomainMetaDataQuery query, Model model, String tagName, boolean small) {		
 		ImageDescriptor icon = null;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
index f061e11..9be6bce 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
@@ -13,6 +13,7 @@
 
 import java.util.List;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin;
 import org.eclipse.jst.jsf.common.ui.internal.utils.JSFSharedImages;
@@ -203,7 +204,7 @@
         if (context != null){   
         	IWorkspaceContextResolver wsResolver  = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
         	if (wsResolver != null){
-        		image = TagImageManager.getInstance().getSmallIconImage(wsResolver.getProject(),"HTML", element.getLocalName()); //$NON-NLS-1$
+        		image = TagImageManager.getInstance().getSmallIconImage((IFile)wsResolver.getResource(),"HTML", element.getLocalName()); //$NON-NLS-1$
         	}
         }
 		return image != null ? image : JSFUICommonPlugin.getDefault().getImage(
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/ObjectFigureHandler.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/ObjectFigureHandler.java
index 8dfeccd..f3d8a95 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/ObjectFigureHandler.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/ObjectFigureHandler.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.figurehandler;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jst.pagedesigner.editors.palette.TagImageManager;
 import org.w3c.dom.Element;
 
@@ -27,7 +28,8 @@
 	 */
 	protected void initializeImage(Element node) {
 		if (_image == null) {
-			_image = TagImageManager.getInstance().getSmallIconImage(null, "HTML", node.getTagName()); //$NON-NLS-1$
+			//FIXME - file/project should NOT be null!
+			_image = TagImageManager.getInstance().getSmallIconImage((IFile)null, "HTML", node.getTagName()); //$NON-NLS-1$
 		}
 	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
index 6fdf70b..b96a834 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
@@ -14,6 +14,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.jst.jsf.common.metadata.Entity;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
@@ -92,7 +93,7 @@
 			else
 				uri = "HTML"; //$NON-NLS-1$
 		}
-		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(wsresolver.getProject());
+		final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext((IFile)wsresolver.getResource());
 		_query = MetaDataQueryFactory.getInstance().createQuery(context);
 		return _query.getQueryHelper().getEntity(uri, _element.getLocalName());		
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
index 78a8d6d..53c91a1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
@@ -58,11 +58,19 @@
 		CellEditor ed = null;
 		if (IAttributeRuntimeValueType.RELATIVEPATH.equalsIgnoreCase(type)|| IAttributeRuntimeValueType.WEBPATH.equalsIgnoreCase(type)) {
 			IProject project = getProject(element);
+			final IFile file = getFile(element);
 			if (project != null) {
 //				String typeParam = TraitValueHelper.getValueAsString(TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(),"type-param"));
 				ResourceDialogCellEditor cellEditor = new ResourceDialogCellEditor(
 						parent);
-				final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+				
+				IMetaDataDomainContext context = null;
+				
+				if (file != null)
+					context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
+				else
+					context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+				
 				final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
 				Trait fileExt = query.findTrait(attr.getMetaDataContext().getEntity(), "file-extensions"); //$NON-NLS-1$
 				Trait separator = query.findTrait(attr.getMetaDataContext().getEntity(), "separator"); //$NON-NLS-1$
@@ -82,7 +90,7 @@
 					cellEditor.setSeparator(sep);
 
 				cellEditor.setProject(project);
-				cellEditor.setReferredFile(getFile(element));
+				cellEditor.setReferredFile(file);
 
 				if (IAttributeRuntimeValueType.WEBPATH.equalsIgnoreCase(type)) {
 					cellEditor.setWebPath(true);
@@ -149,7 +157,7 @@
 	 * 
 	 * @see org.eclipse.jst.pagedesigner.meta.NEWMDIAttributeCellEditorFactory#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor,
 	 *      org.w3c.dom.Element, org.w3c.dom.Element)
-	 */	
+	 */
 	public DialogField createDialogField(IPropertyPageDescriptor attr) {
 
 		String type = attr.getValueType();
@@ -163,6 +171,7 @@
 		if (IAttributeRuntimeValueType.RELATIVEPATH.equals(type) ||
 				IAttributeRuntimeValueType.WEBPATH.equals(type)) {
 			
+			//FIXME - should not be passing null project
 			final IMetaDataDomainContext context = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext((IProject)null);
 			final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(context);
 			Trait fileExt = query.findTrait(attr.getMetaDataContext().getEntity(), "file-extensions"); //$NON-NLS-1$
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributeGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributeGroup.java
index 6179b27..1a84809 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributeGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributeGroup.java
@@ -15,7 +15,7 @@
 import java.util.Arrays;
 import java.util.List;
 
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jst.jsf.common.metadata.Entity;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
@@ -157,8 +157,8 @@
 					String uri = _uri != null ? _uri : IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(context).getNode().getBaseURI();
 					String tagName = _tagName != null ? _tagName :  IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(context).getNode().getNodeName();
 					if (uri != null){
-						IProject project = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context).getProject();						
-						IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project); 
+						IFile file = (IFile)IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context).getResource();
+						IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file); 
 						ITaglibDomainMetaDataQuery _query = MetaDataQueryFactory.getInstance().createQuery(mdcontext);
 						_tagEntity = _query.getQueryHelper().getEntity(uri, tagName);
 					}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java
index 80deed4..4c90a35 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java
@@ -213,7 +213,7 @@
 		
 		if (ed.getEditorInput() instanceof FileEditorInput) {
 			final FileEditorInput input = (FileEditorInput)ed.getEditorInput();
-			final IMetaDataDomainContext mdContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(input.getFile().getProject());
+			final IMetaDataDomainContext mdContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(input.getFile());
 			return MetaDataQueryFactory.getInstance().createQuery(mdContext);
 		}
 		return null;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java
index a1d24ac..4c963f2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.utils;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
@@ -20,10 +21,6 @@
 import org.eclipse.jst.jsf.common.metadata.query.internal.MetaDataModelContext;
 import org.eclipse.jst.jsf.common.metadata.query.internal.MetaDataQueryContextFactory;
 import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.dom.IDOMPosition;
 import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData;
@@ -31,7 +28,6 @@
 import org.eclipse.jst.pagedesigner.itemcreation.CreationData;
 import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator;
 import org.eclipse.jst.pagedesigner.itemcreation.internal.TagCreationFactory;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.w3c.dom.Element;
 
@@ -111,16 +107,17 @@
     public static ITaglibDomainMetaDataModelContext getMetadataContext(
             final String uri, final IDOMModel model)
     {
-        final IStructuredDocument doc = model.getDocument()
-                .getStructuredDocument();
+//        final IStructuredDocument doc = model.getDocument()
+//                .getStructuredDocument();
+//
+//        final IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE
+//                .getContext(doc, -1);
+//        final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
+//                .getWorkspaceContextResolver(context);
+//
+//        final IProject project = resolver.getProject();
 
-        final IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE
-                .getContext(doc, -1);
-        final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
-                .getWorkspaceContextResolver(context);
-
-        final IProject project = resolver.getProject();
-
+    	final IProject project = StructuredModelUtil.getProjectFor(model);
         final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper
                 .createMetaDataModelContext(project, uri);
         return modelContext;
@@ -134,17 +131,8 @@
     public static IMetaDataModelContext getMetadataModelContext(
             final String uri, final IDOMModel model)
     {
-        final IStructuredDocument doc = model.getDocument()
-                .getStructuredDocument();
-
-        final IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE
-                .getContext(doc, -1);
-        final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
-                .getWorkspaceContextResolver(context);
-
-        final IProject project = resolver.getProject();
-
-        final IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(project);
+    	final IFile file = StructuredModelUtil.getFileFor(model);
+        final IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file);
 
         return new MetaDataModelContext(uri, modelContext);
     }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JSPUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JSPUtil.java
index a28d05f..6afd64b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JSPUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/JSPUtil.java
@@ -156,9 +156,11 @@
 	private static boolean isTagDir(final String uri, final IDOMModel model) {
 		final IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE.getContext(model.getStructuredDocument(), 0);
 		if (context != null) {
-			IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
-			if (resolver != null) {
-				final IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(resolver.getProject()); 
+			IFile file = StructuredModelUtil.getFileFor(model);
+//			IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context);
+//			if (resolver != null) {
+			if (file != null) {
+				final IMetaDataDomainContext mdcontext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(file); 
 				final ITaglibDomainMetaDataQuery query = MetaDataQueryFactory.getInstance().createQuery(mdcontext);
 				final Model m = query.findTagLibraryModel(uri);
 				final Trait t = query.findTrait(m, "isTagDir"); //$NON-NLS-1$