/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * 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: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.browsing.ui.content; import org.simantics.browsing.ui.GraphExplorer; import org.simantics.browsing.ui.NodeContext; import org.simantics.browsing.ui.PrimitiveQueryUpdater; /** * A Viewpoint is used for describing the child node generation of a single UI * (e.g. tree) node. Viewpoints are created on a per UI node basis, including * the invisible root input of provided to * {@link GraphExplorer#setRoot(Object)}. Viewpoints are created by * {@link ViewpointFactory}s. * *
* A Viewpoint is responsible for informing of any changes happening in the set * of children provided by it. Updates are performed using the * {@link PrimitiveQueryUpdater} received by the {@link ViewpointFactory} that * created the Viewpoint. To signal that the set of children has (possibly) * changed, invoke * {@link PrimitiveQueryUpdater#scheduleReplace(NodeContext, org.simantics.browsing.ui.NodeContext.PrimitiveQueryKey, Object)} * and eventually the query system will re-request the viewpoint for the new * children. *
* * @author Antti Villberg * * @see ViewpointStub */ public interface Viewpoint { static final NodeContext[] PENDING_CHILDREN = {}; static final Boolean PENDING_HAS_CHILDREN = new Boolean(false); /** * @return an array of child contexts */ NodeContext[] getChildren(); /** * @returntrue
if the viewpoint may produce > 0,
* false
otherwise.
*/
Boolean getHasChildren();
}