aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java12
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderLogger.java5
-rw-r--r--ide_common/src/com/android/ide/common/resources/ResourceResolver.java19
-rw-r--r--layoutlib_api/src/com/android/ide/common/rendering/api/LayoutLog.java7
4 files changed, 34 insertions, 9 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
index 29811dc..18cb516 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
@@ -1755,7 +1755,9 @@ public class GraphicalEditorPart extends EditorPart
}
if (!append) {
- mErrorLabel.setText("");
+ mErrorLabel.setText(""); //$NON-NLS-1$
+ } else {
+ addText(mErrorLabel, "\n"); //$NON-NLS-1$
}
if (missingClasses.size() > 0) {
addText(mErrorLabel, "The following classes could not be found:\n");
@@ -1833,6 +1835,14 @@ public class GraphicalEditorPart extends EditorPart
AdtPlugin.log(e, null);
}
+ if (logger.seenTagPrefix(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR)) {
+ addBoldText(mErrorLabel,
+ "Missing styles. Is the correct theme chosen for this layout?\n");
+ addText(mErrorLabel,
+ "Use the Theme combo box above the layout to choose a different layout, " +
+ "or fix the theme style references.\n\n");
+ }
+
if (hasAaptErrors && logger.seenTagPrefix(LayoutLog.TAG_RESOURCES_PREFIX)) {
// Text will automatically be wrapped by the error widget so no reason
// to insert linebreaks in this error message:
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderLogger.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderLogger.java
index e44c81b..5ec50c9 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderLogger.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderLogger.java
@@ -72,7 +72,7 @@ class RenderLogger extends LayoutLog {
}
if (mFidelityWarnings != null) {
- sb.append("The graphics preview may not be accurate:\n");
+ sb.append("The graphics preview in the layout editor may not be accurate:\n");
for (String warning : mFidelityWarnings) {
sb.append("* ");
sb.append(warning).append('\n');
@@ -91,6 +91,7 @@ class RenderLogger extends LayoutLog {
@Override
public void error(String tag, String message, Object data) {
String description = describe(message);
+
AdtPlugin.log(IStatus.ERROR, "%1$s: %2$s", mName, description);
addError(tag, description);
@@ -211,6 +212,4 @@ class RenderLogger extends LayoutLog {
return false;
}
}
-
-
}
diff --git a/ide_common/src/com/android/ide/common/resources/ResourceResolver.java b/ide_common/src/com/android/ide/common/resources/ResourceResolver.java
index 89a4cba..938a6ef 100644
--- a/ide_common/src/com/android/ide/common/resources/ResourceResolver.java
+++ b/ide_common/src/com/android/ide/common/resources/ResourceResolver.java
@@ -67,14 +67,13 @@ public class ResourceResolver extends RenderResources {
}
/**
- * Creates a new ResourceResolver object.
+ * Creates a new {@link ResourceResolver} object.
*
- * @param IFrameworkResourceIdProvider an optional framework resource ID provider
* @param projectResources the project resources.
* @param frameworkResources the framework resources.
* @param themeName the name of the current theme.
* @param isProjectTheme Is this a project theme?
- * @return
+ * @return a new {@link ResourceResolver}
*/
public static ResourceResolver create(
Map<ResourceType, Map<String, ResourceValue>> projectResources,
@@ -231,12 +230,22 @@ public class ResourceResolver extends RenderResources {
}
// Now look for the item in the theme, starting with the current one.
+ ResourceValue item;
if (frameworkOnly) {
// FIXME for now we do the same as if it didn't specify android:
- return findItemInStyle(mTheme, referenceName);
+ item = findItemInStyle(mTheme, referenceName);
+ } else {
+ item = findItemInStyle(mTheme, referenceName);
+ }
+
+ if (item == null && mLogger != null) {
+ mLogger.warning(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR,
+ String.format("Couldn't find theme resource %1$s for the current theme",
+ reference),
+ new ResourceValue(ResourceType.ATTR, referenceName, frameworkOnly));
}
- return findItemInStyle(mTheme, referenceName);
+ return item;
} else if (reference.startsWith(PREFIX_RESOURCE_REF)) {
boolean frameworkOnly = false;
diff --git a/layoutlib_api/src/com/android/ide/common/rendering/api/LayoutLog.java b/layoutlib_api/src/com/android/ide/common/rendering/api/LayoutLog.java
index 26d0479..df29537 100644
--- a/layoutlib_api/src/com/android/ide/common/rendering/api/LayoutLog.java
+++ b/layoutlib_api/src/com/android/ide/common/rendering/api/LayoutLog.java
@@ -57,6 +57,13 @@ public class LayoutLog {
public final static String TAG_RESOURCES_RESOLVE = TAG_RESOURCES_PREFIX + "resolve";
/**
+ * Tag for resource resolution failure, specifically for theme attributes.
+ * In this case the warning/error data object will be a ResourceValue containing the type
+ * and name of the resource that failed to resolve
+ */
+ public final static String TAG_RESOURCES_RESOLVE_THEME_ATTR = TAG_RESOURCES_RESOLVE + ".theme";
+
+ /**
* Tag for failure when reading the content of a resource file.
*/
public final static String TAG_RESOURCES_READ = TAG_RESOURCES_PREFIX + "read";