First edit node implementation...
This commit is contained in:
136
mindplot/src/main/javascript/libraries/moodialog/MooDialog.js
Normal file
136
mindplot/src/main/javascript/libraries/moodialog/MooDialog.js
Normal file
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
---
|
||||
name: MooDialog
|
||||
description: The base class of MooDialog
|
||||
authors: Arian Stolwijk
|
||||
license: MIT-style license
|
||||
requires: [Core/Class, Core/Element, Core/Element.Styles, Core/Element.Event]
|
||||
provides: [MooDialog, Element.MooDialog]
|
||||
...
|
||||
*/
|
||||
|
||||
|
||||
var MooDialog = new Class({
|
||||
|
||||
Implements: [Options, Events],
|
||||
|
||||
options: {
|
||||
'class': 'MooDialog',
|
||||
title: null,
|
||||
scroll: true, // IE
|
||||
forceScroll: false,
|
||||
useEscKey: true,
|
||||
destroyOnHide: true,
|
||||
autoOpen: true,
|
||||
closeButton: true,
|
||||
onInitialize: function(){
|
||||
this.wrapper.setStyle('display', 'none');
|
||||
},
|
||||
onBeforeOpen: function(){
|
||||
this.wrapper.setStyle('display', 'block');
|
||||
this.fireEvent('show');
|
||||
},
|
||||
onBeforeClose: function(){
|
||||
this.wrapper.setStyle('display', 'none');
|
||||
this.fireEvent('hide');
|
||||
}/*,
|
||||
onOpen: function(){},
|
||||
onClose: function(){},
|
||||
onShow: function(){},
|
||||
onHide: function(){}*/
|
||||
},
|
||||
|
||||
initialize: function(options){
|
||||
this.setOptions(options);
|
||||
this.options.inject = this.options.inject || document.body;
|
||||
options = this.options;
|
||||
|
||||
var wrapper = this.wrapper = new Element('div.' + options['class'].replace(' ', '.')).inject(options.inject);
|
||||
this.content = new Element('div.content').inject(wrapper);
|
||||
|
||||
if (options.title){
|
||||
this.title = new Element('div.title').set('text', options.title).inject(wrapper);
|
||||
wrapper.addClass('MooDialogTitle');
|
||||
}
|
||||
|
||||
if (options.closeButton){
|
||||
this.closeButton = new Element('a.close', {
|
||||
events: {click: this.close.bind(this)}
|
||||
}).inject(wrapper);
|
||||
}
|
||||
|
||||
|
||||
/*<ie6>*/// IE 6 scroll
|
||||
if ((options.scroll && Browser.ie6) || options.forceScroll){
|
||||
wrapper.setStyle('position', 'absolute');
|
||||
var position = wrapper.getPosition(options.inject);
|
||||
window.addEvent('scroll', function(){
|
||||
var scroll = document.getScroll();
|
||||
wrapper.setPosition({
|
||||
x: position.x + scroll.x,
|
||||
y: position.y + scroll.y
|
||||
});
|
||||
});
|
||||
}
|
||||
/*</ie6>*/
|
||||
|
||||
if (options.useEscKey){
|
||||
// Add event for the esc key
|
||||
document.addEvent('keydown', function(e){
|
||||
if (e.key == 'esc') this.close();
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
this.addEvent('hide', function(){
|
||||
if (options.destroyOnHide) this.destroy();
|
||||
}.bind(this));
|
||||
|
||||
this.fireEvent('initialize', wrapper);
|
||||
},
|
||||
|
||||
setContent: function(){
|
||||
var content = Array.from(arguments);
|
||||
if (content.length == 1) content = content[0];
|
||||
|
||||
this.content.empty();
|
||||
|
||||
var type = typeOf(content);
|
||||
if (['string', 'number'].contains(type)) this.content.set('text', content);
|
||||
else this.content.adopt(content);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
open: function(){
|
||||
this.fireEvent('beforeOpen', this.wrapper).fireEvent('open');
|
||||
this.opened = true;
|
||||
return this;
|
||||
},
|
||||
|
||||
close: function(){
|
||||
this.fireEvent('beforeClose', this.wrapper).fireEvent('close');
|
||||
this.opened = false;
|
||||
return this;
|
||||
},
|
||||
|
||||
destroy: function(){
|
||||
this.wrapper.destroy();
|
||||
},
|
||||
|
||||
toElement: function(){
|
||||
return this.wrapper;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
Element.implement({
|
||||
|
||||
MooDialog: function(options){
|
||||
this.store('MooDialog',
|
||||
new MooDialog(options).setContent(this).open()
|
||||
);
|
||||
return this;
|
||||
}
|
||||
|
||||
});
|
Reference in New Issue
Block a user