On Thu, Aug 19, 2010 at 03:37, Daniel Hirtzbruch <dan...@hirtzbruch.eu>wrote:

>
> Hello,
>
> I'm currently implementing a mechanism to save a user's current frontend
> view on logout / leave for reloading it when the user re-appears to my app.
>
> 'm now stuck at a imho rather basic problem - saving and loading a large
> table's scroll position. The scroll position is saved correctly by using
> the
> following code:
>
> [code]
> var scroller = table.getPaneScroller(1);
> data.rsTbl.scrollPos = {
>  X : scroller.getScrollX(),
>  Y : scroller.getScrollY()
> };
> [/code]
>
> My problem now is how to scroll the table to X/Y position when reloading
> the
> app. I tried it by using this solution:
>

Try this:

table.getPaneScroller(1).getChildControl("scrollbar-y").setPosition(
data.rsTbl.scrollPos.Y);
table.getPaneScroller(1).getChildControl("scrollbar-x").setPosition(
data.rsTbl.scrollPos.X);

Here's my playground test program:

function createRandomRows(rowCount) {
  var rowData = [];
  var now = new Date().getTime();
  var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
  var nextId = 0;
  for (var row = 0; row < rowCount; row++) {
    var date = new Date(now + Math.random() * dateRange - dateRange / 2);
    rowData.push([ nextId++, Math.random() * 10000, date, (Math.random() >
0.5) ]);
  }
  return rowData;
}


// window
var win = new qx.ui.window.Window("Table").set({
  layout : new qx.ui.layout.Grow(),
  allowClose: false,
  allowMinimize: false,
  contentPadding: 0
});
this.getRoot().add(win);
win.moveTo(30, 40);
win.open();

// table model
var tableModel = new qx.ui.table.model.Simple();
tableModel.setColumns([ "ID", "A number", "A date", "Boolean" ]);
tableModel.setData(createRandomRows(1000));

// make second column editable
tableModel.setColumnEditable(1, true);

// table
var table = new qx.ui.table.Table(tableModel).set({
  decorator: null
})
win.add(table);

var tcm = table.getTableColumnModel();

// Display a checkbox in column 3
tcm.setDataCellRenderer(3, new qx.ui.table.cellrenderer.Boolean());

// use a different header renderer
tcm.setHeaderCellRenderer(2, new qx.ui.table.headerrenderer.Icon(
"icon/16/apps/office-calendar.png", "A date"));

this.table = table;

​var button1 = new qx.ui.form.Button("Get scroll position");
button1.addListener("execute",
                    function(e)
                    {
                      this.yPos = table.getPaneScroller(0).getScrollY();
                    },
                    this);

this.getRoot().add(button1, { left : 0, top : 0 });

var button2 = new qx.ui.form.Button("Set scroll position");
button2.addListener("execute",
                    function(e)
                    {
                      table.getPaneScroller(0).getChildControl("scrollbar-y"
).setPosition(this.yPos);
                    },
                    this);

this.getRoot().add(button2, { left : 150, top : 0 });


Derrell
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to