1 /*******************************************************************************
2 * Copyright (c) 2010, 2011 Association for Decentralized Information Management in
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.browsing.ui.model.children;
14 import java.util.Collection;
16 import org.simantics.db.ReadGraph;
17 import org.simantics.db.exception.DatabaseException;
20 * A child rule is a part of child contribution that tells how the child nodes are found.
21 * @author Hannu Niemistö
23 public interface ChildRule {
25 * Checks if the child rule is compatible with the content type.
26 * Because this check is made when contribution is created,
27 * the type of the parent content is not checked anymore in getChildren.
29 boolean isCompatible(Class<?> contentType);
32 * Given parent content produces child contents.
34 Collection<?> getChildren(ReadGraph graph, Object parent) throws DatabaseException;
37 * Given child content produces possible parent contents.
39 Collection<?> getParents(ReadGraph graph, Object child) throws DatabaseException;