package org.wikipedia.edit.richtext; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; import android.text.style.StyleSpan; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.wikipedia.json.GsonMarshaller; import org.wikipedia.json.GsonUnmarshaller; public class StyleSpanEx extends StyleSpan implements SpanExtents { public static final Parcelable.Creator<StyleSpanEx> CREATOR = new Parcelable.Creator<StyleSpanEx>() { @Override public StyleSpanEx createFromParcel(Parcel source) { return new StyleSpanEx(source); } @Override public StyleSpanEx[] newArray(int size) { return new StyleSpanEx[size]; } }; private int spanStart; private int spanEnd; private SyntaxRule syntaxRule; public StyleSpanEx(int style, int spanStart, SyntaxRule syntaxRule) { super(style); this.spanStart = spanStart; this.syntaxRule = syntaxRule; } public StyleSpanEx(@NonNull Parcel src) { super(src); this.spanStart = src.readInt(); this.spanEnd = src.readInt(); this.syntaxRule = GsonUnmarshaller.unmarshal(SyntaxRule.class, src.readString()); } @Override public int getStart() { return spanStart; } @Override public void setStart(int start) { spanStart = start; } @Override public int getEnd() { return spanEnd; } @Override public void setEnd(int end) { spanEnd = end; } @Override public SyntaxRule getSyntaxRule() { return syntaxRule; } @Override public void setSyntaxRule(SyntaxRule item) { syntaxRule = item; } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeInt(spanStart); dest.writeInt(spanEnd); dest.writeString(GsonMarshaller.marshal(syntaxRule)); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") @Override public boolean equals(Object other) { return EqualsBuilder.reflectionEquals(this, other); } }