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.
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,25 @@ public final class CanonicalNameConstants {
public static final String VIEW_PAGER = "android.support.v4.view.ViewPager";
public static final String PAGE_CHANGE_LISTENER = "android.support.v4.view.ViewPager.OnPageChangeListener";

/*
* Android X
*/
public static final String ANDROIDX_ACTIVITY_COMPAT = "androidx.core.app.ActivityCompat";
public static final String ANDROIDX_FRAGMENT = "androidx.fragment.app.Fragment";
public static final String ANDROIDX_FRAGMENT_ACTIVITY = "androidx.fragment.app.FragmentActivity";
public static final String ANDROIDX_LOCAL_BROADCAST_MANAGER = "androidx.localbroadcastmanager.content.LocalBroadcastManager";
public static final String ANDROIDX_CONTEXT_COMPAT = "androidx.core.content.ContextCompat";
public static final String ANDROIDX_PREFERENCE = "androidx.preference.Preference";
public static final String ANDROIDX_PREFERENCE_FRAGMENT = "androidx.preference.PreferenceFragment";
public static final String ANDROIDX_PREFERENCE_FRAGMENTCOMPAT = "androidx.preference.PreferenceFragmentCompat";
public static final String ANDROIDX_PREFERENCE_CLICK_LISTENER = "androidx.preference.Preference.OnPreferenceClickListener";
public static final String ANDROIDX_PREFERENCE_CHANGE_LISTENER = "androidx.preference.Preference.OnPreferenceChangeListener";
public static final String ANDROIDX_APPCOMPAT_ACTIVITY = "androidx.appcompat.app.AppCompatActivity";
public static final String ANDROIDX_VIEW_PAGER = "androidx.viewpager.widget.ViewPager";
public static final String ANDROIDX_PAGE_CHANGE_LISTENER = "androidx.viewpager.widget.ViewPager.OnPageChangeListener";
public static final String ANDROIDX_DATA_BINDING_UTIL = "androidx.databinding.DataBindingUtil";
public static final String ANDROIDX_VIEW_DATA_BINDING = "androidx.databinding.ViewDataBinding";

/*
* Android permission
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@
@SuppressWarnings("checkstyle:methodcount")
public class ValidatorHelper {

private static final List<String> ANDROID_FRAGMENT_QUALIFIED_NAMES = asList(CanonicalNameConstants.FRAGMENT, CanonicalNameConstants.SUPPORT_V4_FRAGMENT);
private static final List<String> ANDROID_FRAGMENT_QUALIFIED_NAMES = asList(CanonicalNameConstants.FRAGMENT, CanonicalNameConstants.SUPPORT_V4_FRAGMENT, CanonicalNameConstants.ANDROIDX_FRAGMENT);

private static final Collection<Integer> VALID_LOG_LEVELS = asList(LOG_VERBOSE, LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERROR);

private static final List<String> VALID_PREFERENCE_CLASSES = asList(CanonicalNameConstants.PREFERENCE_ACTIVITY, CanonicalNameConstants.PREFERENCE_FRAGMENT,
CanonicalNameConstants.SUPPORT_V4_PREFERENCE_FRAGMENT, CanonicalNameConstants.MACHINARIUS_V4_PREFERENCE_FRAGMENT, CanonicalNameConstants.SUPPORT_V7_PREFERENCE_FRAGMENTCOMPAT,
CanonicalNameConstants.SUPPORT_V14_PREFERENCE_FRAGMENT);
CanonicalNameConstants.SUPPORT_V14_PREFERENCE_FRAGMENT, CanonicalNameConstants.ANDROIDX_PREFERENCE_FRAGMENT, CanonicalNameConstants.ANDROIDX_PREFERENCE_FRAGMENTCOMPAT);

protected final TargetAnnotationHelper annotationHelper;
private final ParcelerHelper parcelerHelper;
Expand Down Expand Up @@ -500,7 +500,7 @@ public void extendsListOfView(Element element, ElementValidation valid) {
}

public void extendsPreference(Element element, ElementValidation validation) {
extendsOneOfTypes(element, asList(CanonicalNameConstants.PREFERENCE, CanonicalNameConstants.SUPPORT_V7_PREFERENCE), validation);
extendsOneOfTypes(element, asList(CanonicalNameConstants.PREFERENCE, CanonicalNameConstants.SUPPORT_V7_PREFERENCE, CanonicalNameConstants.ANDROIDX_PREFERENCE), validation);
}

public void extendsOneOfTypes(Element element, List<String> typeQualifiedNames, ElementValidation valid) {
Expand Down Expand Up @@ -766,8 +766,9 @@ public void isPreferenceFragmentClassPresent(Element element, ElementValidation
}

public void isViewPagerClassPresent(ElementValidation validation) {
if (!isClassPresent(CanonicalNameConstants.VIEW_PAGER)) {
validation.addError("The class " + CanonicalNameConstants.VIEW_PAGER + " cannot be found. You have to include support v4 library");
if (!isClassPresent(CanonicalNameConstants.VIEW_PAGER) && !isClassPresent(CanonicalNameConstants.ANDROIDX_VIEW_PAGER)) {
validation.addError("The classes " + CanonicalNameConstants.VIEW_PAGER + " and " + CanonicalNameConstants.ANDROIDX_VIEW_PAGER
+ " cannot be found. You have to include support-v4 or androidx.viewpager library");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@

import static org.androidannotations.helper.ModelConstants.generationSuffix;

import org.androidannotations.helper.CanonicalNameConstants;

import com.helger.jcodemodel.AbstractJClass;
import com.helger.jcodemodel.IJExpression;
import com.helger.jcodemodel.JFieldVar;
import com.helger.jcodemodel.JMod;
Expand All @@ -38,11 +41,19 @@ JFieldVar getDataBindingField() {
}

private void setDataBindingField() {
dataBindingField = holder.generatedClass.field(JMod.PRIVATE, getClasses().VIEW_DATA_BINDING, "viewDataBinding" + generationSuffix());
AbstractJClass viewDataBinding = getClasses().VIEW_DATA_BINDING;
if (getEnvironment().getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_VIEW_DATA_BINDING) != null) {
viewDataBinding = getClasses().ANDROIDX_VIEW_DATA_BINDING;
}
dataBindingField = holder.generatedClass.field(JMod.PRIVATE, viewDataBinding, "viewDataBinding" + generationSuffix());
}

IJExpression getDataBindingInflationExpression(IJExpression contentViewId, IJExpression container, boolean attachToRoot) {
return getClasses().DATA_BINDING_UTIL.staticInvoke("inflate") //
AbstractJClass dataBindingUtil = getClasses().DATA_BINDING_UTIL;
if (getEnvironment().getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_DATA_BINDING_UTIL) != null) {
dataBindingUtil = getClasses().ANDROIDX_DATA_BINDING_UTIL;
}
return dataBindingUtil.staticInvoke("inflate") //
.arg(getClasses().LAYOUT_INFLATER.staticInvoke("from").arg(holder.getContextRef())) //
.arg(contentViewId) //
.arg(container) //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,12 @@ protected void setFindNativeFragmentById() {

@Override
protected void setFindSupportFragmentById() {
JMethod method = generatedClass.method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentById");
JMethod method;
if (getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT) == null) {
method = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentById");
} else {
method = getGeneratedClass().method(PRIVATE, getClasses().ANDROIDX_FRAGMENT, "findSupportFragmentById");
}
JVar idParam = method.param(getCodeModel().INT, "id");
JBlock body = method.body();
body._return(invoke("getSupportFragmentManager").invoke("findFragmentById").arg(idParam));
Expand All @@ -352,7 +357,12 @@ protected void setFindNativeFragmentByTag() {

@Override
protected void setFindSupportFragmentByTag() {
JMethod method = generatedClass.method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentByTag");
JMethod method;
if (getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT) == null) {
method = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentByTag");
} else {
method = getGeneratedClass().method(PRIVATE, getClasses().ANDROIDX_FRAGMENT, "findSupportFragmentByTag");
}
JVar tagParam = method.param(getClasses().STRING, "tag");
JBlock body = method.body();
body._return(invoke("getSupportFragmentManager").invoke("findFragmentByTag").arg(tagParam));
Expand Down Expand Up @@ -583,7 +593,7 @@ public JMethod getGetLastNonConfigurationInstance() throws JClassAlreadyExistsEx

private void setGetLastNonConfigurationInstance() throws JClassAlreadyExistsException {
AnnotationHelper annotationHelper = new AnnotationHelper(getEnvironment());
TypeElement fragmentActivityTypeElement = annotationHelper.typeElementFromQualifiedName(CanonicalNameConstants.FRAGMENT_ACTIVITY);
TypeElement fragmentActivityTypeElement = getFragmentActivity(annotationHelper);
TypeElement typeElement = annotationHelper.typeElementFromQualifiedName(generatedClass._extends().fullName());
String getLastNonConfigurationInstanceName = "getLastNonConfigurationInstance";
if (fragmentActivityTypeElement != null && annotationHelper.isSubtype(typeElement.asType(), fragmentActivityTypeElement.asType())) {
Expand Down Expand Up @@ -618,7 +628,7 @@ public JVar getOnRetainNonConfigurationInstance() throws JClassAlreadyExistsExce

private void setOnRetainNonConfigurationInstance() throws JClassAlreadyExistsException {
AnnotationHelper annotationHelper = new AnnotationHelper(getEnvironment());
TypeElement fragmentActivityTypeElement = annotationHelper.typeElementFromQualifiedName(CanonicalNameConstants.FRAGMENT_ACTIVITY);
TypeElement fragmentActivityTypeElement = getFragmentActivity(annotationHelper);
TypeElement typeElement = annotationHelper.typeElementFromQualifiedName(generatedClass._extends().fullName());

String onRetainNonConfigurationInstanceName = "onRetainNonConfigurationInstance";
Expand All @@ -639,6 +649,14 @@ private void setOnRetainNonConfigurationInstance() throws JClassAlreadyExistsExc
methodBody._return(onRetainNonConfigurationInstance);
}

private TypeElement getFragmentActivity(AnnotationHelper annotationHelper) {
TypeElement supportFragmentActivity = annotationHelper.typeElementFromQualifiedName(CanonicalNameConstants.FRAGMENT_ACTIVITY);
if (supportFragmentActivity == null) {
return annotationHelper.typeElementFromQualifiedName(CanonicalNameConstants.ANDROIDX_FRAGMENT_ACTIVITY);
}
return supportFragmentActivity;
}

@Override
public JBlock getOnActivityResultCaseBlock(int requestCode) {
return onActivityResultDelegate.getCaseBlock(requestCode);
Expand Down Expand Up @@ -776,6 +794,11 @@ public boolean usingSupportV7Preference() {
return preferencesHolder.usingSupportV7Preference();
}

@Override
public boolean usingAndroidxPreference() {
return preferencesHolder.usingAndroidxPreference();
}

public AbstractJClass getBasePreferenceClass() {
return preferencesHolder.getBasePreferenceClass();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,13 @@

import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;

import org.androidannotations.AndroidAnnotationsEnvironment;
import org.androidannotations.api.view.HasViews;
import org.androidannotations.api.view.OnViewChangedListener;
import org.androidannotations.api.view.OnViewChangedNotifier;
import org.androidannotations.helper.CanonicalNameConstants;
import org.androidannotations.internal.helper.ViewNotifierHelper;

import com.helger.jcodemodel.AbstractJClass;
Expand Down Expand Up @@ -207,18 +209,32 @@ public JMethod getFindSupportFragmentById() {
}

protected void setFindSupportFragmentById() {
findSupportFragmentById = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentById");
if (getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT) == null) {
findSupportFragmentById = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentById");
} else {
findSupportFragmentById = getGeneratedClass().method(PRIVATE, getClasses().ANDROIDX_FRAGMENT, "findSupportFragmentById");
}
JVar idParam = findSupportFragmentById.param(getCodeModel().INT, "id");

JBlock body = findSupportFragmentById.body();

body._if(getContextRef()._instanceof(getClasses().FRAGMENT_ACTIVITY).not())._then()._return(_null());
AbstractJClass fragmentActivity = getFragmentActivity();
body._if(getContextRef()._instanceof(fragmentActivity).not())._then()._return(_null());

JVar activityVar = body.decl(getClasses().FRAGMENT_ACTIVITY, "activity_", cast(getClasses().FRAGMENT_ACTIVITY, getContextRef()));
JVar activityVar = body.decl(fragmentActivity, "activity_", cast(fragmentActivity, getContextRef()));

body._return(activityVar.invoke("getSupportFragmentManager").invoke("findFragmentById").arg(idParam));
}

private AbstractJClass getFragmentActivity() {
Elements elementUtils = getProcessingEnvironment().getElementUtils();
if (elementUtils.getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT_ACTIVITY) != null) {
return getClasses().ANDROIDX_FRAGMENT_ACTIVITY;
} else {
return getClasses().FRAGMENT_ACTIVITY;
}
}

public JMethod getFindNativeFragmentByTag() {
if (findNativeFragmentByTag == null) {
setFindNativeFragmentByTag();
Expand Down Expand Up @@ -247,14 +263,19 @@ public JMethod getFindSupportFragmentByTag() {
}

protected void setFindSupportFragmentByTag() {
findSupportFragmentByTag = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentByTag");
if (getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT) == null) {
findSupportFragmentByTag = getGeneratedClass().method(PRIVATE, getClasses().SUPPORT_V4_FRAGMENT, "findSupportFragmentByTag");
} else {
findSupportFragmentByTag = getGeneratedClass().method(PRIVATE, getClasses().ANDROIDX_FRAGMENT, "findSupportFragmentByTag");
}
JVar tagParam = findSupportFragmentByTag.param(getClasses().STRING, "tag");

JBlock body = findSupportFragmentByTag.body();

body._if(getContextRef()._instanceof(getClasses().FRAGMENT_ACTIVITY).not())._then()._return(_null());
AbstractJClass fragmentActivity = getFragmentActivity();
body._if(getContextRef()._instanceof(fragmentActivity).not())._then()._return(_null());

JVar activityVar = body.decl(getClasses().FRAGMENT_ACTIVITY, "activity_", cast(getClasses().FRAGMENT_ACTIVITY, getContextRef()));
JVar activityVar = body.decl(fragmentActivity, "activity_", cast(fragmentActivity, getContextRef()));

body._return(activityVar.invoke("getSupportFragmentManager").invoke("findFragmentByTag").arg(tagParam));
}
Expand All @@ -279,7 +300,7 @@ private TextWatcherHolder createTextWatcherHolder(JFieldRef idRef, TypeMirror vi
JBlock onViewChangedBody = getOnViewChangedBodyInjectionBlock().blockSimple();
JVar viewVariable = onViewChangedBody.decl(FINAL, viewClass, "view", cast(viewClass, findViewById(idRef)));
onViewChangedBody._if(viewVariable.ne(JExpr._null()))._then() //
.invoke(viewVariable, "addTextChangedListener").arg(_new(onTextChangeListenerClass));
.invoke(viewVariable, "addTextChangedListener").arg(_new(onTextChangeListenerClass));

return new TextWatcherHolder(this, viewVariable, onTextChangeListenerClass);
}
Expand Down Expand Up @@ -315,8 +336,15 @@ public PageChangeHolder getPageChangeHolder(JFieldRef idRef, TypeMirror viewPara
}

private PageChangeHolder createPageChangeHolder(JFieldRef idRef, TypeMirror viewParameterType, boolean hasAddOnPageChangeListenerMethod) {
JDefinedClass onPageChangeListenerClass = getCodeModel().anonymousClass(getClasses().PAGE_CHANGE_LISTENER);
AbstractJClass viewClass = getClasses().VIEW_PAGER;
AbstractJClass viewClass;
JDefinedClass onPageChangeListenerClass;
if (getProcessingEnvironment().getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_VIEW_PAGER) == null) {
viewClass = getClasses().VIEW_PAGER;
onPageChangeListenerClass = getCodeModel().anonymousClass(getClasses().PAGE_CHANGE_LISTENER);
} else {
viewClass = getClasses().ANDROIDX_VIEW_PAGER;
onPageChangeListenerClass = getCodeModel().anonymousClass(getClasses().ANDROIDX_PAGE_CHANGE_LISTENER);
}
if (viewParameterType != null) {
viewClass = getJClass(viewParameterType.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,11 @@ public boolean usingSupportV7Preference() {
return preferencesDelegate.usingSupportV7Preference();
}

@Override
public boolean usingAndroidxPreference() {
return preferencesDelegate.usingAndroidxPreference();
}

public AbstractJClass getBasePreferenceClass() {
return preferencesDelegate.getBasePreferenceClass();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,7 @@ public interface HasPreferences extends GeneratedClassHolder {

boolean usingSupportV7Preference();

boolean usingAndroidxPreference();

AbstractJClass getBasePreferenceClass();
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,13 @@
import com.helger.jcodemodel.JMethod;
import com.helger.jcodemodel.JVar;

public class PreferencesDelegate extends GeneratedClassHolderDelegate<EComponentWithViewSupportHolder>implements HasPreferences {
public class PreferencesDelegate extends GeneratedClassHolderDelegate<EComponentWithViewSupportHolder> implements HasPreferences {

protected JBlock addPreferencesFromResourceInjectionBlock;
protected JBlock addPreferencesFromResourceAfterInjectionBlock;

private boolean usingSupportV7Preference = false;
private boolean usingAndroidxPreference = false;
private AbstractJClass basePreferenceClass;

public PreferencesDelegate(EComponentWithViewSupportHolder holder) {
Expand All @@ -51,12 +52,17 @@ public PreferencesDelegate(EComponentWithViewSupportHolder holder) {
Types typeUtils = holder.getEnvironment().getProcessingEnvironment().getTypeUtils();

TypeElement supportV7PreferenceFragmentCompat = elementUtils.getTypeElement(CanonicalNameConstants.SUPPORT_V7_PREFERENCE_FRAGMENTCOMPAT);

TypeElement andoridxPreferenceFragmentCompat = elementUtils.getTypeElement(CanonicalNameConstants.ANDROIDX_PREFERENCE_FRAGMENTCOMPAT);
TypeElement supportV14PreferenceFragment = elementUtils.getTypeElement(CanonicalNameConstants.SUPPORT_V14_PREFERENCE_FRAGMENT);
TypeElement andoridxPreferenceFragment = elementUtils.getTypeElement(CanonicalNameConstants.ANDROIDX_PREFERENCE_FRAGMENT);

TypeMirror annotatedType = holder.getAnnotatedElement().asType();

if (supportV7PreferenceFragmentCompat != null && typeUtils.isSubtype(annotatedType, supportV7PreferenceFragmentCompat.asType())
if (andoridxPreferenceFragmentCompat != null && typeUtils.isSubtype(annotatedType, andoridxPreferenceFragmentCompat.asType())
|| andoridxPreferenceFragment != null && typeUtils.isSubtype(annotatedType, andoridxPreferenceFragment.asType())) {
usingAndroidxPreference = true;
basePreferenceClass = getClasses().ANDROIDX_PREFERENCE;
} else if (supportV7PreferenceFragmentCompat != null && typeUtils.isSubtype(annotatedType, supportV7PreferenceFragmentCompat.asType())
|| supportV14PreferenceFragment != null && typeUtils.isSubtype(annotatedType, supportV14PreferenceFragment.asType())) {
usingSupportV7Preference = true;
basePreferenceClass = getClasses().SUPPORT_V7_PREFERENCE;
Expand Down Expand Up @@ -117,6 +123,11 @@ public boolean usingSupportV7Preference() {
return usingSupportV7Preference;
}

@Override
public boolean usingAndroidxPreference() {
return usingAndroidxPreference;
}

@Override
public AbstractJClass getBasePreferenceClass() {
return basePreferenceClass;
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.