From 3986a97717f719cc3642e486b1b2382ab7dc377d Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Sun, 15 Jul 2012 23:35:45 -0300 Subject: [PATCH] - Fix do and undo buttons disable action --- mindplot/src/main/javascript/widget/Menu.js | 73 +++++++++++++------ .../src/main/javascript/widget/ToolbarItem.js | 4 + 2 files changed, 54 insertions(+), 23 deletions(-) diff --git a/mindplot/src/main/javascript/widget/Menu.js b/mindplot/src/main/javascript/widget/Menu.js index f5b6349e..055719d9 100644 --- a/mindplot/src/main/javascript/widget/Menu.js +++ b/mindplot/src/main/javascript/widget/Menu.js @@ -239,17 +239,34 @@ mindplot.widget.Menu = new Class({ this._registerTooltip('zoomOut', $msg('ZOOM_OUT')); - this._addButton('undoEdition', false, false, function () { + var undoButton = this._addButton('undoEdition', false, false, function () { designer.undo(); }); + undoButton.disable(); this._registerTooltip('undoEdition', $msg('UNDO'), "meta+Z"); - this._addButton('redoEdition', false, false, function () { + var redoButton = this._addButton('redoEdition', false, false, function () { designer.redo(); }); + redoButton.disable(); this._registerTooltip('redoEdition', $msg('REDO'), "meta+shift+Z"); + if (redoButton && undoButton) { + designer.addEvent('modelUpdate', function (event) { + if (event.undoSteps > 0) { + undoButton.enable(); + } else { + undoButton.disable(); + } + if (event.redoSteps > 0) { + redoButton.enable(); + } else { + redoButton.disable(); + } + + }.bind(this)); + } this._addButton('addTopics', true, false, function () { designer.createChildForSelectedNode(); @@ -442,24 +459,27 @@ mindplot.widget.Menu = new Class({ var rels = designer.getModel().filterSelectedRelationships(); this._toolbarElems.each(function (button) { - var disable = false; - if (button.isTopicAction() && button.isRelAction()) { - disable = rels.length == 0 && topics.length == 0; - } else if (!button.isTopicAction() && !button.isRelAction()) { - disable = false; - } - else if (button.isTopicAction() && topics.length == 0) { - disable = true; - } else if (button.isRelAction() && rels.length == 0) { - disable = true; - } + var buttonId = button.getButtonId(); + if (buttonId != "undoEdition" && buttonId != "redoEdition") { - if (disable) { - button.disable(); - } else { - button.enable(); - } + var disable = false; + if (button.isTopicAction() && button.isRelAction()) { + disable = rels.length == 0 && topics.length == 0; + } else if (!button.isTopicAction() && !button.isRelAction()) { + disable = false; + } + else if (button.isTopicAction() && topics.length == 0) { + disable = true; + } else if (button.isRelAction() && rels.length == 0) { + disable = true; + } + if (disable) { + button.disable(); + } else { + button.enable(); + } + } }) }.bind(this)); @@ -468,12 +488,16 @@ mindplot.widget.Menu = new Class({ var rels = designer.getModel().filterSelectedRelationships(); this._toolbarElems.each(function (button) { - if (button.isTopicAction() && topics.length > 0) { - button.enable(); - } + var buttonId = button.getButtonId(); + if (buttonId != "undoEdition" && buttonId != "redoEdition") { - if (button.isRelAction() && rels.length > 0) { - button.enable(); + if (button.isTopicAction() && topics.length > 0) { + button.enable(); + } + + if (button.isRelAction() && rels.length > 0) { + button.enable(); + } } }) }.bind(this)); @@ -481,6 +505,7 @@ mindplot.widget.Menu = new Class({ _addButton:function (buttonId, topic, rel, fn) { // Register Events ... + var result = null; if ($(buttonId)) { var button = new mindplot.widget.ToolbarItem(buttonId, function (event) { @@ -489,7 +514,9 @@ mindplot.widget.Menu = new Class({ }.bind(this), {topicAction:topic, relAction:rel}); this._toolbarElems.push(button); + result = button; } + return result; }, _registerTooltip:function (buttonId, text, shortcut) { diff --git a/mindplot/src/main/javascript/widget/ToolbarItem.js b/mindplot/src/main/javascript/widget/ToolbarItem.js index 04725ae1..5a49afce 100644 --- a/mindplot/src/main/javascript/widget/ToolbarItem.js +++ b/mindplot/src/main/javascript/widget/ToolbarItem.js @@ -55,6 +55,10 @@ mindplot.widget.ToolbarItem = new Class({ return elem; }.protect(), + getButtonId : function(){ + return this._buttonId; + }, + show : function() { this.fireEvent('show'); },