Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
* The method MAY have multiple parameter:
* </p>
* <ul>
* <li>A {@link android.widget.CompoundButton} parameter to know which view has
* targeted this event</li>
* <li>A {@link android.widget.CompoundButton} (or a subclass) parameter to know
* which view has targeted this event</li>
* <li>An {@link boolean} to know the new state of the view.</li>
* </ul>
* <blockquote>
Expand All @@ -56,6 +56,11 @@
* // Something Here
* }
*
* &#064;CheckedChange
* void <b>myButton</b>CheckedChanged(CheckBox button) {
* // Something Here
* }
*
* &#064;CheckedChange(<b>{R.id.myButton, R.id.myButton1}</b>)
* void checkedChangedOnSomeButtons(CompoundButton button, boolean isChecked) {
* // Something Here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
* The method MAY have one parameter:
* </p>
* <ul>
* <li>A {@link android.view.View} parameter to know which view has been clicked
* </li>
* <li>A {@link android.view.View} (or a subclass) parameter to know which view
* has been clicked</li>
* </ul>
* <blockquote>
*
Expand All @@ -51,6 +51,11 @@
* void <b>myButton</b>Clicked(View view) {
* // Something Here
* }
*
* &#064;Click
* void <b>myButton</b>Clicked(Button view) {
* // Something Here
* }
* </pre>
*
* </blockquote>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
* The method MAY have multiple parameter :
* </p>
* <ul>
* <li>A {@link android.widget.TextView} parameter to know which view has
* targeted this event</li>
* <li>A {@link android.widget.TextView} (or a subclass) parameter to know which
* view has targeted this event</li>
* <li>An int parameter to get the actionId</li>
* <li>A {@link android.view.KeyEvent} parameter</li>
* </ul>
Expand All @@ -63,6 +63,11 @@
* // Something Here
* }
*
* &#064;EditorAction
* void <b>helloEditText</b>EditorAction(EditText hello) {
* // Something Here
* }
*
* &#064;EditorAction(<b>{R.id.editText, R.id.helloTextView}</b>)
* void onEditorActionsOnSomeTextViews(TextView tv, int actionId) {
* // Something Here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
* The method MAY have multiple parameter:
* </p>
* <ul>
* <li>A {@link android.view.View} parameter to know which view has targeted
* this event</li>
* <li>A {@link android.view.View} (or a subclass) parameter to know which view
* has targeted this event</li>
* <li>An {@link boolean} to know the view has focus.</li>
* </ul>
*
Expand All @@ -56,6 +56,11 @@
* // Something Here
* }
*
* &#064;FocusChange
* void <b>myText</b>FocusChanged(EditText button) {
* // Something Here
* }
*
* &#064;FocusChange(<b>{R.id.myButton, R.id.myButton1}</b>)
* void focusChangedOnSomeButtons(View button, boolean isChecked) {
* // Something Here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
* The method MAY have one parameter:
* </p>
* <ul>
* <li>A {@link android.view.View} parameter to know which view has been long
* clicked</li>
* <li>A {@link android.view.View} (or a subclass) parameter to know which view
* has been long clicked</li>
* </ul>
*
* <blockquote>
Expand All @@ -59,6 +59,11 @@
* // Something Here
* }
*
* &#064;LongClick
* void <b>myButton</b>LongClicked(Button view) {
* // Something Here
* }
*
* &#064;LongClick(<b>R.id.myButton</b>)
* boolean longClick<b>Consumed</b>OnMyButton(View view) {
* return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
* The method MAY have multiple parameter:
* </p>
* <ul>
* <li>A {@link android.preference.Preference Preference} parameter to know
* which preference was targeted by this event</li>
* <li>A {@link android.preference.Preference Preference} (or a sublcass)
* parameter to know which preference was targeted by this event</li>
* <li>An {@link Object}, {@link String}, {@link java.util.Set Set of strings}
* and also a {@link Boolean}, {@link Float}, {@link Integer}, {@link Long} or
* their corresponding primitive types to obtain the new value of the
Expand All @@ -65,6 +65,11 @@
* // Something Here
* }
*
* &#064;PreferenceChange
* void <b>myPref</b>PreferenceChanged(ListPreference preference) {
* // Something Here
* }
*
* &#064;PreferenceChange(<b>{R.string.myPref1, R.string.myPref2}</b>)
* void preferenceChangeOnMultiplePrefs(Preference preference, String newValue) {
* // Something Here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
* The method MAY have one parameter:
* </p>
* <ul>
* <li>A {@link android.preference.Preference Preference} parameter to know
* which preference has been clicked</li>
* <li>A {@link android.preference.Preference Preference} (or a subclass)
* parameter to know which preference has been clicked</li>
* </ul>
* <blockquote>
*
Expand All @@ -54,6 +54,11 @@
* void <b>myPref</b>PreferenceClicked(Preference preference) {
* // Something Here
* }
*
* &#064;PreferenceClick
* void <b>myPref</b>PreferenceClicked(ListPreference preference) {
* // Something Here
* }
* </pre>
*
* </blockquote>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
* The method MAY have one or two parameters:
* </p>
* <ul>
* <li>A {@link android.view.View} parameter to know which view has been clicked
* </li>
* <li>A {@link android.view.View} (or a subclass) parameter to know which view
* has been clicked</li>
* <li>A {@link android.view.MotionEvent} parameter</li>
* </ul>
* <blockquote>
Expand All @@ -61,6 +61,11 @@
* }
*
* &#064;Touch
* void <b>myText</b>Touched(TextView view) {
* // Something Here
* }
*
* &#064;Touch
* void <b>myButton</b>Touched(View view, MotionEvent motionEvent) {
* // Something Here
* }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeMirror;

import org.androidannotations.helper.APTCodeModelHelper;
import org.androidannotations.helper.AndroidManifest;
import org.androidannotations.helper.IdAnnotationHelper;
import org.androidannotations.helper.IdValidatorHelper;
Expand All @@ -37,13 +39,16 @@
import com.sun.codemodel.JBlock;
import com.sun.codemodel.JClass;
import com.sun.codemodel.JDefinedClass;
import com.sun.codemodel.JExpr;
import com.sun.codemodel.JExpression;
import com.sun.codemodel.JFieldRef;
import com.sun.codemodel.JInvocation;
import com.sun.codemodel.JMethod;
import com.sun.codemodel.JVar;

public abstract class AbstractListenerHandler<T extends GeneratedClassHolder> extends BaseAnnotationHandler<T> {

private final APTCodeModelHelper codeModelHelper = new APTCodeModelHelper();
private IdAnnotationHelper helper;
private T holder;
private String methodName;
Expand Down Expand Up @@ -100,6 +105,22 @@ public void process(Element element, T holder) {
assignListeners(holder, idsRefs, listenerAnonymousClass);
}

protected final JExpression castArgumentIfNecessary(T holder, String baseType, JVar param, Element element) {
JExpression argument = param;
TypeMirror typeMirror = element.asType();
if (!baseType.equals(typeMirror.toString())) {
JClass typeMirrorToJClass = codeModelHelper.typeMirrorToJClass(typeMirror, holder);
argument = JExpr.cast(typeMirrorToJClass, param);
}
return argument;
}

protected final boolean isTypeOrSubclass(String baseType, Element element) {
TypeMirror typeMirror = element.asType();
TypeElement typeElement = helper.typeElementFromQualifiedName(baseType);
return helper.isSubtype(typeMirror, typeElement.asType());
}

protected abstract void assignListeners(T holder, List<JFieldRef> idsRefs, JDefinedClass listenerAnonymousClass);

protected abstract void makeCall(JBlock listenerMethodBody, JInvocation call, TypeMirror returnType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
validatorHelper.returnTypeIsVoid(executableElement, valid);

validatorHelper.param.anyOrder() //
.type(CanonicalNameConstants.COMPOUND_BUTTON).optional() //
.extendsType(CanonicalNameConstants.COMPOUND_BUTTON).optional() //
.primitiveOrWrapper(TypeKind.BOOLEAN).optional() //
.validate(executableElement, valid);
}
Expand All @@ -69,8 +69,8 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod

for (VariableElement parameter : parameters) {
String parameterType = parameter.asType().toString();
if (parameterType.equals(CanonicalNameConstants.COMPOUND_BUTTON)) {
call.arg(btnParam);
if (isTypeOrSubclass(CanonicalNameConstants.COMPOUND_BUTTON, parameter)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.COMPOUND_BUTTON, btnParam, parameter));
} else if (parameterType.equals(CanonicalNameConstants.BOOLEAN) || parameter.asType().getKind() == TypeKind.BOOLEAN) {
call.arg(isCheckedParam);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod
JVar viewParam = listenerMethod.param(classes().VIEW, "view");

if (hasItemParameter) {
call.arg(viewParam);
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.VIEW, viewParam, parameters.get(0)));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
validatorHelper.returnTypeIsVoidOrBoolean(executableElement, valid);

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

for (VariableElement param : userParameters) {
String paramClassQualifiedName = param.asType().toString();
if (paramClassQualifiedName.equals(CanonicalNameConstants.TEXT_VIEW)) {
call.arg(textView);
if (isTypeOrSubclass(CanonicalNameConstants.TEXT_VIEW, param)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.TEXT_VIEW, textView, param));
} else if (paramClassQualifiedName.equals(CanonicalNameConstants.INTEGER) || paramClassQualifiedName.equals(codeModel().INT.fullName())) {
call.arg(actionId);
} else if (paramClassQualifiedName.equals(CanonicalNameConstants.KEY_EVENT)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
validatorHelper.returnTypeIsVoid(executableElement, valid);

validatorHelper.param.anyOrder() //
.type(CanonicalNameConstants.VIEW).optional() //
.extendsType(CanonicalNameConstants.VIEW).optional() //
.primitiveOrWrapper(TypeKind.BOOLEAN).optional() //
.validate(executableElement, valid);
}
Expand All @@ -70,8 +70,8 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod

for (VariableElement parameter : parameters) {
String parameterType = parameter.asType().toString();
if (parameterType.equals(CanonicalNameConstants.VIEW)) {
call.arg(viewParam);
if (isTypeOrSubclass(CanonicalNameConstants.VIEW, parameter)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.VIEW, viewParam, parameter));
} else if (parameterType.equals(CanonicalNameConstants.BOOLEAN) || parameter.asType().getKind() == TypeKind.BOOLEAN) {
call.arg(hasFocusParam);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa

validatorHelper.returnTypeIsVoidOrBoolean(executableElement, valid);

validatorHelper.param.type(CanonicalNameConstants.VIEW).optional().validate(executableElement, valid);
validatorHelper.param.extendsType(CanonicalNameConstants.VIEW).optional().validate(executableElement, valid);
}

@Override
Expand All @@ -72,7 +72,7 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod
boolean hasViewParameter = parameters.size() == 1;
JVar viewParam = listenerMethod.param(classes().VIEW, "view");
if (hasViewParameter) {
call.arg(viewParam);
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.VIEW, viewParam, parameters.get(0)));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
validatorHelper.returnTypeIsVoidOrBoolean(executableElement, valid);

validatorHelper.param.anyOrder() //
.type(CanonicalNameConstants.PREFERENCE).optional() //
.extendsType(CanonicalNameConstants.PREFERENCE).optional() //
.anyOfTypes(CanonicalNameConstants.OBJECT, CanonicalNameConstants.STRING_SET, CanonicalNameConstants.STRING, //
CanonicalNameConstants.BOOLEAN, boolean.class.getName(), //
CanonicalNameConstants.INTEGER, int.class.getName(), //
Expand All @@ -86,9 +86,8 @@ protected void processParameters(HasPreferences holder, JMethod listenerMethod,

for (VariableElement variableElement : userParameters) {
String type = variableElement.asType().toString();

if (type.equals(CanonicalNameConstants.PREFERENCE)) {
call.arg(preferenceParam);
if (isTypeOrSubclass(CanonicalNameConstants.PREFERENCE, variableElement)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.PREFERENCE, preferenceParam, variableElement));
} else if (type.equals(CanonicalNameConstants.OBJECT)) {
call.arg(newValueParam);
} else if (type.equals(CanonicalNameConstants.INTEGER) || type.equals(int.class.getName()) || //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa
validatorHelper.returnTypeIsVoidOrBoolean(executableElement, valid);

validatorHelper.param //
.type(CanonicalNameConstants.PREFERENCE).optional() //
.extendsType(CanonicalNameConstants.PREFERENCE).optional() //
.validate(executableElement, valid);
}

Expand All @@ -75,7 +75,7 @@ protected void processParameters(HasPreferences holder, JMethod listenerMethod,
JVar preferenceParam = listenerMethod.param(classes().PREFERENCE, "preference");

if (userParameters.size() == 1) {
call.arg(preferenceParam);
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.PREFERENCE, preferenceParam, userParameters.get(0)));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void validate(Element element, AnnotationElements validatedElements, IsVa

validatorHelper.param.anyOrder() //
.type(CanonicalNameConstants.MOTION_EVENT).optional() //
.type(CanonicalNameConstants.VIEW).optional() //
.extendsType(CanonicalNameConstants.VIEW).optional() //
.validate(executableElement, valid);
}

Expand All @@ -78,10 +78,11 @@ protected void processParameters(EComponentWithViewSupportHolder holder, JMethod

for (VariableElement parameter : parameters) {
String parameterType = parameter.asType().toString();

if (parameterType.equals(CanonicalNameConstants.MOTION_EVENT)) {
call.arg(eventParam);
} else if (parameterType.equals(CanonicalNameConstants.VIEW)) {
call.arg(viewParam);
} else if (isTypeOrSubclass(CanonicalNameConstants.VIEW, parameter)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.VIEW, viewParam, parameter));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

<CheckBox
android:id="@+id/checkBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

<CheckBox
android:id="@+id/snake_case_button"
android:layout_width="fill_parent"
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.