Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

JET FAQ How do I create custom tag?

Question

JET provides an API for creating custom tags. How can I make mine ?

Answer

1. Create a plug-in project

2. In the Plug-in manifest editor, go to the Dependencies tab and add : org.eclipse.jet, org.eclipse.core.runtime, org.eclipse.core.resources

3. In the Plug-in manifest editor, go to the Extensions tab, and add org.eclipse.jet.taglibraries.

4. Create a tagLibrary entry under this. Give it an ID like "MyCustomWorkspaceTags", and a default prefix like mcws.

5. Under the tagLibrary entry, create a tag of wanted type and name.

5. Under the Tag node, add as much attributes you need, and set options (required or note, type).

6. Return the the conditionalTag entry, and click on the 'class' entry to create the Java class for the tag. Specify a class name and check the package, a case problem could happen.

7. Code the Java class.


The following example is an AbstractConditionalTag which name is "resourcesExists". It has an attribute called "path" (required = true, String).

package org.eclipse.jet.example.customtags;

import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jet.JET2Context;
import org.eclipse.jet.taglib.AbstractConditionalTag;
import org.eclipse.jet.taglib.JET2TagException;
import org.eclipse.jet.taglib.TagInfo;

/**
 * Implements <mcws:resourceExists path="somepath">
 *
 */
public class ResourceExistsTag extends AbstractConditionalTag {
  public boolean doEvalCondition(TagInfo td, JET2Context context)
    throws JET2TagException {
    String path = getAttribute("path");	
    IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
    return resource != null && resource.exists();
  }
}

To use the taglib, you'll have to add a dependency in your Jet Project to the plug-in project with taglib extension.

In your templates :

Taglib declaration :

<%@taglib id="your-plugin-id.MyCustomWorkspaceTags" prefix="mcws"%>

Tag usage :

<mcws:resourceExists path="someproject/somefolder/somefile.c">
    ... do this if exits
</mcws:resourceExists>

See Also

JET FAQ How do I create custom XPath Function?

Back to M2T-JET-FAQ

Back to the top