/**
 * GUI.Dial
 *
 * Demonstrates implementation of a GUI dial.
 */

import("guilib")

class SampleDial
{
    // inject GUI module for convenience
    inject(System.GUI)

    
    /**
     * Create dial control
     *
     * params:  
     * return:  dial
     */
    method create_dial ()
    {
        attr =
          {
              Attribute.BGCOLOR : {"red":0, "green":255, "blue":128},
              Attribute.EXPAND : "HORIZONTAL",
              Attribute.RASTERSIZE : {"width":250, "height":80}
          }

        dial = Dial.new("HORIZONTAL", attr)

        @dial = dial
    }

    
    /**
     * Show dialog
     *
     * params:  
     * return:  
     */
    public method show ()
    {
        @dialog.popup(CENTER, CENTER)
        @dial.set_raster_size(nil)
    }

    
    /**
     * Initialize
     *
     * params:  
     * return:  
     */
    method initialize ()
    {
        field @dialog
        field @dial

        // dialog attributes
        attr =
          {Attribute.TITLE        : "Sample Dial",
           Attribute.OPACITY      : 255}

        // create dial
        create_dial()

        // create dialog
        dialog = Dialog.new(@dial, attr)

        @dialog = dialog
    }
}


/**
 * Entry point
 *
 * params:  
 * return:  
 */
method main ()
{
    dialog = SampleDial.new()
    dialog.show()
}

main()