| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ide.common.rendering.api; |
| |
| import static com.android.ide.common.rendering.api.Result.Status.NOT_IMPLEMENTED; |
| |
| import com.android.ide.common.rendering.api.Result.Status; |
| |
| import java.awt.image.BufferedImage; |
| import java.util.List; |
| import java.util.Map; |
| |
| /** |
| * An object allowing interaction with an Android layout. |
| * |
| * This is returned by {@link Bridge#createScene(RenderParams)}. |
| * and can then be used for subsequent actions on the layout. |
| * |
| * @since 5 |
| * |
| */ |
| public class RenderSession { |
| |
| /** |
| * Returns the last operation result. |
| */ |
| public Result getResult() { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Returns the {@link ViewInfo} objects for the top level views. |
| * <p/> |
| * In most case the list will only contain one item. If the top level node is {@code merge} |
| * though then it will contain all the items under the {@code merge} tag. |
| * <p/> |
| * This is reset to a new instance every time {@link #render()} is called and can be |
| * <code>null</code> if the call failed (and the method returned a {@link Result} with |
| * {@link Status#ERROR_UNKNOWN} or {@link Status#NOT_IMPLEMENTED}. |
| * <p/> |
| * This can be safely modified by the caller. |
| * |
| * @return the list of {@link ViewInfo} or null if there aren't any. |
| */ |
| public List<ViewInfo> getRootViews() { |
| return null; |
| } |
| |
| /** |
| * Returns the rendering of the full layout. |
| * <p> |
| * This is reset to a new instance every time {@link #render()} is called and can be |
| * <code>null</code> if the call failed (and the method returned a {@link Result} with |
| * {@link Status#ERROR_UNKNOWN} or {@link Status#NOT_IMPLEMENTED}. |
| * <p/> |
| * This can be safely modified by the caller. |
| */ |
| public BufferedImage getImage() { |
| return null; |
| } |
| |
| /** |
| * Returns true if the current image alpha channel is relevant. |
| * |
| * @return whether the image alpha channel is relevant. |
| */ |
| public boolean isAlphaChannelImage() { |
| return true; |
| } |
| |
| /** |
| * Returns a map of (XML attribute name, attribute value) containing only default attribute |
| * values, for the given view Object. |
| * @param viewObject the view object. |
| * @return a map of the default property values or null. |
| */ |
| public Map<String, String> getDefaultProperties(Object viewObject) { |
| return null; |
| } |
| |
| /** |
| * Re-renders the layout as-is. |
| * In case of success, this should be followed by calls to {@link #getRootView()} and |
| * {@link #getImage()} to access the result of the rendering. |
| * |
| * This is equivalent to calling <code>render(SceneParams.DEFAULT_TIMEOUT)</code> |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result render() { |
| return render(RenderParams.DEFAULT_TIMEOUT); |
| } |
| |
| /** |
| * Re-renders the layout as-is, with a given timeout in case other renderings are being done. |
| * In case of success, this should be followed by calls to {@link #getRootView()} and |
| * {@link #getImage()} to access the result of the rendering. |
| * |
| * The {@link Bridge} is only able to inflate or render one layout at a time. There |
| * is an internal lock object whenever such an action occurs. The timeout parameter is used |
| * when attempting to acquire the lock. If the timeout expires, the method will return |
| * {@link Status#ERROR_TIMEOUT}. |
| * |
| * @param timeout timeout for the rendering, in milliseconds. |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result render(long timeout) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Sets the value of a given property on a given object. |
| * <p/> |
| * This does nothing more than change the property. To render the scene in its new state, a |
| * call to {@link #render()} is required. |
| * <p/> |
| * Any amount of actions can be taken on the scene before {@link #render()} is called. |
| * |
| * @param objectView |
| * @param propertyName |
| * @param propertyValue |
| * |
| * @return a {@link Result} indicating the status of the action. |
| * |
| * @throws IllegalArgumentException if the view object is not an android.view.View |
| */ |
| public Result setProperty(Object objectView, String propertyName, String propertyValue) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * returns the value of a given property on a given object. |
| * <p/> |
| * This returns a {@link Result} object. If the operation of querying the object for its |
| * property was successful (check {@link Result#isSuccess()}), then the property value |
| * is set in the result and can be accessed through {@link Result#getData()}. |
| * |
| * @param objectView |
| * @param propertyName |
| * |
| * @return a {@link Result} indicating the status of the action. |
| * |
| * @throws IllegalArgumentException if the view object is not an android.view.View |
| */ |
| public Result getProperty(Object objectView, String propertyName) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Inserts a new child in a ViewGroup object, and renders the result. |
| * <p/> |
| * The child is first inflated and then added to its new parent, at the given <var>index<var> |
| * position. If the <var>index</var> is -1 then the child is added at the end of the parent. |
| * <p/> |
| * If an animation listener is passed then the rendering is done asynchronously and the |
| * result is sent to the listener. |
| * If the listener is null, then the rendering is done synchronously. |
| * <p/> |
| * The child stays in the view hierarchy after the rendering is done. To remove it call |
| * {@link #removeChild(Object, IAnimationListener)} |
| * <p/> |
| * The returned {@link Result} object will contain the android.view.View object for |
| * the newly inflated child. It is accessible through {@link Result#getData()}. |
| * |
| * @param parentView the parent View object to receive the new child. |
| * @param childXml an {@link ILayoutPullParser} containing the content of the new child, |
| * including ViewGroup.LayoutParams attributes. |
| * @param index the index at which position to add the new child into the parent. -1 means at |
| * the end. |
| * @param listener an optional {@link IAnimationListener}. |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result insertChild(Object parentView, ILayoutPullParser childXml, int index, |
| IAnimationListener listener) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Move a new child to a different ViewGroup object. |
| * <p/> |
| * The child is first removed from its current parent, and then added to its new parent, at the |
| * given <var>index<var> position. In case the <var>parentView</var> is the current parent of |
| * <var>childView</var> then the index must be the value with the <var>childView</var> removed |
| * from its parent. If the <var>index</var> is -1 then the child is added at the end of |
| * the parent. |
| * <p/> |
| * If an animation listener is passed then the rendering is done asynchronously and the |
| * result is sent to the listener. |
| * If the listener is null, then the rendering is done synchronously. |
| * <p/> |
| * The child stays in the view hierarchy after the rendering is done. To remove it call |
| * {@link #removeChild(Object, IAnimationListener)} |
| * <p/> |
| * The returned {@link Result} object will contain the android.view.ViewGroup.LayoutParams |
| * object created from the <var>layoutParams</var> map if it was non <code>null</code>. |
| * |
| * @param parentView the parent View object to receive the child. Can be the current parent |
| * already. |
| * @param childView the view to move. |
| * @param index the index at which position to add the new child into the parent. -1 means at |
| * the end. |
| * @param layoutParams an optional map of new ViewGroup.LayoutParams attribute. If non null, |
| * then the current layout params of the view will be removed and a new one will |
| * be inflated and set with the content of the map. |
| * @param listener an optional {@link IAnimationListener}. |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result moveChild(Object parentView, Object childView, int index, |
| Map<String, String> layoutParams, IAnimationListener listener) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Removes a child from a ViewGroup object. |
| * <p/> |
| * This does nothing more than change the layout. To render the scene in its new state, a |
| * call to {@link #render()} is required. |
| * <p/> |
| * Any amount of actions can be taken on the scene before {@link #render()} is called. |
| * |
| * @param childView the view object to remove from its parent |
| * @param listener an optional {@link IAnimationListener}. |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result removeChild(Object childView, IAnimationListener listener) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Starts playing an given animation on a given object. |
| * <p/> |
| * The animation playback is asynchronous and the rendered frame is sent vi the |
| * <var>listener</var>. |
| * |
| * @param targetObject the view object to animate |
| * @param animationName the name of the animation (res/anim) to play. |
| * @param listener the listener callback. |
| * |
| * @return a {@link Result} indicating the status of the action. |
| */ |
| public Result animate(Object targetObject, String animationName, |
| boolean isFrameworkAnimation, IAnimationListener listener) { |
| return NOT_IMPLEMENTED.createResult(); |
| } |
| |
| /** |
| * Discards the layout. No more actions can be called on this object. |
| */ |
| public void dispose() { |
| } |
| } |