Quantcast

Override issue

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Override issue

Jonathan Wolfe
Hi, 

I am trying to implement just the ColorSelector window which appears after selecting the "Open ColorSelector" button in the qx.ui.control.ColorPopup. So, I thought I would extend the ColorPopup class and just override the _createChildControlImpl function so that the ColorSelector appears automatically; however when I do this, I am getting this error:

023800 Assertion error! Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Expected value to be typeof function but found 'undefined'!

Uncaught Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Exception while creating child control 'field#0' of widget edd.JQx.ColorSelector[9954-0]: Expected value to be typeof function but found 'undefined'!

Here is my code snippet:
qx.Class.define("edd.JQx.ColorSelector",
{
  extend : qx.ui.control.ColorPopup,
  members :
     {

       // overridden
      _createChildControlImpl : function(id, hash)
      {
        this.base(arguments);
        var control;
        switch(id)
        {
          case "field":
            control = new qx.ui.core.Widget;
            control.addListener("mousedown", this._onFieldMouseDown, this); // <------------- Fails here


I thought that the this._onFieldMouseDown would be brought along in the extension, but maybe this has something to do with two arguments being passed to the _createChildControlImpl  function and I'm not capturing it properly? Any pointers would be greatly appreciated! Thanks and Happy New Year!

Jonathan

------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Override issue

Jonathan Wolfe
Even better here is a playground example:




On Fri, Jan 1, 2016 at 2:08 PM, Jonathan Wolfe <[hidden email]> wrote:
Hi, 

I am trying to implement just the ColorSelector window which appears after selecting the "Open ColorSelector" button in the qx.ui.control.ColorPopup. So, I thought I would extend the ColorPopup class and just override the _createChildControlImpl function so that the ColorSelector appears automatically; however when I do this, I am getting this error:

023800 Assertion error! Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Expected value to be typeof function but found 'undefined'!

Uncaught Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Exception while creating child control 'field#0' of widget edd.JQx.ColorSelector[9954-0]: Expected value to be typeof function but found 'undefined'!

Here is my code snippet:
qx.Class.define("edd.JQx.ColorSelector",
{
  extend : qx.ui.control.ColorPopup,
  members :
     {

       // overridden
      _createChildControlImpl : function(id, hash)
      {
        this.base(arguments);
        var control;
        switch(id)
        {
          case "field":
            control = new qx.ui.core.Widget;
            control.addListener("mousedown", this._onFieldMouseDown, this); // <------------- Fails here


I thought that the this._onFieldMouseDown would be brought along in the extension, but maybe this has something to do with two arguments being passed to the _createChildControlImpl  function and I'm not capturing it properly? Any pointers would be greatly appreciated! Thanks and Happy New Year!

Jonathan


------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Override issue

Jonathan Wolfe
The tinyurl doesn't appear to be working...so:

Here's the verbose one: 

http://demo.qooxdoo.org/5.0.1/playground/#%7B%22code%22%3A%22qx.Class.define(%2522demobrowser.test%2522%252C%2520%257B%250D%250A%2520%2520%2520%2520extend%253A%2520qx.ui.control.ColorPopup%252C%250D%250A%2520%2520%2520%2520members%253A%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520overridden%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520_createChildControlImpl%253A%2520function(id)%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520var%2520control%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520switch%2520(id)%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522field%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.core.Widget()%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522mousedown%2522%252C%2520this._onFieldMouseDown%252C%2520this)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522mouseover%2522%252C%2520this._onFieldMouseOver%252C%2520this)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522mouseout%2522%252C%2520this._onFieldMouseOut%252C%2520this)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522auto-button%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.form.Button(this.tr(%2522Automatic%2522))%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.setAllowStretchX(true)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522execute%2522%252C%2520this._onAutomaticBtnExecute%252C%2520this)%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520this.add(control)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522selector-button%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.form.Button(this.tr(%2522Open%2520ColorSelector%2522))%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522execute%2522%252C%2520this._onSelectorButtonExecute%252C%2520this)%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Overridden%2520to%2520automatically%2520bring%2520up%2520color%2520wheel%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520qx.event.Timer.once(function()%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520this.cscontrol.execute()%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%257D%252C%2520this%252C%2520300)%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520this.add(control)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522preview-pane%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.groupbox.GroupBox(this.tr(%2522Preview%2520(Old%252FNew)%2522))%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.setLayout(new%2520qx.ui.layout.HBox())%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.add(this._createChildControl(%2522selected-preview%2522%252C%2520true)%252C%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520flex%253A%25201%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%257D)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.add(this._createChildControl(%2522current-preview%2522%252C%2520true)%252C%2520%257B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520flex%253A%25201%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%257D)%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520this.add(control)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522selected-preview%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.container.Composite(new%2520qx.ui.layout.Basic())%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522current-preview%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.container.Composite(new%2520qx.ui.layout.Basic())%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522colorselector-okbutton%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.form.Button(this.tr(%2522OK%2522))%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522execute%2522%252C%2520this._onColorSelectorOk%252C%2520this)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520case%2520%2522colorselector-cancelbutton%2522%253A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control%2520%253D%2520new%2520qx.ui.form.Button(this.tr(%2522Cancel%2522))%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520control.addListener(%2522execute%2522%252C%2520this._onColorSelectorCancel%252C%2520this)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520break%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%257D%250D%250A%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520return%2520control%2520%257C%257C%2520this.base(arguments%252C%2520id)%253B%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250D%250A%2520%2520%2520%2520%257D%250D%250A%257D)%253B%250D%250A%250D%250A%250D%250Avar%2520test%2520%253D%2520new%2520demobrowser.test()%253B%250D%250Atest.show()%253B%250D%250A%22%2C%20%22mode%22%3A%22ria%22%7D<a href="http://demo.qooxdoo.org/5.0.1/playground/#%7B %22code%22%3A%22qx.Class.define(%2522demobrow ser.test%2522%252C%2520%257B%250D%250A%2520%2 520%2520%2520extend%253A%2520qx.ui.control.Co lorPopup%252C%250D%250A%2520%2520%2520%2520me mbers%253A%2520%257B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%252F%252F%2520overr idden%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520_createChildControlImpl%253A%2520fu nction(id)%2520%257B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 var%2520control%253B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 switch%2520(id)%2520%257B%250D%250A%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520case%2520%2522field% 2522%253A%250D%250A%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520control%2520%253 D%2520new%2520qx.ui.core.Widget()%253B%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520control.addListener(%2522mousedo wn%2522%252C%2520this._onFieldMouseDown%252C% 2520this)%253B%250D%250A%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520control.add Listener(%2522mouseover%2522%252C%2520this._o nFieldMouseOver%252C%2520this)%253B%250D%250A %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520control.addListener(%2522mouseout%2 522%252C%2520this._onFieldMouseOut%252C%2520t his)%253B%250D%250A%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520break%253B%250D% 250A%250D%250A%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520case%2520%2522auto-button%2522%253A%250D% 250A%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520control%2520%253D%2520new%2520q x.ui.form.Button(this.tr(%2522Automatic%2522) )%253B%250D%250A%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520control.setAllowStr etchX(true)%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520control.a ddListener(%2522execute%2522%252C%2520this._o nAutomaticBtnExecute%252C%2520this)%253B%250D %250A%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520this.add(control)%25 3B%250D%250A%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520break%253B%250D%250A%25 0D%250A%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520cas e%2520%2522selector-button%2522%253A%250D%250 A%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520control%2520%253D%2520new%2520qx.u i.form.Button(this.tr(%2522Open%2520ColorSele ctor%2522))%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520control.a ddListener(%2522execute%2522%252C%2520this._o nSelectorButtonExecute%252C%2520this)%253B%25 0D%250A%250D%250A%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%252F%252F%2520Ove rridden%2520to%2520automatically%2520bring%25 20up%2520color%2520wheel%250D%250A%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 252F%252F%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520qx.event.Timer.o nce(function()%2520%257B%250D%250A%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 252F%252F%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520this.cscontrol.execute()%2 53B%250D%250A%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%252F%252F%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%257D%252C%2 520this%252C%2520300)%253B%250D%250A%250D%250 A%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520this.add(control)%253B%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520break%253B%250D%250A%250D%250A%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520case%2520%2522pre view-pane%2522%253A%250D%250A%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520contro l%2520%253D%2520new%2520qx.ui.groupbox.GroupB ox(this.tr(%2522Preview%2520(Old%252FNew)%252 2))%253B%250D%250A%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520control.setLayout (new%2520qx.ui.layout.HBox())%253B%250D%250A% 250D%250A%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520control.add(this._createCh ildControl(%2522selected-preview%2522%252C%25 20true)%252C%2520%257B%250D%250A%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520flex%253A%25201%250D%250A%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%257D)%253B%250D%250A%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520control .add(this._createChildControl(%2522current-pr eview%2522%252C%2520true)%252C%2520%257B%250D %250A%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520flex%253A% 25201%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%257D)%253B%250D%250 A%250D%250A%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520this.add(control)%253B%2 50D%250A%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520break%253B%250D%250A%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520case%25 20%2522selected-preview%2522%253A%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520control%2520%253D%2520new%2520qx.ui.c ontainer.Composite(new%2520qx.ui.layout.Basic ())%253B%250D%250A%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520break%253B%250D%2 50A%250D%250A%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520case%2520%2522current-preview%2522%253A%25 0D%250A%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520control%2520%253D%2520new%25 20qx.ui.container.Composite(new%2520qx.ui.lay out.Basic())%253B%250D%250A%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520break%25 3B%250D%250A%250D%250A%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520case%2520%2522colorselector-okbut ton%2522%253A%250D%250A%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520control%2520 %253D%2520new%2520qx.ui.form.Button(this.tr(% 2522OK%2522))%253B%250D%250A%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520control .addListener(%2522execute%2522%252C%2520this. _onColorSelectorOk%252C%2520this)%253B%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520break%253B%250D%250A%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520case%2520%25 22colorselector-cancelbutton%2522%253A%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520control%2520%253D%2520new%2520qx .ui.form.Button(this.tr(%2522Cancel%2522))%25 3B%250D%250A%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520control.addListener(%25 22execute%2522%252C%2520this._onColorSelector Cancel%252C%2520this)%253B%250D%250A%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0break%253B%250D%250A%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%257D%250 D%250A%250D%250A%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520return%2520con trol%2520%257C%257C%2520this.base(arguments%2 52C%2520id)%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%257D%250D%250A%2520%252 0%2520%2520%257D%250D%250A%257D)%253B%250D%25 0A%250D%250A%250D%250Avar%2520test%2520%253D% 2520new%2520demobrowser.test()%253B%250D%250A test.show()%253B%250D%250A%22%2C%20%22mode%22 %3A%22ria%22%7D">http://demo.qooxdoo.org/5.0.1/playground/#%7B %22code%22%3A%22qx.Class.define(%2522demobrow ser.test%2522%252C%2520%257B%250D%250A%2520%2 520%2520%2520extend%253A%2520qx.ui.control.Co lorPopup%252C%250D%250A%2520%2520%2520%2520me mbers%253A%2520%257B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%252F%252F%2520overr idden%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520_createChildControlImpl%253A%2520fu nction(id)%2520%257B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 var%2520control%253B%250D%250A%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 switch%2520(id)%2520%257B%250D%250A%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520case%2520%2522field% 2522%253A%250D%250A%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520control%2520%253 D%2520new%2520qx.ui.core.Widget()%253B%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520control.addListener(%2522mousedo wn%2522%252C%2520this._onFieldMouseDown%252C% 2520this)%253B%250D%250A%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520control.add Listener(%2522mouseover%2522%252C%2520this._o nFieldMouseOver%252C%2520this)%253B%250D%250A %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520control.addListener(%2522mouseout%2 522%252C%2520this._onFieldMouseOut%252C%2520t his)%253B%250D%250A%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520break%253B%250D% 250A%250D%250A%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520case%2520%2522auto-button%2522%253A%250D% 250A%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520control%2520%253D%2520new%2520q x.ui.form.Button(this.tr(%2522Automatic%2522) )%253B%250D%250A%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520control.setAllowStr etchX(true)%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520control.a ddListener(%2522execute%2522%252C%2520this._o nAutomaticBtnExecute%252C%2520this)%253B%250D %250A%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520this.add(control)%25 3B%250D%250A%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520break%253B%250D%250A%25 0D%250A%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520cas e%2520%2522selector-button%2522%253A%250D%250 A%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520control%2520%253D%2520new%2520qx.u i.form.Button(this.tr(%2522Open%2520ColorSele ctor%2522))%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520control.a ddListener(%2522execute%2522%252C%2520this._o nSelectorButtonExecute%252C%2520this)%253B%25 0D%250A%250D%250A%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%252F%252F%2520Ove rridden%2520to%2520automatically%2520bring%25 20up%2520color%2520wheel%250D%250A%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 252F%252F%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520qx.event.Timer.o nce(function()%2520%257B%250D%250A%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 252F%252F%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520this.cscontrol.execute()%2 53B%250D%250A%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%252F%252F%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%257D%252C%2 520this%252C%2520300)%253B%250D%250A%250D%250 A%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520this.add(control)%253B%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520break%253B%250D%250A%250D%250A%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520case%2520%2522pre view-pane%2522%253A%250D%250A%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520contro l%2520%253D%2520new%2520qx.ui.groupbox.GroupB ox(this.tr(%2522Preview%2520(Old%252FNew)%252 2))%253B%250D%250A%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520control.setLayout (new%2520qx.ui.layout.HBox())%253B%250D%250A% 250D%250A%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520%2520%2520%2520%2520%2520% 2520%2520%2520%2520control.add(this._createCh ildControl(%2522selected-preview%2522%252C%25 20true)%252C%2520%257B%250D%250A%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520flex%253A%25201%250D%250A%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%257D)%253B%250D%250A%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520control .add(this._createChildControl(%2522current-pr eview%2522%252C%2520true)%252C%2520%257B%250D %250A%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520flex%253A% 25201%250D%250A%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%2520%2520%2520%2520 %2520%2520%2520%2520%2520%257D)%253B%250D%250 A%250D%250A%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520this.add(control)%253B%2 50D%250A%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520break%253B%250D%250A%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520case%25 20%2522selected-preview%2522%253A%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520control%2520%253D%2520new%2520qx.ui.c ontainer.Composite(new%2520qx.ui.layout.Basic ())%253B%250D%250A%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520break%253B%250D%2 50A%250D%250A%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520case%2520%2522current-preview%2522%253A%25 0D%250A%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520control%2520%253D%2520new%25 20qx.ui.container.Composite(new%2520qx.ui.lay out.Basic())%253B%250D%250A%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520break%25 3B%250D%250A%250D%250A%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520case%2520%2522colorselector-okbut ton%2522%253A%250D%250A%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520control%2520 %253D%2520new%2520qx.ui.form.Button(this.tr(% 2522OK%2522))%253B%250D%250A%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520control .addListener(%2522execute%2522%252C%2520this. _onColorSelectorOk%252C%2520this)%253B%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520break%253B%250D%250A%250D%250A%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520case%2520%25 22colorselector-cancelbutton%2522%253A%250D%2 50A%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520%2520%2520%2520%2520%2520%2520%2 520%2520%2520control%2520%253D%2520new%2520qx .ui.form.Button(this.tr(%2522Cancel%2522))%25 3B%250D%250A%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520%2520%2520%2520%2520%25 20%2520%2520%2520%2520control.addListener(%25 22execute%2522%252C%2520this._onColorSelector Cancel%252C%2520this)%253B%250D%250A%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%2520%252 0break%253B%250D%250A%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520%2520%257D%250 D%250A%250D%250A%2520%2520%2520%2520%2520%252 0%2520%2520%2520%2520%2520%2520return%2520con trol%2520%257C%257C%2520this.base(arguments%2 52C%2520id)%253B%250D%250A%2520%2520%2520%252 0%2520%2520%2520%2520%257D%250D%250A%2520%252 0%2520%2520%257D%250D%250A%257D)%253B%250D%25 0A%250D%250A%250D%250Avar%2520test%2520%253D% 2520new%2520demobrowser.test()%253B%250D%250A test.show()%253B%250D%250A%22%2C%20%22mode%22 %3A%22ria%22%7D


 Jonathan Wolfe |  Senior Meteorologist
        Charleston, WV National Weather Service
        <a href="tel:304-746-0190" value="+13047460190" target="_blank">304-746-0190

On Fri, Jan 1, 2016 at 3:58 PM, Jonathan Wolfe <[hidden email]> wrote:
Even better here is a playground example:




On Fri, Jan 1, 2016 at 2:08 PM, Jonathan Wolfe <[hidden email]> wrote:
Hi, 

I am trying to implement just the ColorSelector window which appears after selecting the "Open ColorSelector" button in the qx.ui.control.ColorPopup. So, I thought I would extend the ColorPopup class and just override the _createChildControlImpl function so that the ColorSelector appears automatically; however when I do this, I am getting this error:

023800 Assertion error! Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Expected value to be typeof function but found 'undefined'!

Uncaught Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Exception while creating child control 'field#0' of widget edd.JQx.ColorSelector[9954-0]: Expected value to be typeof function but found 'undefined'!

Here is my code snippet:
qx.Class.define("edd.JQx.ColorSelector",
{
  extend : qx.ui.control.ColorPopup,
  members :
     {

       // overridden
      _createChildControlImpl : function(id, hash)
      {
        this.base(arguments);
        var control;
        switch(id)
        {
          case "field":
            control = new qx.ui.core.Widget;
            control.addListener("mousedown", this._onFieldMouseDown, this); // <------------- Fails here


I thought that the this._onFieldMouseDown would be brought along in the extension, but maybe this has something to do with two arguments being passed to the _createChildControlImpl  function and I'm not capturing it properly? Any pointers would be greatly appreciated! Thanks and Happy New Year!

Jonathan



------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Override issue

John Spackman-3
In reply to this post by Jonathan Wolfe
Hi Jonathan

The problem is that _onFieldMouseDown does not exist – it  looks like your example code is out of date, because since Qx 4.x there’s been a transition to “pointerxxxx” events over “mouse” events to better support mobile & tablets.  In qx.ui.control.ColorPopup, _onFieldMouseXxxx has also changed to _onFieldPointerXxxx.  EG your code should be:

        case "field":

          control = new qx.ui.core.Widget;

          control.addListener("pointerdown", this._onFieldPointerDown, this);

          control.addListener("pointerover", this._onFieldPointerOver, this);

          control.addListener("pointerout", this._onFieldPointerOut, this);

          break;


However, you don’t need to repeat the entire contents of the overridden function (and it would be preferable not to, so that the implementation of the parent class can change without impacting your code) because in this case you can defer to this.base(arguments, id) to get the controls, and only modify the one that you want to.  Here’s another version: http://tinyurl.com/jbkl8ac

Regards
John

From: Jonathan Wolfe <[hidden email]>
Reply-To: qooxdoo Development <[hidden email]>
Date: Friday, 1 January 2016 at 19:08
To: qooxdoo Development <[hidden email]>
Subject: [qooxdoo-devel] Override issue

Hi, 

I am trying to implement just the ColorSelector window which appears after selecting the "Open ColorSelector" button in the qx.ui.control.ColorPopup. So, I thought I would extend the ColorPopup class and just override the _createChildControlImpl function so that the ColorSelector appears automatically; however when I do this, I am getting this error:

023800 Assertion error! Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Expected value to be typeof function but found 'undefined'!

Uncaught Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Exception while creating child control 'field#0' of widget edd.JQx.ColorSelector[9954-0]: Expected value to be typeof function but found 'undefined'!

Here is my code snippet:
qx.Class.define("edd.JQx.ColorSelector",
{
  extend : qx.ui.control.ColorPopup,
  members :
     {

       // overridden
      _createChildControlImpl : function(id, hash)
      {
        this.base(arguments);
        var control;
        switch(id)
        {
          case "field":
            control = new qx.ui.core.Widget;
            control.addListener("mousedown", this._onFieldMouseDown, this); // <------------- Fails here


I thought that the this._onFieldMouseDown would be brought along in the extension, but maybe this has something to do with two arguments being passed to the _createChildControlImpl  function and I'm not capturing it properly? Any pointers would be greatly appreciated! Thanks and Happy New Year!

Jonathan
------------------------------------------------------------------------------ _______________________________________________ qooxdoo-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Override issue

Jonathan Wolfe
Thank you John! That makes total sense. I have taken a month or two off from coding and forgot about the pointerdown transition.

Your demo  http://tinyurl.com/jbkl8ac: also surprised me. I have always thought that I had to re-create the entire contents of the overridden function - I didn't know it was possible to only switch the component you're after; in this case, the selector-button. This will help immensely in my future endeavors. Thanks for the tips and hope you have a great year!!

Jonathan 


On Sat, Jan 2, 2016 at 5:43 AM, John Spackman <[hidden email]> wrote:
Hi Jonathan

The problem is that _onFieldMouseDown does not exist – it  looks like your example code is out of date, because since Qx 4.x there’s been a transition to “pointerxxxx” events over “mouse” events to better support mobile & tablets.  In qx.ui.control.ColorPopup, _onFieldMouseXxxx has also changed to _onFieldPointerXxxx.  EG your code should be:

        case "field":

          control = new qx.ui.core.Widget;

          control.addListener("pointerdown", this._onFieldPointerDown, this);

          control.addListener("pointerover", this._onFieldPointerOver, this);

          control.addListener("pointerout", this._onFieldPointerOut, this);

          break;


However, you don’t need to repeat the entire contents of the overridden function (and it would be preferable not to, so that the implementation of the parent class can change without impacting your code) because in this case you can defer to this.base(arguments, id) to get the controls, and only modify the one that you want to.  Here’s another version: http://tinyurl.com/jbkl8ac

Regards
John

From: Jonathan Wolfe <[hidden email]>
Reply-To: qooxdoo Development <[hidden email]>
Date: Friday, 1 January 2016 at 19:08
To: qooxdoo Development <[hidden email]>
Subject: [qooxdoo-devel] Override issue

Hi, 

I am trying to implement just the ColorSelector window which appears after selecting the "Open ColorSelector" button in the qx.ui.control.ColorPopup. So, I thought I would extend the ColorPopup class and just override the _createChildControlImpl function so that the ColorSelector appears automatically; however when I do this, I am getting this error:

023800 Assertion error! Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Expected value to be typeof function but found 'undefined'!

Uncaught Failed to add event listener for type 'mousedown' to the target 'qx.ui.core.Widget': Invalid callback function: Exception while creating child control 'field#0' of widget edd.JQx.ColorSelector[9954-0]: Expected value to be typeof function but found 'undefined'!

Here is my code snippet:
qx.Class.define("edd.JQx.ColorSelector",
{
  extend : qx.ui.control.ColorPopup,
  members :
     {

       // overridden
      _createChildControlImpl : function(id, hash)
      {
        this.base(arguments);
        var control;
        switch(id)
        {
          case "field":
            control = new qx.ui.core.Widget;
            control.addListener("mousedown", this._onFieldMouseDown, this); // <------------- Fails here


I thought that the this._onFieldMouseDown would be brought along in the extension, but maybe this has something to do with two arguments being passed to the _createChildControlImpl  function and I'm not capturing it properly? Any pointers would be greatly appreciated! Thanks and Happy New Year!

Jonathan
------------------------------------------------------------------------------ _______________________________________________ qooxdoo-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Loading...