/* * Copyright 2011 Daniel Kurka * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.googlecode.gwtphonegap.client.event; import com.google.web.bindery.event.shared.EventBus; import com.google.gwt.event.shared.GwtEvent; import com.google.web.bindery.event.shared.HandlerRegistration; public abstract class EventBaseImpl implements Event, EventMock { protected final PhoneGapEventHandlerImpl pgImpl; private EventBus eventBus; public EventBaseImpl() { pgImpl = new PhoneGapEventHandlerImpl(); } public HasBackButtonPressedHandlers getBackButton() { return pgImpl; } public HasMenuButtonPressedHandlers getMenuButton() { return pgImpl; } public HasSearchButtonHandlers getSearchButton() { return pgImpl; } public HasPauseHandlers getPauseHandler() { return pgImpl; } public HasResumeHandlers getResumeHandler() { return pgImpl; } public HasOnlineHandler getOnlineHandler() { return pgImpl; } public HasOfflineHandler getOffLineHandler() { return pgImpl; } @Override public HasBatteryCriticalHandler getBatteryCriticalHandler() { return pgImpl; } @Override public HasBatteryLowHandler getBatteryLowHandler() { return pgImpl; } @Override public HasBatteryStatusHandler getBatteryStatusHandler() { return pgImpl; } @Override public HasStartCallButtonHandler getStartCallButtonHandler() { return pgImpl; } @Override public HasEndCallButtonHandler getEndCallButtonHandler() { return pgImpl; } @Override public HasVolumeDownButtonPressedHandler getVolumeDownButtonPressedHandler() { return pgImpl; } @Override public HasVolumeUpButtonPressedHandler getVolumeUpButtonPressedHandler() { return pgImpl; } private class PhoneGapEventHandlerImpl implements HasOfflineHandler, HasOnlineHandler, HasResumeHandlers, HasPauseHandlers, HasBackButtonPressedHandlers, HasSearchButtonHandlers, HasMenuButtonPressedHandlers, HasBatteryCriticalHandler, HasBatteryLowHandler, HasBatteryStatusHandler, HasStartCallButtonHandler, HasEndCallButtonHandler, HasVolumeDownButtonPressedHandler, HasVolumeUpButtonPressedHandler { @Override public void fireEvent(GwtEvent<?> event) { eventBus.fireEvent(event); } @Override public HandlerRegistration addOfflineHandler(OffLineHandler handler) { return eventBus.addHandler(OffLineEvent.getType(), handler); } @Override public HandlerRegistration addOnlineHandler(OnlineHandler handler) { return eventBus.addHandler(OnlineEvent.getType(), handler); } @Override public HandlerRegistration addResumeHandler(ResumeHandler handler) { return eventBus.addHandler(ResumeEvent.getType(), handler); } @Override public HandlerRegistration addPauseHandler(PauseHandler handler) { return eventBus.addHandler(PauseEvent.getType(), handler); } @Override public HandlerRegistration addBackButtonPressedHandler(BackButtonPressedHandler handler) { ensureBackListener(); return eventBus.addHandler(BackButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addSearchButtonHandler(SearchButtonPressedHandler handler) { return eventBus.addHandler(SearchButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addMenuButtonPressedHandler(MenuButtonPressedHandler handler) { return eventBus.addHandler(MenuButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addBatteryCriticalHandler(BatteryCriticalHandler handler) { return eventBus.addHandler(BatteryCriticalEvent.getType(), handler); } @Override public HandlerRegistration addBatteryLowHandler(BatteryLowHandler handler) { return eventBus.addHandler(BatteryLowEvent.getType(), handler); } @Override public HandlerRegistration addBatteryStatusHandler(BatteryStatusHandler handler) { return eventBus.addHandler(BatteryStatusEvent.getType(), handler); } @Override public HandlerRegistration addStartCallButtonHandler(StartCallButtonPressedHandler handler) { return eventBus.addHandler(StartCallButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addEndCallButtonHandler(EndCallButtonPressedHandler handler) { return eventBus.addHandler(EndCallButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addVolumeDownButtonPressedHandler(VolumeDownButtonPressedHandler handler) { return eventBus.addHandler(VolumeDownButtonPressedEvent.getType(), handler); } @Override public HandlerRegistration addVolumeUpButtonPressedHandler(VolumeUpButtonPressedHandler handler) { return eventBus.addHandler(VolumeUpButtonPressedEvent.getType(), handler); } } protected abstract void ensureBackListener(); protected abstract void setupEvents(); @Override public void fireOfflineEvent() { eventBus.fireEvent(new OffLineEvent()); } @Override public void fireOnlineEvent() { eventBus.fireEvent(new OnlineEvent()); } @Override public void fireResumeEvent() { eventBus.fireEvent(new ResumeEvent()); } @Override public void firePauseEvent() { eventBus.fireEvent(new PauseEvent()); } @Override public void fireBackEvent() { eventBus.fireEvent(new BackButtonPressedEvent()); } @Override public void fireSearchEvent() { eventBus.fireEvent(new SearchButtonPressedEvent()); } @Override public void fireMenuEvent() { eventBus.fireEvent(new MenuButtonPressedEvent()); } @Override public void fireBatteryCriticalEvent(int level, boolean plugged) { eventBus.fireEvent(new BatteryCriticalEvent(level, plugged)); } @Override public void fireBatteryLowEvent(int level, boolean plugged) { eventBus.fireEvent(new BatteryLowEvent(level, plugged)); } @Override public void fireBatteryStatusEvent(int level, boolean plugged) { eventBus.fireEvent(new BatteryStatusEvent(level, plugged)); } @Override public void fireStartCallButtonPressedEvent() { eventBus.fireEvent(new StartCallButtonPressedEvent()); } @Override public void fireEndCallButtonPressedEvent() { eventBus.fireEvent(new EndCallButtonPressedEvent()); } @Override public void fireVolumeButtonDownPressedEvent() { eventBus.fireEvent(new VolumeDownButtonPressedEvent()); } @Override public void fireVolumeButtonUpPressedEvent() { eventBus.fireEvent(new VolumeUpButtonPressedEvent()); } @Override public void setEventBus(EventBus eventBus) { this.eventBus = eventBus; } }