c9-core/plugins/c9.ide.dialog.common/alert.js

109 wiersze
3.3 KiB
JavaScript

define(function(require, module, exports) {
main.consumes = ["Plugin"];
main.provides = ["dialog.alert"];
return main;
function main(options, imports, register) {
var Plugin = imports.Plugin;
var plugin = new Plugin("Ajax.org", main.consumes);
var emit = plugin.getEmitter();
var alertInternal;
function show(title, header, msg, onhide, options) {
if (alertInternal)
return alertInternal.show(title, header, msg, onhide, options);
alert(title
+ (header ? "\n\n" + header : "")
+ (msg ? "\n\n" + msg : ""));
onhide && onhide();
}
function hide() {
if (alertInternal)
alertInternal.hide.apply(alertInternal, arguments);
}
/***** Register *****/
/**
*
*/
plugin.freezePublicAPI({
/**
* @readonly
*/
get dontShow() {
return alertInternal && alertInternal.dontShow;
},
get aml() {
return alertInternal && alertInternal.aml;
},
/**
* Show an alert dialog.
*
* @param {String} [title] The title to display
* @param {String} header The header to display
* @param {String} [msg] The message to display
* @param {Function} [onhide] The function to call after it's closed.
*/
show: show,
/**
* Hide an alert dialog.
*/
hide: hide,
/**
* @internal
*/
get alertInternal() { return alertInternal; },
/**
* @internal
*/
set alertInternal(value) {
alertInternal = value;
alertInternal.on("show", function(e) {
emit("show", e);
});
alertInternal.on("hide", function(e) {
emit("hide", e);
});
alertInternal.on("draw", function(e) {
emit.sticky("draw", e);
});
},
_events: [
/**
* Fires when the form is drawn.
* @event draw
*/
"draw",
/**
* Fires when the form becomes visible. This happens when
* it's attached to an HTML element using the {@link #attachTo}
* method, or by calling the {@link #method-show} method.
* @event show
*/
"show",
/**
* Fires when the form becomes hidden. This happens when
* it's detached from an HTML element using the {@link #detach}
* method, or by calling the {@link #method-hide} method.
* @event hide
*/
"hide"
],
});
register("", {
"dialog.alert": plugin
});
}
});