diff --git a/source/Ox.UI/js/Core/History.js b/source/Ox.UI/js/Core/History.js new file mode 100644 index 00000000..61fb93f9 --- /dev/null +++ b/source/Ox.UI/js/Core/History.js @@ -0,0 +1,57 @@ +'use strict'; + +Ox.History = function(options) { + + options = Ox.extend({ + text: function(item) { + return item.text; + } + }, options || {}); + + var history = [], + position = 0; + + return { + _print: function() { + Ox.print(JSON.stringify({history: history, position: position})); + }, + add: function(items) { + items = Ox.makeArray(items); + history = history.slice(0, position).concat(items); + position += items.length; + return history.length; + }, + clear: function() { + history = []; + position = 0; + return history.length; + }, + items: function() { + return history.length; + }, + redo: function() { + if (position < history.length) { + return history[position++]; + } + }, + redoText: function() { + if (position < history.length) { + return options.text(history[position]); + } + }, + remove: function(test) { + + }, + undo: function() { + if (position > 0) { + return history[--position]; + } + }, + undoText: function() { + if (position > 0) { + return options.text(history[position - 1]); + } + } + }; + +};