JavaFX + Zembly


Zembly application development environment makes it easy to develop, customize and deploy your application. It provides APIs from various providers.

Here we will try to use Zembly services (outside of Zembly) from JavaFX. Zembly provides client libraries for both Java and JavaFX.

<script src="http://dl.javafx.com/1.2/dtfx.js"></script> <script src="/rakeshmenonp/resource/ZemblyIP/ZemblyIP.js"></script>

For Applet mode, click on above image

For standalone mode

Above sample is modified version of InterestingPhotos which now uses Zembly APis to search flickr's photo search based on tags. It uses flickr api - photos.search as shown below.

String result = Zembly.getInstance().callService(
    String.class,                 // Return Type
    "web.flickr.photos.search",   // Service Name
    new String[][] {              // Arguments
        {"machine_tag_mode""any"},
        {"tags""javafx" },
        {"per_page""65"},
        {"page""1"},
        {"format""json"}
    }
);

Class com.zembly.gateway.client.Zembly is available in Zembly Client Library implementation. Download zcl4j.zip here

Now we can easily write a wrapper for zcl in JavaFX using Asynchronous APIs. This will also demonstrate how to use these APIs to invoke Java apis in background thread from JavaFX.

Provide an implementation for javafx.async.RunnableFuture which will invoke the Zembly client APIs - ZemblyRunnableFuture. Next design an interface which bridge the Java and JavaFX - CallbackHandler.

Now we can implement the ZemblyRequest API which extends the JavaFX JavaTaskBase. This will provide an implementation similar to HttpRequest API.

ZemblyRequest can be used in application as shown below

var request = ZemblyRequest {

    // Zembly Service Name
    serviceName: "web.flickr.photos.search"

    // Arguments to be passed to service
    arguments: [
        Pair name: "machine_tag_mode", value: "any" },
        Pair name: "tags", value: "{encodedTags}" },
        Pair name: "per_page", value: "65" },
        Pair name: "page", value: "1" },
        Pair name: "format", value: "json" }     
    ]

    onStart: function() {
        println("ZemblyRequest - start");
    }

    onInput: function(is) {
        // Use PullParser to parse the stream
        is.close();
    }

    onDone: function() {
        println("ZemblyRequest - done");
    }

};
request.start();

Zembly key and secret must be generated and specified in zcl.properties file which must be kept in default package inside jar file. For more information on this, please refer to article - How to Call Data Service from Outside Zembly

I followed articles - Creating a Widget in 5 Minutes and Working with JavaFX so as to deploy above sample as Application

Try it out and let me know feedback

Source:

<script type="text/javascript">var dzone_url = "http://blogs.sun.com/rakeshmenonp/entry/javafx_zembly";</script> <script type="text/javascript">var dzone_style = '2';</script> <script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script>

Comments:

Thanks Rakesh for posting this. I was referring to Zembly APIs yesterday for hosting my facebook app in Zembly and mak it as a app in Facebook. Even though this is diffrent it is very usefull. Your blogs just rocks!!!

Posted by Raghu Nair on July 03, 2009 at 12:28 AM IST #

Whether zembly is IDE like Eclipse or like Twitter API's ? because name 'zembly application development environment' confuses me.

Posted by Ashok on July 21, 2009 at 03:57 AM IST #

@Ashok Zembly provides APIs, web-based editor, easy integration with Facebook, hosting and collaborative environment. Best place to start is http://zembly.com/ui/about

Posted by Rakesh Menon on July 21, 2009 at 04:04 AM IST #

Post a Comment:
Comments are closed for this entry.
About


The views expressed on this blog are my own and do not necessarily reflect that of my organization

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today