Skip to content

Commit f200097

Browse files
committed
Merge remote-tracking branch 'origin/develop' into 166_Extra_onNewIntent
2 parents c94f600 + 8372128 commit f200097

40 files changed

Lines changed: 1361 additions & 176 deletions

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/AndroidAnnotationProcessor.java

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@
3333
import com.googlecode.androidannotations.annotationprocessor.AnnotatedAbstractProcessor;
3434
import com.googlecode.androidannotations.annotationprocessor.SupportedAnnotationClasses;
3535
import com.googlecode.androidannotations.annotations.AfterInject;
36+
import com.googlecode.androidannotations.annotations.AfterTextChange;
3637
import com.googlecode.androidannotations.annotations.AfterViews;
3738
import com.googlecode.androidannotations.annotations.App;
3839
import com.googlecode.androidannotations.annotations.Background;
3940
import com.googlecode.androidannotations.annotations.Bean;
41+
import com.googlecode.androidannotations.annotations.BeforeTextChange;
4042
import com.googlecode.androidannotations.annotations.Click;
4143
import com.googlecode.androidannotations.annotations.EActivity;
4244
import com.googlecode.androidannotations.annotations.EApplication;
@@ -61,6 +63,7 @@
6163
import com.googlecode.androidannotations.annotations.RoboGuice;
6264
import com.googlecode.androidannotations.annotations.RootContext;
6365
import com.googlecode.androidannotations.annotations.SystemService;
66+
import com.googlecode.androidannotations.annotations.TextChange;
6467
import com.googlecode.androidannotations.annotations.Touch;
6568
import com.googlecode.androidannotations.annotations.Trace;
6669
import com.googlecode.androidannotations.annotations.Transactional;
@@ -106,10 +109,12 @@
106109
import com.googlecode.androidannotations.model.EmptyAnnotationElements;
107110
import com.googlecode.androidannotations.model.ModelExtractor;
108111
import com.googlecode.androidannotations.processing.AfterInjectProcessor;
112+
import com.googlecode.androidannotations.processing.AfterTextChangeProcessor;
109113
import com.googlecode.androidannotations.processing.AfterViewsProcessor;
110114
import com.googlecode.androidannotations.processing.AppProcessor;
111115
import com.googlecode.androidannotations.processing.BackgroundProcessor;
112116
import com.googlecode.androidannotations.processing.BeanProcessor;
117+
import com.googlecode.androidannotations.processing.BeforeTextChangeProcessor;
113118
import com.googlecode.androidannotations.processing.ClickProcessor;
114119
import com.googlecode.androidannotations.processing.EActivityProcessor;
115120
import com.googlecode.androidannotations.processing.EApplicationProcessor;
@@ -139,6 +144,7 @@
139144
import com.googlecode.androidannotations.processing.RootContextProcessor;
140145
import com.googlecode.androidannotations.processing.SharedPrefProcessor;
141146
import com.googlecode.androidannotations.processing.SystemServiceProcessor;
147+
import com.googlecode.androidannotations.processing.TextChangeProcessor;
142148
import com.googlecode.androidannotations.processing.TouchProcessor;
143149
import com.googlecode.androidannotations.processing.TraceProcessor;
144150
import com.googlecode.androidannotations.processing.TransactionalProcessor;
@@ -158,9 +164,11 @@
158164
import com.googlecode.androidannotations.rclass.IRClass;
159165
import com.googlecode.androidannotations.rclass.ProjectRClassFinder;
160166
import com.googlecode.androidannotations.validation.AfterInjectValidator;
167+
import com.googlecode.androidannotations.validation.AfterTextChangeValidator;
161168
import com.googlecode.androidannotations.validation.AfterViewsValidator;
162169
import com.googlecode.androidannotations.validation.AppValidator;
163170
import com.googlecode.androidannotations.validation.BeanValidator;
171+
import com.googlecode.androidannotations.validation.BeforeTextChangeValidator;
164172
import com.googlecode.androidannotations.validation.ClickValidator;
165173
import com.googlecode.androidannotations.validation.EActivityValidator;
166174
import com.googlecode.androidannotations.validation.EApplicationValidator;
@@ -191,6 +199,7 @@
191199
import com.googlecode.androidannotations.validation.RunnableValidator;
192200
import com.googlecode.androidannotations.validation.SharedPrefValidator;
193201
import com.googlecode.androidannotations.validation.SystemServiceValidator;
202+
import com.googlecode.androidannotations.validation.TextChangeValidator;
194203
import com.googlecode.androidannotations.validation.TouchValidator;
195204
import com.googlecode.androidannotations.validation.TraceValidator;
196205
import com.googlecode.androidannotations.validation.TransactionalValidator;
@@ -267,7 +276,10 @@
267276
Trace.class, //
268277
InstanceState.class, //
269278
NonConfigurationInstance.class, //
270-
EApplication.class //
279+
EApplication.class, //
280+
BeforeTextChange.class, //
281+
TextChange.class, //
282+
AfterTextChange.class //
271283
})
272284
@SupportedSourceVersion(SourceVersion.RELEASE_6)
273285
public class AndroidAnnotationProcessor extends AnnotatedAbstractProcessor {
@@ -430,6 +442,9 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
430442
modelValidator.register(new RunnableValidator(Background.class, processingEnv));
431443
modelValidator.register(new InstanceStateValidator(processingEnv));
432444
modelValidator.register(new NonConfigurationInstanceValidator(processingEnv));
445+
modelValidator.register(new BeforeTextChangeValidator(processingEnv, rClass));
446+
modelValidator.register(new TextChangeValidator(processingEnv, rClass));
447+
modelValidator.register(new AfterTextChangeValidator(processingEnv, rClass));
433448
return modelValidator;
434449
}
435450

@@ -453,25 +468,25 @@ private JCodeModel processAnnotations(AnnotationElements validatedModel, IRClass
453468

454469
private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices androidSystemServices, AndroidManifest androidManifest, AnnotationElements validatedModel) {
455470
ModelProcessor modelProcessor = new ModelProcessor();
456-
modelProcessor.register(new EApplicationProcessor(processingEnv));
471+
modelProcessor.register(new EApplicationProcessor());
457472
modelProcessor.register(new EActivityProcessor(processingEnv, rClass));
458-
modelProcessor.register(new EServiceProcessor(processingEnv));
459-
modelProcessor.register(new EReceiverProcessor(processingEnv));
460-
modelProcessor.register(new EProviderProcessor(processingEnv));
473+
modelProcessor.register(new EServiceProcessor());
474+
modelProcessor.register(new EReceiverProcessor());
475+
modelProcessor.register(new EProviderProcessor());
461476
modelProcessor.register(new EViewGroupProcessor(processingEnv, rClass));
462477
modelProcessor.register(new EViewProcessor(processingEnv));
463-
modelProcessor.register(new EBeanProcessor(processingEnv));
464-
modelProcessor.register(new SharedPrefProcessor(processingEnv));
478+
modelProcessor.register(new EBeanProcessor());
479+
modelProcessor.register(new SharedPrefProcessor());
465480
modelProcessor.register(new PrefProcessor(validatedModel));
466481
modelProcessor.register(new RoboGuiceProcessor());
467482
modelProcessor.register(new ViewByIdProcessor(rClass));
468483
modelProcessor.register(new FromHtmlProcessor(rClass));
469-
modelProcessor.register(new ClickProcessor(rClass));
470-
modelProcessor.register(new LongClickProcessor(rClass));
471-
modelProcessor.register(new TouchProcessor(rClass));
472-
modelProcessor.register(new ItemClickProcessor(rClass));
473-
modelProcessor.register(new ItemSelectedProcessor(rClass));
474-
modelProcessor.register(new ItemLongClickProcessor(rClass));
484+
modelProcessor.register(new ClickProcessor(processingEnv, rClass));
485+
modelProcessor.register(new LongClickProcessor(processingEnv, rClass));
486+
modelProcessor.register(new TouchProcessor(processingEnv, rClass));
487+
modelProcessor.register(new ItemClickProcessor(processingEnv, rClass));
488+
modelProcessor.register(new ItemSelectedProcessor(processingEnv, rClass));
489+
modelProcessor.register(new ItemLongClickProcessor(processingEnv, rClass));
475490
for (AndroidRes androidRes : AndroidRes.values()) {
476491
modelProcessor.register(new ResProcessor(androidRes, rClass));
477492
}
@@ -489,7 +504,7 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
489504
modelProcessor.register(new OptionsProcessor(processingEnv, restImplementationHolder));
490505
modelProcessor.register(new AppProcessor());
491506
modelProcessor.register(new OptionsMenuProcessor(rClass));
492-
modelProcessor.register(new OptionsItemProcessor(rClass));
507+
modelProcessor.register(new OptionsItemProcessor(processingEnv, rClass));
493508
modelProcessor.register(new NoTitleProcessor());
494509
modelProcessor.register(new FullscreenProcessor());
495510
modelProcessor.register(new RestServiceProcessor());
@@ -502,6 +517,9 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
502517
modelProcessor.register(new AfterInjectProcessor());
503518
modelProcessor.register(new InstanceStateProcessor(processingEnv));
504519
modelProcessor.register(new NonConfigurationInstanceProcessor());
520+
modelProcessor.register(new TextChangeProcessor(processingEnv, rClass));
521+
modelProcessor.register(new BeforeTextChangeProcessor(processingEnv, rClass));
522+
modelProcessor.register(new AfterTextChangeProcessor(processingEnv, rClass));
505523
return modelProcessor;
506524
}
507525

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/**
2+
* Copyright (C) 2010-2011 eBusiness Information, Excilys Group
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5+
* use this file except in compliance with the License. You may obtain a copy of
6+
* the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed To in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations under
14+
* the License.
15+
*/
16+
package com.googlecode.androidannotations.annotations;
17+
18+
import java.lang.annotation.ElementType;
19+
import java.lang.annotation.Retention;
20+
import java.lang.annotation.RetentionPolicy;
21+
import java.lang.annotation.Target;
22+
23+
import android.text.Editable;
24+
25+
/**
26+
*
27+
* This annotation is intended to be used on methods to receive events defined
28+
* by {@link android.text.TextWatcher#afterTextChanged(Editable s)} after the
29+
* text is changed on the targeted TextView or subclass of TextView.
30+
*
31+
* The annotation value should be one or several R.id.* fields that refers to
32+
* TextView or subclasses of TextView. If not set, the method name will be used
33+
* as the R.id.* field name.
34+
*
35+
* The method may have multiple parameter:
36+
* <ul>
37+
* <li>A android.widget.TextView parameter to know which view has targeted this
38+
* event
39+
* <li>An android.text.Editable to make changes on modified text.
40+
* </ul>
41+
*
42+
* Some usage examples of &#064;BeforeTextChange annotation: <blockquote>
43+
*
44+
* <pre>
45+
* &#064;AfterTextChange(<b>R.id.helloTextView</b>)
46+
* void afterTextChangedOnHelloTextView(Editable text, TextView hello) {
47+
* // Something Here
48+
* }
49+
* </pre>
50+
*
51+
* </blockquote> <blockquote>
52+
*
53+
* <pre>
54+
* &#064;AfterTextChange
55+
* void <b>helloTextView</b>AfterTextChanged(TextView hello) {
56+
* // Something Here
57+
* }
58+
* </pre>
59+
*
60+
* </blockquote> <blockquote>
61+
*
62+
* <pre>
63+
* &#064;AfterTextChange(<b>{R.id.editText, R.id.helloTextView}</b>)
64+
* void afterTextChangedOnSomeTextViews(TextView tv, Editable text) {
65+
* // Something Here
66+
* }
67+
* </pre>
68+
*
69+
* </blockquote> <blockquote>
70+
*
71+
* <pre>
72+
* &#064;AfterTextChange(<b>R.id.helloTextView</b>)
73+
* void afterTextChangedOnHelloTextView() {
74+
* // Something Here
75+
* }
76+
*/
77+
@Retention(RetentionPolicy.SOURCE)
78+
@Target(ElementType.METHOD)
79+
public @interface AfterTextChange {
80+
81+
int[] value() default Id.DEFAULT_VALUE;
82+
83+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/**
2+
* Copyright (C) 2010-2011 eBusiness Information, Excilys Group
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5+
* use this file except in compliance with the License. You may obtain a copy of
6+
* the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed To in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations under
14+
* the License.
15+
*/
16+
package com.googlecode.androidannotations.annotations;
17+
18+
import java.lang.annotation.ElementType;
19+
import java.lang.annotation.Retention;
20+
import java.lang.annotation.RetentionPolicy;
21+
import java.lang.annotation.Target;
22+
23+
/**
24+
*
25+
* This annotation is intended to be used on methods to receive events defined
26+
* by
27+
* {@link android.text.TextWatcher#beforeTextChanged(CharSequence s, int start, int count, int after)}
28+
* before the text is changed on the targeted TextView or subclass of TextView.
29+
*
30+
* The annotation value should be one or several R.id.* fields that refers to
31+
* TextView or subclasses of TextView. If not set, the method name will be used
32+
* as the R.id.* field name.
33+
*
34+
* The method may have multiple parameters:
35+
* <ul>
36+
* <li>A android.widget.TextView parameter to know which view has targeted this
37+
* event
38+
* <li>An java.lang.CharSequence parameter to get the text before modification.
39+
* <li>An int parameter named start to get the start position of the modified
40+
* text.
41+
* <li>An int parameter named count to know the number of modified characters.
42+
* <li>An int parameter named after to know the text length after the text
43+
* modification.
44+
* </ul>
45+
*
46+
* Some usage examples of &#064;BeforeTextChange annotation: <blockquote>
47+
*
48+
* <pre>
49+
* &#064;BeforeTextChange(<b>R.id.helloTextView</b>)
50+
* void beforeTextChangedOnHelloTextView(TextView hello, CharSequence text, int start, int count, int after) {
51+
* // Something Here
52+
* }
53+
* </pre>
54+
*
55+
* </blockquote> <blockquote>
56+
*
57+
* <pre>
58+
* &#064;BeforeTextChange
59+
* void <b>helloTextView</b>BeforeTextChanged(TextView hello) {
60+
* // Something Here
61+
* }
62+
* </pre>
63+
*
64+
* </blockquote> <blockquote>
65+
*
66+
* <pre>
67+
* &#064;BeforeTextChange(<b>{R.id.editText, R.id.helloTextView}</b>)
68+
* void beforeTextChangedOnSomeTextViews(TextView tv, CharSequence text) {
69+
* // Something Here
70+
* }
71+
* </pre>
72+
*
73+
* </blockquote> <blockquote>
74+
*
75+
* <pre>
76+
* &#064;BeforeTextChange(<b>R.id.helloTextView</b>)
77+
* void beforeTextChangedOnHelloTextView() {
78+
* // Something Here
79+
* }
80+
* </pre>
81+
*
82+
* </blockquote>
83+
*/
84+
@Retention(RetentionPolicy.SOURCE)
85+
@Target(ElementType.METHOD)
86+
public @interface BeforeTextChange {
87+
88+
int[] value() default Id.DEFAULT_VALUE;
89+
90+
}

0 commit comments

Comments
 (0)