It looks like you'd just need one more getLayoutParent() than what I showed
you. That is beginning to seem pretty hokey, though. Why don't you just
save the tabview in some retrievable location, rather than figuring out
where it is. Do you have lots of these things, or only one of them?

Derrell


On Thu, Mar 15, 2012 at 15:25, Scott Chapman <[email protected]> wrote:

> On Wed, Mar 14, 2012 at 5:13 PM, Derrell Lipman
> <[email protected]> wrote:
> > On Wed, Mar 14, 2012 at 20:01, Scott Chapman <[email protected]> wrote:
> >>
> >> Hi!
> >>
> >> I have a Page with a Table on it...
> >>
> >> qx.Class.define("kiosk_portal.KioskListTab",
> >> {
> >>  extend : qx.ui.tabview.Page,
> >>  members :
> >>  {
> >>    host_id : null
> >>  },
> >>  construct : function(label)
> >>    {
> >>      this.base(arguments, label);
> >>      this.setLayout(new qx.ui.layout.Grow());
> >>
> >>      this.__kioskListTable = new kiosk_portal.KioskListTable().set({
> >>        decorator: null,
> >>        height: 20,
> >>        maxWidth: 550
> >>      });
> >>
> >>      this.add(this.__kioskListTable);
> >>      this.setShowCloseButton(false);
> >>    },
> >>
> >> >From within the kiosk_portal.KioskListTable(), I want to grab the
> >> TabView that holds this Page, so I can call a method on it.
> >>
> >> How to get the parent TabView for this Table?
> >
> >
> > You're using two different names but I think one of them is a typo.
> > kiosk_portal.KioskListTable is missing the trailing "le" in the class
> > definition, but I think you intend for the question and the class to
> refer
> > to the same thing.
> >
> > The TabView has two child controls, "bar" and "pane". When you do
> > tabView.add(page) you are actually adding the page to the "pane" child.
> > Therefore, given a  Page object, you should be able to retrieve the
> TabView
> > it's associated with, using:
> >
> > var tabView = page.getLayoutParent().getLayoutParent();
> >
> > Let's try it:
> >
> > http://tinyurl.com/7ro3dzm
> >
>
> Thanks Derrell,
> I do have two classes, one for the Tab and one for the Table which is
> added to the Tab.  Here's the Table's class:
>
>
> qx.Class.define("kiosk_portal.KioskListTable",
> {
>  extend : qx.ui.table.Table,
>  construct : function()
>    {
>      this.base(arguments);
>      this.setInitiallyHiddenColumns([0,1]);
>      this.setColumnVisibilityButtonVisible(false);
>      var tableModel = new qx.ui.table.model.Simple();
>      tableModel.setColumns([ "ID", "ShortHostString", "MinutesOld", "Host"
> ]);
>      this.setTableModel(tableModel);
>      this.setColumnWidth(0, 70);
>      this.setColumnWidth(1, 120);
>      this.setColumnWidth(2, 75);
>      this.setColumnWidth(3, 420);
>      this.setStatusBarVisible(true);
>      this.__jsonHostsListFetcher = new qx.data.store.Json(null);
>
>      this.setShowCellFocusIndicator(false);
>
>      this.__jsonHostsListFetcher.setUrl("/kiosk_list");
>      this.__jsonHostsListFetcher.addListener( "loaded",
>      function(e)
>      {
>        this.resetAdditionalStatusBarText();
>        var tData = e.getData();
>        var nativeData = [ ];
>        tData.toArray().forEach(
>          function(row)
>          {
>            nativeData.push(row.toArray());
>          });
>        var tableModel = this.getTableModel();
>        tableModel.setData(nativeData);
>        var row_count = tableModel.getRowCount();
>        this.setHeight(40 + 20 * row_count);
>      },
>      this);
>
>      this.addListener("cellDblclick",
>        function (e) {
>          var tableModel = this.getTableModel()
>          var row = tableModel.getRowData(e.getRow())
>          var label = row[1];
>          var host_id = row[0];
>          this.__tabView.openOrSelectTab(label, host_id);
>        }
>        ,this);
>
>      this.__timer1 = new qx.event.Timer(60000); // 60,000
> microseconds = 1 minute
>      this.__timer1.addListener("interval", function(e)
>      {
>        this.setAdditionalStatusBarText(" -- Loading --");
>        this.__jsonHostsListFetcher.reload();
>      }, this);
>      this.__timer1.start();
>  },
>  destruct : function()
>    {
>    //console.log("destructor called on KioskCompletedTasksTable");
>    this.__timer1.stop();
>    //this._disposeObjects("__timer1");
>    }
> });
>
>
> You can see in the cellDblClick listener that I want to do:
>
>     this.__tabView.openOrSelectTab(label, host_id);
>
> So from within this listener, I need the containing TabView that
> contains the Tab that contains the Table, so I can tell the TabView to
> open a new Tab.  I don't know how to get the TabView from within the
> Table class.
>
> Scott
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to