package com.greenfrvr.hashtagview;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.TextView;
/**
* Object representing HashtagView item model.
*
* @param <T> custom data model
*/
class ItemData<T> implements Comparable<ItemData> {
protected T data;
protected View view;
protected float width;
protected boolean isSelected;
public ItemData(T data) {
this.data = data;
}
void setText(CharSequence charSequence) {
((TextView) view.findViewById(R.id.text)).setText(charSequence);
}
void displaySelection(int left, int leftSelected, int right, int rightSelected) {
((TextView) view.findViewById(R.id.text)).setCompoundDrawablesWithIntrinsicBounds(isSelected ? leftSelected : left, 0, isSelected ? rightSelected : right, 0);
view.setSelected(isSelected);
view.invalidate();
}
void select(int left, int leftSelected, int right, int rightSelected) {
isSelected = !isSelected;
displaySelection(left, leftSelected, right, rightSelected);
}
void decorateText(HashtagView.DataTransform<T> transformer) {
if (transformer instanceof HashtagView.DataStateTransform) {
if (isSelected) {
setText(((HashtagView.DataStateTransform<T>) transformer).prepareSelected(data));
} else {
setText(transformer.prepare(data));
}
}
}
@Override
public boolean equals(Object o) {
return o instanceof ItemData && this.data.equals(((ItemData) o).data);
}
@Override
public String toString() {
return String.format("Item data: title - %s, width - %f", data.toString(), width);
}
@Override
public int compareTo(@NonNull ItemData another) {
if (width == another.width) return 0;
return width < another.width ? 1 : -1;
}
}