@Override public boolean addView(ProteusView parent, ProteusView view) { if (parent instanceof ViewGroup) { ((ViewGroup) parent).addView(view.getAsView()); return true; } return false; } }
ProteusViewHolder(@NonNull ProteusView view) { super(view.getAsView()); this.view = view; this.context = view.getViewManager().getContext(); } }
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()); } } } } }
if (view.getViewManager() == null) { view.setViewManager(viewManager);
@Override public void onBindViewHolder(ProteusViewHolder holder, int position) { DataContext context = DataContext.create(holder.context, data, position, scope); holder.view.getViewManager().update(context.getData()); }
void render() { // remove the current view container.removeAllViews(); // Inflate a new view using proteus long start = System.currentTimeMillis(); view = layoutInflater.inflate(layout, data, container, 0); System.out.println("inflate time: " + (System.currentTimeMillis() - start)); // Add the inflated view to the container container.addView(view.getAsView()); }
/** * @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); } } }
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(); }
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); }
public static float evaluate(Value value, ProteusView view) { if (value == null) { return Dimension.ZERO.apply(view.getAsView().getContext()); } final float[] result = new float[1]; DimensionAttributeProcessor<View> processor = new DimensionAttributeProcessor<View>() { @Override public void setDimension(View view, float dimension) { result[0] = dimension; } }; processor.process(view.getAsView(), value); return result[0]; }
parentDataContext = ((ProteusView) parent).getViewManager().getDataContext();
@Nullable public static Drawable evaluate(Value value, ProteusView view) { if (null == value) { return null; } final Drawable[] d = new Drawable[1]; DrawableResourceProcessor<View> processor = new DrawableResourceProcessor<View>() { @Override public void setDrawable(View view, Drawable drawable) { d[0] = drawable; } }; processor.process(view.getAsView(), value); return d[0]; }
@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); } } };
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new AdapterBasedViewManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
@Override public void handleValue(final V view, Value value) { if (value.isDrawable()) { DrawableValue d = value.getAsDrawable(); if (null != d) { ProteusLayoutInflater.ImageLoader loader = ((ProteusView) view).getViewManager().getContext().getLoader(); d.apply((ProteusView) view, view.getContext(), loader, new DrawableValue.Callback() { @Override public void apply(Drawable drawable) { if (null != drawable) { setDrawable(view, drawable); } } }); } } else { process(view, precompile(value, view.getContext(), ((ProteusContext) view.getContext()).getFunctionManager())); } }
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new ViewGroupManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
@Override public void setString(V view, String value) { ProteusView.Manager viewManager = ((ProteusView) view).getViewManager(); ProteusContext context = viewManager.getContext(); Layout layout = viewManager.getLayout(); ViewTypeParser handler = context.getInflater().getParser(layout.type); String[] styleSet = value.split(ProteusConstants.STYLE_DELIMITER); for (String styleName : styleSet) { Map<String, Value> style = context.getStyle(styleName); if (null != style) { process(context.getStyle(styleName), (ProteusView) view, (handler != null ? handler : ViewParser.this)); } } }
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new AdapterBasedViewManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
@Override public void setString(final V view, String value) { if (view instanceof ProteusView) { view.setId(((ProteusView) view).getViewManager().getContext().getInflater().getUniqueViewId(value));
public static Color.Result evaluate(Value value, ProteusView view) { final Color.Result[] result = new Color.Result[1]; ColorResourceProcessor<View> processor = new ColorResourceProcessor<View>() { @Override public void setColor(View view, int color) { result[0] = Color.Result.color(color); } @Override public void setColor(View view, ColorStateList colors) { result[0] = Color.Result.colors(colors); } }; processor.process(view.getAsView(), value); return result[0]; }