blob: 2e20f7cb6845bc24d42a7e78bd4da49ebcc2b764 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.render;
import com.android.ide.common.rendering.api.AdapterBinding;
import com.android.ide.common.rendering.api.ILayoutPullParser;
import com.android.ide.common.rendering.api.IProjectCallback;
import com.android.ide.common.rendering.api.ResourceReference;
import com.android.ide.common.rendering.api.ResourceValue;
import com.android.resources.ResourceType;
import com.android.util.Pair;
import java.util.HashMap;
import java.util.Map;
/**
* Simple implementation of {@link IProjectCallback}. This is a very basic implementation that
* cannot support custom classes. Look for the one in ADT for custom class support.
*
* Because there's no custom view support, the int to resource name is all dynamic instad of
* looking up in the R.java class that was compiled.
*
*/
public class ProjectCallback implements IProjectCallback {
private Map<ResourceType, Map<String, Integer>> mIdMap =
new HashMap<ResourceType, Map<String, Integer>>();
private Map<Integer, Pair<ResourceType, String>> mReverseIdMap =
new HashMap<Integer, Pair<ResourceType,String>>();
public ProjectCallback() {
}
public AdapterBinding getAdapterBinding(ResourceReference adapterViewRef, Object adapterCookie,
Object viewObject) {
// TODO Auto-generated method stub
return null;
}
public Object getAdapterItemValue(ResourceReference adapterView, Object adapterCookie,
ResourceReference itemRef, int fullPosition, int positionPerType,
int fullParentPosition, int parentPositionPerType, ResourceReference viewRef,
ViewAttribute viewAttribute, Object defaultValue) {
// TODO Auto-generated method stub
return null;
}
public String getNamespace() {
// no custom class == no custom attribute, this is not needed.
return null;
}
public ILayoutPullParser getParser(String layoutName) {
// don't support custom parser for included files.
return null;
}
public ILayoutPullParser getParser(ResourceValue layoutResource) {
// don't support custom parser for included files.
return null;
}
public Integer getResourceId(ResourceType type, String name) {
// since we don't have access to compiled id, generate one on the fly.
Map<String, Integer> typeMap = mIdMap.get(type);
if (typeMap == null) {
typeMap = new HashMap<String, Integer>();
mIdMap.put(type, typeMap);
}
Integer value = typeMap.get(name);
if (value == null) {
value = typeMap.size() + 1;
typeMap.put(name, value);
mReverseIdMap.put(value, Pair.of(type, name));
}
return value;
}
@SuppressWarnings("unchecked")
public Object loadView(String name, Class[] constructorSignature, Object[] constructorArgs)
throws ClassNotFoundException, Exception {
// don't support custom views.
return null;
}
public Pair<ResourceType, String> resolveResourceId(int id) {
return mReverseIdMap.get(id);
}
public String resolveResourceId(int[] id) {
// this is needed only when custom views have custom styleable
return null;
}
}