summaryrefslogtreecommitdiff
path: root/libgpl/dialogextend/jquery.dialogextend.js
diff options
context:
space:
mode:
Diffstat (limited to 'libgpl/dialogextend/jquery.dialogextend.js')
-rw-r--r--libgpl/dialogextend/jquery.dialogextend.js509
1 files changed, 509 insertions, 0 deletions
diff --git a/libgpl/dialogextend/jquery.dialogextend.js b/libgpl/dialogextend/jquery.dialogextend.js
new file mode 100644
index 0000000..f633829
--- /dev/null
+++ b/libgpl/dialogextend/jquery.dialogextend.js
@@ -0,0 +1,509 @@
+(function() {
+ var $;
+
+ $ = jQuery;
+
+ $.widget("ui.dialogExtend", {
+ version: "2.0.0",
+ modes: {},
+ options: {
+ "closable": true,
+ "dblclick": false,
+ "titlebar": false,
+ "icons": {
+ "close": "ui-icon-closethick",
+ "restore": "ui-icon-newwin"
+ },
+ "load": null,
+ "beforeRestore": null,
+ "restore": null
+ },
+ _create: function() {
+ this._state = "normal";
+ if (!$(this.element[0]).data("ui-dialog")) {
+ $.error("jQuery.dialogExtend Error : Only jQuery UI Dialog element is accepted");
+ }
+ this._verifyOptions();
+ this._initStyles();
+ this._initButtons();
+ this._initTitleBar();
+ this._setState("normal");
+ this._on("load", function(e) {
+ return console.log("test", e);
+ });
+ return this._trigger("load");
+ },
+ _setState: function(state) {
+ $(this.element[0]).removeClass("ui-dialog-" + this._state).addClass("ui-dialog-" + state);
+ return this._state = state;
+ },
+ _verifyOptions: function() {
+ var name, _ref, _results;
+
+ if (this.options.dblclick && !(this.options.dblclick in this.modes)) {
+ $.error("jQuery.dialogExtend Error : Invalid <dblclick> value '" + this.options.dblclick + "'");
+ this.options.dblclick = false;
+ }
+ if (this.options.titlebar && ((_ref = this.options.titlebar) !== "none" && _ref !== "transparent")) {
+ $.error("jQuery.dialogExtend Error : Invalid <titlebar> value '" + this.options.titlebar + "'");
+ this.options.titlebar = false;
+ }
+ _results = [];
+ for (name in this.modes) {
+ if (this["_verifyOptions_" + name]) {
+ _results.push(this["_verifyOptions_" + name]());
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ },
+ _initStyles: function() {
+ var name, style, _results;
+
+ if (!$(".dialog-extend-css").length) {
+ style = '';
+ style += '<style class="dialog-extend-css" type="text/css">';
+ style += '.ui-dialog .ui-dialog-titlebar-buttonpane>a { float: right; }';
+ style += '.ui-dialog .ui-dialog-titlebar-restore { width: 19px; height: 18px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-restore span { display: block; margin: 1px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-restore:hover,';
+ style += '.ui-dialog .ui-dialog-titlebar-restore:focus { padding: 0; }';
+ style += '.ui-dialog .ui-dialog-titlebar ::selection { background-color: transparent; }';
+ style += '</style>';
+ $(style).appendTo("body");
+ }
+ _results = [];
+ for (name in this.modes) {
+ _results.push(this["_initStyles_" + name]());
+ }
+ return _results;
+ },
+ _initButtons: function() {
+ var buttonPane, mode, name, titlebar, _ref,
+ _this = this;
+
+ titlebar = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar");
+ buttonPane = $('<div class="ui-dialog-titlebar-buttonpane"></div>').appendTo(titlebar);
+ buttonPane.css({
+ "position": "absolute",
+ "top": "50%",
+ "right": "0.3em",
+ "margin-top": "-10px",
+ "height": "18px"
+ });
+ titlebar.find(".ui-dialog-titlebar-close").css({
+ "position": "relative",
+ "float": "right",
+ "top": "auto",
+ "right": "auto",
+ "margin": 0
+ }).find(".ui-icon").removeClass("ui-icon-closethick").addClass(this.options.icons.close).end().appendTo(buttonPane).end();
+ buttonPane.append('<a class="ui-dialog-titlebar-restore ui-corner-all ui-state-default" href="#"><span class="ui-icon ' + this.options.icons.restore + '" title="restore">restore</span></a>').find('.ui-dialog-titlebar-restore').attr("role", "button").mouseover(function() {
+ return $(this).addClass("ui-state-hover");
+ }).mouseout(function() {
+ return $(this).removeClass("ui-state-hover");
+ }).focus(function() {
+ return $(this).addClass("ui-state-focus");
+ }).blur(function() {
+ return $(this).removeClass("ui-state-focus");
+ }).end().find(".ui-dialog-titlebar-close").toggle(this.options.closable).end().find(".ui-dialog-titlebar-restore").hide().click(function(e) {
+ e.preventDefault();
+ return _this.restore();
+ }).end();
+ _ref = this.modes;
+ for (name in _ref) {
+ mode = _ref[name];
+ this._initModuleButton(name, mode);
+ }
+ return titlebar.dblclick(function(evt) {
+ if (_this.options.dblclick) {
+ if (_this._state !== "normal") {
+ return _this.restore();
+ } else {
+ return _this[_this.options.dblclick]();
+ }
+ }
+ }).select(function() {
+ return false;
+ });
+ },
+ _initModuleButton: function(name, mode) {
+ var buttonPane,
+ _this = this;
+
+ buttonPane = $(this.element[0]).dialog("widget").find('.ui-dialog-titlebar-buttonpane');
+ return buttonPane.append('<a class="ui-dialog-titlebar-' + name + ' ui-corner-all ui-state-default" href="#" title="' + name + '"><span class="ui-icon ' + this.options.icons[name] + '">' + name + '</span></a>').find(".ui-dialog-titlebar-" + name).attr("role", "button").mouseover(function() {
+ return $(this).addClass("ui-state-hover");
+ }).mouseout(function() {
+ return $(this).removeClass("ui-state-hover");
+ }).focus(function() {
+ return $(this).addClass("ui-state-focus");
+ }).blur(function() {
+ return $(this).removeClass("ui-state-focus");
+ }).end().find(".ui-dialog-titlebar-" + name).toggle(this.options[mode.option]).click(function(e) {
+ e.preventDefault();
+ return _this[name]();
+ }).end();
+ },
+ _initTitleBar: function() {
+ var handle;
+
+ switch (this.options.titlebar) {
+ case false:
+ return 0;
+ case "none":
+ if ($(this.element[0]).dialog("option", "draggable")) {
+ handle = $("<div />").addClass("ui-dialog-draggable-handle").css("cursor", "move").height(5);
+ $(this.element[0]).dialog("widget").prepend(handle).draggable("option", "handle", handle);
+ }
+ return $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").find(".ui-dialog-title").html("&nbsp;").end().css({
+ "background-color": "transparent",
+ "background-image": "none",
+ "border": 0,
+ "position": "absolute",
+ "right": 0,
+ "top": 0,
+ "z-index": 9999
+ }).end();
+ case "transparent":
+ return $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").css({
+ "background-color": "transparent",
+ "background-image": "none",
+ "border": 0
+ });
+ default:
+ return $.error("jQuery.dialogExtend Error : Invalid <titlebar> value '" + this.options.titlebar + "'");
+ }
+ },
+ state: function() {
+ return this._state;
+ },
+ restore: function() {
+ this._trigger("beforeRestore");
+ this._restore();
+ this._toggleButtons();
+ return this._trigger("restore");
+ },
+ _restore: function() {
+ if (this._state !== "normal") {
+ this["_restore_" + this._state]();
+ this._setState("normal");
+ return $(this.element[0]).dialog("widget").focus();
+ }
+ },
+ _saveSnapshot: function() {
+ if (this._state === "normal") {
+ this.original_config_resizable = $(this.element[0]).dialog("option", "resizable");
+ this.original_config_draggable = $(this.element[0]).dialog("option", "draggable");
+ this.original_size_height = $(this.element[0]).dialog("widget").outerHeight();
+ this.original_size_width = $(this.element[0]).dialog("option", "width");
+ this.original_size_maxHeight = $(this.element[0]).dialog("option", "maxHeight");
+ this.original_position_mode = $(this.element[0]).dialog("widget").css("position");
+ this.original_position_left = $(this.element[0]).dialog("widget").offset().left - $('body').scrollLeft();
+ this.original_position_top = $(this.element[0]).dialog("widget").offset().top - $('body').scrollTop();
+ return this.original_titlebar_wrap = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").css("white-space");
+ }
+ },
+ _loadSnapshot: function() {
+ return {
+ "config": {
+ "resizable": this.original_config_resizable,
+ "draggable": this.original_config_draggable
+ },
+ "size": {
+ "height": this.original_size_height,
+ "width": this.original_size_width,
+ "maxHeight": this.original_size_maxHeight
+ },
+ "position": {
+ "mode": this.original_position_mode,
+ "left": this.original_position_left,
+ "top": this.original_position_top
+ },
+ "titlebar": {
+ "wrap": this.original_titlebar_wrap
+ }
+ };
+ },
+ _toggleButtons: function(newstate) {
+ var mode, name, state, _ref, _ref1, _results;
+
+ state = newstate || this._state;
+ $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-restore").toggle(state !== "normal").css({
+ "right": "1.4em"
+ }).end();
+ _ref = this.modes;
+ for (name in _ref) {
+ mode = _ref[name];
+ $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-" + name).toggle(state !== mode.state && this.options[mode.option]);
+ }
+ _ref1 = this.modes;
+ _results = [];
+ for (name in _ref1) {
+ mode = _ref1[name];
+ if (mode.state === state) {
+ _results.push($(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-restore").insertAfter($(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-" + name)).end());
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ }
+ });
+
+}).call(this);
+
+(function() {
+ var $;
+
+ $ = jQuery;
+
+ $.extend(true, $.ui.dialogExtend.prototype, {
+ modes: {
+ "collapse": {
+ option: "collapsable",
+ state: "collapsed"
+ }
+ },
+ options: {
+ "collapsable": false,
+ "icons": {
+ "collapse": "ui-icon-triangle-1-s"
+ },
+ "beforeCollapse": null,
+ "collapse": null
+ },
+ collapse: function() {
+ var newHeight, pos;
+
+ newHeight = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").height() + 15;
+ this._trigger("beforeCollapse");
+ if (this._state !== "normal") {
+ this._restore();
+ }
+ this._saveSnapshot();
+ pos = $(this.element[0]).dialog("widget").position();
+ $(this.element[0]).dialog("option", {
+ "resizable": false,
+ "height": newHeight,
+ "maxHeight": newHeight,
+ "position": [pos.left - $(document).scrollLeft(), pos.top - $(document).scrollTop()]
+ }).on('dialogclose', this._collapse_restore).hide().dialog("widget").find(".ui-dialog-buttonpane:visible").hide().end().find(".ui-dialog-titlebar").css("white-space", "nowrap").end().find(".ui-dialog-content");
+ this._setState("collapsed");
+ this._toggleButtons();
+ return this._trigger("collapse");
+ },
+ _restore_collapsed: function() {
+ var original;
+
+ original = this._loadSnapshot();
+ return $(this.element[0]).show().dialog("widget").find(".ui-dialog-buttonpane:hidden").show().end().find(".ui-dialog-titlebar").css("white-space", original.titlebar.wrap).end().find(".ui-dialog-content").dialog("option", {
+ "resizable": original.config.resizable,
+ "height": original.size.height,
+ "maxHeight": original.size.maxHeight
+ }).off('dialogclose', this._collapse_restore);
+ },
+ _initStyles_collapse: function() {
+ var style;
+
+ if (!$(".dialog-extend-collapse-css").length) {
+ style = '';
+ style += '<style class="dialog-extend-collapse-css" type="text/css">';
+ style += '.ui-dialog .ui-dialog-titlebar-collapse { width: 19px; height: 18px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-collapse span { display: block; margin: 1px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-collapse:hover,';
+ style += '.ui-dialog .ui-dialog-titlebar-collapse:focus { padding: 0; }';
+ style += '</style>';
+ return $(style).appendTo("body");
+ }
+ },
+ _collapse_restore: function() {
+ return $(this).dialogExtend("restore");
+ }
+ });
+
+}).call(this);
+
+(function() {
+ var $;
+
+ $ = jQuery;
+
+ $.extend(true, $.ui.dialogExtend.prototype, {
+ modes: {
+ "maximize": {
+ option: "maximizable",
+ state: "maximized"
+ }
+ },
+ options: {
+ "maximizable": false,
+ "icons": {
+ "maximize": "ui-icon-extlink"
+ },
+ "beforeMaximize": null,
+ "maximize": null
+ },
+ maximize: function() {
+ var newHeight, newWidth;
+
+ newHeight = $(window).height() - 11;
+ newWidth = $(window).width() - 11;
+ this._trigger("beforeMaximize");
+ if (this._state !== "normal") {
+ this._restore();
+ }
+ this._saveSnapshot();
+ if ($(this.element[0]).dialog("option", "draggable")) {
+ $(this.element[0]).dialog("widget").draggable("option", "handle", null).find(".ui-dialog-draggable-handle").css("cursor", "text").end();
+ }
+ $(this.element[0]).dialog("widget").css("position", "fixed").find(".ui-dialog-content").show().dialog("widget").find(".ui-dialog-buttonpane").show().end().find(".ui-dialog-content").dialog("option", {
+ "resizable": false,
+ "draggable": false,
+ "height": newHeight,
+ "width": newWidth,
+ "position": {
+ my: "left top",
+ at: "left top",
+ of: window
+ }
+ });
+ this._setState("maximized");
+ this._toggleButtons();
+ return this._trigger("maximize");
+ },
+ _restore_maximized: function() {
+ var original;
+
+ original = this._loadSnapshot();
+ $(this.element[0]).dialog("widget").css("position", original.position.mode).find(".ui-dialog-titlebar").css("white-space", original.titlebar.wrap).end().find(".ui-dialog-content").dialog("option", {
+ "resizable": original.config.resizable,
+ "draggable": original.config.draggable,
+ "height": original.size.height,
+ "width": original.size.width,
+ "maxHeight": original.size.maxHeight,
+ "position": {
+ my: "left top",
+ at: "left+" + original.position.left + " top+" + original.position.top,
+ of: window
+ }
+ });
+ if ($(this.element[0]).dialog("option", "draggable")) {
+ return $(this.element[0]).dialog("widget").draggable("option", "handle", $(this.element[0]).dialog("widget").find(".ui-dialog-draggable-handle").length ? $(this.element[0]).dialog("widget").find(".ui-dialog-draggable-handle") : ".ui-dialog-titlebar").find(".ui-dialog-draggable-handle").css("cursor", "move");
+ }
+ },
+ _initStyles_maximize: function() {
+ var style;
+
+ if (!$(".dialog-extend-maximize-css").length) {
+ style = '';
+ style += '<style class="dialog-extend-maximize-css" type="text/css">';
+ style += '.ui-dialog .ui-dialog-titlebar-maximize { width: 19px; height: 18px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-maximize span { display: block; margin: 1px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-maximize:hover,';
+ style += '.ui-dialog .ui-dialog-titlebar-maximize:focus { padding: 0; }';
+ style += '</style>';
+ return $(style).appendTo("body");
+ }
+ }
+ });
+
+}).call(this);
+
+(function() {
+ var $;
+
+ $ = jQuery;
+
+ $.extend(true, $.ui.dialogExtend.prototype, {
+ modes: {
+ "minimize": {
+ option: "minimizable",
+ state: "minimized"
+ }
+ },
+ options: {
+ "minimizable": false,
+ "minimizeLocation": "left",
+ "icons": {
+ "minimize": "ui-icon-minus"
+ },
+ "beforeMinimize": null,
+ "minimize": null
+ },
+ minimize: function() {
+ var dialogcontrols, fixedContainer, newWidth;
+
+ this._trigger("beforeMinimize");
+ if (this._state !== "normal") {
+ this._restore();
+ }
+ newWidth = 200;
+ if ($("#dialog-extend-fixed-container").length) {
+ fixedContainer = $("#dialog-extend-fixed-container");
+ } else {
+ fixedContainer = $('<div id="dialog-extend-fixed-container"></div>').appendTo("body");
+ fixedContainer.css({
+ "position": "fixed",
+ "bottom": 1,
+ "left": 1,
+ "right": 1,
+ "z-index": 9999
+ });
+ }
+ this._toggleButtons("minimized");
+ dialogcontrols = $(this.element[0]).dialog("widget").clone().children().remove().end();
+ $(this.element[0]).dialog("widget").find('.ui-dialog-titlebar').clone(true, true).appendTo(dialogcontrols);
+ dialogcontrols.css({
+ "float": this.options.minimizeLocation,
+ "margin": 1
+ });
+ fixedContainer.append(dialogcontrols);
+ $(this.element[0]).data("dialog-extend-minimize-controls", dialogcontrols);
+ if ($(this.element[0]).dialog("option", "draggable")) {
+ dialogcontrols.removeClass("ui-draggable");
+ }
+ dialogcontrols.css({
+ "height": "auto",
+ "width": newWidth,
+ "position": "static"
+ });
+ $(this.element[0]).on('dialogbeforeclose', this._minimize_restoreOnClose).dialog("widget").hide();
+ this._setState("minimized");
+ return this._trigger("minimize");
+ },
+ _restore_minimized: function() {
+ $(this.element[0]).dialog("widget").show();
+ $(this.element[0]).off('dialogbeforeclose', this._minimize_restoreOnClose);
+ $(this.element[0]).data("dialog-extend-minimize-controls").remove();
+ return $(this.element[0]).removeData("dialog-extend-minimize-controls");
+ },
+ _initStyles_minimize: function() {
+ var style;
+
+ if (!$(".dialog-extend-minimize-css").length) {
+ style = '';
+ style += '<style class="dialog-extend-minimize-css" type="text/css">';
+ style += '.ui-dialog .ui-dialog-titlebar-minimize { width: 19px; height: 18px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-minimize span { display: block; margin: 1px; }';
+ style += '.ui-dialog .ui-dialog-titlebar-minimize:hover,';
+ style += '.ui-dialog .ui-dialog-titlebar-minimize:focus { padding: 0; }';
+ style += '</style>';
+ return $(style).appendTo("body");
+ }
+ },
+ _verifyOptions_minimize: function() {
+ var _ref;
+
+ if (!this.options.minimizeLocation || ((_ref = this.options.minimizeLocation) !== 'left' && _ref !== 'right')) {
+ $.error("jQuery.dialogExtend Error : Invalid <minimizeLocation> value '" + this.options.minimizeLocation + "'");
+ return this.options.minimizeLocation = "left";
+ }
+ },
+ _minimize_restoreOnClose: function() {
+ return $(this).dialogExtend("restore");
+ }
+ });
+
+}).call(this);