type : "singleton",\r
extend : qx.core.Object,\r
\r
+ events : {\r
+ "reload" : "org.argeo.slc.web.event.ReloadEvent"\r
+ },\r
+ \r
construct : function(){\r
this.base(arguments); \r
},\r
this.command = stopCommand;\r
},\r
\r
- getRequest : function(url, method, responseType){\r
+ getRequest : function(url, method, responseType, fireReloadEventType, iLoadStatusables){\r
var request = new qx.io.remote.Request(url, method, responseType);\r
+ if(iLoadStatusables){\r
+ request.setUserData("iLoadStatusables", iLoadStatusables);\r
+ }\r
+ if(fireReloadEventType){\r
+ request.addListener("completed", function(response){\r
+ this.fireReloadEvent(fireReloadEventType, response.getContent());\r
+ }, this);\r
+ }\r
this.enableCommand(request);\r
- request.addListener("timeout", function(e){\r
- this.requestTimeout(request);\r
- }, this);\r
- request.addListener("failed", function(e){\r
- this.requestFailed(request);\r
- }, this);\r
- request.addListener("aborted", function(e){\r
- this.requestFailed(request);\r
- }, this);\r
+ request.addListener("timeout", this.requestTerminated, this);\r
+ request.addListener("failed", this.requestTerminated, this);\r
+ request.addListener("aborted", this.requestTerminated, this);\r
+ request.addListener("completed", this.requestCompleted, this); \r
return request;\r
}, \r
\r
- requestCreated : function(req){\r
- this.enableCommand(req);\r
+ fireReloadEvent : function(dataType, content){\r
+ this.fireEvent("reload", org.argeo.slc.web.event.ReloadEvent, [dataType, content]); \r
},\r
\r
- requestAborted : function(req){\r
- this.disableCommand(req);\r
+ requestCreated : function(e){\r
+ var request = e.getTarget();\r
+ this.enableCommand(request);\r
},\r
\r
- requestFailed : function(req){\r
- this.disableCommand(req);\r
+ requestCompleted : function(e){\r
+ var request = e.getTarget();\r
+ this.disableCommand(request);\r
},\r
\r
- requestTimeout : function(req){\r
- this.disableCommand(req);\r
- },\r
-\r
- requestCompleted : function(request){\r
+ requestTerminated : function(e){\r
+ var request = e.getTarget();\r
+ var errorType = e.getType();\r
this.disableCommand(request);\r
+ var message = "";\r
+ if(errorType == "aborted"){\r
+ message = "Request aborted by user";\r
+ }else if(errorType == "failed"){\r
+ message = "Request failed!";\r
+ }else if(errorType == "timeout"){\r
+ message = "Request timed out!";\r
+ }\r
+ this.error(message);\r
},\r
\r
disableCommand : function(request){\r
this.command.setEnabled(false);\r
+ if(request.getUserData("iLoadStatusables")){\r
+ this.updateGuiParts(request.getUserData("iLoadStatusables"), false);\r
+ }\r
var listener = request.getUserData("listener");\r
if(listener){\r
this.command.removeListener("execute", listener);\r
\r
enableCommand : function(request){\r
this.command.setEnabled(true);\r
+ if(request.getUserData("iLoadStatusables")){\r
+ this.updateGuiParts(request.getUserData("iLoadStatusables"), true);\r
+ }\r
qx.ui.core.queue.Manager.flush();\r
var listener = request.abort;\r
request.setUserData("listener", listener);\r
- this.command.addListener("execute", listener);\r
+ this.command.addListener("execute", listener, request);\r
+ },\r
+ \r
+ updateGuiParts : function(iLoadStatusables, loadStatus){\r
+ for(var i=0;i<iLoadStatusables.length;i++){\r
+ if(qx.Class.implementsInterface(qx.Class.getByName(iLoadStatusables[i].classname), org.argeo.slc.web.components.ILoadStatusable)){\r
+ iLoadStatusables[i].setOnLoad(loadStatus);\r
+ }else{\r
+ this.debug("Does not implement the ILoadStatusable interface! GUIPART type : "+ iLoadStatusables[i].classname);\r
+ }\r
+ }\r
}\r
}\r
});
\ No newline at end of file