Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / storage / FlashStorageProvider.js

History | View | Annotate | Download (5.36 KB)

1
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6

    
7

    
8
if(!dojo._hasResource["dojox.storage.FlashStorageProvider"]){
9
dojo._hasResource["dojox.storage.FlashStorageProvider"]=true;
10
dojo.provide("dojox.storage.FlashStorageProvider");
11
dojo.require("dojox.flash");
12
dojo.require("dojox.storage.manager");
13
dojo.require("dojox.storage.Provider");
14
dojo.declare("dojox.storage.FlashStorageProvider",dojox.storage.Provider,{initialized:false,_available:null,_statusHandler:null,_flashReady:false,_pageReady:false,initialize:function(){
15
if(dojo.config["disableFlashStorage"]==true){
16
return;
17
}
18
dojox.flash.addLoadedListener(dojo.hitch(this,function(){
19
this._flashReady=true;
20
if(this._flashReady&&this._pageReady){
21
this._loaded();
22
}
23
}));
24
var _1=dojo.moduleUrl("dojox","storage/Storage.swf").toString();
25
dojox.flash.setSwf(_1,false);
26
dojo.connect(dojo,"loaded",this,function(){
27
this._pageReady=true;
28
if(this._flashReady&&this._pageReady){
29
this._loaded();
30
}
31
});
32
},setFlushDelay:function(_2){
33
if(_2===null||typeof _2==="undefined"||isNaN(_2)){
34
throw new Error("Invalid argunment: "+_2);
35
}
36
dojox.flash.comm.setFlushDelay(String(_2));
37
},getFlushDelay:function(){
38
return Number(dojox.flash.comm.getFlushDelay());
39
},flush:function(_3){
40
if(_3==null||typeof _3=="undefined"){
41
_3=dojox.storage.DEFAULT_NAMESPACE;
42
}
43
dojox.flash.comm.flush(_3);
44
},isAvailable:function(){
45
return (this._available=!dojo.config["disableFlashStorage"]);
46
},put:function(_4,_5,_6,_7){
47
if(!this.isValidKey(_4)){
48
throw new Error("Invalid key given: "+_4);
49
}
50
if(!_7){
51
_7=dojox.storage.DEFAULT_NAMESPACE;
52
}
53
if(!this.isValidKey(_7)){
54
throw new Error("Invalid namespace given: "+_7);
55
}
56
this._statusHandler=_6;
57
if(dojo.isString(_5)){
58
_5="string:"+_5;
59
}else{
60
_5=dojo.toJson(_5);
61
}
62
dojox.flash.comm.put(_4,_5,_7);
63
},putMultiple:function(_8,_9,_a,_b){
64
if(!this.isValidKeyArray(_8)||!_9 instanceof Array||_8.length!=_9.length){
65
throw new Error("Invalid arguments: keys = ["+_8+"], values = ["+_9+"]");
66
}
67
if(!_b){
68
_b=dojox.storage.DEFAULT_NAMESPACE;
69
}
70
if(!this.isValidKey(_b)){
71
throw new Error("Invalid namespace given: "+_b);
72
}
73
this._statusHandler=_a;
74
var _c=_8.join(",");
75
var _d=[];
76
for(var i=0;i<_9.length;i++){
77
if(dojo.isString(_9[i])){
78
_9[i]="string:"+_9[i];
79
}else{
80
_9[i]=dojo.toJson(_9[i]);
81
}
82
_d[i]=_9[i].length;
83
}
84
var _e=_9.join("");
85
var _f=_d.join(",");
86
dojox.flash.comm.putMultiple(_c,_e,_f,_b);
87
},get:function(key,_10){
88
if(!this.isValidKey(key)){
89
throw new Error("Invalid key given: "+key);
90
}
91
if(!_10){
92
_10=dojox.storage.DEFAULT_NAMESPACE;
93
}
94
if(!this.isValidKey(_10)){
95
throw new Error("Invalid namespace given: "+_10);
96
}
97
var _11=dojox.flash.comm.get(key,_10);
98
if(_11==""){
99
return null;
100
}
101
return this._destringify(_11);
102
},getMultiple:function(_12,_13){
103
if(!this.isValidKeyArray(_12)){
104
throw new ("Invalid key array given: "+_12);
105
}
106
if(!_13){
107
_13=dojox.storage.DEFAULT_NAMESPACE;
108
}
109
if(!this.isValidKey(_13)){
110
throw new Error("Invalid namespace given: "+_13);
111
}
112
var _14=_12.join(",");
113
var _15=dojox.flash.comm.getMultiple(_14,_13);
114
var _16=eval("("+_15+")");
115
for(var i=0;i<_16.length;i++){
116
_16[i]=(_16[i]=="")?null:this._destringify(_16[i]);
117
}
118
return _16;
119
},_destringify:function(_17){
120
if(dojo.isString(_17)&&(/^string:/.test(_17))){
121
_17=_17.substring("string:".length);
122
}else{
123
_17=dojo.fromJson(_17);
124
}
125
return _17;
126
},getKeys:function(_18){
127
if(!_18){
128
_18=dojox.storage.DEFAULT_NAMESPACE;
129
}
130
if(!this.isValidKey(_18)){
131
throw new Error("Invalid namespace given: "+_18);
132
}
133
var _19=dojox.flash.comm.getKeys(_18);
134
if(_19==null||_19=="null"){
135
_19="";
136
}
137
_19=_19.split(",");
138
_19.sort();
139
return _19;
140
},getNamespaces:function(){
141
var _1a=dojox.flash.comm.getNamespaces();
142
if(_1a==null||_1a=="null"){
143
_1a=dojox.storage.DEFAULT_NAMESPACE;
144
}
145
_1a=_1a.split(",");
146
_1a.sort();
147
return _1a;
148
},clear:function(_1b){
149
if(!_1b){
150
_1b=dojox.storage.DEFAULT_NAMESPACE;
151
}
152
if(!this.isValidKey(_1b)){
153
throw new Error("Invalid namespace given: "+_1b);
154
}
155
dojox.flash.comm.clear(_1b);
156
},remove:function(key,_1c){
157
if(!_1c){
158
_1c=dojox.storage.DEFAULT_NAMESPACE;
159
}
160
if(!this.isValidKey(_1c)){
161
throw new Error("Invalid namespace given: "+_1c);
162
}
163
dojox.flash.comm.remove(key,_1c);
164
},removeMultiple:function(_1d,_1e){
165
if(!this.isValidKeyArray(_1d)){
166
dojo.raise("Invalid key array given: "+_1d);
167
}
168
if(!_1e){
169
_1e=dojox.storage.DEFAULT_NAMESPACE;
170
}
171
if(!this.isValidKey(_1e)){
172
throw new Error("Invalid namespace given: "+_1e);
173
}
174
var _1f=_1d.join(",");
175
dojox.flash.comm.removeMultiple(_1f,_1e);
176
},isPermanent:function(){
177
return true;
178
},getMaximumSize:function(){
179
return dojox.storage.SIZE_NO_LIMIT;
180
},hasSettingsUI:function(){
181
return true;
182
},showSettingsUI:function(){
183
dojox.flash.comm.showSettings();
184
dojox.flash.obj.setVisible(true);
185
dojox.flash.obj.center();
186
},hideSettingsUI:function(){
187
dojox.flash.obj.setVisible(false);
188
if(dojo.isFunction(dojox.storage.onHideSettingsUI)){
189
dojox.storage.onHideSettingsUI.call(null);
190
}
191
},getResourceList:function(){
192
return [];
193
},_loaded:function(){
194
this._allNamespaces=this.getNamespaces();
195
this.initialized=true;
196
dojox.storage.manager.loaded();
197
},_onStatus:function(_20,key,_21){
198
var ds=dojox.storage;
199
var dfo=dojox.flash.obj;
200
if(_20==ds.PENDING){
201
dfo.center();
202
dfo.setVisible(true);
203
}else{
204
dfo.setVisible(false);
205
}
206
if(ds._statusHandler){
207
ds._statusHandler.call(null,_20,key,null,_21);
208
}
209
}});
210
dojox.storage.manager.register("dojox.storage.FlashStorageProvider",new dojox.storage.FlashStorageProvider());
211
}