- About XNAT
- News & Events
- XNAT Marketplace
- Contact Us
Add some UI elements to your plugin that will appear in the XNAT interface.
Once you have your own data type in XNAT, you'll immediately want some way to create, display and edit an object of that data type. As with writing the data type, this practical lesson won't focus so much on the contents of these UI elements as on how these elements are integrated with the XNAT application.
Anything under this folder is placed in the folder META-INF/resources in the jar file that gets built from your plugin project. META-INF/resources has special meaning in the Servlet 3.0 specification (see section 4.6): anything in this folder in any jar on the application classpath is treated as if it is located at the root of the web application and is fully equivalent with resources in the application itself. That means that any of your web resources in this folder are automatically part of your web application. The XNAT plugin framework takes advantage of this feature to inject UI elements from plugins into the application.
OK, you know how to add resources to the web application, but what can you add and where should it go (knowing that you start at META-INF/resources doesn't tell you what to do to add, for example, a menu command that will let users create an instance of your data type. There are two primary ways to integrate UI elements into XNAT:
There are a number of pages that are automatically generated for data types when you build your plugin project. These take the following form:
So your implementation of the report and edit pages for the biosample collection data type would go in:
When you compile your plugin project, you'll see that these files are automatically generated under the base-templates folder. You can use those as a basis to work from or you can download the attached versions of the edit and report pages and just copy them into the appropriate location in your project.
XNAT has many points where it will look in particular locations for templates that will be included directly into the XNAT interface. If you create a template and place it in one of those locations, your template will be picked up by the XNAT UI and displayed as if it were a regular part of the XNAT application.
One of these extension points is the actionsBox folder, which is located in a number of places, but for our needs the one under the xnat_subjectData folder is the most applicable. As you can probably guess from the name, this folder contains items that are added to the actions box that's displayed when you're looking at a subject's page. If you look at this folder in XNAT itself, you'll see that there are already a number of files in this folder, including Delete.vm, ManageFiles.vm, RunScript.vm, and UploadFiles.vm. To add an option to the actions box, then, you can add a file to your plugin project, something like this:
The contents of Biosample.vm should look something like this:
<!-- Sequence: 6 --> <li class="yuimenuitem"> <A href="$link.setPage('XDATScreen_edit_working_biosampleCollection.vm')"> <div class="ic"> </div><div class="ic_spacer"> </div>Add Biosamples </A> </li>
Don't worry too much about the contents of this file. This should take you to the edit page for your biosample collection page where you can create a new instance of the data type.
For this plugin, you can download the attached zip file and extract it into your plugin folder. This adds four files:
|The edit page for the biosample collection data type|
|XDATScreen_report_rad_radiologyReadData.vm||The report page for the radiology read data type|
|XDATScreen_report_workshop_biosampleCollection.vm||The report page for the biosample collection data type|
|xnat_subjectData/actionsBox/Biosample.vm||The actions box command for the biosample collection data type|
All locations in the table above are relative to the src/main/resources/META-INF/resources/templates/screens path.
You now have a couple of interface elements that will appear directly in the XNAT user interface.