001/** 002 * Copyright 2013 John Ericksen 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.androidtransfuse.gen.variableBuilder.resource; 017 018import com.sun.codemodel.JExpression; 019import org.androidtransfuse.gen.ClassGenerationUtil; 020import org.androidtransfuse.gen.InjectionBuilderContext; 021import org.androidtransfuse.gen.InjectionExpressionBuilder; 022import org.androidtransfuse.gen.variableDecorator.TypedExpressionFactory; 023import org.androidtransfuse.model.InjectionNode; 024import org.androidtransfuse.model.TypedExpression; 025import org.androidtransfuse.util.AndroidLiterals; 026 027import javax.inject.Inject; 028 029/** 030 * @author John Ericksen 031 */ 032public class AnimationResourceExpressionBuilder implements ResourceExpressionBuilder { 033 034 private static final String LOAD_ANIMATION = "loadAnimation"; 035 036 private final ClassGenerationUtil generationUtil; 037 private final InjectionNode applicationInjectionNode; 038 private final InjectionExpressionBuilder injectionExpressionBuilder; 039 private final TypedExpressionFactory typedExpressionFactory; 040 041 @Inject 042 public AnimationResourceExpressionBuilder(/*@Assisted*/ InjectionNode applicationInjectionNode, 043 ClassGenerationUtil generationUtil, 044 InjectionExpressionBuilder injectionExpressionBuilder, TypedExpressionFactory typedExpressionFactory) { 045 this.generationUtil = generationUtil; 046 this.applicationInjectionNode = applicationInjectionNode; 047 this.injectionExpressionBuilder = injectionExpressionBuilder; 048 this.typedExpressionFactory = typedExpressionFactory; 049 } 050 051 @Override 052 public TypedExpression buildExpression(InjectionBuilderContext context, JExpression resourceIdExpr) { 053 TypedExpression applicationVar = injectionExpressionBuilder.buildVariable(context, applicationInjectionNode); 054 055 //AnimationUtils.loadAnimation(application, id); 056 JExpression expression = generationUtil.ref(AndroidLiterals.ANIMATION_UTILS).staticInvoke(LOAD_ANIMATION).arg(applicationVar.getExpression()).arg(resourceIdExpr); 057 return typedExpressionFactory.build(AndroidLiterals.ANIMATION, expression); 058 } 059}