1 / 58

Alexander Casall | Saxonia Systems AG

Alexander Casall | Saxonia Systems AG. The Implementation of a Digital Task Board for Distributed Scrum with JavaFX. CON7840. Hi there ... Alexander Casall Saxonia Systems AG sialcasa. ... topics for today . What we are doing Why we use JavaFX How we use JavaFX. Open.

iria
Download Presentation

Alexander Casall | Saxonia Systems AG

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Alexander Casall | Saxonia Systems AG The Implementation of a Digital Task Board for Distributed ScrumwithJavaFX CON7840

  2. Hi there ... Alexander Casall Saxonia Systems AG sialcasa

  3. ... topicsfortoday ... Whatwearedoing WhyweuseJavaFX HowweuseJavaFX

  4. Open In Progress Done Sprint Start

  5. In Progress Done Open Sprint End

  6. … easy for a Scrum Team in onelocation …

  7. … distributedScrum Team in twolocations …

  8. ? 2x

  9. … distributedScrum Team in twolocations …

  10. eteoBoard

  11. ... touch ‘n syncit ... Scrum Board Requirements

  12. Scrum BoardRequirements Essential Requirements Multiple synchronized Clients 3rd Party (Scrum) Backends Multi Touch Prototypingwithtrainees

  13. ... ithurts ... Swing Prototype - LessonsLearned

  14. Scrum BoardSwing - LessonsLearned Dynamic elementimplementationisinconvenient Nomultitouchsupport / gesturerecognition Layouting / Styling withcode Write a lotofcodeto do simple things Migration toJavaFX (Beta 2.2)

  15. JavaFXvs Swing Case Study – Asynchronouslyloadingan Image

  16. Swing http://www.oracle.com/technetwork/articles/javase/swingworker-137249.html

  17. JavaFX Loadimage in thebackground ? ?

  18. Hint: JavaFXintroduces PropertiesBinding StringProperty StringProperty Binding String String High Level API StringProperty a = newSimpleStringProperty(); StringProperty b = newSimpleStringProperty(); a.bind(b);

  19. Hint: JavaFXintroduces PropertiesEventListeners NotificationforChanges (Events) respond StringProperty a = newSimpleStringProperty(); a.addListener(newChangeListener<String>(){ @Override publicvoidchanged(ObservableValue<? extends String> source, String oldVal, String newVal){ System.out.println(oldVal,newVal); } }); StringProperty String

  20. JavaFX Loadimage in thebackground Event drivenescalation Visualizetheprogress

  21. ... theScrum Board in action...

  22. ScrumBoard in action: YouTube Video

  23. Short stopGuess ... HowmanyLOC forscaling? hugePaneWithStories.setScaleX(0.2); • hugePaneWithStories.setScaleY(0.2);

  24. ProgressBar • Circle • Rectangle • ScrollPane • VBox PanetaskPane = newTaskPane(task); taskPane.setOnTouchMoved(newEventHandler<TouchEvent>(){ @Override publicvoid handle(TouchEventevent){ calculateScaleOfTask(event.getTouchPoints()); } }); • StackedBarChart chart.setRotate(90);

  25. node.setOnSwipeRight(…); Shape Shape Rezizable Shape • node.setOnScroll(…); • node.setOnRotate(…); • node.setOnZoom(…); Hint [CON1760] by Jim Weaver

  26. ... andnowlet‘s do somemagic ... Custom ComponentExample

  27. Scrum BoardCustom component – Filter for an assignee Task 2 Michael isassigned Task 1 Alex isassigned Alex null ObjectProperty<UserFX> filteredUser

  28. Scrum BoardCustom component – Filter for an assignee ... so whatdoesthatmean in code... Task 2 Michael isassigned iftask.getAssignee() == filteredUser.get() thenopacity = 1.0 elseopacity = 0.5 iffilteredUser.get() == null thenopacity = 1.0 Task 1 Alex isassigned Alex ObjectProperty<UserFX> filteredUser

  29. Scrum BoardCustom component – Filter for an assignee Option 1 – Property Binding

  30. Scrum BoardCustom component – Filter for an assignee StringProperty StringProperty Binding String String ... Yeabindingworkswithpropertiesofthe same datatype...

  31. Scrum BoardCustom component – Filter for an assignee ... so whataboutbindingwith different datatypes ...

  32. Scrum BoardCustom component – Filter for an assignee Binding with different datatypes IntegerProperty StringProperty Binding Low Level API String Integer Whenachangesthebindingreevaluates Mapthe Data whichisprovidedbythebinding Usethebinding

  33. Scrum BoardCustom component – Filter for an assignee ... andwhatwewanttoachieveis ... iftask.getAssignee() == filteredUser.get() thenopacity = 1.0 elseopacity = 0.5 iffilteredUser.get() == null thenopacity = 1.0 filteredUserProperty opacityProperty Binding UserFX Double

  34. Scrum BoardCustom component – Filter for an assignee WhenfilteredUserchangesthebinding will reevaluate Returns a valuewhichisusedasthenewopacity

  35. Scrum BoardCustom component – Filter for an assignee Option 2 – EventListeners

  36. Scrum BoardCustom component – Filter for an assignee ... andwhatwewanttoachieveis ... iftask.getAssignee() == filteredUser.get() thenopacity = 1.0 elseopacity = 0.5 iffilteredUser.get() == null thenopacity = 1.0 settheopacity opacityProperty filteredUserProperty UserFX Double

  37. Scrum BoardCustom component – Filter for an assignee WhenfilteredUserchangeswechangetheopacity Set theopacity

  38. ... let‘ssynchronize multiple clients...

  39. Scrum BoardSynchronization

  40. ScrumBoard in sync: YouTube Video

  41. ... howdoesitwork ...

  42. SynchronizationPrinciple Remote Binding DoubleProperty DoubleProperty Double Double

  43. SynchronizationPrinciple Client Client Presentation Model (FX) PresentationModel (FX) Server Bidirectional Binding Bidirectional Binding PresentationModel (FX)

  44. SynchronizationPrinciple Client 1 DoublePropertypositionX; DoublePropertypositionX; Server Bidirectional Binding DoublePropertypositionY; DoublePropertypositionY;

  45. SynchronizationPrinciple Client 1 Client 2 DoublePropertypositionX; DoublePropertypositionX; DoublePropertypositionX; Server Bidirectional Binding DoublePropertypositionY; DoublePropertypositionY; DoublePropertypositionY;

  46. SynchronizationFramework

  47. SynchronizationImplementation SharedPresentation Model

  48. SynchronizationImplementation Server Create PropertyBased Model Create the Server Escalation Start

  49. SynchronizationImplementation Client Create Client Oncereceived, youcanuseit Connect

  50. Synchronization remote databinding simple API Contribute https://github.com/saxsys/SynchronizeFX

More Related