/** * @param event * @param value * @param view */ public void trigger(String event, Value value, ProteusView view) { ProteusLayoutInflater.Callback callback = view.getViewManager().getContext().getCallback(); if (null != callback) { callback.onEvent(event, value, view); } } }
@Override public void onBindViewHolder(ProteusViewHolder holder, int position) { DataContext context = DataContext.create(holder.context, data, position, scope); holder.view.getViewManager().update(context.getData()); }
@Override public void setString(V view, String value) { if (view instanceof ProteusView) { int id = ((ProteusView) view).getViewManager().getContext().getInflater().getUniqueViewId(value); ParseHelper.addRelativeLayoutRule(view, rule, id); } } };
public static ProteusContext context() { Proteus proteus = new ProteusBuilder().build(); Context context = mock(Context.class); return proteus.createContextBuilder(context).build(); }
public void handleBinding(V view, Binding value) { DataContext dataContext = ((ProteusView) view).getViewManager().getDataContext(); Value resolved = evaluate(value, view.getContext(), dataContext.getData(), dataContext.getIndex()); handleValue(view, resolved); }
ProteusViewHolder(@NonNull ProteusView view) { super(view.getAsView()); this.view = view; this.context = view.getViewManager().getContext(); } }
protected boolean handleAttribute(@NonNull ViewTypeParser parser, @NonNull ProteusView view, int attribute, @NonNull Value value) { if (ProteusConstants.isLoggingEnabled()) { Log.d(TAG, "Handle '" + attribute + "' : " + value); } //noinspection unchecked return parser.handleAttribute(view.getAsView(), attribute, value); } }
private void alert() { ProteusView view = layoutInflater.inflate("AlertDialogLayout", data); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(view.getAsView()) .setPositiveButton(R.string.action_alert_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }) .show(); }
protected void updateChildren() { if (!hasDataBoundChildren && view instanceof ViewGroup) { ViewGroup parent = (ViewGroup) view; int count = parent.getChildCount(); View child; for (int index = 0; index < count; index++) { child = parent.getChildAt(index); if (child instanceof ProteusView) { ((ProteusView) child).getViewManager().update(dataContext.getData()); } } } } }
protected Proteus.Type prepare(ViewTypeParser parser) { String name = parser.getType(); ViewTypeParser parent = parsers.get(parser.getParentType()); Map<String, AttributeProcessor> extras = this.processors.get(name); //noinspection unchecked return new Proteus.Type(ID, name, parser, parser.prepare(parent, extras)); }
@NonNull public ProteusLayoutInflater getInflater() { return getInflater(new SimpleIdGenerator()); }
private void updateDataContext(ObjectValue data) { if (dataContext.hasOwnProperties()) { dataContext.update(context, data); } else { dataContext.setData(data); } }
/** * @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)); }
public ProteusContext build() { ProteusResources resources = new ProteusResources(parsers, layoutManager, functionManager, styleManager); return new ProteusContext(base, resources, loader, callback); }
Proteus(@NonNull Map<String, Type> types, @NonNull final Map<String, Function> functions) { this.types = types; this.functions = new FunctionManager(functions); this.parsers = map(types); }
/** * Returns a clone of this data context with {@link #hasOwnProperties} set to {@code false}. * * @return a new cloned data context. */ public DataContext copy() { return new DataContext(this); }
/** * @param view * @param children * @return */ public boolean handleChildren(V view, Value children) { //noinspection unchecked return null != parent && parent.handleChildren(view, children); }
/** * @param name * @return */ public int getAttributeId(String name) { AttributeSet.Attribute attribute = attributeSet.getAttribute(name); return null != attribute ? attribute.id : -1; }
/** * @param parent * @param view * @return */ public boolean addView(ProteusView parent, ProteusView view) { return null != this.parent && this.parent.addView(parent, view); }
private void handleBinding(BoundAttribute boundAttribute) { //noinspection unchecked parser.handleAttribute(view, boundAttribute.attributeId, boundAttribute.binding); } }