/** * @param parent * @param view * @return */ public boolean addView(ProteusView parent, ProteusView view) { return null != this.parent && this.parent.addView(parent, view); }
private int getPosition(int attributeId) { return attributeId + getOffset(); }
/** * @param name * @param processor */ protected void addAttributeProcessor(String name, AttributeProcessor<V> processor) { addAttributeProcessor(processor); attributes.put(name, new AttributeSet.Attribute(getAttributeId(processors.length - 1), processor)); }
private void process(Map<String, Value> style, ProteusView proteusView, ViewTypeParser handler) { for (Map.Entry<String, Value> entry : style.entrySet()) { //noinspection unchecked handler.handleAttribute(proteusView.getAsView(), handler.getAttributeId(entry.getKey()), entry.getValue()); } } });
/** * @param parent * @param extras * @return */ @NonNull public AttributeSet prepare(@Nullable ViewTypeParser parent, @Nullable Map<String, AttributeProcessor<V>> extras) { this.parent = parent; this.processors = new AttributeProcessor[0]; this.attributes = new HashMap<>(); this.offset = null != parent ? parent.getAttributeSet().getOffset() : 0; addAttributeProcessors(); if (extras != null) { addAttributeProcessors(extras); } this.attributeSet = new AttributeSet(attributes.size() > 0 ? attributes : null, null != parent ? parent.getAttributeSet() : null, processors.length); return attributeSet; }
/** * @param context * @param view * @param layout * @param data * @param caller * @param parent * @param dataIndex @return */ @NonNull public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { if (null != this.parent && caller != this.parent) { return this.parent.createViewManager(context, view, layout, data, caller, parent, dataIndex); } else { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new ViewManager(context, caller != null ? caller : this, view.getAsView(), layout, dataContext); } }
protected void addAttributeProcessors(@NonNull Map<String, AttributeProcessor<V>> processors) { for (Map.Entry<String, AttributeProcessor<V>> entry : processors.entrySet()) { addAttributeProcessor(entry.getKey(), entry.getValue()); } }
protected ProteusView createView(@NonNull ViewTypeParser parser, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewGroup parent, int dataIndex) { return parser.createView(context, layout, data, parent, dataIndex); }
protected ProteusView.Manager createViewManager(@NonNull ViewTypeParser parser, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewGroup parent, int dataIndex) { return parser.createViewManager(context, view, layout, data, parser, parent, dataIndex); }
/** * @param view * @param parent * @param dataIndex */ public void onAfterCreateView(@NonNull ProteusView view, @Nullable ViewGroup parent, int dataIndex) { View v = view.getAsView(); if (null == v.getLayoutParams()) { ViewGroup.LayoutParams layoutParams; if (parent != null) { layoutParams = generateDefaultLayoutParams(parent); } else { layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); } v.setLayoutParams(layoutParams); } }
private int getAttributeId(int position) { return position - getOffset(); }