//********************************************************//
//**************JavaFX (cont.) - November 11th, 2016*****//
//******************************************************//

-Taylor again! Simpkins MIA D:
-NOTE: Next homework will have a TON of bonus points - but START EARLY! This last Homework is MUCH more involved than the previous ones
    -Should be released either tonight or sometime over the weekend
---------------------------------------------------------------------

-Some useful JavaFX classes:
    -import via "import javafx.*"
        -scene.paint (lets you paint stuff on the screen)
        -scene.shape (lets you draw shapes on the screen)
        -.animation (lets you do animations; apparently a LOT of fun to play with)
        -scene.text (change font, etc.)
    -"The best way to learn any language, really, is to try and find something cool to do, and make it"

-In previous semester, had to remake a basic version of paint as a final homework

-EVENT HANDLERS; important, I should know this! Better!
    -e.g. when a mouse if clicked, a MouseEvent event occurs w/ info about the event (right???)

-SIDE NOTE: A CANVAS is the part of the screen we can draw on / responds to being clicked
-Basically, every single node in JavaFX have an "addEventHandler" method where we can give it 2 parametrs: the EventType we want it to use, and the EventHandler we want to have handle the event when it happens
        e.g.: "canvas.addEventHandler(MouseEvent.MOUSE_PRESSED, (e) -> currentTool.onPress(e, g));"
            -NOTE: Here we're declaring a lambda method for the interface; this doesn't HAVE to be done, you can pass it an existing interface implementation
                -the "e" is ... was explained in class, something to do with tying the lambda expression to the MOUSE_PRESSED event
            -NOTE2: the "MouseEvent" class is part of the javafx API, and can be imported
    -"Event Bubbling" - if an event handler can't handle the current type of event, it passes it on to its parent
    -The EventHandler here has TWO ASSUMPTIONS:
        1)
        2) The interface only has ONE METHOD, as it otherwise gets confused about which method to pass the input to
    -Basically, this makes whatever object we added the EventHandler to to "listen" for the event, and then respond when it gets the input

-REMEMBER: EventHandler is a functional interface, so we can use it w/ lambda expressions!