<@doc hierarchy="GMLDOM"> Layout Code (c) SAP AG 2003-2006. All rights reserved. Aspect ToolbandLayout for Layout; inherit ControlGroupLayout; override virtual property type = 'toolband'; override virtual method layoutContents(focusWidget, operation) var rootInfo = this.buildRearrangeParams(focusWidget, operation); var changes = this.board.getChangesFromCache(rootInfo&&rootInfo.focus); RULE('rearrangeWidgets', base, this.board, rootInfo, changes); var repaint = !ISEMPTY(changes); if (repaint) RULE('doApplyLayout', base, changes); return repaint; end override virtual method buildRearrangeParams(focusWidget, operation, contentsSize, syncElems) var board = this.board; var sessionCache = board.sessionCache; // TODO: try to find new solution var withLabel = { 'core.gml2:InputField' :true, 'core.gml2:ComboBox' :true, 'core.gml2:DropDown' :true, 'core.gml2:DatePicker' :true, 'core.gml2:DateTimePicker' :true }; var maxTBLabelWidth = board.textedit._maxTBLabelWidth; var bSize = SPLIT(base.size); var rootInfo = { object : base, w : INT(bSize[0]||160), h : INT(bSize[1]||24), focus : null, // if children contain focusWidget's ctlInfo, this points to it. operation : operation, children : [], // ctlInfo of child objects (groups/controls) syncElems : syncElems }; var controls = base.controls; for (var iter in controls) { var ctlWidget = board.getWidget(iter); var ctl = controls[iter]; var pos = SPLIT(sessionCache[ctl.id + '_pos'] ? sessionCache[ctl.id + '_pos'].value : ctl.pos); var size = SPLIT(sessionCache[ctl.id + '_size'] ? sessionCache[ctl.id + '_size'].value : ctl.size); var ctlInfo = { object : ctl, x : INT(pos[0]||0), y : INT(pos[1]||0), w : INT(size[0]||(ctlWidget&&ctlWidget.defaultWidth)||100), h : INT(size[1]||16), index : ctl.index, // object's index in its parent. NOTE: DOM dependency freeSize : ctlWidget&&ctlWidget.freeSize, minWidth : ctlWidget&&ctlWidget.minWidth||0, defaultWidth : ctlWidget&&ctlWidget.defaultWidth||0, suportLabel : ctl.Class.fullname in withLabel, labelWidth : ctlWidget&&ctlWidget.labelWidth||0, maxTBLabelWidth : maxTBLabelWidth, focus : null, // if children contain focusWidget's ctlInfo, this points to it. children : null // ctlInfo of child objects (groups/controls) }; rootInfo.children.push(ctlInfo); if (focusWidget && focusWidget.id == iter) rootInfo.focus = ctlInfo; } return rootInfo; end override virtual method adjustDndArrows(clientX, clientY, currentElement, checkParent) var data = this.supercall(); try { // currentElement from palette OR from same toolbar var newParent = currentElement&¤tElement.parentElement&¤tElement.parentElement.parentElement&¤tElement.parentElement.parentElement.id == this.parentElement.id; if (!currentElement || currentElement.parentElement.id == this.id || (currentElement.parentElement.parentElement && (currentElement.parentElement.parentElement.id == this.parentElement.id))) { var r = this.getAbsoluteContentRect(); var leftShift = r.x, topShift = r.y; var arrows = base.arrows; var curWidget = this.board.getWidget(currentElement); clientX += this.board.editbox.scrollLeft - leftShift; clientY += this.board.editbox.scrollTop - topShift; for (var i=0, len=arrows.length; i= clientX && aData.fromY <= clientY && aData.toY >= clientY) { if (!newParent && checkParent && curWidget && curWidget.base.index + aData.rowNumner == i) aData = arrows[i - 1]; data.newIndex = arrows[i].index - 0.5; data.top = topShift - this.arrowImageTopShift + aData.top; data.left = leftShift + aData.left; data.twoArrowVisible = true; data.newOffX = arrows[i].left; data.newOffY = arrows[i].top+3; data.newParent = currentElement ? true : undefined; data.dropObjLeft = r.x + this.getDropLeftShift(); data.dropObjTop = r.y; data.dropObjWidth = r.w; data.dropObjHeight = r.h; data.dropObjVisible = true; return data; } } } else return tbWidget.adjustParentArrows(currentElement); } catch(ex) {} return data; end override virtual method adjustParentArrows(currentElement) var data = this.supercall(); try { data.twoArrowVisible = true; data.dropObjVisible = true; var r = this.getAbsoluteContentRect(); if (base.arrows) { var index = this.board.getWidget(currentElement).base.index; var arrow = base.arrows[index]; var addToIndex = arrow.rowNumner ? arrow.rowNumner : 0; arrow =base.arrows[index + addToIndex]; var left = arrow.left; data.top = r.y - this.arrowImageTopShift + arrow.top; data.left = r.x + left; data.newOffX = left; } // data.dropObjLeft = r.x + this.getDropLeftShift(); // data.dropObjTop = r.y; // data.dropObjWidth = r.w; // data.dropObjHeight = r.h; } catch(ex) {} return data; end