Thanks.

When some other more basic functionality of my app is working, I'll try your
code, and try to update the qx.ui.window.Window class.


Ways OfTheEarth wrote:
> 
> Hi there,
> 
> I have implemented a similar thing in my Qx 0.5.x application.
> 
> My app has lots of windows, each with toolbars and buttons etc. which need
> to be "disabled" while a window is either busy (awaiting a response from
> the server) or blurred (not in focus).
> 
> Here is some code pasted from one of my QxWindow subclasses (you will need
> to clean out some of my non-generic code, but it is a good place to start)
> 
> 
> Add this to your QxWindow subclass:
> 
> 
> // A String to identify blocker divs - also appears in some Selenium
> tests.
> QxLiveWindow.BLOCKER_ID = "blocker";
> 
> /*
>  * A flag that indicates whether or not this window is covered by an
> invisible
>  * blocker div that prevents the user from clicking any of its widgets.
>  *
>  * Note that isBlocked is distinct from isBusy. All windows that are not
> in
>  * focus are blocked, thou they may or may not be busy.
>  */
> QxLiveWindow.addProperty({ name : "isBlocked", type :
> QxConst.TYPEOF_BOOLEAN, defaultValue : false});
> 
> /*
> A private method which adds a blocker div, preventing widgets within
> this window from being clicked.
> */
> proto._addBlocker = function()
> {
>     if (!this.getIsBlocked()) {
>     
>         // Reuse a blocker instance if available
>         var blocker= DefaultQxPool.get(QxLiveWindow.BLOCKER_ID);
>         if (! blocker) {
>             blocker = new QxTerminator();
>         };
>         
>         // Position our blocker instance over this window
>         with (blocker) {
>             setTop(this.getTop() );
>             setLeft(this.getLeft() );
>             setHeight(this.getHeight());
>             setWidth(this.getWidth());
>             
>             // Set the z-index to above this window
>             setZIndex((this.getZIndex() + 1));
>             setBackgroundColor("gray");
>             setOpacity(0.2);
>             
>             // this only applies when busy!
>             //setCursor(QxConst.CURSOR_WAIT);
>             
>             // Insert an arbitary html attribute into the DOM so that the 
>             // automated tests can determine when the blocker is present.
>             setHtmlAttribute(QxLiveWindow.BLOCKER_ID, "true");
>         }
>         
>         // Append blocker to the DOM
>         DOC.add(blocker);
>         this.setIsBlocked(true);
>         
>         // Add a reference to our blocker as UserData so that we can
> retrieve it
>         this.setUserData(QxLiveWindow.BLOCKER_ID, blocker);
>         
>         // keep our blocker's z-index in synch with this window
>         this.addEventListener("changeZIndex", synchBlockerZIndex, null);
>         
>         // listen for clicks on the blocker
>         blocker.addEventListener(QxConst.EVENT_TYPE_CLICK, function (e) {
>             
>             // block the event from going anywhere else
>             e.setPropagationStopped(true);
>             e.setBubbles(false);
>             
>             // focus this window
>             this.focus();
>             
>         }, this);        
>     }
> }
> 
> 
> /*
> A private method which removes the blocker div.
> */
> proto._removeBlocker = function()
> {
>     
>     if ( this.getIsBlocked() ) {
>         // uncover window
>         var blocker = this.getUserData(QxLiveWindow.BLOCKER_ID);
> 
>         this.removeEventListener("changeZIndex", synchBlockerZIndex,
> null);
>         blocker.removeHtmlAttribute(QxLiveWindow.BLOCKER_ID);
>         DOC.remove(blocker);
>         this.setIsBlocked(false);
>         
>         // Release the blocker to the pool for use next time.
>         DefaultQxPool.release(blocker, QxLiveWindow.BLOCKER_ID);
>     }
> }
> 
> 
> I am not sure if this is the same in Qx 0.6, but in Qx 0.5.x you will also
> need to override QxWindow's zindex allocation so that you can insert a
> blocker between QxWindows.  By default Qx 0.5.x makes window instances 1
> z-index apart, but we need a gap of at least 1 z-index, so:
> 
> QxWindow.prototype._sendTo = function()
> {
>   var vAll =
> QxUtil.convertObjectValuesToArray(QxWindowManager.getAll()).sort(QxCompare.byZIndex);
>   var vLength = vAll.length;
>   var vIndex = this._minZIndex;
> 
>   for (var i=0; i<vLength; i++) {
>     vIndex = vIndex + 2; 
>     vAll[i].setZIndex(vIndex); 
>   };
> };
> 
> Finally, all window instances need access to this z-index synch method so
> that when you change windows, their "blockers" follow them around. 
> Ideally you would put this method on a window manager class of some sort -
> but if you don't have one it will work ok in the global scope:
> 
> synchBlockerZIndex = function (e) 
> {
>     var window = e.getTarget();
>     if (window) {
>         var blocker = window.getUserData(QxLiveWindow.BLOCKER_ID);
>         if (blocker) {
>             // window.debug("setting blocker z-index=" +
> (window.getZIndex() + 1));
>             blocker.setZIndex((window.getZIndex() + 1));
>         }
>     }
> }
> 
> 
> Hope that is useful,
> 
> Simon
> 
> 
> dperez <[EMAIL PROTECTED]> wrote: 
> That's a good idea  :-)
> Maybe this could be added to qooxdoo.
> 
> 
> Jim Hunter-2 wrote:
>> 
>> I have not tried this yet, but you could simply try to overlay a panel on
>> top of everything before you create the window. Give the panel a light
>> gray
>> color and set it's transparency to 80%-90%. This should make the other
>> controls unreachable and give them a grayed out look without having to
>> touch
>> the events of any of them or the appearance.
>> 
>> Jim
>> 
>> 
>> On 9/14/06, Tomek Loboda  wrote:
>>>
>>> I like the idea. Helps the user focus on THE window. Don't know how to
>>> achieve that though :-)
>>>
>>> Best,
>>> --Tomek
>>>
>>>
>>> dperez wrote:
>>> > Hi,
>>> >
>>> > I like the behaviour of modal windows in this ZK demo:
>>> > http://www.potix.com/zkdemo/userguide/
>>> >
>>> > All the controls are darkened, when a modal window is opened, to
>>> emphasize
>>> > that they unavailable.
>>> >
>>> > Is it easy to achieve something similar with qooxdoo?
>>> > Maybe, playing with appearances.
>>> >
>>> > Regards,
>>> > David
>>>
>>>
>>> -------------------------------------------------------------------------
>>> Using Tomcat but need to do more? Need to support web services,
>>> security?
>>> Get stuff done quickly with pre-integrated technology to make your job
>>> easier
>>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>>> Geronimo
>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>>> _______________________________________________
>>> qooxdoo-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>
>> 
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job
>> easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>> Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> 
>> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/Modal-window-behaviour-in-ZK-tf2270889.html#a6319542
> Sent from the qooxdoo-devel forum at Nabble.com.
> 
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job
> easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> 
> 
>               
> ---------------------------------
> Do you Yahoo!?
>   Listen to your personal radio station on Yahoo!7 Music 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job
> easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Modal-window-behaviour-in-ZK-tf2270889.html#a6321291
Sent from the qooxdoo-devel forum at Nabble.com.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to