[Users] Adding OL navigation history with button icons to toolbar
David Miller
teknocreator at gmail.com
Fri Jul 15 11:54:37 CEST 2011
One correction to my code as I was probably cutting and pasting here. The
buttonNext tooltip should, of course, refer to itself instead of the
buttonPrevious:
var buttonNext = new Ext.Toolbar.Button({
iconCls: 'nextoff',
tooltip: *'NEXT* map view',
disabled: true,
handler: nav.next.trigger
});
Dave
On Thu, Jul 14, 2011 at 10:11 AM, David Miller <teknocreator at gmail.com>wrote:
> 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/20110715/9daeb206/attachment-0001.htm
More information about the Users
mailing list