package com.ftinc.scoop;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.MethodSpec;
import java.util.ArrayList;
import java.util.List;
/**
* This represents the processor brew into a
* ViewBinding object in the generated code
*
* Created by r0adkll on 6/26/16.
*/
final class FieldViewBinding extends Binding{
private static final ClassName VIEW_BINDING = ClassName.get("com.ftinc.scoop.binding", "ViewBinding");
private static final ClassName IBINDING = ClassName.get("com.ftinc.scoop.binding", "IBinding");
private static final ClassName BINDING_UTILS = ClassName.get("com.ftinc.scoop.util", "BindingUtils");
private static final ClassName NO_ADAPTER = ClassName.get("com.ftinc.scoop.BindTopping", "NONE");
private final String name;
private final ClassName adapter;
private final ClassName interpolator;
private final long duration;
public FieldViewBinding(int id,
String name,
ClassName adapter,
ClassName interpolator,
long duration) {
super(id);
this.name = name;
this.adapter = adapter;
this.interpolator = interpolator;
this.duration = duration;
}
@Override
public String getStatementFormat(){
StringBuilder builder = new StringBuilder("bindings.add(new $T($L, target.$L");
if(adapter.equals(NO_ADAPTER)){
builder.append(", $T.getColorAdapter(target.$L.getClass())");
}else{
builder.append(", new $T()");
}
if(interpolator != null) {
builder.append(", new $T()");
} else {
builder.append(", null");
}
builder.append(", $L");
builder.append("));");
return builder.toString();
}
@Override
public Object[] getStatementArguments(){
List<Object> args = new ArrayList<>(6);
args.add(VIEW_BINDING);
args.add(id);
args.add(name);
if(adapter.equals(NO_ADAPTER)){
args.add(BINDING_UTILS);
args.add(name);
}else{
args.add(adapter);
}
if(interpolator != null){
args.add(interpolator);
}
args.add(duration == -1 ? IBINDING.toString().concat(".DEFAULT_ANIMATION_DURATION") : duration);
return args.toArray();
}
}