I read a little about mapping the bind. What's the best way to go? 1) treeController.addListener("changeSelection", function(ev) { alert(ev); var getter = qx.core.Property.$$method.get; var data = ev.getData().toArray()[0];
if(data[getter['folders']]) { desktopController.setModel(data.get('folders')); } else if(data[getter['files']]) { desktopController.setModel(data.get('files')); } else { desktopController.resetModel(); return; } }, this); or, 2) treeController.bind("selection[0]", desktopController, "model", { converter : function(value) { var getter = qx.core.Property.$$method.get; if(value[getter['folders']]) { return value.get('folders'); } else if(value[getter['files']]) { return value.get('files'); } else { desktopController.resetModel(); return; } } }); They do the same thing, but which one is the better? :confused: Dr. Flink wrote: > > Hi, > > I solved my first problem (preload the right pane with the roots folders) > thanks to you. The root had to be visible to be added to selection: > > store.addListener("loaded", function(ev) { > tree.addToSelection(tree.getRoot()); // First I add the root to > selection > tree.set({hideRoot: true}); // ...THEN I hide it > tree.getRoot().setOpen(true); > }, this); > > > I solved my last problem (only wanting to show files in the right pane, > not in the tree) this way: > > The data from server: > > { > "name": "root", > "folders": [ > { > "name": "Automobil.se", > "folders": [ > { > "name": "Subfolder 1", > "files": [ > "name": "THIS IS A FILE" > ] > } > ] > } > ] > } > > Instead of binding the treeController to the desktopController > (treeController.bind("selection[0].folders", desktopController, > "model");), I do it manually: > > treeController.addListener("changeSelection", function(o) { > var getter = qx.core.Property.$$method.get; > var data = o.getData().toArray()[0]; > > if(data[getter['folders']]) { > desktopController.setModel(data.get('folders')); > } > else if(data[getter['files']]) { > desktopController.setModel(data.get('files')); > } > else { > desktopController.resetModel(); > return > } > }, this); > > > About the orientation issue: At the moment, my desktop.Container extends > the qx.ui.core.scroll.AbstractScrollArea (same as List does). > I'm going to let it extend qx.ui.core.Widget instead and do the navigation > like in the Gallery demo. > > > Thoughts on this are very appreciated :) > > //Rickard > > > MartinWittemann wrote: >> >> Hello Rickard, >> >> your result so far loks really great! But now to your questions: >> >> >> Dr. Flink wrote: >>> >>> The tree controllers store is bound to the new controller through: >>> <p><code>treeController.bind("selection[0].folders", desktopController, >>> "model");</code></p> >>> >> That looks like it exactly the way i thought of it. :) >> >> >> Dr. Flink wrote: >>> >>> To mark the items as selected in the right pane I made a new Appearence >>> I named "desktopitem". Is this the correct way to go? >>> >> Yes, why not. You can always apply your own appearance if you like it. >> Another possibility is to overwrite the original appearance called >> 'listitem'. >> >> >> Dr. Flink wrote: >>> >>> I want the tree root content to be initially loaded into the right pane. >>> I tried this, but with no result: >>> <pre> >>> store.addListener("loaded", function(ev) { >>> tree.getRoot().setOpen(true); >>> tree.addToSelection(tree.getRoot()); >>> treeController.bind("selection[0].folders", desktopController, >>> "model"); >>> }, this); >>> </pre> >>> >> Your code is doing three things at once. >> First, the opening of the root folder should work, right? You can see an >> example here: >> http://demo.qooxdoo.org/current/demobrowser/#data~JsonToTree.html >> Second, you are selecting the root. Well, maybe thats working but your >> tree's root folder is not visible so you will not see it (i guess). >> Perhaps you should try to make the root node visible to see if its >> working. Another tip to the selection handling. You can always use models >> and push them into the selection array of the controller. That way, you >> dont have to bother with any tree folder at all! >> Third, you set up the binding. That's working but you don't need to put >> that line into the loaded handler. The binding can handle that nicely >> without any extra code. As soon as the a selection is made, the model of >> the list controller will be set. >> >> >> Dr. Flink wrote: >>> >>> I want the user to be able to navigate through all the arrow keys, not >>> just left/right. Any Ideas? >>> I guess it must have something to do with: >>> <pre> >>> orientation : >>> { >>> check : ["horizontal", "vertical"], >>> init : "horizontal", >>> apply : "_applyOrientation" >>> }, >>> ... >>> ... >>> _applyOrientation : function(value, old) >>> { >>> // Configure spacing >>> this._applySpacing(this.getSpacing()); >>> }, >>> </pre> >>> ...I would like to use "both" ;). >>> >> The orientation property is for the look of the list. Take a look at the >> list demo to see how it can be used: >> http://demo.qooxdoo.org/current/demobrowser/#widget~List.html >> Enabling both would be some kind of 'i don't know what to do'. ;) >> But thats an interesting task because you have to subclass the list and >> handle the "up" and "down" keys yourself by stepping the right amount of >> list items. So you need to know how many list items are in one line to do >> that job right. >> >> >> Dr. Flink wrote: >>> >>> And, my last question (for now). Is it possible to mark a folder as >>> "leaf" in the model? >>> I do not want the deepest level to be visible in the tree if it is >>> "files" and not "folders". >>> In other words: Automobil.se -> Subfolder 1 (leaf). >>> ...but still, the content inside of subfolder 1 will be rendered in the >>> desktop container (right pane). >>> >> Well, we don't have such a functionality exactly as you need it. But i >> can imagine that you put an extra flog into your model which holds a >> boolean value if the folder should be visible or not. That flag could be >> bound to visibility property of the widget, which should do this job. >> >> Regards, >> Martin >> > > -- View this message in context: http://n2.nabble.com/Bind-tree-controller-to-a-composite-container-tp4255140p4275833.html Sent from the qooxdoo mailing list archive at Nabble.com. ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ qooxdoo-devel mailing list qooxdoo-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel