Jean-Baptiste BRIAUD - Novlog schrieb:
> It worked and is very usefull.
> Thanks a lot !
>
> As a future optimisation, I was wondering if we could improve the way
> to add data :
>
>> for (var i = 0; i < 10; i++) {
>> ...
>> list.add(item);
>> }
>>
> I'm guessing (I'm new to qooXdoo) but adding an element inside the
> loop will probably launch the rendering process each turn of the loop.
> Instead, it could be refactored with this API : list.add( an array of
> element ), so, at the end of the loop, we add all the elements at
> once, and the rendering process would be called only once.
> I may do that later, and then, of course, I'll let you know here to
> give back that small refactor.
> I don't have enough elements to show right now but also I feel I have
> too much qooXdoo to learn before proposing code :-)
>
> On 1 Oct 2008, at 11:46, Matthew Gregory wrote:
>
any visual changes to widgets in qooxdoo are queued. The code above is
perfectly OK. There will only be one layout/rendering pass.
Best Fabian
>
>> Suppose I should also give an example of how to use it ;)
>>
>> var list = new custom.ui.comps.TileView();
>> this.add(list); // assuming your layout will size this
>>
>> for (var i = 0; i < 10; i++)
>> {
>> var item = new custom.ui.comps.TileViewItem("File " + i + ".png",
>> "custom/icon/48/file.png", "png file", "520k");
>>
>> list.add(item);
>> }
>>
>> There is also a screenshot attached.
>>
>> Matthew Gregory wrote:
>>
>>> Hi,
>>> (assumung you're using 0.8)
>>> I've written something similar to this. My basic idea is to use
>>> qx.ui.form.list with a few modifications, mainly using a flowlayout
>>> (you'll have to get this from qooxdoo-contrib).
>>> Here are a couple of classes for this which are still work in
>>> progress.
>>> This is currently a bug with scrolling but this will be fixed in
>>> 0.8.1
>>> Let me know how you get on :)
>>> Matt
>>> ################# begin TileView.js ###########################
>>> qx.Class.define("custom.ui.comps.TileView",
>>> {
>>> extend : qx.ui.form.List,
>>> construct : function()
>>> {
>>> this.base(arguments);
>>> var flow = new flowlayout.FlowLayout();
>>> this.getChildrenContainer().setLayout(flow);
>>> this.getChildrenContainer().setHeight(800);
>>> },
>>> members :
>>> {
>>> _onAddChild : function(e)
>>> {
>>> var el = e.getData();
>>> el.set(
>>> {
>>> width : 250,
>>> minWidth : 250,
>>> maxWidth : 250
>>> });
>>> this.base(arguments, e);
>>> }
>>> }
>>> });
>>> ################# end TileView.js ###########################
>>> ################# begin TileViewItem.js ###########################
>>> qx.Class.define("custom.ui.comps.TileViewItem",
>>> {
>>> extend : qx.ui.container.Composite,
>>> construct : function(title, icon, description, status)
>>> {
>>> this.base(arguments, new qx.ui.layout.HBox(10));
>>> var iconLayout = new qx.ui.layout.Canvas();
>>> var iconCont = new qx.ui.container.Composite(iconLayout);
>>> iconCont.add(this._icon = new qx.ui.basic.Image(icon));
>>> var labelLayout = new qx.ui.layout.VBox(2);
>>> var labelCont = new qx.ui.container.Composite(labelLayout);
>>> labelCont.setLayoutProperties({flex:1});
>>> labelCont.add(this._title = new qx.ui.basic.Label(title));
>>> labelCont.add(this._description = new
>>> qx.ui.basic.Label(description));
>>> labelCont.add(this._status = new
>>> qx.ui.basic.Label(status)); iconCont.setAnonymous(true);
>>> labelCont.setAnonymous(true);
>>> this._icon.setAnonymous(true);
>>> this._title.setAnonymous(true);
>>> this._title.setFont("bold");
>>> this._description.setAnonymous(true);
>>> this._status.setAnonymous(true);
>>> this.add(iconCont);
>>> this.add(labelCont);
>>> },
>>> events:
>>> {
>>> /** (Fired by [EMAIL PROTECTED] qx.ui.form.List}) */
>>> "action" : "qx.event.type.Event"
>>> },
>>> properties :
>>> {
>>> appearance :
>>> {
>>> refine : true,
>>> init : "listitem"
>>> },
>>> /** The assigned qx.ui.form.RadioGroup which handles the
>>> switching between registered buttons */
>>> manager :
>>> {
>>> check : "qx.ui.form.RadioGroup",
>>> nullable : true,
>>> apply : "_applyManager"
>>> },
>>> /** Fires a "changeValue" (qx.event.type.Data) event */
>>> value :
>>> {
>>> nullable : true,
>>> event : "changeValue"
>>> },
>>> title :
>>> {
>>> check : "String",
>>> apply : "_applyTitle"
>>> },
>>> description :
>>> {
>>> check : "String",
>>> apply : "_applyDescription"
>>> },
>>> statusText :
>>> {
>>> check : "String",
>>> apply : "_applyStatusText"
>>> }
>>> },
>>> members :
>>> {
>>> _icon : null,
>>> _title : null,
>>> _description : null,
>>> _status : null,
>>> _applyTitle : function(value)
>>> {
>>> this._description.setContent(value);
>>> },
>>> _applyDescription : function(value)
>>> {
>>> this._description.setContent(value);
>>> },
>>> _applyStatusText : function(value)
>>> {
>>> this._status.setContent(value);
>>> },
>>> _applyManager : function(value, old)
>>> {
>>> if (old)
>>> old.remove(this);
>>> if (value)
>>> value.add(this);
>>> }
>>> }
>>> });
>>> ################# end TileViewItem.js ###########################
>>> Jean-Baptiste BRIAUD - Novlog wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm coding a window that will show files (like Finder of Windows
>>>> file system explorer).
>>>>
>>>> The current version use a table, each line is a file and column
>>>> show file attributes (could be size, ...).
>>>> This is like the details view on Windows OS.
>>>>
>>>> I would like to have another view with icon instead of table's
>>>> lines but I have no idea how to start !
>>>>
>>>> What widget should I use knowing that there could be lots of file
>>>> eventually ... ?
>>>> I'm already inside qx.ui.window.Window.
>>>> I thought I might use Window without title bar and just one icon
>>>> inside, but I'm quite sure its probably a bad idea to use Window
>>>> inside Window...
>>>>
>>>> I don't want that end-user could move file like in real file
>>>> system to void storing all positions.
>>>> I would like to allow drag'n drop between opened window (to move/
>>>> copy file) and in some cases, allow file to be reordered by
>>>> drag'n drop.
>>>>
>>>> Any ideas welcome :-)
>>>>
>>>> -------------------------------------------------------------------------
>>>> This SF.Net email is sponsored by the Moblin Your Move Developer's
>>>> challenge
>>>> Build the coolest Linux based applications with Moblin SDK & win
>>>> great prizes
>>>> Grand prize is a trip for two to an Open Source event anywhere in
>>>> the world
>>>> http://moblin-contest.org/redirect.php?banner_id=100&url=/
>>>>
>>> -------------------------------------------------------------------------
>>> This SF.Net email is sponsored by the Moblin Your Move Developer's
>>> challenge
>>> Build the coolest Linux based applications with Moblin SDK & win
>>> great prizes
>>> Grand prize is a trip for two to an Open Source event anywhere in
>>> the world
>>> http://moblin-contest.org/redirect.php?banner_id=100&url=/
>>>
>> <
>> tileview
>> .JPG
>>
>> -------------------------------------------------------------------------
>> This SF.Net email is sponsored by the Moblin Your Move Developer's
>> challenge
>> Build the coolest Linux based applications with Moblin SDK & win
>> great prizes
>> Grand prize is a trip for two to an Open Source event anywhere in
>> the world
>> http://moblin-contest.org/redirect.php?banner_id=100&url=/_______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
>
>
--
Fabian Jakobs
JavaScript Framework Developer
1&1 Internet AG
Brauerstraße 48
76135 Karlsruhe
Amtsgericht Montabaur HRB 6484
Vorstand: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas
Gottschlich, Matthias Greve, Robert Hoffmann, Markus Huhn, Oliver Mauss, Achim
Weiss
Aufsichtsratsvorsitzender: Michael Scheeren
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel