Author: scabanovich
Date: 2010-02-01 09:32:51 -0500 (Mon, 01 Feb 2010)
New Revision: 20050
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/resources/meta/facelet-taglib2.meta
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/helpers/converter/OpenTagLib.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5764
Modified: trunk/jsf/plugins/org.jboss.tools.jsf/resources/meta/facelet-taglib2.meta
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/resources/meta/facelet-taglib2.meta 2010-02-01
14:31:49 UTC (rev 20049)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/resources/meta/facelet-taglib2.meta 2010-02-01
14:32:51 UTC (rev 20050)
@@ -512,6 +512,9 @@
<XModelAttribute default="tag" loader="ElementType"
name="element type">
<Editor name="Uneditable"/>
</XModelAttribute>
+ <XModelAttributeReference
+ attributes="description,display-name,small-icon,large-icon"
+ entity="FileFaceletTaglib20" name="description"/>
<XModelAttribute PROPERTIES="save=always;id=true;category=general"
name="tag-name" xmlname="tag-name.#text"/>
<XModelAttribute TRIM="no" name="comment"
xmlname="#comment">
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/helpers/converter/OpenTagLib.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/helpers/converter/OpenTagLib.java 2010-02-01
14:31:49 UTC (rev 20049)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/helpers/converter/OpenTagLib.java 2010-02-01
14:32:51 UTC (rev 20050)
@@ -10,12 +10,18 @@
******************************************************************************/
package org.jboss.tools.jsf.model.helpers.converter;
+import org.eclipse.core.resources.IProject;
import org.eclipse.osgi.util.NLS;
import org.jboss.tools.common.model.*;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.common.model.util.FindObjectHelper;
import org.jboss.tools.jsf.messages.JSFUIMessages;
import org.jboss.tools.jsf.model.pv.*;
+import org.jboss.tools.jst.web.kb.IKbProject;
+import org.jboss.tools.jst.web.kb.KbProjectFactory;
+import org.jboss.tools.jst.web.kb.internal.KbObject;
+import org.jboss.tools.jst.web.kb.taglib.ITagLibrary;
import org.jboss.tools.jst.web.model.pv.*;
public class OpenTagLib {
@@ -23,7 +29,7 @@
public String run(XModel model, String uri, String tag, String attribute) {
if(model == null || uri == null) return null;
if(uri.length() == 0) return JSFUIMessages.URI_ISNOT_SPECIFIED;
- XModelObject t = findTagLib(model, uri);
+ XModelObject t = findTagLib(model, uri, tag, attribute);
if(t == null) return NLS.bind(JSFUIMessages.CANNOT_FIND_TAG_LIBRARY, uri);
FindObjectHelper.findModelObject(t, FindObjectHelper.IN_EDITOR_ONLY);
if(tag != null) {
@@ -41,17 +47,53 @@
return null;
}
- private XModelObject findTagLib(XModel model, String uri) {
+ private XModelObject findTagLib(XModel model, String uri, String tag, String attribute)
{
+ XModelObject some = null;
JSFProjectsRoot root = JSFProjectsTree.getProjectsRoot(model);
if(root == null) return null;
WebProjectNode n = (WebProjectNode)root.getChildByPath("Tag Libraries");
if(n == null) return null;
XModelObject[] os = n.getTreeChildren();
for (int i = 0; i < os.length; i++) {
- if(uri.equals(os[i].getAttributeValue("uri"))) return os[i];
+ if(uri.equals(os[i].getAttributeValue("uri"))) {
+ if(isOk(os[i], tag, attribute)) {
+ return os[i];
+ } else {
+ some = os[i];
+ }
+ }
}
- return null;
+
+ IProject project = EclipseResourceUtil.getProject(root);
+ if(project != null) {
+ IKbProject kb = KbProjectFactory.getKbProject(project, true);
+ if(kb != null) {
+ ITagLibrary[] ls = kb.getTagLibraries(uri);
+ for (int i = 0; i < ls.length; i++) {
+ Object id = ((KbObject)ls[i]).getId();
+ if(id instanceof XModelObject) {
+ XModelObject lib = (XModelObject)id;
+ if(isOk(lib, tag, attribute)) {
+ return lib;
+ }
+ }
+ }
+ }
+ }
+ return some;
}
+
+ private boolean isOk(XModelObject lib, String tag, String attribute) {
+ if(tag != null) {
+ XModelObject t = findTag(lib, tag);
+ if(t == null) return false;
+ if(t != null && attribute != null) {
+ XModelObject a = findAttribute(t, attribute);
+ if(a == null) return false;
+ }
+ }
+ return true;
+ }
private XModelObject findTag(XModelObject taglib, String name) {
return taglib.getChildByPath(name);