function (oContPos, oPopover, oViewport) {
			this.getPopover().setShowArrow(true);
			var oPos = {};

			//Popover should appear at the top (if place available)
			this.getPopover().setPlacement(PlacementType.PreferredTopOrFlip);

			var iBtnWidth = oPopover.width / this._iButtonsVisible;
			oPos.left = oContPos.x + ((this._iButtonsVisible - 1) * iBtnWidth ) / 2 +  (this._getBaseFontSize() * 1 / 2);
			oPos.top = oContPos.y - (this._getBaseFontSize() * 1 / 2);

			// adjust positioning if necessary
			oPos.left = (oPos.left < 32) ? 32 : oPos.left;
			oPos.top = (oPos.top - oViewport.top < 0) ? oViewport.top : oPos.top;

			// check right border positioning
			if (oViewport.width - oPos.left < 32) {
				oPos.left = oViewport.width - 32;
				this.getPopover().addStyleClass("sapUiDtContextMenuRightArrow");
			} else {
				this.getPopover().removeStyleClass("sapUiDtContextMenuRightArrow");
			}

			// in Cozy mode the context menu is bigger, therefore we need a higher threshold for the top parameter
			var iCozyFactor = this._bCompactMode ? 0 : 15;
			if (oPos.top < (100 + iCozyFactor)) {
				this.getPopover().setPlacement(PlacementType.Bottom);
				oPos.top += 16;
			}

			return oPos;
		}
function (oContPos, oPopover, oViewport) {
			this.getPopover().setShowArrow(true);
			var oPos = {};

			//Popover should appear at the top (if place available)
			this.getPopover().setPlacement(PlacementType.PreferredTopOrFlip);

			var iBtnWidth = oPopover.width / this._iButtonsVisible;
			oPos.left = oContPos.x + ((this._iButtonsVisible - 1) * iBtnWidth ) / 2 +  (this._getBaseFontSize() * 1 / 2);
			oPos.top = oContPos.y - (this._getBaseFontSize() * 1 / 2);

			// adjust positioning if necessary
			oPos.left = (oPos.left < 32) ? 32 : oPos.left;
			oPos.top = (oPos.top - oViewport.top < 0) ? oViewport.top : oPos.top;

			// check right border positioning
			if (oViewport.width - oPos.left < 32) {
				oPos.left = oViewport.width - 32;
				this.getPopover().addStyleClass("sapUiDtContextMenuRightArrow");
			} else {
				this.getPopover().removeStyleClass("sapUiDtContextMenuRightArrow");
			}

			// in Cozy mode the context menu is bigger, therefore we need a higher threshold for the top parameter
			var iCozyFactor = this._bCompactMode ? 0 : 15;
			if (oPos.top < (100 + iCozyFactor)) {
				this.getPopover().setPlacement(PlacementType.Bottom);
				oPos.top += 16;
			}

			return oPos;
		}
function ( oContPos , oPopover , oViewport ) { this . getPopover ( ) . setShowArrow ( true ) ; var oPos = { } ; //Popover should appear at the top (if place available) this . getPopover ( ) . setPlacement ( PlacementType . PreferredTopOrFlip ) ; var iBtnWidth = oPopover . width / this . _iButtonsVisible ; oPos . left = oContPos . x + ( ( this . _iButtonsVisible - 1 ) * iBtnWidth ) / 2 + ( this . _getBaseFontSize ( ) * 1 / 2 ) ; oPos . top = oContPos . y - ( this . _getBaseFontSize ( ) * 1 / 2 ) ; // adjust positioning if necessary oPos . left = ( oPos . left < 32 ) ? 32 : oPos . left ; oPos . top = ( oPos . top - oViewport . top < 0 ) ? oViewport . top : oPos . top ; // check right border positioning if ( oViewport . width - oPos . left < 32 ) { oPos . left = oViewport . width - 32 ; this . getPopover ( ) . addStyleClass ( "sapUiDtContextMenuRightArrow" ) ; } else { this . getPopover ( ) . removeStyleClass ( "sapUiDtContextMenuRightArrow" ) ; } // in Cozy mode the context menu is bigger, therefore we need a higher threshold for the top parameter var iCozyFactor = this . _bCompactMode ? 0 : 15 ; if ( oPos . top < ( 100 + iCozyFactor ) ) { this . getPopover ( ) . setPlacement ( PlacementType . Bottom ) ; oPos . top += 16 ; } return oPos ; }
Works out how the ContextMenu shall be placed
@param {object} oOverlay the dimensions of the overlay
@param {object} oPopover the dimensions of the popover
@param {object} oViewport the dimensions of the viewport
@return {object} the position of the "fakeDiv"
Works out how the ContextMenu shall be placed
Calculates the position of the popover in the right border of the context menu.