[Users] Adding OL navigation history with button icons to toolbar
David Miller
teknocreator at gmail.com
Thu Jul 14 16:11:18 CEST 2011
BTW, Peter Jehle emailed me and let me know of his solution:
Hi Dave
I use this code for the button contol. In the css, you have to define a
class "back" und "next" that way:
.back {
background-image: url("/geoportal/img/resultset_previous.png")
!important;
height: 20px !important;
width: 20px !important;
}
I just have one style for the button, the rest should be handled by ext
(depressed or not)
ctrl = new OpenLayers.Control.NavigationHistory();
map.addControl(ctrl);
action = new GeoExt.Action({
control: ctrl.previous,
disabled: true,
tooltip: "Vorheriger Ausschnitt",
iconCls: 'back'
});
toolbarItems.push(action);
action = new GeoExt.Action({
control: ctrl.next,
disabled: true,
tooltip: "Nächster Ausschnitt",
iconCls: 'next'
});
toolbarItems.push(action);
toolbarItems.push("-");
Regards
Peter
-----------------------------------
And this works just fine as well as Peter is correct in that Ext will dull
the previous and next icons when they're deactivated. I had thought I tried
this way as well after looking at setting the iconCls when creating the
action. But, I was focused more on how to change the icon class itself when
the button was activated or deactivated like the example in OpenLayers
displayed.
Still, a couple of options now for the app I'm working on. Thanks Peter!
Dave
On Thu, Jul 14, 2011 at 8:53 AM, David Miller <teknocreator at gmail.com>wrote:
> Good day list!
>
> While the GeoExt example for adding the Openlayers Navigation History
> controls to a toolbar works just fine for Previous and Next buttons with
> text, I had wanted to use the OL icons instead of text. There are examples
> on the OL pages for using the controls with the icons and this gave a nice
> presentation than just using text for the buttons. Still a newbie here wrt
> OL, ExtJS, and GeoExt. But, I knew had to somehow tell in code when to use
> the on and off png images for the different states of the controls. Tried
> several different approaches but could only get the button to use on of
> icons, off or on. Finally found an old thread that got me most of the way
> there and then I added one critcial part to it. Thought I'd share for
> others that may not know this what I found and came up with since it seems
> to work in my current project and I couldn't easily find a solution via web
> search.
>
> - For the css, these are the OL images ('scripts' is a local directory,
> but the rest should be in the OL theme directory)
>
> <style type="text/css">
> .prevon {
> background-image: url(scripts/theme/default/img/view_previous_on.png)
> !important;
> background: no-repeat;
> width: 24px !important;
> height: 24px !important;
> }
> .prevoff {
> background-image: url(scripts/theme/default/img/view_previous_off.png)
> !important;
> background: no-repeat;
> width: 24px !important;
> height: 24px !important;
> }
> .nexton {
> background-image: url(scripts/theme/default/img/view_next_on.png)
> !important;
> background: no-repeat;
> width: 24px !important;
> height: 24px !important;
> }
> .nextoff {
> background-image: url(scripts/theme/default/img/view_next_off.png)
> !important;
> background: no-repeat;
> width: 24px !important;
> height: 24px !important;
> }
> </style>
> Then create and configure the navigation history controls for the toolbar
> on my window. The key here seems to be to register activate and deactivate
> events for both next and previous controls AND also to switch the icon class
> when the control is activated or deactivated.
>
> var toolbarItems = [];
>
> toolbarItems.push("-");
>
> // Navigation history - two "button" controls
>
> var nav = new OpenLayers.Control.NavigationHistory({id:"navhist"});
> // id is optional, I refer to it in my code elsewhere
> map.addControl(nav);
> nav.activate();
>
> // initially disabled
> var buttonPrevious = new Ext.Toolbar.Button({
> iconCls: 'prevoff',
> tooltip: 'Previous map view',
> disabled: true,
> handler: nav.previous.trigger
> });
> var buttonNext = new Ext.Toolbar.Button({
> iconCls: 'nextoff',
> tooltip: 'Previous map view',
> disabled: true,
> handler: nav.next.trigger
> });
>
> // add to toolbarItems
>
> toolbarItems.push(buttonPrevious);
> toolbarItems.push(buttonNext);
>
> // register activate and deactivate events for both buttons
>
> nav.previous.events.register(
> "activate",
> buttonPrevious,
> function() {
> this.setDisabled(false);
> this.setIconClass('prevon'); // set the icon when activated
> }
> );
> nav.next.events.register(
> "activate",
> buttonNext,
> function() {
> this.setDisabled(false);
> this.setIconClass('nexton'); // set the icon when activated
> }
>
> );
> nav.previous.events.register(
> "deactivate",
> buttonPrevious,
> function() {
> this.setDisabled(true);
> this.setIconClass('prevoff'); // set the icon when deactivated
> }
> );
> nav.next.events.register(
> "deactivate",
> buttonNext,
> function() {
> this.setDisabled(true);
> this.setIconClass('nextoff'); // set the icon when deactivated
> }
> );
>
> Then I include the toolbarItems array in with the items for the tbar for my
> window.
>
> Perhaps there's a better way since I'm still a newbie at this and cobbling
> together someone else's work along with the setIconClass method. But like I
> said, works in the app I'm putting together at present. Hope folks find it
> useful.
>
> Dave M
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20110714/19192c41/attachment-0001.htm
More information about the Users
mailing list