diff options
author | Valerio Virgillito | 2012-02-22 00:49:47 -0800 |
---|---|---|
committer | Valerio Virgillito | 2012-02-22 00:49:47 -0800 |
commit | 8974ecd564563a991ff96f9cb6d47da172174242 (patch) | |
tree | 4518e1f28193000f737bd1297397f5a1f3a87b6e | |
parent | 2f24dafec79583547fe663d5a387d8ef15aae3bf (diff) | |
download | ninja-8974ecd564563a991ff96f9cb6d47da172174242.tar.gz |
local storage integration and versioning
- Fixed the splitters
Signed-off-by: Valerio Virgillito <valerio@motorola.com>
-rwxr-xr-x | js/controllers/local-storage-controller.js | 51 | ||||
-rwxr-xr-x | js/data/settings.js | 17 | ||||
-rwxr-xr-x | js/ninja.reel/ninja.html | 13 | ||||
-rwxr-xr-x | js/panels/Splitter.js | 22 |
4 files changed, 64 insertions, 39 deletions
diff --git a/js/controllers/local-storage-controller.js b/js/controllers/local-storage-controller.js index 6963b245..ea763cff 100755 --- a/js/controllers/local-storage-controller.js +++ b/js/controllers/local-storage-controller.js | |||
@@ -7,7 +7,46 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
7 | var Montage = require("montage/core/core").Montage, | 7 | var Montage = require("montage/core/core").Montage, |
8 | Component = require("montage/ui/component").Component; | 8 | Component = require("montage/ui/component").Component; |
9 | 9 | ||
10 | exports.LocalStorage = Montage.create( Montage, { | 10 | exports.LocalStorage = Montage.create( Component, { |
11 | |||
12 | canStore: { | ||
13 | value: null | ||
14 | }, | ||
15 | |||
16 | deserializedFromTemplate: { | ||
17 | value: function() { | ||
18 | this.canStore = window.localStorage; | ||
19 | this.application.localStorage = this; | ||
20 | |||
21 | // Redefine setItem and getItem if local storage is not available. | ||
22 | if(!this.canStore) { | ||
23 | this._getItem = function() { | ||
24 | console.log("Local Storage is not supported on your browser"); | ||
25 | return ""; | ||
26 | }; | ||
27 | |||
28 | this._setItem = function() { | ||
29 | console.log("Local Storage is not supported on your browser"); | ||
30 | return false; | ||
31 | } | ||
32 | } | ||
33 | } | ||
34 | }, | ||
35 | |||
36 | _getItem: { | ||
37 | value: function(key) { | ||
38 | var value = window.localStorage.getItem("ninja-" + key); | ||
39 | if(value !== null) value = JSON.parse(value); | ||
40 | |||
41 | return value; | ||
42 | } | ||
43 | }, | ||
44 | |||
45 | _setItem: { | ||
46 | value: function(key, value) { | ||
47 | window.localStorage.setItem("ninja-" + key, JSON.stringify(value)); | ||
48 | } | ||
49 | }, | ||
11 | 50 | ||
12 | getItem: { | 51 | getItem: { |
13 | value: function(item) { | 52 | value: function(item) { |
@@ -22,16 +61,6 @@ exports.LocalStorage = Montage.create( Montage, { | |||
22 | return null; | 61 | return null; |
23 | } | 62 | } |
24 | 63 | ||
25 | /* | ||
26 | if (window.localStorage) { | ||
27 | this.getItem = function(item) { | ||
28 | return window.localStorage.getItem(item); | ||
29 | }(item); | ||
30 | } else { | ||
31 | alert("Local Storage is not supported on your browser"); | ||
32 | |||
33 | } | ||
34 | */ | ||
35 | } | 64 | } |
36 | }, | 65 | }, |
37 | 66 | ||
diff --git a/js/data/settings.js b/js/data/settings.js index ffea2075..6b1af3fc 100755 --- a/js/data/settings.js +++ b/js/data/settings.js | |||
@@ -10,10 +10,6 @@ var Montage = require("montage/core/core").Montage, | |||
10 | 10 | ||
11 | exports.Settings = Montage.create( Component, { | 11 | exports.Settings = Montage.create( Component, { |
12 | 12 | ||
13 | version: { | ||
14 | value: "11.1213" | ||
15 | }, | ||
16 | |||
17 | _settings: { | 13 | _settings: { |
18 | value: null | 14 | value: null |
19 | }, | 15 | }, |
@@ -54,18 +50,5 @@ exports.Settings = Montage.create( Component, { | |||
54 | return null; | 50 | return null; |
55 | } | 51 | } |
56 | } | 52 | } |
57 | }, | ||
58 | |||
59 | deserializedFromSerialization: { | ||
60 | value: function() { | ||
61 | |||
62 | if (LocalStorage.getItem("version") != this.version) { | ||
63 | this.settings = {} | ||
64 | LocalStorage.setItem("version",this.version); | ||
65 | } else { | ||
66 | this.settings = LocalStorage.getItem("settings"); | ||
67 | } | ||
68 | |||
69 | } | ||
70 | } | 53 | } |
71 | }); \ No newline at end of file | 54 | }); \ No newline at end of file |
diff --git a/js/ninja.reel/ninja.html b/js/ninja.reel/ninja.html index 022b3f0a..43774d30 100755 --- a/js/ninja.reel/ninja.html +++ b/js/ninja.reel/ninja.html | |||
@@ -22,6 +22,11 @@ | |||
22 | "name": "Preloader" | 22 | "name": "Preloader" |
23 | }, | 23 | }, |
24 | 24 | ||
25 | "localStorage": { | ||
26 | "module": "js/controllers/local-storage-controller", | ||
27 | "name": "LocalStorage" | ||
28 | }, | ||
29 | |||
25 | "settings1": { | 30 | "settings1": { |
26 | "module": "js/data/settings", | 31 | "module": "js/data/settings", |
27 | "name": "Settings" | 32 | "name": "Settings" |
@@ -324,12 +329,12 @@ | |||
324 | <nav id="mainMenuBar"></nav> | 329 | <nav id="mainMenuBar"></nav> |
325 | </section> | 330 | </section> |
326 | 331 | ||
327 | <section id="leftSplitter" class="leftSplitter splitter"></section> | 332 | <section data-montage-id="leftSplitter" class="leftSplitter splitter"></section> |
328 | 333 | ||
329 | <section id="rightSplitter" class="rightSplitter splitter"></section> | 334 | <section data-montage-id="rightSplitter" class="rightSplitter splitter"></section> |
330 | 335 | ||
331 | <section id="appContainer"> | 336 | <section id="appContainer"> |
332 | <section id="topSplitter" class="topSplitter splitter"></section> | 337 | <section data-montage-id="topSplitter" class="topSplitter splitter"></section> |
333 | 338 | ||
334 | <section id="topPanelContainer" class="panelContainer"> | 339 | <section id="topPanelContainer" class="panelContainer"> |
335 | <div id="topPanel" class="panel"> | 340 | <div id="topPanel" class="panel"> |
@@ -392,7 +397,7 @@ | |||
392 | </section> | 397 | </section> |
393 | </section> | 398 | </section> |
394 | 399 | ||
395 | <section id="bottomSplitter" class="bottomSplitter splitter"></section> | 400 | <section data-montage-id="bottomSplitter" class="bottomSplitter splitter"></section> |
396 | </section> | 401 | </section> |
397 | 402 | ||
398 | <section id="popupWindows"></section> | 403 | <section id="popupWindows"></section> |
diff --git a/js/panels/Splitter.js b/js/panels/Splitter.js index 9f5b4de7..cb05104d 100755 --- a/js/panels/Splitter.js +++ b/js/panels/Splitter.js | |||
@@ -9,6 +9,10 @@ var Component = require("montage/ui/component").Component; | |||
9 | 9 | ||
10 | exports.Splitter = Montage.create(Component, { | 10 | exports.Splitter = Montage.create(Component, { |
11 | 11 | ||
12 | version: { | ||
13 | value: "1.0" | ||
14 | }, | ||
15 | |||
12 | hasTemplate: { | 16 | hasTemplate: { |
13 | value: false | 17 | value: false |
14 | }, | 18 | }, |
@@ -49,19 +53,23 @@ exports.Splitter = Montage.create(Component, { | |||
49 | get: function() { | 53 | get: function() { |
50 | return this._collapsed; | 54 | return this._collapsed; |
51 | }, | 55 | }, |
52 | set: function(value) | 56 | set: function(value) { |
53 | { | ||
54 | this._collapsed = value; | 57 | this._collapsed = value; |
55 | this.application.ninja.settings.setSetting(this.element.id, "collapsed", this.collapsed); | 58 | |
59 | this.application.localStorage._setItem(this.element.getAttribute("data-montage-id"), {"version": this.version, "value": value}); | ||
56 | } | 60 | } |
57 | }, | 61 | }, |
58 | 62 | ||
59 | prepareForDraw: { | 63 | prepareForDraw: { |
60 | value: function() { | 64 | value: function() { |
61 | //Get Setting from SettingManager | 65 | //Get splitter initial value from SettingManager |
62 | this.application.ninja.settings.getSetting(this.element.id, "collapsed"); | 66 | var storedData = this.application.localStorage._getItem(this.element.getAttribute("data-montage-id")); |
63 | lapsed = false; | 67 | if(storedData && this.element.getAttribute("data-montage-id") !== null) { |
64 | if (lapsed != null) this._collapsed = lapsed; | 68 | this._collapsed = storedData.value; |
69 | } else { | ||
70 | this._collapsed = false; | ||
71 | } | ||
72 | |||
65 | this.element.addEventListener("click", this, false); | 73 | this.element.addEventListener("click", this, false); |
66 | } | 74 | } |
67 | }, | 75 | }, |