2. About the Presenter Director SWE Inovis, Inc. Open-Source JavaFX Hacker MBA Belotti Award UberScrumMaster XP Coach Agile Portfolio Process Speaker Pro JavaFX Author Java Champion JavaOneRockstar JFXtras WidgetFX FEST-JavaFX Silicon Valley JavaFX User Group Founder Family Man Motorcyclist
3. 3 AGENDA JavaFX Technology Stack Data Binding JavaFX 1.3 Controls Control Styling JavaFX 1.3 Layouts Web Service Integration JFXtras Data-driven Controls Apropos Demo Pro JavaFX Quiz with Prizes!
5. Evolution of Data Binding JavaFX Binding Bind Library Property Change Listeners Callbacks
6. Bind Expressions Unidirectional: property: bindobject.value property: bindsequence[index] sequence: bindfor (v in values) convert(v) Bijective: property: bindvalue with inverse Function: public bound function calculateTotal(subtotal, tax) { return subtotal * (1 + tax);} New in JavaFX 1.3 – All binding is lazy!
8. Dynamic Binding JFXtras extension for runtime binding to an existing JavaFX object via reflection. Example: classReflectionTarget { publicvarfieldA:String; } defreflectionTarget = ReflectionTarget {fieldA: “A"} defmirror = context.mirrorOf(reflectionTarget); defxbind = XBind.bindWithInverse(mirror, mirror.getType().getVariable("fieldA")); xbind.ref = "B"; What is the value of: reflectionTarget.fieldA? 8
9. Java to JavaFX Binding Prototype by Johannes Schneider:http://blog.cedarsoft.com/ Java to JavaFX PropertyChangeEvents: Just make your Java Bean fire PropertyChangeEvents whenever a property has changed JavaFX to Java Variable Setter: The corresponding setter of your Java object is called PropertyChangeEvents: JavaFX binding updates trigger PropertyChangeEvents JavaFxBridge.bridge(javaModel).to(slider asFXObject).connecting(JavaFxBridge.bind("amount").to("value").withInverse()); Will be included in the JFXtras 0.8 Release – Feedback on the syntax welcome!
13. Preview Controls in JavaFX 1.3 MenuBar { menus: for (i in [0..4]) Menu { text: "Menu {i}" items: for (j in [0..4]) MenuItem { text: "Menu Item {j}" } } } ToolBar { items: for (i in [0..4]) Button {text: "Button {i}"} } TreeView { root: TreeItem { expanded: true data: "Root" children: for (i in [0..4]) [ TreeItem { data: "Item {i}" }]}} MenuBar Menu ToolBar TreeView
17. JavaFX 1.3 Layout Enhancements GridLayout Based on the JFXtrasXGrid In the JavaFX Preview Package Fill Controls how Nodes expand to take available space Grow/Shrink Controls how available space is allocated between competing Nodes Priority values: NEVER SOMETIMES ALWAYS 17
20. Calling a REST Service REST URL: http://api.meetup.com/rsvps.json/event_id={eventId}&key={apiKey} Output: { "results": [ {"zip":"94044","lon":"-122.48999786376953","photo_url":"http:photos1.meetupstatic.comphotosmember14bamember_5333306.jpeg","response":"no","name":"Andres Almiray","comment":"Can't make it :-("} ]}
23. XShelfView High Performance Features: Scrollbar Image Title Reflection Effect Aspect Ratio Infinite Repeat Integrates With JFXtras Data Providers Automatically Updates on Model Changes
25. XTableView Insanely Scalable Up to 16 million rows Extreme Performance Pools rendered nodes Caches images Optimized scene graph Features: Drag-and-Drop Column Reordering Dynamic Updating from Model Automatically Populates Column Headers Fully Styleable via CSS
28. Marketing Sales Feature selling becomes impossible (Sales Enablement) Launch Cycle Time > Dev Cycle Time Melting Change Managers: 50 changes once a month to 900 changes constantly Product Management Operations Development …in the weeds… Professional Services Support Innovator’s Dilemma Supported Release proliferation Source: Based on Gat et al, Reformulating the Product Delivery Process, LSSC Conference, April 2010 Source: Based on Gat et al, Reformulating the Product Delivery Process, LSSC Conference, April 2010 The Agile Challenge in End-to-End Context
29. The Three Loops of Software Governance Dev: Technical debt Operations/Support Marketing/Sales Proposed Marketing Sales Validated Adopted Enabled Internal Technical Debt Loop Product Management Operations Scheduled Backlogged In Process Development Deployed External Technical Debt Loop Bottleneck Professional Services Support Validated Enabled Adopted Source: Based on Gat et al, Reformulating the Product Delivery Process, LSSC Conference, April 2010
31. Pro JavaFX 1.3 Quiz All Binding in JavaFX is ____ Answer: Lazy The New Controls in JavaFX 1.3 Are: ____, ____, and ____ Answer: ChoiceBox, PasswordBox, ScrollView, Separator Or preview: Menu, Tree, Toolbar The JavaFX Preview Grid was contributed by the _____ project Answer: JFXtras 31