1 /* ************************************************************************
3 qooxdoo - the new era of web development
8 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
11 LGPL: http://www.gnu.org/licenses/lgpl.html
12 EPL: http://www.eclipse.org/org/documents/epl-v10.php
13 See the LICENSE file in the project's top-level directory for details.
16 * Sebastian Werner (wpbasti)
17 * Andreas Ecker (ecker)
19 ************************************************************************ */
21 /* ************************************************************************
25 ************************************************************************ */
27 qx.OO.defineClass("qx.manager.selection.TreeSelectionManager", qx.manager.selection.SelectionManager,
28 function(vBoundedWidget) {
29 qx.manager.selection.SelectionManager.call(this, vBoundedWidget);
33 Should multiple selection be allowed?
35 qx.OO.changeProperty({ name : "multiSelection", type : "boolean", defaultValue : false });
38 Enable drag selection?
40 qx.OO.changeProperty({ name : "dragSelection", type : "boolean", defaultValue : false });
47 ---------------------------------------------------------------------------
48 MAPPING TO BOUNDED WIDGET
49 ---------------------------------------------------------------------------
52 qx.Proto._getFirst = function() {
53 return qx.lang.Array.getFirst(this.getItems());
56 qx.Proto._getLast = function() {
57 return qx.lang.Array.getLast(this.getItems());
60 qx.Proto.getItems = function() {
61 return this.getBoundedWidget().getItems();
64 qx.Proto.getNext = function(vItem)
68 if (qx.ui.tree.Tree.isOpenTreeFolder(vItem))
70 return vItem.getFirstVisibleChildOfFolder();
72 else if (vItem.isLastVisibleChild())
76 while(vCurrent && vCurrent.isLastVisibleChild()) {
77 vCurrent = vCurrent.getParentFolder();
80 if (vCurrent && vCurrent instanceof qx.ui.tree.AbstractTreeElement && vCurrent.getNextVisibleSibling() && vCurrent.getNextVisibleSibling() instanceof qx.ui.tree.AbstractTreeElement) {
81 return vCurrent.getNextVisibleSibling();
86 return vItem.getNextVisibleSibling();
91 return this.getBoundedWidget().getFirstTreeChild();
95 qx.Proto.getPrevious = function(vItem)
99 if (vItem == this.getBoundedWidget())
103 else if (vItem.isFirstVisibleChild())
105 if (vItem.getParentFolder() instanceof qx.ui.tree.TreeFolder) {
106 return vItem.getParentFolder();
111 var vPrev = vItem.getPreviousVisibleSibling();
113 while (vPrev instanceof qx.ui.tree.AbstractTreeElement)
115 if (qx.ui.tree.Tree.isOpenTreeFolder(vPrev))
117 vPrev = vPrev.getLastVisibleChildOfFolder();
130 return this.getBoundedWidget().getLastTreeChild();
141 ---------------------------------------------------------------------------
142 MAPPING TO ITEM DIMENSIONS
143 ---------------------------------------------------------------------------
146 qx.Proto.getItemTop = function(vItem)
149 // return qx.html.Location.getPageBoxTop(vItem.getElement()) - qx.html.Location.getPageInnerTop(this.getBoundedWidget().getElement());
151 var vBoundedWidget = this.getBoundedWidget();
152 var vElement = vItem.getElement();
155 while (vElement && vElement.qx_Widget != vBoundedWidget)
157 vOffset += vElement.offsetTop;
158 vElement = vElement.parentNode;
164 qx.Proto.getItemHeight = function(vItem)
166 if (vItem instanceof qx.ui.tree.TreeFolder && vItem._horizontalLayout)
168 return vItem._horizontalLayout.getOffsetHeight();
172 return vItem.getOffsetHeight();
176 qx.Proto.scrollItemIntoView = function(vItem)
178 if (vItem instanceof qx.ui.tree.TreeFolder && vItem._horizontalLayout)
180 return vItem._horizontalLayout.scrollIntoView();
184 return vItem.scrollIntoView();
193 ---------------------------------------------------------------------------
195 ---------------------------------------------------------------------------
198 qx.Proto.renderItemSelectionState = function(vItem, vIsSelected) {
199 vItem.setSelected(vIsSelected);