1515 */
1616package org .androidannotations .internal .core .handler ;
1717
18- import static com .helger .jcodemodel .JExpr ._this ;
19-
2018import javax .lang .model .element .Element ;
2119
2220import org .androidannotations .AndroidAnnotationsEnvironment ;
2321import org .androidannotations .ElementValidation ;
2422import org .androidannotations .annotations .OptionsMenuItem ;
2523import org .androidannotations .handler .BaseAnnotationHandler ;
24+ import org .androidannotations .handler .MethodInjectionHandler ;
2625import org .androidannotations .helper .IdValidatorHelper ;
26+ import org .androidannotations .helper .InjectHelper ;
2727import org .androidannotations .holder .HasOptionsMenu ;
2828import org .androidannotations .rclass .IRClass ;
2929
30+ import com .helger .jcodemodel .IJAssignmentTarget ;
3031import com .helger .jcodemodel .JBlock ;
3132import com .helger .jcodemodel .JFieldRef ;
3233import com .helger .jcodemodel .JVar ;
3334
34- public class OptionsMenuItemHandler extends BaseAnnotationHandler <HasOptionsMenu > {
35+ public class OptionsMenuItemHandler extends BaseAnnotationHandler <HasOptionsMenu >implements MethodInjectionHandler <HasOptionsMenu > {
36+
37+ private final InjectHelper <HasOptionsMenu > injectHelper ;
3538
3639 public OptionsMenuItemHandler (AndroidAnnotationsEnvironment environment ) {
3740 super (OptionsMenuItem .class , environment );
41+ injectHelper = new InjectHelper <>(validatorHelper , this );
3842 }
3943
4044 @ Override
4145 public void validate (Element element , ElementValidation validation ) {
42- validatorHelper . enclosingElementHasEActivityOrEFragment ( element , validation );
46+ injectHelper . validate ( OptionsMenuItem . class , element , validation );
4347
44- validatorHelper .isDeclaredType (element , validation );
48+ Element param = injectHelper .getParam (element );
49+ validatorHelper .isDeclaredType (param , validation );
4550
46- validatorHelper .extendsMenuItem (element , validation );
51+ validatorHelper .extendsMenuItem (param , validation );
4752
4853 validatorHelper .resIdsExist (element , IRClass .Res .ID , IdValidatorHelper .FallbackStrategy .USE_ELEMENT_NAME , validation );
4954
@@ -52,11 +57,23 @@ public void validate(Element element, ElementValidation validation) {
5257
5358 @ Override
5459 public void process (Element element , HasOptionsMenu holder ) {
55- String fieldName = element .getSimpleName ().toString ();
56- JBlock body = holder .getOnCreateOptionsMenuMethodBody ();
57- JVar menuParam = holder .getOnCreateOptionsMenuMenuParam ();
60+ injectHelper .process (element , holder );
61+ }
62+
63+ @ Override
64+ public JBlock getInvocationBlock (HasOptionsMenu holder ) {
65+ return holder .getOnCreateOptionsMenuMethodBody ();
66+ }
5867
68+ @ Override
69+ public void assignValue (JBlock targetBlock , IJAssignmentTarget fieldRef , HasOptionsMenu holder , Element element , Element param ) {
70+ JVar menuParam = holder .getOnCreateOptionsMenuMenuParam ();
5971 JFieldRef idsRef = annotationHelper .extractOneAnnotationFieldRef (element , IRClass .Res .ID , true );
60- body .assign (_this ().ref (fieldName ), menuParam .invoke ("findItem" ).arg (idsRef ));
72+ targetBlock .add (fieldRef .assign (menuParam .invoke ("findItem" ).arg (idsRef )));
73+ }
74+
75+ @ Override
76+ public void validateEnclosingElement (Element element , ElementValidation valid ) {
77+ validatorHelper .enclosingElementHasEActivityOrEFragment (element , valid );
6178 }
6279}
0 commit comments