Thursday Aug 09, 2007
Thursday Aug 09, 2007

The jMaki team keeps making great changes to the technology, but sometimes it is hard to keep up with all the changes. I have finally gotten a working version of the latest jMaki-wrapped Spry Accordion. I think that this API will be stable for awhile, so now is a good time to post some instructions on how to use the Spry Accordion in a NetBeans 5.5.1 Visual Web project using the latest NetBeans jMaki plug-in (1.6.9.9.9.5), which bundles jMaki 0.9.7.
One of the recent changes has been the data model. The jMaki team is now publishing the data model information on the ajax.dev.java.net portal at http://wiki.java.net/bin/view/Projects/jMakiDataModels. The data model for the Spry Accordion widget is as follows:
items::= "{" {<label> } "}"
label ::= "{" "label:" <string>, [<content> | <include> |<action> ]
[<lazyload>] [<rowid>] <selected>"},"
selected ::= "selected:" "true" | "false" (default is false)
include ::= "include:" <string> ,
lazyload ::= "lazyload:" "true" | "false",
rowid ::= "rowid:" <string> ,
content ::= "content:" <string>,
action ::= "action:" "{" [<topic>] <message> "},"
topic ::= "topic:" <string>,
message ::= "message:" <obj>
obj ::= <string> | <JavaScript object literal>
|
Note: This model is the same as the data model for the tabbed view. This means that you can swap out the accordion with a tabbed view and not have to change the data.
To follow this mini-tutorial, you need to get the NetBeans jMaki Plugin. If you have already installed the plugin, use the NetBeans Update Center from the Tools menu to make sure you have the latest version (1.6.9.9.9.5). If you have an earlier version, See Carla's blog entry about how to update the jMaki framework resources in a jMaki project.
I noted in an earlier blog entry that you also need to download the JSF Compounds library (jsfcompounds-0.0.2.jar). This is no longer true. The 1.6.9.9.9.5 plug-in includes this library.
BaseJSFjMaki/Web Pages/glue.js to Your-VWP-Project/Web Pages.
BaseJSFjMaki/Web Pages/resources to Your-VWP-Project/Web Pages/resources:
config.jsonjmaki.js
system-glue.js
BaseJSFjMaki/Web Pages/resources/spry folder to Your-VWP-Project/Web Pages/resources.
xmlns:a="http://jmaki/v1.0/jsf" to the <jsp:root> tag.
<webuijsf:panelGroup binding="#{Page1.groupPanel1}" id="groupPanel1"
style="position: absolute; left: 72px; top: 48px;">
<a:widget name="spry.accordion" value="#{SessionBean1.tripContent}"/>
</webuijsf:panelGroup> |
Now we can setup the web application to return data from the Travel database in the data model format for the accordion.
SELECT ALL TRAVEL.PERSON.PERSONID,
TRAVEL.PERSON.NAME,
TRAVEL.TRIP.TRIPID,
TRAVEL.TRIP.DEPDATE
FROM TRAVEL.PERSON
INNER JOIN TRAVEL.TRIP ON TRAVEL.TRIP.PERSONID =
TRAVEL.PERSON.PERSONID
ORDER BY TRAVEL.PERSON.PERSONID ASC,
TRAVEL.TRIP.DEPDATE ASC
|
public String getTripContent() {
// Data Model Format
// { items : [
// {label: "label", content : "content"},
// ...
// ]}
String retVal = "";
try {
retVal = buildTripTreeData().toString();
} catch (JSONException ex) {
log("Exception building tree data" +
ex.getMessage());
}
return retVal;
}
public JSONObject buildTripTreeData()
throws JSONException {
JSONObject rootObject = new JSONObject();
JSONArray items = new JSONArray();
JSONObject itemObject = new JSONObject();
boolean hasNext = tripDataProvider.cursorFirst();
Integer currentPersonId =
(Integer) tripDataProvider.getValue(
"PERSON.PERSONID");
String currentName =
tripDataProvider.getValue(
"PERSON.NAME").toString();
StringBuffer currentContent = new StringBuffer();
while (hasNext) {
Integer newPersonId =
(Integer) tripDataProvider.getValue(
"PERSON.PERSONID");
if (!newPersonId.equals(currentPersonId)) {
// write out data for previous person
itemObject.put("label", currentName);
itemObject.put("content",
currentContent.toString());
items.put(itemObject);
// start gathering data for a new item
currentPersonId = newPersonId;
currentName =
tripDataProvider.getValue(
"PERSON.NAME").toString();
itemObject = new JSONObject();
currentContent = new StringBuffer();
}
// Add trip's date to the content
currentContent.append(tripDataProvider.getValue(
"TRIP.DEPDATE").toString() +
"<br>");
hasNext = tripDataProvider.cursorNext();
}
// write out data for last person
itemObject.put("label", currentName);
itemObject.put("content", currentContent.toString());
items.put(itemObject);
rootObject.put("items", items);
return rootObject;
}
|
Greg and Carla say that they have added some cool features to the accordion widget. I am hoping that as I learn about them, I can add to this mini-tutorial.
About Step 3. Ludo wrote to the dev alias that he did not think you need to run the base project. He is thinking that I just might have copied over the resource folder before the IDE had completed setting it up. I had waited for the hour-glass to go away, but maybe I needed to wait a bit longer. If any of you have an experience where not all of the resources get copied over, let me know. It would be good to figure out what the issue really is.
Posted by Diva#2 on August 10, 2007 at 02:48 PM PDT #
Sir , i read u artical on
How to use Add Query Criteria for the MySQL data Base in Netbeans Visual web pack.
When the Query Criteria is add like
SELECT ALL counselors.counselors_id, counselors.first_name, counselors.telephone,counselors.email
FROM counselors WHERE counselors.counselors_id = ?
when i run this Query in the Query Window
i get a error message Box saying
Query Processing Error Parameter metadata not available for the given statement
Posted by P. Sathish Kumar on August 15, 2007 at 07:13 PM PDT #
It would be helpful if you pointed me to the article that you read. I have never seen this article. If it cannot read the metadata, then perhaps there is a problem with how you registered MySQL with the IDE or perhaps you have not connected to the database from the IDE during your current session. A possible resource is http://www.netbeans.org/kb/55/mysql.html
Posted by Diva #2 on August 16, 2007 at 09:07 AM PDT #
Hi Chris,
Just read this blog of yours: http://blogs.sun.com/divas/entry/using_the_spry_accordion_in
When I create a Web application in my netbeans IDE 6.0m10 - I donot get the view as you show - the navigator view that is..
I get it only when I create a new project using "Visual Web JavaServer Faces" as one of the frameworks - In which case I don't get the jMaki pallette - any idea what i should be doing?
Regards,
rasane
Posted by rasane on August 19, 2007 at 09:58 PM PDT #
Hello Rasane,
This tutorial is how to use the jMaki 0.9.7 widgets in 5.5.1 Visual Web Pack. For the 6.0 NetBeans IDE, there were major changes so this tutorial will not work exactly the same for 6.0. There is no visual support for jMaki in Visual Web applications, which is why you cannot see jMaki in the palette in a visual web project (which is the whole reason for this tutorial - it shows what to do to make jMaki work in visual web projects). If you would like to see jMaki visual support, write to the jMaki forum and let them know. I put on a lab at JavaOne this year on how to turn jMaki components into Visual Web components (http://developers.sun.com/learning/javaoneonline/j1lab.jsp?lab=LAB-4420&yr=2007&track=8). There is also an ongoing project at https://widgets.dev.java.net/ to build jMaki libraries that work in the Visual Designer in Visual Web applications. If you login to java.net you can see the source.
Posted by Diva #2 on August 20, 2007 at 09:38 AM PDT #
Hi Chris,
First of all, thank you for responding to my query.
Yes, after you explicitly mention it, I understand that what you meant was "manually inserting jMaki elements" in visual web projects.. I somehow read the prologue in the blog to imply that I could perform step 11 by drag and drop. It is a little early in my experience to request anything but help or assistance in understanding the java/ruby/jMaki elements/usage so I am quite happy to keep absorbing at this stage.. and keen..
Thank you for the link from java one online I could find some more interesting presentations during java one from the front page. Particularly interesting for me was the jMaki presentation by Greg and Carla.. But I could not navigate to the lab url you gave : http://developers.sun.com/learning/javaoneonline/j1lab.jsp?lab=LAB-4420&yr=2007&track=8.. tried searching as well but to no avail.. could you send that link again please?
Regards,
Rasane
Posted by rasane on August 20, 2007 at 03:39 PM PDT #
Sorry, but the comment poster doesn't like html and changed the url to something that doesn't work. So, go here http://blogs.sun.com/winston/entry/javaone_2007_hands_on_labs where Winston has posted links to Visual Web Pack labs. Note, however, that the part about making a JSF widget out of a jMaki widged is very very advanced. I don't think it is really what you wanted at all. And the other jjMaki stuff was written towards earlier versions of jMaki and is now obsolete.
Posted by Diva #2 on August 20, 2007 at 03:51 PM PDT #
very cool
Posted by hippo on November 07, 2007 at 03:59 AM PST #