]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/src/org/simantics/g3d/scenegraph/structural/Connection.java
Compiler warning elimination
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / g3d / scenegraph / structural / Connection.java
1 /*******************************************************************************\r
2  * Copyright (c) 2012, 2013 Association for Decentralized Information Management in\r
3  * Industry THTH ry.\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
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.g3d.scenegraph.structural;\r
13 \r
14 import java.util.ArrayList;\r
15 import java.util.Collection;\r
16 import java.util.List;\r
17 \r
18 import org.simantics.db.Resource;\r
19 import org.simantics.objmap.structural.IStructuralObject;\r
20 \r
21 @SuppressWarnings("rawtypes")\r
22 public abstract class Connection<T extends Connection<T, T2>, T2 extends IComponentNode<T, T2>> implements IStructuralObject{\r
23 \r
24         private List<T2> connects = new ArrayList<T2>();\r
25         \r
26         public void addConnect(T2 node) {\r
27                 if (!connects.contains(node))\r
28                         connects.add(node);\r
29                 fireChanged(node,true);\r
30         }\r
31         \r
32         @SuppressWarnings("unchecked")\r
33         protected void fireChanged(T2 node, boolean add){\r
34                 for (T2 n : connects) {\r
35                         n.connectionChanged((T) this,node,add);\r
36                 }\r
37         }\r
38         \r
39         public Collection<T2> getConnected() {\r
40                 return connects;\r
41         }\r
42         \r
43         public void removeConnect(T2 node) {\r
44                 connects.remove(node);\r
45                 fireChanged(node,false);\r
46         }\r
47         \r
48         @SuppressWarnings("unchecked")\r
49         public void remove() {\r
50                 List<T2> toRemove = new ArrayList<T2>(connects.size());\r
51                 toRemove.addAll(connects);\r
52                 for (IComponentNode node : toRemove) {\r
53                         node.removeConnection((T) this);\r
54                 }\r
55         }\r
56         \r
57         public T2 getOther(IComponentNode<T, T2> node) {\r
58                 if (connects.size() != 2) \r
59                         return null;\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
64                 return null;\r
65         }\r
66         \r
67         @Override\r
68         public void setType(Resource type) {\r
69                 \r
70         }\r
71         \r
72         @Override\r
73         public Resource getType() {\r
74                 return null;\r
75         }\r
76         \r
77         private List<IStructuralObject> ctx = new ArrayList<IStructuralObject>(1);\r
78         @Override\r
79         public List<IStructuralObject> getContext() {\r
80                 return ctx;\r
81         }\r
82         \r
83         @Override\r
84         public void setContext(List<IStructuralObject> object) {\r
85                 ctx = object;\r
86         }\r
87 }\r