// Copyright 2015 The Fuchsia Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. library fuchsia.ui.viewsv1; using fuchsia.sys; // A view tree is a top-level container for a hierarchy of views. // Each view is intended to operate independently from others and will // generally correspond to discrete interactive spaces such as separate // displays or isolated environments in a multi-user system. // // Within a view tree, certain global invariants may be enforced such as // ensuring that only one view has focus at a time. // // View trees will typically be created by system components responsible // for managing the overall user interface rather than end-user applications. // // LIFECYCLE // // Use |ViewManager.CreateViewTree()| to create a view tree. The client // uses the |ViewTree| interface to manage the view tree's content // and implements the |ViewTreeListener| interface to handle events. // // To destroy a view tree, simply close the |ViewTree| channel. // // SETTING A ROOT VIEW // // Use |GetContainer()| to obtain an interface for manipulating the root view. // // See |ViewContainer| for more information. // // GETTING SERVICES // // The view tree's |fuchsia::sys::ServiceProvider| offers access to many services // which are not directly expressed by the |ViewTree| interface itself, such // as input, accessiblity, and editing capabilities. // // For example, perform the following actions to dispatch input events: // // 1. Call |GetServiceProvider()| to obtain the view's service provider. // // 2. Ask the service provider for its |InputDispatcher|. // // 3. Send input events to the dispatcher for delivery to views. interface ViewTree { // Gets the view tree's token. 1: GetToken() -> (ViewTreeToken token); // Gets a service provider to access services which are associated with // the view tree such as input, accessibility and editing capabilities. // The view tree service provider is private to the view tree and should // not be shared with anyone else. // // See |InputDispatcher|. 2: GetServiceProvider(request<fuchsia.sys.ServiceProvider> service_provider); // Gets an interface for managing the view tree's root. 3: GetContainer(request<ViewContainer> container); }; // An interface clients may implement to receive events from a view tree. interface ViewTreeListener { // There are currently no events defined but we have preserved the // plumbing for the future when ViewContainer will merge into ViewTree // along with its listener. };