[jbosstools-commits] JBoss Tools SVN: r42745 - trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Thu Jul 26 19:17:26 EDT 2012


Author: dazarov
Date: 2012-07-26 19:17:26 -0400 (Thu, 26 Jul 2012)
New Revision: 42745

Modified:
   trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/JSPProblemMarkerResolutionGenerator.java
Log:
Make Quick Fix "Add tag library definition" work with KB Model instead of using plain tag library list https://issues.jboss.org/browse/JBIDE-12304

Modified: trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/JSPProblemMarkerResolutionGenerator.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/JSPProblemMarkerResolutionGenerator.java	2012-07-26 22:27:16 UTC (rev 42744)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/JSPProblemMarkerResolutionGenerator.java	2012-07-26 23:17:26 UTC (rev 42745)
@@ -12,6 +12,9 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
@@ -27,10 +30,13 @@
 import org.eclipse.wst.sse.ui.internal.reconcile.TemporaryAnnotation;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.quickfix.IQuickFixGenerator;
 import org.jboss.tools.common.refactoring.MarkerResolutionUtils;
 import org.jboss.tools.jst.web.kb.IKbProject;
 import org.jboss.tools.jst.web.kb.KbProjectFactory;
+import org.jboss.tools.jst.web.kb.PageContextFactory;
+import org.jboss.tools.jst.web.kb.internal.XmlContextImpl;
 import org.jboss.tools.jst.web.kb.internal.taglib.TLDLibrary;
 import org.jboss.tools.jst.web.kb.taglib.INameSpace;
 import org.jboss.tools.jst.web.kb.taglib.ITagLibrary;
@@ -93,15 +99,29 @@
 		if(prefix == null)
 			return new IJavaCompletionProposal[]{};
 		
+		IFile file = MarkerResolutionUtils.getFile();
+		if(file == null)
+			return new IJavaCompletionProposal[]{};
+		
+		ELContext context = PageContextFactory.createPageContext(file);
+		if(context instanceof XmlContextImpl){
+			 Map<String, List<INameSpace>> nameSpaces = ((XmlContextImpl) context).getNameSpaces(start);
+			 Iterator<List<INameSpace>> iterator = nameSpaces.values().iterator();
+			 while(iterator.hasNext()){
+				 List<INameSpace> list = iterator.next();
+				 for(INameSpace ns : list){
+					 if(prefix.equals(ns.getPrefix())){
+						 return new IJavaCompletionProposal[]{};
+					 }
+				 }
+			 }
+		}
+		
 		Object additionalInfo = ta.getAdditionalFixInfo();
 		if(additionalInfo instanceof IDocument){
 			IStructuredModel model = StructuredModelManager.getModelManager().getModelForRead((IStructuredDocument)additionalInfo);
 			IDOMDocument xmlDocument = (model instanceof IDOMModel) ? ((IDOMModel) model).getDocument() : null;
 			
-			IFile file = MarkerResolutionUtils.getFile();
-			if(file == null)
-				return new IJavaCompletionProposal[]{};
-			
 			IKbProject kbProject = KbProjectFactory.getKbProject(file.getProject(), true);
 			
 			ITagLibrary[] libraries = kbProject.getTagLibraries();
@@ -163,9 +183,22 @@
 		if(prefix == null)
 			return new IMarkerResolution[]{};
 		
-		
 		IFile file = (IFile)marker.getResource();
 		
+		ELContext context = PageContextFactory.createPageContext(file);
+		if(context instanceof XmlContextImpl){
+			 Map<String, List<INameSpace>> nameSpaces = ((XmlContextImpl) context).getNameSpaces(start);
+			 Iterator<List<INameSpace>> iterator = nameSpaces.values().iterator();
+			 while(iterator.hasNext()){
+				 List<INameSpace> list = iterator.next();
+				 for(INameSpace ns : list){
+					 if(prefix.equals(ns.getPrefix())){
+						 return new IMarkerResolution[]{};
+					 }
+				 }
+			 }
+		}
+		
 		IKbProject kbProject = KbProjectFactory.getKbProject(file.getProject(), true);
 		
 		ITagLibrary[] libraries = kbProject.getTagLibraries();



More information about the jbosstools-commits mailing list