//# Subscribe to an event
//This demo shows how to use emit and subscribe.
import device;
import ui.TextView as TextView;
//Create a view which publishes an event and a value,
//each time the view is clicked the value will be increased...
var PublishView = Class(TextView, function(supr) {
this.onInputSelect = function() {
this._value = this._value || 0;
this._value++;
this.emit("Clicked", this._value);
};
});
//Create a view with a function which can be called when the view is clicked, the takes one parameter:
var SubscribeView1 = Class(TextView, function(supr) {
this.onClick = function(someValue) {
this.setText("Red was clicked, someValue: " + someValue);
};
});
//Create a view with a function which can be called when the view is clicked, the takes two parameters:
var SubscribeView2 = Class(TextView, function(supr) {
this.onClick = function(text, someValue) {
this.setText(text + someValue);
};
});
//Create the application with default settings:
exports = Class(GC.Application, function() {
this.initUI = function() {
this.style.backgroundColor = "#FFFFFF";
this._subscribeView1 = new TextView({
superview: this.view,
text: "Waiting for click",
color: "#000000",
backgroundColor: "#00FF00",
width: device.width - 20,
height: 50,
x: 10,
y: 70
});
this._subscribeView2 = new SubscribeView1({
superview: this.view,
text: "Waiting for click",
color: "#000000",
backgroundColor: "#FFDD00",
width: device.width - 20,
height: 50,
x: 10,
y: 130
});
this._subscribeView3 = new SubscribeView2({
superview: this.view,
text: "Waiting for click",
color: "#000000",
backgroundColor: "#00DDFF",
width: device.width - 20,
height: 50,
x: 10,
y: 190
});
new PublishView({
superview: this.view,
text: "Click me",
color: "#FFFFFF",
backgroundColor: "#FF0000",
width: device.width - 20,
height: 50,
x: 10,
y: 10
})
//When "Clicked" is published then the setText method is
//invoked with the parameter value "Red was clicked".
//After publishing the event the subscriber is un-subscribed
.on("Clicked", bind(this._subscribeView1, "setText", "Red was clicked"))
//When "Clicked" is published then the onClick method is
//invoked, this method will also use the parameter value 12 which
//is passed from the publish call.
//After publishing the event the subscriber is un-subscribed
.on("Clicked", bind(this._subscribeView2, "onClick"))
//When "Clicked" is published then the onClick method is
//invoked, the onClick method will receive two parameters: the
//string "Red was clicked, someValue: " and the number 12 which
//is passed from the publish call.
//After publishing the event the subscriber is un-subscribed
.on("Clicked", bind(this._subscribeView3, "onClick", "Red was clicked, someValue: "));
};
this.launchUI = function () {};
});
//The output should look like this screenshot:
//
//After clicking the red button once the output should look like this:
//
//After clicking the red button twice the output should look like this:
//