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();