function _createContextmenu(mData) {
		var $contextmenu = $("<div></div>");
		var $highlight = $("<div></div>");
		var $press = $("<div></div>");
		var $enterText = $("<div></div>");

		mMenuItems = {
			highlight: $highlight,
			press: $press,
			enterText: $enterText
		};

		$highlight.text("Highlight");
		$press.text("Press");
		$enterText.text("Enter Text");

		$highlight.on("click", function () {
			ContextMenu.hide();
			var mCommandData = {
				domElementId: sSelectedDomElement
			};
			if (mData.withEvents) {
				CommunicationBus.publish(CommunicationChannels.CONTEXT_MENU_HIGHLIGHT, mCommandData);
			} else {
				CommandExecutor.execute(Commands.HIGHLIGHT, mCommandData);
			}
		});

		$press.on("click", function () {
			ContextMenu.hide();
			var mCommandData = {
				domElementId: sSelectedDomElement
			};
			if (mData.withEvents) {
				CommunicationBus.publish(CommunicationChannels.CONTEXT_MENU_PRESS, mCommandData);
			} else {
				CommandExecutor.execute(Commands.PRESS, mCommandData);
			}
		});

		$enterText.on("click", function () {
			ContextMenu.hide();
			var mCommandData = {
				domElementId: sSelectedDomElement
			};
			if (mData.withEvents) {
				CommunicationBus.publish(CommunicationChannels.CONTEXT_MENU_ENTER_TEXT, mCommandData);
			} else {
				CommandExecutor.execute(Commands.ENTER_TEXT, mCommandData);
			}
		});

		$contextmenu.attr("id", constants.CONTEXTMENU_ID);
		$contextmenu.css("min-width", "150px");
		$contextmenu.css("position", "absolute");
		$contextmenu.css("z-index", 1001); // should be more than Highlighter z-index
		$contextmenu.css("border", "1px solid rgb(200, 142, 250)");
		$contextmenu.css("border-radius", "3px");
		$contextmenu.css("background", "#fff");
		$contextmenu.css("box-sizing", "border-box");

		[$highlight, $enterText, $press].forEach(function ($element) {
			$element.css("padding", "16px");
			$element.css("cursor", "pointer");
			$element.on("mouseenter", function () {
				$element.css("background-color", "#ebf5fe");
			}).on("mouseleave", function () {
				$element.css("background-color", "transparent");
			});
		});

		[$highlight, $press].forEach(function ($element) {
			$element.css("border-bottom", "1px solid #d9d9d9");
		});

		$contextmenu.append($highlight);
		$contextmenu.append($press);
		$contextmenu.append($enterText);

		$(document.body).append($contextmenu);

		return $contextmenu;
	}
Set the position of the context menu.
Creates and shows the context menu if necessary.
@param {object} mData parameters to modify the menu appearance
@param {string} mData.domElementId - The ID of the DOM element for which to show a context
@param {object} mData.location - x and y of right click event
@param {boolean} mData.withEvents - whether the menu actions should throw events or directly call the Command Executor.
withEvents helps the contextmenu distinguish the context in which it is shown (is it app or control tree)
@param {object} mData.items - override the visibility of menu items. By default all items are shown. If no value is given for an item, the default is applied.
@returns {object} this