1616package com .googlecode .androidannotations .processing ;
1717
1818import static com .googlecode .androidannotations .helper .GreenDroidConstants .GREENDROID_ACTIVITIES_LIST_CLASS ;
19- import static com .sun .codemodel .JExpr ._new ;
2019import static com .sun .codemodel .JExpr ._super ;
2120import static com .sun .codemodel .JExpr ._this ;
22- import static com .sun .codemodel .JMod .FINAL ;
2321import static com .sun .codemodel .JMod .PRIVATE ;
2422import static com .sun .codemodel .JMod .PUBLIC ;
25- import static com .sun .codemodel .JMod .STATIC ;
2623
2724import java .lang .annotation .Annotation ;
2825import java .util .ArrayList ;
4037
4138import com .googlecode .androidannotations .annotations .EActivity ;
4239import com .googlecode .androidannotations .api .SdkVersionHelper ;
40+ import com .googlecode .androidannotations .helper .APTCodeModelHelper ;
4341import com .googlecode .androidannotations .helper .AnnotationHelper ;
4442import com .googlecode .androidannotations .helper .CanonicalNameConstants ;
4543import com .googlecode .androidannotations .helper .ModelConstants ;
4947import com .sun .codemodel .JBlock ;
5048import com .sun .codemodel .JClass ;
5149import com .sun .codemodel .JCodeModel ;
52- import com .sun .codemodel .JConditional ;
5350import com .sun .codemodel .JExpr ;
5451import com .sun .codemodel .JFieldRef ;
55- import com .sun .codemodel .JFieldVar ;
5652import com .sun .codemodel .JInvocation ;
5753import com .sun .codemodel .JMethod ;
5854import com .sun .codemodel .JMod ;
@@ -67,10 +63,12 @@ public class EActivityProcessor implements ElementProcessor {
6763 private final AnnotationHelper annotationHelper ;
6864
6965 private final ProcessingEnvironment processingEnv ;
66+ private final APTCodeModelHelper aptCodeModelHelper ;
7067
7168 public EActivityProcessor (ProcessingEnvironment processingEnv , IRClass rClass ) {
7269 this .processingEnv = processingEnv ;
7370 annotationHelper = new AnnotationHelper (processingEnv );
71+ aptCodeModelHelper = new APTCodeModelHelper ();
7472 this .rClass = rClass ;
7573
7674 greendroidActivityElements = new ArrayList <TypeElement >();
@@ -210,67 +208,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
210208 }
211209
212210 if (!isAbstract ) {
213- JClass contextClass = holder .classes ().CONTEXT ;
214- JClass intentClass = holder .classes ().INTENT ;
215-
216- {
217- holder .intentBuilderClass = holder .eBean ._class (PUBLIC | STATIC , "IntentBuilder_" );
218-
219- JFieldVar contextField = holder .intentBuilderClass .field (PRIVATE , contextClass , "context_" );
220-
221- holder .intentField = holder .intentBuilderClass .field (PRIVATE | FINAL , intentClass , "intent_" );
222- {
223- // Constructor
224- JMethod constructor = holder .intentBuilderClass .constructor (JMod .PUBLIC );
225- JVar constructorContextParam = constructor .param (contextClass , "context" );
226- JBlock constructorBody = constructor .body ();
227- constructorBody .assign (contextField , constructorContextParam );
228- constructorBody .assign (holder .intentField , _new (intentClass ).arg (constructorContextParam ).arg (holder .eBean .dotclass ()));
229- }
230-
231- {
232- // get()
233- JMethod method = holder .intentBuilderClass .method (PUBLIC , intentClass , "get" );
234- method .body ()._return (holder .intentField );
235- }
236-
237- {
238- // flags()
239- JMethod method = holder .intentBuilderClass .method (PUBLIC , holder .intentBuilderClass , "flags" );
240- JVar flagsParam = method .param (codeModel .INT , "flags" );
241- JBlock body = method .body ();
242- body .invoke (holder .intentField , "setFlags" ).arg (flagsParam );
243- body ._return (_this ());
244- }
245-
246- {
247- // start()
248- JMethod method = holder .intentBuilderClass .method (PUBLIC , codeModel .VOID , "start" );
249- method .body ().invoke (contextField , "startActivity" ).arg (holder .intentField );
250- }
251-
252- {
253- // startForResult()
254- JMethod method = holder .intentBuilderClass .method (PUBLIC , codeModel .VOID , "startForResult" );
255- JVar requestCode = method .param (codeModel .INT , "requestCode" );
256-
257- JBlock body = method .body ();
258- JClass activityClass = holder .classes ().ACTIVITY ;
259- JConditional condition = body ._if (contextField ._instanceof (activityClass ));
260- condition ._then () //
261- .invoke (JExpr .cast (activityClass , contextField ), "startActivityForResult" ).arg (holder .intentField ).arg (requestCode );
262- condition ._else () //
263- .invoke (contextField , "startActivity" ).arg (holder .intentField );
264- }
265-
266- {
267- // intent()
268- JMethod method = holder .eBean .method (STATIC | PUBLIC , holder .intentBuilderClass , "intent" );
269- JVar contextParam = method .param (contextClass , "context" );
270- method .body ()._return (_new (holder .intentBuilderClass ).arg (contextParam ));
271- }
272- }
273-
211+ aptCodeModelHelper .addActivityIntentBuilder (codeModel , holder );
274212 }
275213
276214 }
0 commit comments