]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/children/EqualContentChildRule.java
Propagate ignoreNulls parameter recursively in bounds calculation
[simantics/platform.git] / bundles / org.simantics.browsing.ui.model / src / org / simantics / browsing / ui / model / children / EqualContentChildRule.java
1 /*******************************************************************************
2  * Copyright (c) 2010, 2011 Association for Decentralized Information Management in
3  * Industry THTH ry.
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
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.browsing.ui.model.children;
13
14 import java.util.Collection;
15 import java.util.Collections;
16
17 import org.simantics.browsing.ui.model.tests.Test;
18 import org.simantics.db.ReadGraph;
19 import org.simantics.db.exception.DatabaseException;
20
21 /**
22  * A child rule that follows the given relation. Content type of both parent 
23  * and child node types must be Resources.
24  * @author Hannu Niemistö
25  */
26 public class EqualContentChildRule implements ChildRule {
27     Test condition;
28     
29     public EqualContentChildRule(Test condition) {        
30     }
31     
32     @Override
33     public Collection<?> getChildren(ReadGraph graph, Object parent) throws DatabaseException {
34         if(condition != null && !condition.test(graph, parent))
35             return Collections.emptyList();
36         else
37             return Collections.singletonList(parent);
38     }
39     
40     @Override
41     public Collection<?> getParents(ReadGraph graph, Object child) throws DatabaseException {
42         if(condition != null && !condition.test(graph, child))
43             return Collections.emptyList();
44         else
45             return Collections.singletonList(child);
46     }
47
48     @Override
49     public boolean isCompatible(Class<?> contentType) {
50         if(condition == null)            
51             return true;
52         else
53             return condition.isCompatible(contentType);
54     }
55 }