blob: 7a159bf939dfc64c6855eb4e85cf9114b7a5b738 [file] [log] [blame]
// 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.
};