| /******************************************************************************* |
| * Copyright (c) 2001, 2008 Oracle Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Oracle Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.jsf.designtime.internal.view; |
| |
| import org.eclipse.jst.jsf.designtime.internal.view.DTUIViewRoot.StalenessListener; |
| |
| /** |
| * A handle to a view root. |
| * |
| * @author cbateman |
| * |
| */ |
| public interface IViewRootHandle |
| { |
| /** |
| * <p> |
| * This returns the copy of the view root cached by the faces context. If |
| * updateViewRoot has never been called (or if it was called but never |
| * succeeded) it may return null. |
| * </p> |
| * |
| * <p> |
| * This method should be cheap and avoid blocking |
| * </p> |
| * |
| * return null if the value of the view root |
| * |
| * @return the cached view root. May be null. |
| */ |
| DTUIViewRoot getCachedViewRoot(); |
| |
| /** |
| * NOTE: this method may be long running. If you can tolerate a possibly |
| * stale value more quickly, use getCachedViewRoot(). NEVER run this method |
| * on the main UI thread. |
| * |
| * A good strategy for invoking is as follows: |
| * |
| * DTUIViewRoot viewRoot = handle.getCachedViewRoot(); |
| * |
| * <pre> |
| * if (viewRoot == null || viewRoot.isStale()) |
| * { |
| * spawnTread that calls updateViewRoot |
| * } |
| * |
| * </pre> |
| * |
| * @return the view root for the associated context object or null if there |
| * is no context object. |
| */ |
| DTUIViewRoot updateViewRoot(); |
| |
| /** |
| * Adds a staleness listener to the currently cached view root. If there |
| * currently is no cached view root, then the listener will be stored |
| * until a updateViewRoot is successfully called. |
| * @param listener |
| */ |
| void addListener(final StalenessListener listener); |
| |
| /** |
| * Removes a staleness listener from the currently cached view root. If |
| * there is no currently cached root, then the listener will be stored |
| * until one is found. The call will then attempt to remove it. |
| * @param listener |
| */ |
| void removeListener(final StalenessListener listener); |
| } |