Skip to content

Commit b268cfd

Browse files
committed
Fixing holoeverywhere integration
1 parent 697d2ba commit b268cfd

5 files changed

Lines changed: 42 additions & 73 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/HoloEverywhereHelper.java‎

Lines changed: 0 additions & 53 deletions
This file was deleted.

AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/SherlockHelper.java renamed to AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/ThirdPartyLibHelper.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,37 @@
2222

2323
import org.androidannotations.processing.EBeanHolder;
2424

25-
/**
26-
* @author Eric Kok
27-
*/
28-
public class SherlockHelper {
25+
public class ThirdPartyLibHelper {
2926

3027
private final AnnotationHelper annotationHelper;
3128

32-
public SherlockHelper(AnnotationHelper annotationHelper) {
29+
public ThirdPartyLibHelper(AnnotationHelper annotationHelper) {
3330
this.annotationHelper = annotationHelper;
3431
}
3532

33+
/**
34+
* Checks whether the Activity extends one of the HoloEverywhere Activity
35+
* types
36+
*/
37+
public boolean usesHoloEverywhere(EBeanHolder holder) {
38+
TypeElement typeElement = annotationHelper.typeElementFromQualifiedName(holder.generatedClass._extends().fullName());
39+
40+
TypeMirror superType;
41+
while (!((superType = typeElement.getSuperclass()) instanceof NoType)) {
42+
typeElement = (TypeElement) ((DeclaredType) superType).asElement();
43+
String qName = typeElement.getQualifiedName().toString();
44+
if (qName.startsWith("org.holoeverywhere")) {
45+
return true;
46+
}
47+
}
48+
return false;
49+
}
50+
3651
/**
3752
* Checks whether the Activity extends one of the ActionBarSherlock Activity
3853
* types
3954
*/
40-
public boolean usesSherlock(EBeanHolder holder) {
55+
public boolean usesActionBarSherlock(EBeanHolder holder) {
4156
TypeElement typeElement = annotationHelper.typeElementFromQualifiedName(holder.generatedClass._extends().fullName());
4257

4358
TypeMirror superType;
@@ -48,6 +63,10 @@ public boolean usesSherlock(EBeanHolder holder) {
4863
return true;
4964
}
5065
if (qName.startsWith("org.holoeverywhere")) {
66+
/*
67+
* HoloEverywhere depends on ABS and uses its own provided
68+
* activity classes
69+
*/
5170
return true;
5271
}
5372
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EFragmentProcessor.java‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
import javax.lang.model.element.TypeElement;
3434

3535
import org.androidannotations.annotations.EFragment;
36-
import org.androidannotations.helper.HoloEverywhereHelper;
3736
import org.androidannotations.helper.IdAnnotationHelper;
37+
import org.androidannotations.helper.ThirdPartyLibHelper;
3838
import org.androidannotations.processing.EBeansHolder.Classes;
3939
import org.androidannotations.rclass.IRClass;
4040
import org.androidannotations.rclass.IRClass.Res;
@@ -53,11 +53,11 @@
5353
public class EFragmentProcessor implements GeneratingElementProcessor {
5454

5555
private final IdAnnotationHelper helper;
56-
private HoloEverywhereHelper holoEverywhereHelper;
56+
private ThirdPartyLibHelper holoEverywhereHelper;
5757

5858
public EFragmentProcessor(ProcessingEnvironment processingEnv, IRClass rClass) {
5959
helper = new IdAnnotationHelper(processingEnv, getTarget(), rClass);
60-
holoEverywhereHelper = new HoloEverywhereHelper(helper);
60+
holoEverywhereHelper = new ThirdPartyLibHelper(helper);
6161

6262
}
6363

@@ -118,11 +118,14 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
118118
// onCreateView()
119119
JMethod onCreateView = holder.generatedClass.method(PUBLIC, classes.VIEW, "onCreateView");
120120
onCreateView.annotate(Override.class);
121-
JClass inflaterClass = classes.LAYOUT_INFLATER;
122121

122+
JClass inflaterClass;
123123
if (holoEverywhereHelper.usesHoloEverywhere(holder)) {
124124
inflaterClass = classes.HOLO_EVERYWHERE_LAYOUT_INFLATER;
125+
} else {
126+
inflaterClass = classes.LAYOUT_INFLATER;
125127
}
128+
126129
JVar inflater = onCreateView.param(inflaterClass, "inflater");
127130

128131
JVar container = onCreateView.param(classes.VIEW_GROUP, "container");
@@ -153,11 +156,10 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
153156
JBlock onViewCreatedBody = onViewCreated.body();
154157

155158
onViewCreatedBody.invoke(_super(), onViewCreated).arg(view).arg(savedInstanceState);
156-
159+
157160
onViewCreatedBody.invoke(holder.afterSetContentView);
158161
}
159162

160-
161163
{
162164
// findViewById
163165

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OptionsItemProcessor.java‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232

3333
import org.androidannotations.annotations.OptionsItem;
3434
import org.androidannotations.helper.IdAnnotationHelper;
35-
import org.androidannotations.helper.SherlockHelper;
35+
import org.androidannotations.helper.ThirdPartyLibHelper;
3636
import org.androidannotations.processing.EBeansHolder.Classes;
3737
import org.androidannotations.rclass.IRClass;
3838
import org.androidannotations.rclass.IRClass.Res;
39+
3940
import com.sun.codemodel.JBlock;
4041
import com.sun.codemodel.JClass;
4142
import com.sun.codemodel.JCodeModel;
@@ -53,11 +54,11 @@ public class OptionsItemProcessor implements DecoratingElementProcessor {
5354

5455
private final IdAnnotationHelper helper;
5556

56-
private final SherlockHelper sherlockHelper;
57+
private final ThirdPartyLibHelper libHelper;
5758

5859
public OptionsItemProcessor(ProcessingEnvironment processingEnv, IRClass rClass) {
5960
helper = new IdAnnotationHelper(processingEnv, getTarget(), rClass);
60-
sherlockHelper = new SherlockHelper(helper);
61+
libHelper = new ThirdPartyLibHelper(helper);
6162
}
6263

6364
@Override
@@ -72,7 +73,7 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
7273
String methodName = element.getSimpleName().toString();
7374

7475
JClass menuItemClass;
75-
if (sherlockHelper.usesSherlock(holder)) {
76+
if (libHelper.usesActionBarSherlock(holder)) {
7677
menuItemClass = classes.SHERLOCK_MENU_ITEM;
7778
} else {
7879
menuItemClass = classes.MENU_ITEM;

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OptionsMenuProcessor.java‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.androidannotations.annotations.EFragment;
2828
import org.androidannotations.annotations.OptionsMenu;
2929
import org.androidannotations.helper.IdAnnotationHelper;
30-
import org.androidannotations.helper.SherlockHelper;
30+
import org.androidannotations.helper.ThirdPartyLibHelper;
3131
import org.androidannotations.processing.EBeansHolder.Classes;
3232
import org.androidannotations.rclass.IRClass;
3333
import org.androidannotations.rclass.IRClass.Res;
@@ -44,13 +44,13 @@
4444

4545
public class OptionsMenuProcessor implements DecoratingElementProcessor {
4646

47-
private final SherlockHelper sherlockHelper;
47+
private final ThirdPartyLibHelper libHelper;
4848

4949
private IdAnnotationHelper annotationHelper;
5050

5151
public OptionsMenuProcessor(ProcessingEnvironment processingEnv, IRClass rClass) {
5252
annotationHelper = new IdAnnotationHelper(processingEnv, getTarget(), rClass);
53-
sherlockHelper = new SherlockHelper(annotationHelper);
53+
libHelper = new ThirdPartyLibHelper(annotationHelper);
5454
}
5555

5656
@Override
@@ -67,7 +67,7 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
6767
JClass menuClass;
6868
JClass menuInflaterClass;
6969
String getMenuInflaterMethodName;
70-
if (sherlockHelper.usesSherlock(holder)) {
70+
if (libHelper.usesActionBarSherlock(holder)) {
7171
menuClass = classes.SHERLOCK_MENU;
7272
menuInflaterClass = classes.SHERLOCK_MENU_INFLATER;
7373
getMenuInflaterMethodName = "getSupportMenuInflater";

0 commit comments

Comments
 (0)