setHoverControl($hoverControl); $this->setTooltipControl($tooltipControl); $this->setStayOnClick($stayOnClick); $this->setInvert($invert); $this->setText($text); } /** * Set the Hover Control * * @param Control $hoverControl Hover Control * @return \FML\Script\Features\Tooltip */ public function setHoverControl(Control $hoverControl) { $hoverControl->checkId(); if ($hoverControl instanceof Scriptable) { $hoverControl->setScriptEvents(true); } $this->hoverControl = $hoverControl; return $this; } /** * Set the Tooltip Control * * @param Control $tooltipControl Tooltip Control * @return \FML\Script\Features\Tooltip */ public function setTooltipControl(Control $tooltipControl) { $tooltipControl->checkId(); $tooltipControl->setVisible(false); $this->tooltipControl = $tooltipControl; return $this; } /** * Set only Show * * @param bool $stayOnClick (optional) Whether the Tooltip should stay on Click * @return \FML\Script\Features\Tooltip */ public function setStayOnClick($stayOnClick) { $this->stayOnClick = (bool)$stayOnClick; return $this; } /** * Set only Hide * * @param bool $invert (optional) Whether the Visibility Toggling should be inverted * @return \FML\Script\Features\Tooltip */ public function setInvert($invert) { $this->invert = (bool)$invert; return $this; } /** * Set Text * * @param string $text (optional) The Text to display if the TooltipControl is a Label * @return \FML\Script\Features\Tooltip */ public function setText($text) { $this->text = $text; return $this; } /** * @see \FML\Script\Features\ScriptFeature::prepare() */ public function prepare(Script $script) { $hoverControlId = $this->hoverControl->getId(true); $tooltipControlId = $this->tooltipControl->getId(true); // MouseOver $visibility = ($this->invert ? 'False' : 'True'); $scriptText = " if (Event.Control.ControlId == \"{$hoverControlId}\") { declare TooltipControl = Page.GetFirstChild(\"{$tooltipControlId}\"); TooltipControl.Visible = {$visibility};"; if (is_string($this->text) && ($this->tooltipControl instanceof Label)) { $tooltipText = Builder::escapeText($this->text); $scriptText .= " declare TooltipLabel = (TooltipControl as CMlLabel); TooltipLabel.Value = \"{$tooltipText}\";"; } $scriptText .= " }"; $script->appendGenericScriptLabel(ScriptLabel::MOUSEOVER, $scriptText); // MouseOut $visibility = ($this->invert ? 'True' : 'False'); $scriptText = " if (Event.Control.ControlId == \"{$hoverControlId}\") { declare TooltipControl = Page.GetFirstChild(\"{$tooltipControlId}\");"; if ($this->stayOnClick) { $scriptText .= " declare FML_Clicked for Event.Control = False; if (!FML_Clicked) "; } $scriptText .= " TooltipControl.Visible = {$visibility}; }"; $script->appendGenericScriptLabel(ScriptLabel::MOUSEOUT, $scriptText); // MouseClick if ($this->stayOnClick) { $scriptText = " if (Event.Control.ControlId == \"{$hoverControlId}\") { declare FML_Clicked for Event.Control = False; FML_Clicked = !FML_Clicked; }"; $script->appendGenericScriptLabel(ScriptLabel::MOUSECLICK, $scriptText); } return $this; } }