package com.dh.foundation.utils;
/**
* 层级管控者
* Created By: Seal.Wu
* Date: 2016/6/23
* Time: 17:54
*/
public class LevelController implements ILevelControl {
private OnZeroLevelListener onZeroLevelListener;
private OnStartUpLevelListener onStartUpLevelListener;
private LevelChangeListener levelChangeListener;
public void setLevelChangeListener(LevelChangeListener levelChangeListener) {
this.levelChangeListener = levelChangeListener;
}
public void setOnZeroLevelListener(OnZeroLevelListener onZeroLevelListener) {
this.onZeroLevelListener = onZeroLevelListener;
}
public void setOnStartUpLevelListener(OnStartUpLevelListener onStartUpLevelListener) {
this.onStartUpLevelListener = onStartUpLevelListener;
}
public OnZeroLevelListener getOnZeroLevelListener() {
return onZeroLevelListener;
}
public OnStartUpLevelListener getOnStartUpLevelListener() {
return onStartUpLevelListener;
}
public LevelChangeListener getLevelChangeListener() {
return levelChangeListener;
}
private int level = 0;
@Override
public void addOneLevel() {
if (onStartUpLevelListener != null) {
onStartUpLevelListener.onStartUpLevel(level);
}
int levelPre = level;
level++;
int levelAfter = level;
if (levelChangeListener != null) {
levelChangeListener.onLevelChange(levelPre,levelAfter);
}
}
@Override
public void reduceOneLevel() {
int levelPre = level;
level--;
int levelAfter = level;
if (levelChangeListener != null) {
levelChangeListener.onLevelChange(levelPre,levelAfter);
}
if (level == 0 && onZeroLevelListener != null) {
onZeroLevelListener.onZeroLevel(false);
}
}
@Override
public void forceInitToLevelZero() {
level = 0;
if (onZeroLevelListener != null) {
onZeroLevelListener.onZeroLevel(true);
}
}
}