<@doc hierarchy="GMLDOM"> Layout Code <copyright>(c) SAP AG 2003-2006. All rights reserved.</copyright> </doc@> #ALIAS[l=core.lyt:Layout] // NOTE: Write decent help for all methods here Class FormRuler inherit Ruler; // implement ILayoutable; // NOTE: Uncomment, when ILayoutable will have only neccessary methods property ruleImageShiftLeft = 3; //width = 7; property correctX = 0; static readonly property _hType = 'HR'; static readonly property _vType = 'SPAN'; static readonly property _hCSS = 'BOX-RULER H-BOX-RULER'; static readonly property _vCSS = 'BOX-RULER V-BOX-RULER'; static readonly property _rulerType = 'formruler'; constructor(board, parent, index, isVertical) this.supercall(board, parent, index, isVertical); end override method _getHType() return this._hType; end override method _getVType() return this._vType; end override method _getHCSS() return this._hCSS; end override method _getVCSS() return this._vCSS; end override method _getType() return this._rulerType; end override method _getParentElem(parent) return parent.contents; end override method canApplayRect(x, y, w, h) var index = this.index; var parent = this.getParent(); var parentBase = parent.base; var columns = parentBase.columns; var vRulers = parent.vRulers; var ruleImageShiftLeft = this.ruleImageShiftLeft; var defs = RULE('defineWidget', null, parentBase); var minColumnWidth = defs['minColumnWidth']; var _minColumnWidth = (parentBase.scaleMode == 'fix' && columns == 1) ? minColumnWidth : 1; // use this value for compensate half column margin var addMargin = (parentBase.scaleMode == 'fix' && columns == 1) ? defs['margin1_5'] : 0; var parentWidth = MAX(parent.contents.clientWidth, parent.contents.scrollWidth); var leftBound = index > 0 ? INT(vRulers[index-1].elem.style.left) + defs['margin1_5'] : defs['margin']; var rightBound = index < columns - 2 ? INT(vRulers[index+1].elem.style.left) : parentWidth; if (leftBound + minColumnWidth - ruleImageShiftLeft > x) this.correctX = leftBound + minColumnWidth - ruleImageShiftLeft; else if (rightBound - minColumnWidth - defs['margin1_5'] - ruleImageShiftLeft < x) this.correctX = rightBound - minColumnWidth - defs['margin1_5'] - ruleImageShiftLeft; else this.correctX = x; x += ruleImageShiftLeft; return leftBound + _minColumnWidth + addMargin <= x && rightBound - _minColumnWidth - defs['margin1_5'] - addMargin >= x; end override method applyPos(dontChangeFoc) var parent = this.getParent(); var pBase = parent.base; if (pBase.is1FixMode()) // Form right margin + Inter-Box Gap + Form left margin - half-gap - ruleImageShiftLeft pBase.setProperty('#ASPECT[l:oneColumnWidth]', (INT(this.elem.x) - 20 + this.ruleImageShiftLeft) + ' #TEXT[XFLD_CCD_PIXELS]'); else { var map = pBase.getGridMap(); if (!(map && map[0])) return; var columns = pBase.columns; var colDefs = pBase.colDefs2Object(); var colW = colDefs.columns; var index = this.index; var vRulers = parent.vRulers; var twoColumnPercentWidth = 0; for (var i=index; i<=index + 1; i++) twoColumnPercentWidth += colW[i]; var defs = RULE('defineWidget', null, pBase); var leftBound = map[0][index].x1 + (index == 0 ? defs['margin'] : defs['margin1_5']); var rightBound = map[0][index+1].x2 - (index == columns - 2 ? defs['formWidth'] : defs['margin1_5']) - leftBound - defs['gapW']; var current = INT(this.elem.x) - leftBound - defs['margin1_5']; //correct bounds if (current <= 0) current = 1; if (rightBound < current) current = rightBound - 1; //calculate new relation var factor = pBase.getFactor(); colW[index] = ROUND(twoColumnPercentWidth * current / rightBound, 0.01 * factor); //correct minimums if (colW[index] < 0.01) colW[index] = 0.01; else if (colW[index] > 0.99) colW[index] = 0.99; colW[index + 1] = twoColumnPercentWidth - colW[index]; if (colW[index + 1] < 0.01) { colW[index + 1] = 0.01; colW[index] = twoColumnPercentWidth - colW[index + 1]; } pBase.setProperty('colDefs', pBase.colDefs2String(colW, colDefs.labels)); if (this.correctX != 0 && this.correctX != this.elem.x) { this.elem.style.left = this.correctX; this.correctX = 0; } } if (dontChangeFoc == undefined) parent.board.selection.setSingle(parent.elem); end