X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.browsing.ui%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2FBuiltinKeys.java;h=4c219defb6a59750c7b27e4ca02fe059e245a16a;hp=c8792c6424be410be079deb0e5006c24a954bfc2;hb=refs%2Fchanges%2F38%2F238%2F2;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/BuiltinKeys.java b/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/BuiltinKeys.java index c8792c642..4c219defb 100644 --- a/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/BuiltinKeys.java +++ b/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/BuiltinKeys.java @@ -1,527 +1,527 @@ -/******************************************************************************* - * 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; - -import java.util.Collection; - -import org.simantics.browsing.ui.NodeContext.ConstantKey; -import org.simantics.browsing.ui.NodeContext.ParametrizedPrimitiveQueryKey; -import org.simantics.browsing.ui.NodeContext.PrimitiveQueryKey; -import org.simantics.browsing.ui.NodeContext.QueryKey; -import org.simantics.browsing.ui.content.CheckedStateFactory; -import org.simantics.browsing.ui.content.ComparableContext; -import org.simantics.browsing.ui.content.ComparableContextFactory; -import org.simantics.browsing.ui.content.ImageDecorator; -import org.simantics.browsing.ui.content.ImageDecoratorFactory; -import org.simantics.browsing.ui.content.Imager; -import org.simantics.browsing.ui.content.ImagerFactory; -import org.simantics.browsing.ui.content.LabelDecorator; -import org.simantics.browsing.ui.content.LabelDecoratorFactory; -import org.simantics.browsing.ui.content.Labeler; -import org.simantics.browsing.ui.content.LabelerFactory; -import org.simantics.browsing.ui.content.PrunedChildrenResult; -import org.simantics.browsing.ui.content.Viewpoint; -import org.simantics.browsing.ui.content.ViewpointContribution; -import org.simantics.browsing.ui.content.ViewpointContributionFactory; -import org.simantics.browsing.ui.content.ViewpointFactory; - -/** - * Keys and key classes for different queries and graph explorer nodes. - * - *

- * QueryKey instances are for identifying normal queries to be - * performed. Also {@link NodeQueryProcessor}s, i.e. the query implementations, - * use them to identify the query that they are capable of answering (see - * {@link NodeQueryProcessor#getIdentifier()} method). - *

- * - *

- * Both PrimitiveQueryKey instances and - * ParametrizedPrimitiveQueryKey classes are used for identifying - * queries that are performed by {@link PrimitiveQueryProcessor}s. - *

- * - * TODO: specify for every query key or query key class: description, query dependencies, query return value - */ -public interface BuiltinKeys { - - public static class InputKey implements ConstantKey { - private InputKey() {} - @Override - public String toString() { - return "INPUT"; - } - }; - - /** - * This key is used for storing the main input object into a - * {@link NodeContext}. - * - *

- * See org.simantics.browsing.ui.common.NodeContextBuilder and - * org.simantics.browsing.ui.common.NodeContextUtil for ways of - * creating NodeContext instances. - */ - public static final ConstantKey INPUT = new InputKey(); - - public static class UIContextKey implements ConstantKey { - private UIContextKey() {} - @Override - public String toString() { - return "UI_CONTEXT"; - } - }; - - /** - * This key is used for storing the node-specific ui context into a - * {@link NodeContext}. - * - *

- * See org.simantics.browsing.ui.common.NodeContextBuilder and - * org.simantics.browsing.ui.common.NodeContextUtil for ways of - * creating NodeContext instances. - */ - public static final ConstantKey UI_CONTEXT = new UIContextKey(); - - public static class BrowseContextKey implements ConstantKey { - private BrowseContextKey() {} - @Override - public String toString() { - return "BROWSE_CONTEXT"; - } - }; - - /** - * This key is used for storing the node-specific BrowseContext input object into a - * {@link NodeContext}. - * - *

- * See org.simantics.browsing.ui.common.NodeContextBuilder and - * org.simantics.browsing.ui.common.NodeContextUtil for ways of - * creating NodeContext instances. - */ - public static final ConstantKey BROWSE_CONTEXT = new BrowseContextKey(); - - public static class ActionBrowseContextKey implements ConstantKey { - private ActionBrowseContextKey() {} - @Override - public String toString() { - return "ACTION_BROWSE_CONTEXT"; - } - }; - - /** - * This key is used for storing the node-specific ActionBrowseContext input - * object into a {@link NodeContext}. - * - *

- * See org.simantics.browsing.ui.common.NodeContextBuilder and - * org.simantics.browsing.ui.common.NodeContextUtil for ways of - * creating NodeContext instances. - */ - public static final ConstantKey ACTION_BROWSE_CONTEXT = new ActionBrowseContextKey(); - - public static class FilterKey implements ConstantKey { - private FilterKey() {} - @Override - public String toString() { - return "FILTER"; - } - }; - - /** - * This key is used for storing the filter string object into it a - * {@link NodeContext}. The value is used by primitive query viewpoints to - * perform pruning. - * - *

- * See org.simantics.browsing.ui.common.NodeContextBuilder and - * org.simantics.browsing.ui.common.NodeContextUtil for ways of - * creating NodeContext instances. - */ - public static final ConstantKey FILTER = new FilterKey(); - - public static final QueryKey SELECTED_VIEWPOINT = new QueryKey() { - @Override - public String toString() { - return "SELECTED_VIEWPOINT"; - } - }; - - public static final QueryKey ACTIVE_FILTER = new QueryKey() { - @Override - public String toString() { - return "ACTIVE_FILTER"; - } - }; - - public static final QueryKey> VIEWPOINT_CONTRIBUTIONS = new QueryKey>() { - @Override - public String toString() { - return "VIEWPOINT_CONTRIBUTIONS"; - } - }; - - /** - * A query for all available viewpoint factories for the current input. - *

- * Depends on: {@link #INPUT} - *

- * Returns: a non-null collection - */ - public static final QueryKey> VIEWPOINT_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "VIEWPOINT_FACTORIES"; - } - }; - - public static class SelectedViewpointFactoryKey extends ParametrizedPrimitiveQueryKey { - public SelectedViewpointFactoryKey(Collection factories) { - super(factories); - assert factories != null; - } - @Override - public String getKeyName() { - return "SELECTED_VIEWPOINT_FACTORY"; - } - }; - - public static class ViewpointKey extends ParametrizedPrimitiveQueryKey { - public ViewpointKey(ViewpointFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "VIEWPOINT"; - } - }; - - public static class ViewpointContributionKey extends ParametrizedPrimitiveQueryKey { - public ViewpointContributionKey(ViewpointContributionFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "VIEWPOINT_CONTRIBUTION"; - } - }; - - /** - * Used by GraphExplorer.setTextAndImage. - */ - public static final QueryKey> LABEL_DECORATOR_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "LABEL_DECORATOR_FACTORIES"; - } - }; - /** - * Used by GraphExplorer.setTextAndImage. - */ - public static final QueryKey> LABEL_DECORATORS = new QueryKey>() { - @Override - public String toString() { - return "LABEL_DECORATORS"; - } - }; - /** - * Used by GraphExplorer.setTextAndImage. - */ - public static final QueryKey> IMAGE_DECORATOR_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "IMAGE_DECORATOR_FACTORIES"; - } - }; - /** - * Used by GraphExplorer.setTextAndImage. - */ - public static final QueryKey> IMAGE_DECORATORS = new QueryKey>() { - @Override - public String toString() { - return "IMAGE_DECORATORS"; - } - }; - - public static final QueryKey SELECTED_LABELER = new QueryKey() { - @Override - public String toString() { - return "SELECTED_LABELER"; - } - }; - - public static final QueryKey SELECTED_IMAGER = new QueryKey() { - @Override - public String toString() { - return "SELECTED_IMAGER"; - } - }; - - public static final QueryKey> SELECTED_LABEL_DECORATOR_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "SELECTED_LABEL_DECORATOR_FACTORIES"; - } - }; - - public static final QueryKey> SELECTED_IMAGE_DECORATOR_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "SELECTED_IMAGE_DECORATOR_FACTORIES"; - } - }; - - /** - * A query for all available labeler factories for the current input. - *

- * Depends on: {@link #INPUT} - *

- * Returns: a non-null collection - */ - public static final QueryKey> LABELER_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "LABELER_FACTORIES"; - } - }; - - /** - * A query for all available imager factories for the current input. - *

- * Depends on: {@link #INPUT} - *

- * Returns: a non-null collection - */ - public static final QueryKey> IMAGER_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "IMAGER_FACTORIES"; - } - }; - - public static class LabelerKey extends ParametrizedPrimitiveQueryKey { - public LabelerKey(LabelerFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "LABELER"; - } - }; - - public static class CheckedStateKey extends ParametrizedPrimitiveQueryKey { - public CheckedStateKey(CheckedStateFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "CHECK_STATE"; - } - }; - - public static class LabelDecoratorKey extends ParametrizedPrimitiveQueryKey { - public LabelDecoratorKey(LabelDecoratorFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "LABEL_DECORATOR"; - } - }; - - public static class ImagerKey extends ParametrizedPrimitiveQueryKey { - public ImagerKey(ImagerFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "IMAGER"; - } - }; - - public static class ImageDecoratorKey extends ParametrizedPrimitiveQueryKey { - public ImageDecoratorKey(ImageDecoratorFactory factory) { - super(factory); - assert factory != null; - } - @Override - public String getKeyName() { - return "IMAGE_DECORATOR"; - } - }; - - /** - * A query that returns a collection of {@link SelectionRequest}s based on - * the current input. The selection requests are used to dictate whether a - * child INodeContext of the input INodeContext gets filtered out from the - * result of the {@link #PRUNED_CHILDREN} query. - * - *

- * The query is free to return null if there are no filters for - * the query input. - *

- */ - public static final PrimitiveQueryKey> SELECTION_REQUESTS = new PrimitiveQueryKey>() { - @Override - public String toString() { - return "SELECTION_REQUEST"; - } - }; - - //------------------------------------------------------------------------ - - /** - * A query that requests for the currently selected viewpoint of a node - * context, gets all of its children from the viewpoint and prunes the set - * of children based on active filters (selection requests). - *

- * Depends on: {@link #SELECTED_VIEWPOINT}, {@link #SELECTION_REQUESTS} - *

- * Returns: A {@link PrunedChildrenResult} which contains the pruned set of - * children as INodeContext[] and the original amount of children before - * pruning them. - */ - public static final QueryKey PRUNED_CHILDREN = new QueryKey() { - @Override - public String toString() { - return "PRUNED_CHILDREN"; - } - }; - - /** - * A query to transform INodeContext's into ComparableContexts that can be - * sorted. - *

- * Depends on: {@link #PRUNED_CHILDREN} - *

- * Returns: ComparableContext[] of the same size as the input or - * null if no selected ComparableFactory could be discovered - * which indicates that child nodes cannot be sorted. - */ - public static final QueryKey COMPARABLE_CHILDREN = new QueryKey() { - @Override - public String toString() { - return "COMPARABLE_CHILDREN"; - } - }; - - /** - * A query for all available comparable factories for the current input. - *

- * Depends on: {@link #INPUT} - *

- * Returns: a non-null collection - */ - public static final QueryKey> COMPARABLE_FACTORIES = new QueryKey>() { - @Override - public String toString() { - return "COMPARABLE_FACTORIES"; - } - }; - - public static class SelectedComparableFactoryKey extends ParametrizedPrimitiveQueryKey { - public SelectedComparableFactoryKey(Collection factories) { - super(factories); - assert factories != null; - } - @Override - public String getKeyName() { - return "SELECTED_COMPARABLE_FACTORY"; - } - } - - /** - * Returns the final child nodes for a node after pruning and sorting them. - * If you need to discover the set of children for a node you should use - * {@link BuiltinKeys#PRUNED_CHILDREN} instead if you don't need the - * sorting. To get the non-pruned set of all children of a node - *

- * Depends on: {@link BuiltinKeys#COMPARABLE_CHILDREN}, - * {@link BuiltinKeys#PRUNED_CHILDREN} - *

- * Returns: an array of {@link NodeContext}s. - */ - public static final QueryKey FINAL_CHILDREN = new QueryKey() { - @Override - public String toString() { - return "FINAL_CHILDREN"; - } - }; - - /** - * Returns whether a node is expanded in the UI or not. - *

- * Returns: {@link Boolean#TRUE} if expanded, {@link Boolean#FALSE} if not. - */ - public static final PrimitiveQueryKey IS_EXPANDED = new PrimitiveQueryKey() { - @Override - public String toString() { - return "IS_EXPANDED"; - } - }; - - /** - * Tells whether a node is "checked" in the UI or not. This only takes - * effect if the GraphExplorer was created with support for checkedness - * visualisation. - *

- * Returns: {@link CheckedState} - */ - public static final QueryKey IS_CHECKED = new QueryKey() { - @Override - public String toString() { - return "IS_CHECKED"; - } - }; - - /** - * Returns how many children should maximally be shown for a node. By - * default the set of shown children is pruned if there are too many of them - * to be shown. - *

- * Returns: - *

    - *
  • 0 < x ≤ {@value Integer#MAX_VALUE} to tell the maximum amount of - * children to show
  • - *
  • null indicates don't care
  • - *
- * May not return < 0. - */ - public static final PrimitiveQueryKey SHOW_MAX_CHILDREN = new PrimitiveQueryKey() { - @Override - public String toString() { - return "SHOW_MAX_CHILDREN"; - } - }; - - public static class IsRootKey implements ConstantKey { - private IsRootKey() {} - @Override - public String toString() { - return "IS_ROOT"; - } - }; - - /** - * Set to {@link Boolean#TRUE} for a NodeContext that describes the root - * input of a {@link GraphExplorer}. - */ - public static final ConstantKey IS_ROOT = new IsRootKey(); - -} +/******************************************************************************* + * 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; + +import java.util.Collection; + +import org.simantics.browsing.ui.NodeContext.ConstantKey; +import org.simantics.browsing.ui.NodeContext.ParametrizedPrimitiveQueryKey; +import org.simantics.browsing.ui.NodeContext.PrimitiveQueryKey; +import org.simantics.browsing.ui.NodeContext.QueryKey; +import org.simantics.browsing.ui.content.CheckedStateFactory; +import org.simantics.browsing.ui.content.ComparableContext; +import org.simantics.browsing.ui.content.ComparableContextFactory; +import org.simantics.browsing.ui.content.ImageDecorator; +import org.simantics.browsing.ui.content.ImageDecoratorFactory; +import org.simantics.browsing.ui.content.Imager; +import org.simantics.browsing.ui.content.ImagerFactory; +import org.simantics.browsing.ui.content.LabelDecorator; +import org.simantics.browsing.ui.content.LabelDecoratorFactory; +import org.simantics.browsing.ui.content.Labeler; +import org.simantics.browsing.ui.content.LabelerFactory; +import org.simantics.browsing.ui.content.PrunedChildrenResult; +import org.simantics.browsing.ui.content.Viewpoint; +import org.simantics.browsing.ui.content.ViewpointContribution; +import org.simantics.browsing.ui.content.ViewpointContributionFactory; +import org.simantics.browsing.ui.content.ViewpointFactory; + +/** + * Keys and key classes for different queries and graph explorer nodes. + * + *

+ * QueryKey instances are for identifying normal queries to be + * performed. Also {@link NodeQueryProcessor}s, i.e. the query implementations, + * use them to identify the query that they are capable of answering (see + * {@link NodeQueryProcessor#getIdentifier()} method). + *

+ * + *

+ * Both PrimitiveQueryKey instances and + * ParametrizedPrimitiveQueryKey classes are used for identifying + * queries that are performed by {@link PrimitiveQueryProcessor}s. + *

+ * + * TODO: specify for every query key or query key class: description, query dependencies, query return value + */ +public interface BuiltinKeys { + + public static class InputKey implements ConstantKey { + private InputKey() {} + @Override + public String toString() { + return "INPUT"; + } + }; + + /** + * This key is used for storing the main input object into a + * {@link NodeContext}. + * + *

+ * See org.simantics.browsing.ui.common.NodeContextBuilder and + * org.simantics.browsing.ui.common.NodeContextUtil for ways of + * creating NodeContext instances. + */ + public static final ConstantKey INPUT = new InputKey(); + + public static class UIContextKey implements ConstantKey { + private UIContextKey() {} + @Override + public String toString() { + return "UI_CONTEXT"; + } + }; + + /** + * This key is used for storing the node-specific ui context into a + * {@link NodeContext}. + * + *

+ * See org.simantics.browsing.ui.common.NodeContextBuilder and + * org.simantics.browsing.ui.common.NodeContextUtil for ways of + * creating NodeContext instances. + */ + public static final ConstantKey UI_CONTEXT = new UIContextKey(); + + public static class BrowseContextKey implements ConstantKey { + private BrowseContextKey() {} + @Override + public String toString() { + return "BROWSE_CONTEXT"; + } + }; + + /** + * This key is used for storing the node-specific BrowseContext input object into a + * {@link NodeContext}. + * + *

+ * See org.simantics.browsing.ui.common.NodeContextBuilder and + * org.simantics.browsing.ui.common.NodeContextUtil for ways of + * creating NodeContext instances. + */ + public static final ConstantKey BROWSE_CONTEXT = new BrowseContextKey(); + + public static class ActionBrowseContextKey implements ConstantKey { + private ActionBrowseContextKey() {} + @Override + public String toString() { + return "ACTION_BROWSE_CONTEXT"; + } + }; + + /** + * This key is used for storing the node-specific ActionBrowseContext input + * object into a {@link NodeContext}. + * + *

+ * See org.simantics.browsing.ui.common.NodeContextBuilder and + * org.simantics.browsing.ui.common.NodeContextUtil for ways of + * creating NodeContext instances. + */ + public static final ConstantKey ACTION_BROWSE_CONTEXT = new ActionBrowseContextKey(); + + public static class FilterKey implements ConstantKey { + private FilterKey() {} + @Override + public String toString() { + return "FILTER"; + } + }; + + /** + * This key is used for storing the filter string object into it a + * {@link NodeContext}. The value is used by primitive query viewpoints to + * perform pruning. + * + *

+ * See org.simantics.browsing.ui.common.NodeContextBuilder and + * org.simantics.browsing.ui.common.NodeContextUtil for ways of + * creating NodeContext instances. + */ + public static final ConstantKey FILTER = new FilterKey(); + + public static final QueryKey SELECTED_VIEWPOINT = new QueryKey() { + @Override + public String toString() { + return "SELECTED_VIEWPOINT"; + } + }; + + public static final QueryKey ACTIVE_FILTER = new QueryKey() { + @Override + public String toString() { + return "ACTIVE_FILTER"; + } + }; + + public static final QueryKey> VIEWPOINT_CONTRIBUTIONS = new QueryKey>() { + @Override + public String toString() { + return "VIEWPOINT_CONTRIBUTIONS"; + } + }; + + /** + * A query for all available viewpoint factories for the current input. + *

+ * Depends on: {@link #INPUT} + *

+ * Returns: a non-null collection + */ + public static final QueryKey> VIEWPOINT_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "VIEWPOINT_FACTORIES"; + } + }; + + public static class SelectedViewpointFactoryKey extends ParametrizedPrimitiveQueryKey { + public SelectedViewpointFactoryKey(Collection factories) { + super(factories); + assert factories != null; + } + @Override + public String getKeyName() { + return "SELECTED_VIEWPOINT_FACTORY"; + } + }; + + public static class ViewpointKey extends ParametrizedPrimitiveQueryKey { + public ViewpointKey(ViewpointFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "VIEWPOINT"; + } + }; + + public static class ViewpointContributionKey extends ParametrizedPrimitiveQueryKey { + public ViewpointContributionKey(ViewpointContributionFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "VIEWPOINT_CONTRIBUTION"; + } + }; + + /** + * Used by GraphExplorer.setTextAndImage. + */ + public static final QueryKey> LABEL_DECORATOR_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "LABEL_DECORATOR_FACTORIES"; + } + }; + /** + * Used by GraphExplorer.setTextAndImage. + */ + public static final QueryKey> LABEL_DECORATORS = new QueryKey>() { + @Override + public String toString() { + return "LABEL_DECORATORS"; + } + }; + /** + * Used by GraphExplorer.setTextAndImage. + */ + public static final QueryKey> IMAGE_DECORATOR_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "IMAGE_DECORATOR_FACTORIES"; + } + }; + /** + * Used by GraphExplorer.setTextAndImage. + */ + public static final QueryKey> IMAGE_DECORATORS = new QueryKey>() { + @Override + public String toString() { + return "IMAGE_DECORATORS"; + } + }; + + public static final QueryKey SELECTED_LABELER = new QueryKey() { + @Override + public String toString() { + return "SELECTED_LABELER"; + } + }; + + public static final QueryKey SELECTED_IMAGER = new QueryKey() { + @Override + public String toString() { + return "SELECTED_IMAGER"; + } + }; + + public static final QueryKey> SELECTED_LABEL_DECORATOR_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "SELECTED_LABEL_DECORATOR_FACTORIES"; + } + }; + + public static final QueryKey> SELECTED_IMAGE_DECORATOR_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "SELECTED_IMAGE_DECORATOR_FACTORIES"; + } + }; + + /** + * A query for all available labeler factories for the current input. + *

+ * Depends on: {@link #INPUT} + *

+ * Returns: a non-null collection + */ + public static final QueryKey> LABELER_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "LABELER_FACTORIES"; + } + }; + + /** + * A query for all available imager factories for the current input. + *

+ * Depends on: {@link #INPUT} + *

+ * Returns: a non-null collection + */ + public static final QueryKey> IMAGER_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "IMAGER_FACTORIES"; + } + }; + + public static class LabelerKey extends ParametrizedPrimitiveQueryKey { + public LabelerKey(LabelerFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "LABELER"; + } + }; + + public static class CheckedStateKey extends ParametrizedPrimitiveQueryKey { + public CheckedStateKey(CheckedStateFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "CHECK_STATE"; + } + }; + + public static class LabelDecoratorKey extends ParametrizedPrimitiveQueryKey { + public LabelDecoratorKey(LabelDecoratorFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "LABEL_DECORATOR"; + } + }; + + public static class ImagerKey extends ParametrizedPrimitiveQueryKey { + public ImagerKey(ImagerFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "IMAGER"; + } + }; + + public static class ImageDecoratorKey extends ParametrizedPrimitiveQueryKey { + public ImageDecoratorKey(ImageDecoratorFactory factory) { + super(factory); + assert factory != null; + } + @Override + public String getKeyName() { + return "IMAGE_DECORATOR"; + } + }; + + /** + * A query that returns a collection of {@link SelectionRequest}s based on + * the current input. The selection requests are used to dictate whether a + * child INodeContext of the input INodeContext gets filtered out from the + * result of the {@link #PRUNED_CHILDREN} query. + * + *

+ * The query is free to return null if there are no filters for + * the query input. + *

+ */ + public static final PrimitiveQueryKey> SELECTION_REQUESTS = new PrimitiveQueryKey>() { + @Override + public String toString() { + return "SELECTION_REQUEST"; + } + }; + + //------------------------------------------------------------------------ + + /** + * A query that requests for the currently selected viewpoint of a node + * context, gets all of its children from the viewpoint and prunes the set + * of children based on active filters (selection requests). + *

+ * Depends on: {@link #SELECTED_VIEWPOINT}, {@link #SELECTION_REQUESTS} + *

+ * Returns: A {@link PrunedChildrenResult} which contains the pruned set of + * children as INodeContext[] and the original amount of children before + * pruning them. + */ + public static final QueryKey PRUNED_CHILDREN = new QueryKey() { + @Override + public String toString() { + return "PRUNED_CHILDREN"; + } + }; + + /** + * A query to transform INodeContext's into ComparableContexts that can be + * sorted. + *

+ * Depends on: {@link #PRUNED_CHILDREN} + *

+ * Returns: ComparableContext[] of the same size as the input or + * null if no selected ComparableFactory could be discovered + * which indicates that child nodes cannot be sorted. + */ + public static final QueryKey COMPARABLE_CHILDREN = new QueryKey() { + @Override + public String toString() { + return "COMPARABLE_CHILDREN"; + } + }; + + /** + * A query for all available comparable factories for the current input. + *

+ * Depends on: {@link #INPUT} + *

+ * Returns: a non-null collection + */ + public static final QueryKey> COMPARABLE_FACTORIES = new QueryKey>() { + @Override + public String toString() { + return "COMPARABLE_FACTORIES"; + } + }; + + public static class SelectedComparableFactoryKey extends ParametrizedPrimitiveQueryKey { + public SelectedComparableFactoryKey(Collection factories) { + super(factories); + assert factories != null; + } + @Override + public String getKeyName() { + return "SELECTED_COMPARABLE_FACTORY"; + } + } + + /** + * Returns the final child nodes for a node after pruning and sorting them. + * If you need to discover the set of children for a node you should use + * {@link BuiltinKeys#PRUNED_CHILDREN} instead if you don't need the + * sorting. To get the non-pruned set of all children of a node + *

+ * Depends on: {@link BuiltinKeys#COMPARABLE_CHILDREN}, + * {@link BuiltinKeys#PRUNED_CHILDREN} + *

+ * Returns: an array of {@link NodeContext}s. + */ + public static final QueryKey FINAL_CHILDREN = new QueryKey() { + @Override + public String toString() { + return "FINAL_CHILDREN"; + } + }; + + /** + * Returns whether a node is expanded in the UI or not. + *

+ * Returns: {@link Boolean#TRUE} if expanded, {@link Boolean#FALSE} if not. + */ + public static final PrimitiveQueryKey IS_EXPANDED = new PrimitiveQueryKey() { + @Override + public String toString() { + return "IS_EXPANDED"; + } + }; + + /** + * Tells whether a node is "checked" in the UI or not. This only takes + * effect if the GraphExplorer was created with support for checkedness + * visualisation. + *

+ * Returns: {@link CheckedState} + */ + public static final QueryKey IS_CHECKED = new QueryKey() { + @Override + public String toString() { + return "IS_CHECKED"; + } + }; + + /** + * Returns how many children should maximally be shown for a node. By + * default the set of shown children is pruned if there are too many of them + * to be shown. + *

+ * Returns: + *

    + *
  • 0 < x ≤ {@value Integer#MAX_VALUE} to tell the maximum amount of + * children to show
  • + *
  • null indicates don't care
  • + *
+ * May not return < 0. + */ + public static final PrimitiveQueryKey SHOW_MAX_CHILDREN = new PrimitiveQueryKey() { + @Override + public String toString() { + return "SHOW_MAX_CHILDREN"; + } + }; + + public static class IsRootKey implements ConstantKey { + private IsRootKey() {} + @Override + public String toString() { + return "IS_ROOT"; + } + }; + + /** + * Set to {@link Boolean#TRUE} for a NodeContext that describes the root + * input of a {@link GraphExplorer}. + */ + public static final ConstantKey IS_ROOT = new IsRootKey(); + +}