Yep, I'm currently fighting the "focus" race with these event routines -
the table focus event is firing after the textbox blur event fires, so I
can't set the property in time to prevent the table from hiding.  I
might try using a timer to allow all of the focus/blur events to
complete before calling a function to evaluate closing the popup
windows.  I also tried to set an event on the "Root" object to detect a
click outside of the Qooxdoo widgets, but that's not closing the popups:

      // Add a focus listener
      this.getRoot().addListener("click", function(e) {
        onpopup.hide();
        popopup.hide();
      });

I tried it with both the "focus" and "click" events, but it's obviously
not firing when I click outside the Qooxdoo objects.  Again, this might
be because I'm using the Inline method if implementation.

I just wish I knew why the tables don't close on their own when I
navigate away, like the demobrowser objects in the popup demo.

Thanks for your thoughts,

   Gene

On Fri, 2009-03-13 at 13:29 -0700, Jim Hunter wrote:

> I would have bet that there was a method to see if an object has
> focus, but like you I couldn't find one. So doing what you suggest and
> create two event handlers for when the table gets/losses focus and
> setting a variable might work fine. At least that is the way I would
> do it if I was solving this problem. There is an event for
> activate/deactivate that you might look into if focus/blur don't work
> perfect. And you might want to add a slight delay in your test code
> because the slight amount of time it takes to move the activation from
> one control to another might be enough for your code to fail if it
> executes too quickly. 
> 
> 
> Jim
> 
> 
> On Fri, Mar 13, 2009 at 11:13 AM, Gene Amtower <[email protected]>
> wrote:
> 
>         On Fri, 2009-03-13 at 09:28 -0700, Jim Hunter wrote:
>         
>         > Inside the routine where you are hiding the table, make one
>         > additional check to see if the table has focus, and if it
>         > does not, then hide it. Then on the table object, when it
>         > losses focus you can hide it then. Something that I have
>         > done similar to your scenario, is that I pop up a window
>         > that I want to be displayed until something outside the
>         > window is clicked, and to handle this I added a click
>         > listener to the main page, and every time it is clicked it
>         > looks to see if my pop up is visible. If it is, it simply
>         > hides it. If not it does nothing.
>         > 
>         > 
>         > Jim
>         > 
>         
>         
>         
>         Thanks, Jim.  I considered that but didn't know if I was
>         missing something in my use of the Qooxdoo widgets.  How do
>         you recommend testing for the focus on the table?  
>         
>         I can't find a property for the focus state in Javascript, but
>         I found something on the web about adding a custom variable to
>         record the focus state of an object when it receives focus
>         (using the focus event on that object).  Is there a better way
>         using a Qooxdoo property that is automatically set with the
>         focus state?  If there is, I can't find it in Qooxdoo either.
>         
>         Thanks,
>         
>            Gene 
>         
>         
>         
>         > On Fri, Mar 13, 2009 at 9:04 AM, Gene Amtower <g...@pc-
>         > backup.com> wrote:
>         > 
>         >         Hello all,
>         >         
>         >         I'm creating popup table objects using
>         >         Table.model.Simple, linked to user entry in a
>         >         corresponding text field.  Eventually, the textfield
>         >         values are going to cause the tables to get
>         >         populated with appropriate data as the user types,
>         >         but for now I'm just trying to get them to display
>         >         and hide appropriately.  I'm incorporating these
>         >         widgets into my page using the "Inline" method and
>         >         corresponding DIV containers.
>         >         
>         >         The table is displayed correctly whenever I type in
>         >         the textfield (using the "input" event), but it
>         >         remains visible when I remove focus from the
>         >         textfield.
>         >         
>         >         In the demobrowser example for popups, it uses Atom
>         >         objects displayed through a button click event, and
>         >         the popup objects disappear when the focus is
>         >         removed from BOTH the button and the popup, but not
>         >         before.  I've examined the js code in this demo, and
>         >         I don't see anything special there to control the
>         >         auto-hide of the popup.
>         >         
>         >         I finally added a "focusout" event listener on the
>         >         textfield to hide the popup, and it works fine
>         >         unless I want to click on something in the popup
>         >         table.  In this case, the click in the table object
>         >         is interpreted as a loss of focus on the textfield
>         >         and the table closes.  I think this is because it's
>         >         not a child of the textfield even though it's
>         >         displayed by the textfield event.  I don't think I
>         >         can add the popup table as a child of the textfield
>         >         to prevent this because it is already added to the
>         >         popup object.  It would not make sense to "add" an
>         >         object to two different containers, right?
>         >         
>         >         How do I get the tables to close whenever I click
>         >         outside of the textfield or table, but remain as
>         >         long as I'm "focused" on one of these two objects.
>         >         
>         >         Here's the popup code I'm using:
>         >         
>         >               // Create popup order table
>         >               var ordertableModel = new
>         >         qx.ui.table.model.Simple();
>         >               ordertableModel.setColumns([ "Order",
>         >         "Customer", "Date" ]);
>         >               var ordertable = new qx.ui.table.Table
>         >         (ordertableModel);
>         >               ordertable.set({width: 400, height: 400,
>         >         decorator: null});
>         >         
>         >               // Now create the popup container for
>         >         ordernumbertable
>         >               var onpopup = new qx.ui.popup.Popup(new
>         >         qx.ui.layout.Basic());
>         >               onpopup.add(ordertable);
>         >         
>         >               // Add a popup listener
>         >               orderno.addListener("input", function(e) {
>         >                 onpopup.placeToWidget(orderno, true);
>         >                 onpopup.show();
>         >               }, this);
>         >         
>         >               // Add a popup listener
>         >               orderno.addListener("focusout", function(e) {
>         >                 onpopup.hide();
>         >               });
>         >         
>         >         BTW, I've added two different textfield/table pairs
>         >         in my page, and when I click on the second
>         >         textfield, the popup table from the first textfield
>         >         remains visible, even when the popup table from the
>         >         second textfield is displayed, but if I click within
>         >         the second popup table, THEN the first popup table
>         >         goes away.
>         >         
>         >         Am I missing something basic in the popup object
>         >         settings?  Is this because I'm using the Inline
>         >         method instead of an application method?  Or is
>         >         something not working as it should?
>         >         
>         >         Thanks,
>         >         
>         >           Gene Amtower
>         >           PC Backup
>         
>         
>         
>         
>         
> ------------------------------------------------------------------------------
>         Apps built with the Adobe(R) Flex(R) framework and Flex
>         Builder(TM) are
>         powering Web 2.0 with engaging, cross-platform capabilities.
>         Quickly and
>         easily build your RIAs with Flex Builder, the Eclipse(TM)based
>         development
>         software that enables intelligent coding and step-through
>         debugging.
>         Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-
>         com
>         _______________________________________________
>         qooxdoo-devel mailing list
>         [email protected]
>         https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>         
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
> software that enables intelligent coding and step-through debugging.
> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
> _______________________________________________ qooxdoo-devel mailing list 
> [email protected] 
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to