package com.laevatein.internal.entity;
import android.os.Parcel;
import android.os.Parcelable;
/**
* @author keishin.yokomaku
* @since 2014/04/07
*/
public class ErrorViewResources implements Parcelable {
public static final Creator<ErrorViewResources> CREATOR = new Creator<ErrorViewResources>() {
@Override
public ErrorViewResources createFromParcel(Parcel source) {
return new ErrorViewResources(source);
}
@Override
public ErrorViewResources[] newArray(int size) {
return new ErrorViewResources[size];
}
};
private final ViewType mViewType;
private final int mTitleId;
private final int mMessageId;
/* package */ ErrorViewResources(Parcel source) {
mViewType = (ViewType) source.readSerializable();
mTitleId = source.readInt();
mMessageId = source.readInt();
}
/* package */ ErrorViewResources(ViewType viewType, int messageId) {
this(viewType, -1, messageId);
}
/* package */ ErrorViewResources(ViewType viewType, int titleId, int messageId) {
mViewType = viewType;
mTitleId = titleId;
mMessageId = messageId;
}
/* package */ static ErrorViewResources asNoView() {
return new ErrorViewResources(ViewType.NONE, 0);
}
/* package */ static ErrorViewResources asAlertDialog(int titleId, int messageId) {
return new ErrorViewResources(ViewType.DIALOG, titleId, messageId);
}
/* package */ static ErrorViewResources asToast(int messageId) {
return new ErrorViewResources(ViewType.TOAST, messageId);
}
/* package */ static ErrorViewResources asSnackbar(int messageId) {
return new ErrorViewResources(ViewType.SNACKBAR, messageId);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(mViewType);
dest.writeInt(mTitleId);
dest.writeInt(mMessageId);
}
public ViewType getViewType() {
return mViewType;
}
public int getTitleId() {
return mTitleId;
}
public int getMessageId() {
return mMessageId;
}
public boolean isNoView() {
return mViewType == ViewType.NONE;
}
public static enum ViewType {
TOAST {
@Override
public ErrorViewResources createSpec(int titleId, int messageId) {
return ErrorViewResources.asToast(messageId);
}
},
SNACKBAR {
@Override
public ErrorViewResources createSpec(int titleId, int messageId) {
return ErrorViewResources.asSnackbar(messageId);
}
},
DIALOG {
@Override
public ErrorViewResources createSpec(int titleId, int messageId) {
return ErrorViewResources.asAlertDialog(titleId, messageId);
}
},
NONE {
@Override
public ErrorViewResources createSpec(int titleId, int messageId) {
return ErrorViewResources.asNoView();
}
};
public abstract ErrorViewResources createSpec(int titleId, int messageId);
}
}