1 package org.simantics.browsing.ui.graph.impl;
\r
3 import java.util.Collection;
\r
5 import org.simantics.browsing.ui.BuiltinKeys.ViewpointKey;
\r
6 import org.simantics.browsing.ui.NodeContext;
\r
7 import org.simantics.browsing.ui.PrimitiveQueryUpdater;
\r
8 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;
\r
9 import org.simantics.db.ReadGraph;
\r
10 import org.simantics.db.common.request.UniqueRead;
\r
11 import org.simantics.db.exception.DatabaseException;
\r
13 public class EvaluatorViewpoint extends LazyViewpoint {
\r
15 final BrowseContext browseContext;
\r
16 final boolean useNodeBrowseContexts;
\r
17 final boolean useNodeActionContexts;
\r
19 public EvaluatorViewpoint(PrimitiveQueryUpdater updater, NodeContext context, ViewpointKey key,
\r
20 BrowseContext browseContext, boolean useNodeBrowseContexts, boolean useNodeActionContexts) {
\r
21 super(updater, context, key);
\r
22 this.browseContext = browseContext;
\r
23 this.useNodeActionContexts = useNodeActionContexts;
\r
24 this.useNodeBrowseContexts = useNodeBrowseContexts;
\r
28 public Boolean hasChildren(ReadGraph graph) throws DatabaseException {
\r
29 return BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts).hasChildren(graph, context);
\r
33 public NodeContext[] children(ReadGraph graph) throws DatabaseException {
\r
34 boolean oldSynchronous = graph.setSynchronous(false);
\r
36 // This intermediate query is a work-around for a listening
\r
37 // bug where old dependencies are not correctly pruned for listened entries
\r
38 return graph.syncRequest(new UniqueRead<NodeContext[]>() {
\r
41 public NodeContext[] perform(ReadGraph graph) throws DatabaseException {
\r
42 BrowseContext bc = BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts);
\r
43 Collection<NodeContext> children = bc.getChildren(graph, context);
\r
44 children = BrowseContext.augment(graph, bc, children, useNodeActionContexts);
\r
45 return children.toArray(new NodeContext[children.size()]);
\r
50 graph.setSynchronous(oldSynchronous);
\r
54 public String toString() {
\r
55 return "EvaluatorViewpoint[" + browseContext + "] " + context;
\r