/*******************************************************************************
* Copyright 2013 Naver Business Platform Corp.
*
* 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.handmark.pulltorefresh.configuration.xml;
import java.util.Map;
import com.handmark.pulltorefresh.library.internal.Assert;
/**
* {@code PullToRefreshNode} has an information in contents of pulltorefresh.xml, <br /> such as loading layout and indicator layout class name
* @author Wonjun Kim
*
*/
class PullToRefreshNode {
/**
* Map Storing LoadingLayout class names<br />
* Key : layout code (String) <br />
* Value : class name (String)
*/
private final Map<String, String> loadingLayoutClazzNameMap;
/**
* Map Storing IndicatorLayout class names<br />
* Key : layout code (String) <br />
* Value : Class name (String)
*/
private final Map<String, String> indicatorLayoutClazzNameMap;
/**
* Map Storing GoogleStyleViewLayout class names<br />
* Key : layout code (String) <br />
* Value : Class name (String)
*/
private Map<String, String> googleStyleViewLayoutClazzNameMap;
/**
* Map Storing GoogleStyleProgressLayout class names<br />
* Key : layout code (String) <br />
* Value : Class name (String)
*/
private Map<String, String> googleStyleProgressLayoutClazzNameMap;
/**
* Constructor needs two class name {@code Map}s, which are LoadingLayout class name map and Indicator class name {@code map}.<br />
* NOTE: Parameters must go in order. First Parameter : loading layout / Second Parameter : indicator layout
* @param loadingLayoutClazzNameMap LoadingLayout class names
* @param indicatorLayoutClazzNameMap
*/
public PullToRefreshNode(Map<String, String> loadingLayoutClazzNameMap,
Map<String, String> indicatorLayoutClazzNameMap, Map<String, String> googleStyleViewLayoutClazzNameMap, Map<String, String> googleStyleProgressLayoutClazzNameMap) {
Assert.notNull(loadingLayoutClazzNameMap, "LoadingLayout Class Name Map");
Assert.notNull(indicatorLayoutClazzNameMap, "Loading Layout Class Name Map");
this.loadingLayoutClazzNameMap = loadingLayoutClazzNameMap;
this.indicatorLayoutClazzNameMap = indicatorLayoutClazzNameMap;
this.googleStyleViewLayoutClazzNameMap = googleStyleViewLayoutClazzNameMap;
this.googleStyleProgressLayoutClazzNameMap = googleStyleProgressLayoutClazzNameMap;
}
/**
* @param layoutCode LoadingLayout layout code
* @return LoadingLayout class name
*/
public String getIndicatorLayoutClazzName(String layoutCode) {
return indicatorLayoutClazzNameMap.get(layoutCode);
}
/**
* @param layoutCode LoadingLayout layout code
* @return LoadingLayout class name
*/
public String getLoadingLayoutClazzName(String layoutCode) {
return loadingLayoutClazzNameMap.get(layoutCode);
}
/**
* @param layoutCode GoogleStyleViewLayout layout code
* @return GoogleStyleViewLayout class name
*/
public String getGoogleStyleViewLayoutClazzName(String layoutCode) {
return googleStyleViewLayoutClazzNameMap.get(layoutCode);
}
/**
* @param layoutCode GoogleStyleProgressLayout layout code
* @return GoogleStyleProgressLayout class name
*/
public String getGoogleStyleProgressLayoutClazzName(String layoutCode) {
return googleStyleProgressLayoutClazzNameMap.get(layoutCode);
}
/**
* Add an information from other {@code PullToRefreshNode} instance
* @param extendedNode Other {@code PullToRefresNode} to be combined
*/
public void extendProperties(PullToRefreshNode extendedNode) {
Assert.notNull(extendedNode, "Extended Node");
Map<String, String> indicatorMap = extendedNode.indicatorLayoutClazzNameMap;
Map<String, String> loadingMap = extendedNode.loadingLayoutClazzNameMap;
Map<String, String> googleStyleViewMap = extendedNode.googleStyleViewLayoutClazzNameMap;
Map<String, String> googleStyleProgressMap = extendedNode.googleStyleProgressLayoutClazzNameMap;
indicatorLayoutClazzNameMap.putAll(indicatorMap);
loadingLayoutClazzNameMap.putAll(loadingMap);
googleStyleViewLayoutClazzNameMap.putAll(googleStyleViewMap);
googleStyleProgressLayoutClazzNameMap.putAll(googleStyleProgressMap);
}
}