if (params.getResources() instanceof ResourceResolver == false) {
throw new IllegalArgumentException("RenderResources object must be of type ResourceResolver");
}
ResourceResolver resources = (ResourceResolver) params.getResources();
int apiLevel = getLegacyApiLevel();
// create a log wrapper since the older api requires a ILayoutLog
final LayoutLog log = params.getLog();
ILayoutLog logWrapper = new ILayoutLog() {
@Override
public void warning(String message) {
log.warning(null, message, null /*data*/);
}
@Override
public void error(Throwable t) {
log.error(null, "error!", t, null /*data*/);
}
@Override
public void error(String message) {
log.error(null, message, null /*data*/);
}
};
// convert the map of ResourceValue into IResourceValue. Super ugly but works.
Map<String, Map<String, IResourceValue>> projectMap = convertMap(
resources.getProjectResources());
Map<String, Map<String, IResourceValue>> frameworkMap = convertMap(
resources.getFrameworkResources());
ILayoutResult result = null;
if (apiLevel == 4) {
// Final ILayoutBridge API added support for "render full height"
result = mLegacyBridge.computeLayout(
(IXmlPullParser) params.getLayoutDescription(),
params.getProjectKey(),
params.getScreenWidth(), params.getScreenHeight(),
params.getRenderingMode() == RenderingMode.FULL_EXPAND ? true : false,
params.getDensity().getDpiValue(), params.getXdpi(), params.getYdpi(),
resources.getThemeName(), resources.isProjectTheme(),
projectMap, frameworkMap,
(IProjectCallback) params.getProjectCallback(),
logWrapper);
} else if (apiLevel == 3) {
// api 3 add density support.
result = mLegacyBridge.computeLayout(
(IXmlPullParser) params.getLayoutDescription(), params.getProjectKey(),
params.getScreenWidth(), params.getScreenHeight(),
params.getDensity().getDpiValue(), params.getXdpi(), params.getYdpi(),
resources.getThemeName(), resources.isProjectTheme(),
projectMap, frameworkMap,
(IProjectCallback) params.getProjectCallback(), logWrapper);
} else if (apiLevel == 2) {
// api 2 added boolean for separation of project/framework theme
result = mLegacyBridge.computeLayout(
(IXmlPullParser) params.getLayoutDescription(), params.getProjectKey(),
params.getScreenWidth(), params.getScreenHeight(),
resources.getThemeName(), resources.isProjectTheme(),
projectMap, frameworkMap,
(IProjectCallback) params.getProjectCallback(), logWrapper);
} else {
// First api with no density/dpi, and project theme boolean mixed
// into the theme name.
// change the string if it's a custom theme to make sure we can
// differentiate them
String themeName = resources.getThemeName();
if (resources.isProjectTheme()) {
themeName = "*" + themeName; //$NON-NLS-1$
}
result = mLegacyBridge.computeLayout(
(IXmlPullParser) params.getLayoutDescription(), params.getProjectKey(),