| // Copyright 2016 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| /** |
| * This package is the entry point into the Baku Toolkit. The easiest way for an application to take |
| * advantage of Baku is for its activities with distributed state to inherit from |
| * {@link io.v.baku.toolkit.BakuActivity} (or {@link io.v.baku.toolkit.BakuAppCompatActivity}; see |
| * {@link io.v.baku.toolkit.BakuActivityMixin} for custom inheritance trees). Then, for any UI |
| * widget that should have distributed state, the client application should build data bindings by |
| * chaining methods from a {@link io.v.baku.toolkit.BakuActivityTrait#binder() binder()} call, |
| * binding shared data fields in the Syncbase distributed storage system to UI widget properties. |
| * For [example](https://goo.gl/P0Ag9a), the following binds a data key named `"text"` to the text |
| * of a {@link android.widget.TextView} with ID `textView`: |
| * |
| * ```java |
| * {@literal @}Override |
| * protected void onCreate(final Bundle savedInstanceState) { |
| * super.onCreate(savedInstanceState); |
| * setContentView(R.layout.my_activity_layout); |
| * |
| * {@link io.v.baku.toolkit.BakuActivityTrait#binder() binder}().{@link |
| * io.v.baku.toolkit.bind.SyncbaseBinding.Builder#key(java.lang.String) key}("myDataRow") |
| * .{@link io.v.baku.toolkit.bind.SyncbaseBinding.Builder#bindTo(int) |
| * bindTo}(R.id.myTextView); |
| * } |
| * } |
| * ``` |
| * |
| * Collection bindings (from vector data to list/recycler views) are similarly exposed through a |
| * {@link io.v.baku.toolkit.BakuActivityTrait#collectionBinder() collectionBinder()} builder. Writes |
| * can be performed directly via {@link io.v.baku.toolkit.syncbase.BakuTable#put(java.lang.String, |
| * java.lang.Object) getSyncbaseTable().put(key, value)}. More information about data bindings is |
| * available in the {@link io.v.baku.toolkit.bind} package documentation. |
| * |
| * The Baku Toolkit creates a Syncbase table to use by default for data binding, and creates and |
| * manages a default {@linkplain io.v.rx.syncbase.UserCloudSyncgroup global user-level cloud |
| * syncgroup} to sync distributed data across all instances of the application belonging to a user. |
| * |
| * Baku components are built in layers bundling common sets of functionality. This allows |
| * application developers the flexibility to selectively interact with APIs when they need to work |
| * around our high-level abstractions which potentially don't meet their use cases. |
| * |
| * Sample code is available in the [baku projects repo] |
| * (https://vanadium.googlesource.com/release.projects.baku). |
| */ |
| package io.v.baku.toolkit; |