Skip to content

Commit 75b6c1f

Browse files
committed
allow subclasses for @EditorAction
1 parent 8d475a7 commit 75b6c1f

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/EditorAction.java‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
* The method MAY have multiple parameter :
3737
* </p>
3838
* <ul>
39-
* <li>A {@link android.widget.TextView} parameter to know which view has
40-
* targeted this event</li>
39+
* <li>A {@link android.widget.TextView} (or a subclass) parameter to know which
40+
* view has targeted this event</li>
4141
* <li>An int parameter to get the actionId</li>
4242
* <li>A {@link android.view.KeyEvent} parameter</li>
4343
* </ul>
@@ -63,6 +63,11 @@
6363
* // Something Here
6464
* }
6565
*
66+
* &#064;EditorAction
67+
* void <b>helloEditText</b>EditorAction(EditText hello) {
68+
* // Something Here
69+
* }
70+
*
6671
* &#064;EditorAction(<b>{R.id.editText, R.id.helloTextView}</b>)
6772
* void onEditorActionsOnSomeTextViews(TextView tv, int actionId) {
6873
* // Something Here

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/EditorActionHandler.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
5454
validatorHelper.returnTypeIsVoidOrBoolean(executableElement, valid);
5555

5656
validatorHelper.param.anyOrder() //
57-
.type(CanonicalNameConstants.TEXT_VIEW).optional() //
57+
.extendsType(CanonicalNameConstants.TEXT_VIEW).optional() //
5858
.primitiveOrWrapper(TypeKind.INT).optional() //
5959
.type(CanonicalNameConstants.KEY_EVENT).optional() //
6060
.validate(executableElement, valid);
@@ -80,8 +80,8 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod
8080

8181
for (VariableElement param : userParameters) {
8282
String paramClassQualifiedName = param.asType().toString();
83-
if (paramClassQualifiedName.equals(CanonicalNameConstants.TEXT_VIEW)) {
84-
call.arg(textView);
83+
if (isTypeOrSubclass(CanonicalNameConstants.TEXT_VIEW, param)) {
84+
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.TEXT_VIEW, textView, param));
8585
} else if (paramClassQualifiedName.equals(CanonicalNameConstants.INTEGER) || paramClassQualifiedName.equals(codeModel().INT.fullName())) {
8686
call.arg(actionId);
8787
} else if (paramClassQualifiedName.equals(CanonicalNameConstants.KEY_EVENT)) {

0 commit comments

Comments
 (0)