I was playing around the ToolTipManager class today and I realised that the ToolTipManager class isn't so global after all. Although you can use ToolTipManager.enabled to show/hide all the tooltips but...
Here the source codes of my main application - NotReallyGlobalTooltip.mxml<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.charts.series.ColumnSeries;
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
import mx.managers.ToolTipManager;
//Records used in the chart
[Bindable]
private var myData:XML =
<records>
<record>
<month>Jan</month>
<car>73</car>
</record>
<record>
<month>Feb</month>
<car>72</car>
</record>
<record>
<month>Mar</month>
<car>79</car>
</record>
<record>
<month>Apr</month>
<car>80</car>
</record>
<record>
<month>May</month>
<car>51</car>
</record>
</records>;
protected function btnGlobalToolTipEvent(event:MouseEvent):void
{
//Toggle the visibility of the Tooltips for all the
//components except the charts
ToolTipManager.enabled = !ToolTipManager.enabled;
updateBtns();
}
protected function btnChartToolTipEvent(event:MouseEvent):void
{
//Toggle the visibility of the Tooltips for all the
//items in the charts
chartMain.showDataTips = !chartMain.showDataTips;
updateBtns();
}
protected function btnSuperToolTipEvent(event:MouseEvent):void
{
//Toggle the visibility of the Tooltips for all the
//components and the charts and sync them
if(ToolTipManager.enabled == chartMain.showDataTips)
{
ToolTipManager.enabled = !ToolTipManager.enabled;
chartMain.showDataTips = !chartMain.showDataTips;
}else{
ToolTipManager.enabled = false;
chartMain.showDataTips = false;
}
updateBtns();
}
protected function creationCompleteHandler(event:FlexEvent):void
{
updateBtns();
}
//This function will updates all the labels of the buttons.
private function updateBtns():void
{
if(ToolTipManager.enabled == chartMain.showDataTips)
{
if(ToolTipManager.enabled)
{
btnSuperToolTip.label =
"All ToolTips Enabled";
}else{
btnSuperToolTip.label =
"All ToolTips Disabled";
}
}else{
btnSuperToolTip.label =
"All ToolTips Mixed";
}
if(ToolTipManager.enabled)
{
btnGlobalToolTip.label =
"Global ToolTip Enabled";
}else{
btnGlobalToolTip.label =
"Global ToolTip Disabled";
}
if(chartMain.showDataTips)
{
btnChartToolTip.label =
"Chart ToolTip Enabled";
}else{
btnChartToolTip.label =
"Chart ToolTip Disabled";
}
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%" gap="10"
horizontalAlign="center" verticalAlign="middle">
<mx:ColumnChart id="chartMain" dataProvider="{myData.record}">
<mx:horizontalAxis>
<mx:CategoryAxis
categoryField="month"/>
</mx:horizontalAxis>
<mx:verticalAxis>
<mx:LinearAxis
minorInterval="10"
maximum="100"/>
</mx:verticalAxis>
<mx:series>
<mx:ColumnSeries
yField="car"
displayName="No Of Cars."/>
</mx:series>
</mx:ColumnChart>
<s:HGroup gap="10">
<mx:Text text="Some Dummy Text with Tooltip"
toolTip="A empty tooltip"/>
<s:Button label="Button"
toolTip="that does nothing"/>
</s:HGroup>
<s:Spacer height="10"/>
<mx:Text htmlText="Click on the buttons below and rollover
<br>the components in the above to see the differences."
textAlign="center"/>
<s:HGroup gap="10">
<s:Button id="btnGlobalToolTip"
width="200"
click="btnGlobalToolTipEvent(event)"/>
<s:Button id="btnChartToolTip"
width="200"
click="btnChartToolTipEvent(event)"/>
<s:Button id="btnSuperToolTip"
width="200"
click="btnSuperToolTipEvent(event)"/>
</s:HGroup>
</s:VGroup>
</s:Application>
* Click here for the demo shown in this post.^ Click here for the source files for the demo.
No comments:
Post a Comment