1293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount/*
25cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount * Copyright (C) 2015 The Android Open Source Project
3293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount *
4293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * Licensed under the Apache License, Version 2.0 (the "License");
5293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * you may not use this file except in compliance with the License.
6293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * You may obtain a copy of the License at
7293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount *
8293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount *      http://www.apache.org/licenses/LICENSE-2.0
9293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount *
10293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * Unless required by applicable law or agreed to in writing, software
11293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * distributed under the License is distributed on an "AS IS" BASIS,
12293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * See the License for the specific language governing permissions and
14293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount * limitations under the License.
15293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount */
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding;
172c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount
18c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount/**
19c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount * Utility class for managing ObservableMap callbacks.
20c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount */
215cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mountpublic class MapChangeRegistry
22722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount        extends CallbackRegistry<ObservableMap.OnMapChangedCallback, ObservableMap, Object> {
23293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount
24722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount    private static NotifierCallback<ObservableMap.OnMapChangedCallback, ObservableMap, Object> NOTIFIER_CALLBACK =
25722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount            new NotifierCallback<ObservableMap.OnMapChangedCallback, ObservableMap, Object>() {
265cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount                @Override
27722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount                public void onNotifyCallback(ObservableMap.OnMapChangedCallback callback, ObservableMap sender,
285cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount                        int arg, Object arg2) {
295cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount                    callback.onMapChanged(sender, arg2);
305cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount                }
315cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount            };
32293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount
335cd681c345db8f606d7d5a8662e20e059f21a86cGeorge Mount    public MapChangeRegistry() {
34293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount        super(NOTIFIER_CALLBACK);
35293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount    }
362c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount
37c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount    /**
38c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount     * Notifies registered callbacks that an element has been added, removed, or changed.
39c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount     *
40c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount     * @param sender The map that has changed.
41c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount     * @param key The key of the element that changed.
42c9a5d6f140f732ca0ff279a4b1ee315072e1c422George Mount     */
432c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount    public void notifyChange(ObservableMap sender, Object key) {
442c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount        notifyCallbacks(sender, 0, key);
452c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount    }
46293de28642305ce210e1d2a1cfe0abfa4f737d7aGeorge Mount}
47