// Simple program to create Morse Code
// written by Kim Bruce, 5/16/2014

dialect "rtobjectdraw"
import "sys" as sys

object {
    inherit graphicApplicationSize (400 @ 400) 

    // Minimum time (in seconds) for a dash
    def dashTime: Number = 0.2
    
    // String to hold sequence entered so far
    var currentCode: String := "Code = "
    
    // Time when mouse was last depressed
    var pressTime: Number
    
    // Text used to display Morse code on canvas
    def display: Text = textAt (30 @ 30) with ("Code = ") on (canvas)
    display.fontSize := 24
    
    // Record time at which mouse was depressed
    method onMousePress (point: Point) -> Done {
        pressTime := sys.elapsedTime
    }
    
    // Add . or - depending on how long mouse held before release 
    method onMouseRelease (point: Point) -> Done {
        if ((sys.elapsedTime - pressTime) > dashTime) then {
            currentCode := currentCode ++ " -"
        } else {
            currentCode := currentCode ++ " ."
        }
        display.contents := currentCode 
    }

    startGraphics
}
