1 /*******************************************************************************
\r
2 * Copyright (c) 2012, 2013 Association for Decentralized Information Management in
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.g3d.scenegraph.structural;
\r
14 import java.util.ArrayList;
\r
15 import java.util.Collection;
\r
16 import java.util.List;
\r
18 import org.simantics.db.Resource;
\r
19 import org.simantics.objmap.structural.IStructuralObject;
\r
21 @SuppressWarnings("rawtypes")
\r
22 public abstract class Connection <T extends IComponentNode> implements IStructuralObject{
\r
25 private List<T> connects = new ArrayList<T>();
\r
28 public void addConnect(T node) {
\r
29 if (!connects.contains(node))
\r
31 fireChanged(node,true);
\r
34 protected void fireChanged(T node, boolean add){
\r
35 for (IComponentNode n : connects) {
\r
36 n.connectionChanged(this,node,add);
\r
40 public Collection<T> getConnected() {
\r
44 public void removeConnect(T node) {
\r
45 connects.remove(node);
\r
46 fireChanged(node,false);
\r
49 public void remove() {
\r
50 List<T> toRemove = new ArrayList<T>(connects.size());
\r
51 toRemove.addAll(connects);
\r
52 for (IComponentNode node : toRemove) {
\r
53 node.removeConnection(this);
\r
57 public T getOther(T node) {
\r
58 if (connects.size() != 2)
\r
60 if (connects.get(0).equals(node))
\r
61 return connects.get(1);
\r
62 else if (connects.get(1).equals(node))
\r
63 return connects.get(0);
\r
68 public void setType(Resource type) {
\r
73 public Resource getType() {
\r
77 private List<IStructuralObject> ctx = new ArrayList<IStructuralObject>(1);
\r
79 public List<IStructuralObject> getContext() {
\r
84 public void setContext(List<IStructuralObject> object) {
\r