/* servs: http://fgaucho.dyndns.org:8080/footprint-service/wadl http://fgaucho.dyndns.org:8080/footprint-service/event/readall/0/99 http://fgaucho.dyndns.org:8080/footprint-service/event/read/editable/4 https://footprint.dev.java.net/servlets/ProjectProcess;jsessionid=0FC533134EF083CBD66E429686860248?tab=1 refs: http://silveiraneto.net/2009/01/04/reding-twitter-with-javafx/ http://java.sun.com/javafx/1/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html http://javafx.com/docs/tutorials/mediabrowser/module3_task1.jsp */ package footprintfx; import javafx.io.http.HttpRequest; import javafx.data.pull.Event; import javafx.data.pull.PullParser; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.image.Image; import javafx.scene.text.Text; import javafx.scene.text.Font; import javafx.scene.paint.Color; import java.io.InputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import javafx.scene.CustomNode; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.layout.VBox; // events var totalevents = 0; var totalusers = 0; // fonts var font30 = Font {size: 30 embolden: true }; var font20 = Font {size: 20}; var font12 = Font {size: 12}; class EventNode extends CustomNode { var name = ""; var website = ""; public override function create(): Node { return Group { content: [ Text { font : font30 fill: Color.RED y: 10 content: ">" }, Text { font : font20 x: 30 fill: Color.DARKGRAY content: bind "{name}" }, Text { font: font12 x: 30 y: 15 fill: Color.GRAY content: bind "{website}" }, ] }; } } var eventsnodes = VBox{ content: [] translateX: 20 translateY: 130 spacing: 10 } Stage { title : "FootprintFX" scene: Scene { width: 300 height: 400 content: [ ImageView { image: Image { url: "{__DIR__}bg.png" } }, Text { font : font20 x: 30, y: 30 content: "FootprintFX!" fill: Color.DARKGRAY }, Text { font :font12 x: 100, y: 50 content: bind "events: {if(totalevents==0) {"..."} else {totalevents}}" fill: Color.DARKGRAY }, Text { font : font12 x: 100, y: 65 content: bind "users: {if(totalusers==0) {"..."} else {totalusers}}" fill: Color.DARKGRAY }, eventsnodes ] } } // Count the number of events into totalevents var event_count_Request:HttpRequest = HttpRequest { location: "http://fgaucho.dyndns.org:8080/footprint-service/event/count"; onInput: function(stream: InputStream) { var buff = new BufferedReader(new InputStreamReader(stream)); totalevents = Integer.parseInt(buff.readLine()); } } event_count_Request.enqueue(); // Count the number of users into totaluser var user_count_Request :HttpRequest = HttpRequest { location: "http://fgaucho.dyndns.org:8080/footprint-service/user/count"; onInput: function(stream: InputStream) { var buff = new BufferedReader(new InputStreamReader(stream)); totalusers = Integer.parseInt(buff.readLine()); } } user_count_Request.enqueue(); def absEvent = "\{http://footprint.dev.java.net/service/entity\}ns2:fpAbstractEvent"; var parser = PullParser { var eventnode:EventNode; documentType: PullParser.XML; onEvent: function(event: Event) { if((event.type == PullParser.START_ELEMENT)and(event.level==1)){ eventnode = EventNode{} } if(event.type == PullParser.TEXT){ if(event.qname.name.equals("name")){ eventnode.name = event.text; } if(event.qname.name.equals("website")){ eventnode.website = event.text; } } if((event.type == PullParser.END_ELEMENT)and(event.level==1)){ println("{eventnode.name} {eventnode.website}"); insert eventnode into eventsnodes.content; } } } var event_readall_Request :HttpRequest = HttpRequest { location: "http://fgaucho.dyndns.org:8080/footprint-service/event/readall/0/5"; onInput: function(stream: java.io.InputStream) { parser.input = stream; parser.parse(); } } event_readall_Request.enqueue();