I've been sitting on this code for a while and decided to clean it up and submit it to the Dojo Javascript Toolkit.
The RotatorContainer cycles through dijit.layout.ContentPanes and provides navigation in the form of tabs or a pager. There a number of timing settings you can adjust as well as the layout of the controls.

Give it a try! You can also see it in action on the front page of http://www.cb1inc.com.
I submitted this widget, so it may or may not be accepted. In the meantime, you can download the RotatorContainer here: RotatorContainer.tar.gz [9KB] To install it, extract it into your dijit's parent directory.
Here's how you can use it:
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.layout.ContentPane");
dojo.require("dojox.layout.RotatorContainer");
</script>
<div dojoType="dojox.layout.RotatorContainer" id="myRotator" showTabs="true"
autoStart="true" transitionDelay="5000">
<div dojoType="dijit.layout.ContentPane" title="1">
Pane 1!
</div>
<div dojoType="dijit.layout.ContentPane" title="2">
Pane 2!
</div>
<div dojoType="dijit.layout.ContentPane" title="3">
Pane 3!
</div>
</div>
NOTE: There is some CSS needed to make the RotatorContainer look correct. Include or copy the contents of the dijit/layout/resources/RotatorContainer.css into your CSS file.
The magic happens once you have some content. It takes a bit of time to tweak things, but you can pretty much do anything you can imagine.
The RotatorContainer can be controlled by a pager which includes a play/pause button, next and previous button, and the current and total panes. You can also have as many pagers as you'd like. The pager code looks like this:
<script type="text/javascript">
dojo.require("dijit.form.Button");
</script>
<div dojoType="dojox.layout.RotatorPager" rotatorId="myRotator">
<button dojoType="dijit.form.Button" dojoAttachPoint="previous">Prev</button>
<button dojoType="dijit.form.ToggleButton" dojoAttachPoint="playPause"></button>
<button dojoType="dijit.form.Button" dojoAttachPoint="next">Next</button>
<span dojoAttachPoint="current"></span> / <span dojoAttachPoint="total"></span>
</div>
One thing I should note, if this widget should find it's way into dojox, it's possible the name or functionality will change.
If time permitted, I would have liked to add additional transitions such as a left-to-right wipe. Oh well.
Enjoy!
Comments
Post new comment