1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/* <copyright>
This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
</copyright> */
/**
@module "montage/ui/popup/notifier.reel"
@requires montage/core/core
@requires montage/ui/component
@requires "montage/ui/popup/popup.reel"
*/
var Montage = require("montage").Montage;
var Component = require("ui/component").Component;
var Popup = require("ui/popup/popup.reel").Popup;
/**
@class module:"montage/ui/popup/notifier.reel".Notifier
@extends module:montage/ui/component.Component
*/
var Notifier = exports.Notifier = Montage.create(Component, /** @lends module:"montage/ui/popup/notifier.reel".Notifier# */ {
_msgEl: {
value: null,
serializable: true
},
/**
Description TODO
@private
*/
_msg: {value: null},
/**
Description TODO
@type {Function}
@default null
*/
msg: {
get: function() {
return this._msg;
},
set: function(value) {
if (this._msg !== value) {
this._msg = value;
this.needsDraw = true;
}
}
},
/**
Description TODO
@type {Property}
@default {String} null
*/
details: {
value: null
},
/**
Description TODO
@function
*/
draw: {
value: function() {
this._msgEl.textContent = this.msg;
}
},
// Static method to show a Notify dialog
/**
Displays a small Growl-like notification in a pop-up dialog. The notification can have a timeout that determines how long it appears before being hidden automatically.
You can also specify the location of the notification in the browser window (top-left corner, by default).
@function
@param {String} msg A message to display in the notification.
@param {Number} timeout The number of milliseconds to display the notification before it is hidden.
@param {Object} Contains two properties named top and left that specify top and left coordinates of the notifiction. By default, notifications are positioned at the top-left corner of the window.
*/
show: {
value: function(msg, timeout, position) {
var popup = this.application._notifyPopup, notifier;
if(!popup) {
popup = Popup.create();
this.popup = popup;
popup.type = 'notify';
this.application._notifyPopup = popup;
notifier = Notifier.create();
popup.content = notifier;
}
notifier = popup.content;
notifier.msg = msg;
if (!position) {
// position at the top by default
var viewportWidth = window.innerWidth;
position = {
top: 1,
right: 10
};
}
popup.position = position;
if(timeout) {
timeout = parseInt(timeout, 10) || 3000;
popup.autoHide = timeout;
}
popup.show();
}
},
hide: {
value: function() {
var popup = this.application._notifyPopup;
if(popup) {
popup.hide();
}
}
}
});
|