123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * 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.vaadin.data.provider;
-
- import java.lang.reflect.Method;
- import java.util.EventObject;
-
- import com.vaadin.data.provider.DataChangeEvent.DataRefreshEvent;
- import com.vaadin.event.EventRouter;
- import com.vaadin.shared.Registration;
-
- /**
- * Abstract data provider implementation which takes care of refreshing data
- * from the underlying data provider.
- *
- * @param <T>
- * data type
- * @param <F>
- * filter type
- *
- * @author Vaadin Ltd
- * @since 8.0
- *
- */
- public abstract class AbstractDataProvider<T, F> implements DataProvider<T, F> {
-
- private EventRouter eventRouter;
-
- @Override
- public Registration addDataProviderListener(
- DataProviderListener<T> listener) {
- return addListener(DataChangeEvent.class, listener,
- DataProviderListener.class.getMethods()[0]);
- }
-
- @Override
- public void refreshAll() {
- fireEvent(new DataChangeEvent<>(this));
- }
-
- @Override
- public void refreshItem(T item) {
- fireEvent(new DataRefreshEvent<>(this, item));
- }
-
- /**
- * Registers a new listener with the specified activation method to listen
- * events generated by this component. If the activation method does not
- * have any arguments the event object will not be passed to it when it's
- * called.
- *
- * @param eventType
- * the type of the listened event. Events of this type or its
- * subclasses activate the listener.
- * @param listener
- * the object instance who owns the activation method.
- * @param method
- * the activation method.
- * @return a registration for the listener
- */
- protected Registration addListener(Class<?> eventType,
- DataProviderListener<T> listener, Method method) {
- if (eventRouter == null) {
- eventRouter = new EventRouter();
- }
- return eventRouter.addListener(eventType, listener, method);
- }
-
- /**
- * Sends the event to all listeners.
- *
- * @param event
- * the Event to be sent to all listeners.
- */
- protected void fireEvent(EventObject event) {
- if (eventRouter != null) {
- eventRouter.fireEvent(event);
- }
- }
- }
|