Browse Source

Cleaning classes Merge branch 'Ohne_Drag_and_Drop' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons into Ohne_Drag_and_Drop

# Conflicts:
#	bin/ui/controller/Control.class
#	bin/ui/view/GUI$2.class
#	bin/ui/view/GUI$4.class
#	bin/ui/view/GUI$5.class
#	bin/ui/view/GUI.class
#	bin/ui/view/MyCanvas.class
#	src/ui/view/MyCanvas.java
Teh-Hai Julian Zheng 8 years ago
parent
commit
00018c9082

BIN
bin/ui/model/Model.class


BIN
bin/ui/view/AddObjectPopUp.class


BIN
bin/ui/view/GUI$1.class


BIN
bin/ui/view/GUI$3.class


BIN
bin/ui/view/GUI$6.class


+ 0 - 6
src/classes/GlobalVariables.java

@@ -1,6 +0,0 @@
-package classes;
-
-public class GlobalVariables {
-	public static int SCALE = 50;
-	public static int SCALE_DIVIDED2 = SCALE/2;
-}

+ 10 - 1
src/ui/controller/Control.java

@@ -25,13 +25,15 @@ public class Control {
 	private final CategoryController categoryController;
 	private final ObjectController objectController;
 	private final CanvasController canvasController;
-
+	private final GlobalController globalController;
+	
 	public Control(Model model) {
 		this.MODEL = model;
 		// this.ID = id;
 		this.categoryController = new CategoryController(model);
 		this.objectController = new ObjectController(model);
 		this.canvasController = new CanvasController(model);
+		this.globalController = new GlobalController(model);
 	}
 
 	/* Operations for Categories and Objects */
@@ -94,6 +96,13 @@ public class Control {
 
 	}
 
+	public int getScale(){
+		return globalController.getScale();
+	}
+	
+	public int getScaleDiv2(){
+		return globalController.getScaleDiv2();
+	}
 	////////// etc
 	/**
 	 * Getter for Model

+ 21 - 0
src/ui/controller/GlobalController.java

@@ -0,0 +1,21 @@
+package ui.controller;
+
+import ui.model.Model;
+
+public class GlobalController {
+
+	private Model MODEL;
+
+	public GlobalController(Model model) {
+		this.MODEL = model;
+	}
+
+	public int getScale(){
+		return MODEL.getScale();
+	}
+	
+	public int getScaleDiv2(){
+		return MODEL.getScaleDiv2();
+	}
+
+}

+ 22 - 0
src/ui/model/Model.java

@@ -13,6 +13,10 @@ import ui.controller.*;
 
 public class Model {
 
+	//Global Variables
+	public static int SCALE = 50;	//Picture Scale
+	public static int SCALE_DIV2 = SCALE/2;
+	
 	// ID of the Selected Object
 	private int selectedID = 0;
 	// eventuell wenn Canvasgröße gewählt werden kann
@@ -146,5 +150,23 @@ public class Model {
 	public int getSelectedObjectID(){
 		return selectedID;
 	}
+	
+	/**
+	 * Returns SCALE
+	 * 
+	 * @return SCALE
+	 */
+	public int getScale(){
+		return SCALE;
+	}
+	
+	/**
+	 * Returns SCALE_DIV2
+	 * 
+	 * @return SCALE_DIV2
+	 */
+	public int getScaleDiv2(){
+		return SCALE_DIV2;
+	}
 
 }

+ 28 - 12
src/ui/view/AddObjectPopUp.java

@@ -3,11 +3,14 @@ package ui.view;
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.FlowLayout;
+import java.awt.Image;
 import java.awt.event.*;
+import java.awt.image.ImageProducer;
 import java.io.*;
 import java.util.ArrayList;
 
 import javax.swing.DefaultListModel;
+import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JFileChooser;
@@ -47,6 +50,7 @@ public class AddObjectPopUp extends JDialog {
 	private File selectedFile = null;
 	private String filePath = " ";
 	private String givenCategory;
+	private JLabel lblImagePreview;
 
 	/**
 	 * Launch the application.
@@ -65,7 +69,7 @@ public class AddObjectPopUp extends JDialog {
 	 * Create the dialog.
 	 */
 	public AddObjectPopUp() {
-		setBounds(100, 100, 450, 300);
+		setBounds(100, 100, 450, 342);
 		getContentPane().setLayout(new BorderLayout());
 		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
 		getContentPane().add(contentPanel, BorderLayout.CENTER);
@@ -75,18 +79,18 @@ public class AddObjectPopUp extends JDialog {
 		{
 			JLabel lblName = new JLabel("Name:");
 			lblName.setHorizontalAlignment(SwingConstants.CENTER);
-			lblName.setBounds(28, 11, 76, 14);
+			lblName.setBounds(28, 21, 76, 14);
 			contentPanel.add(lblName);
 		}
 		{
 			objectName = new JTextField();
-			objectName.setBounds(135, 8, 86, 20);
+			objectName.setBounds(98, 18, 172, 20);
 			contentPanel.add(objectName);
 			objectName.setColumns(10);
 		}
 		{
 			JButton btnBrowseImage = new JButton("Browse Image");
-			btnBrowseImage.setBounds(10, 50, 112, 23);
+			btnBrowseImage.setBounds(10, 75, 134, 23);
 			contentPanel.add(btnBrowseImage);
 			btnBrowseImage.addMouseListener(new MouseAdapter() {
 				public void mouseClicked(MouseEvent e) {
@@ -97,12 +101,12 @@ public class AddObjectPopUp extends JDialog {
 		}
 		{
 			sourcePath = new JTextField();
-			sourcePath.setBounds(135, 51, 271, 20);
+			sourcePath.setBounds(148, 77, 271, 20);
 			contentPanel.add(sourcePath);
 			sourcePath.setColumns(10);
 		}
 		{
-			JButton btnAddDefaultElement = new JButton("Add Default Element");
+			JButton btnAddDefaultElement = new JButton("Add Element");
 			btnAddDefaultElement.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent arg0) {
 					addElement = new AddElementPopUp();
@@ -112,28 +116,28 @@ public class AddObjectPopUp extends JDialog {
 				}
 			});
 
-			btnAddDefaultElement.setBounds(262, 95, 144, 23);
+			btnAddDefaultElement.setBounds(270, 144, 142, 23);
 			contentPanel.add(btnAddDefaultElement);
 		}
 		{
 			JScrollPane scrollPane = new JScrollPane();
-			scrollPane.setBounds(10, 84, 236, 133);
+			scrollPane.setBounds(10, 114, 236, 150);
 			contentPanel.add(scrollPane);
 			{
 
 				listModel = new DefaultListModel();
 				HolonElement hel = new HolonElement("Test", 100, 5);
 				String name = hel.getEleName();
-				for (int i = 0; i < 11; i++) {
+				/*for (int i = 0; i < 11; i++) {
 					hel.setEleName(name + i);
 					addElement(hel);
-				}
+				}*/
 				list = new JList(listModel);
 				scrollPane.setViewportView(list);
 			}
 		}
 		{
-			JButton btnNewButton = new JButton("Delete Default Element");
+			JButton btnNewButton = new JButton("Delete Element");
 			btnNewButton.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
 					int selectedIndex = list.getSelectedIndex();
@@ -143,9 +147,14 @@ public class AddObjectPopUp extends JDialog {
 					}
 				}
 			});
-			btnNewButton.setBounds(262, 129, 144, 23);
+			btnNewButton.setBounds(270, 182, 142, 27);
 			contentPanel.add(btnNewButton);
 		}
+		{
+			lblImagePreview = new JLabel("");
+			lblImagePreview.setBounds(295, 3, 50, 50);
+			contentPanel.add(lblImagePreview);
+		}
 
 		{
 			JPanel buttonPane = new JPanel();
@@ -182,6 +191,10 @@ public class AddObjectPopUp extends JDialog {
 				JButton cancelButton = new JButton("Cancel");
 				cancelButton.setActionCommand("Cancel");
 				buttonPane.add(cancelButton);
+				cancelButton.addActionListener(new ActionListener() {
+		            public void actionPerformed(ActionEvent e) {
+		                dispose();
+		            }});
 			}
 		}
 	}
@@ -201,6 +214,9 @@ public class AddObjectPopUp extends JDialog {
 			selectedFile = FileChooser.getSelectedFile();
 			filePath = selectedFile.getAbsolutePath();
 			sourcePath.setText(filePath);
+//			Image image = createImage((ImageProducer) selectedFile);
+			ImageIcon icon = new ImageIcon(new ImageIcon(filePath).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH));
+			lblImagePreview.setIcon(icon);
 		} else {
 			System.out.println("Failed to Load");
 		}

+ 17 - 37
src/ui/view/GUI.java

@@ -28,7 +28,6 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
-import java.awt.Font;
 import java.awt.Image;
 import java.awt.Point;
 import java.awt.Toolkit;
@@ -39,12 +38,10 @@ import javax.swing.JToolBar;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.DefaultComboBoxModel;
-import javax.swing.Icon;
 import javax.swing.ImageIcon;
 
 import classes.Category;
 import classes.CpsObject;
-import classes.GlobalVariables;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.HolonTransformer;
@@ -53,9 +50,6 @@ import Interfaces.CategoryListener;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.awt.event.ActionEvent;
 
 public class GUI implements CategoryListener {
@@ -82,7 +76,6 @@ public class GUI implements CategoryListener {
 	private final JSplitPane splitPane_2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
 
 	private JTable table;
-	private JTable table_2 = new JTable();
 	private final Model model;
 	private final Control controller;
 	private AddObjectPopUp addObjectPopUP;
@@ -102,7 +95,7 @@ public class GUI implements CategoryListener {
 	private Image img = null;
 	private CpsObject tempCps = null;
 
-	private final MyCanvas canvas;
+	private MyCanvas canvas;
 
 	/**
 	 * Create the application.
@@ -145,13 +138,9 @@ public class GUI implements CategoryListener {
 		menuBar.add(mnHelp);
 
 		// Table
-		String[] columnNames = { "Gadget", "Consumption", "Quantity" };
+		String[] columnNames = { "Gadget", "+/-", "Energy", "Quantity" };
 
-		Object[][] data = { { "TV", "20", "1" }, { "PC", "30", "2" }, { "Fridge", "40", "1" } };
-
-		splitPane.setRightComponent(splitPane_1);
-		splitPane.setDividerLocation(200);
-		splitPane_1.setDividerLocation(500);
+		Object[][] data = {};
 
 		canvas.setBackground(Color.WHITE);
 		canvas.setPreferredSize(new Dimension(10000, 10000));
@@ -168,11 +157,8 @@ public class GUI implements CategoryListener {
 
 		scrollPane_2.setViewportView(dtrpnHereWillBe);
 
-		splitPane_1.setLeftComponent(tabbedPane);
-
 		JScrollPane scrollPane = new JScrollPane();
-		splitPane_1.setRightComponent(splitPane_2);
-		splitPane_2.setLeftComponent(scrollPane);
+
 		table = new JTable(data, columnNames);
 		scrollPane.setViewportView(table);
 
@@ -180,23 +166,7 @@ public class GUI implements CategoryListener {
 		table.setModel(new DefaultTableModel(data, columnNames));
 		table.setCellSelectionEnabled(true);
 		table.setColumnSelectionAllowed(true);
-		JScrollPane scrollPane_3 = new JScrollPane();
-		splitPane_2.setRightComponent(scrollPane_3);
-		scrollPane_3.setViewportView(table_2);
-
-		table_2.setFillsViewportHeight(true);
-		table_2.setModel(
-				new DefaultTableModel(
-						new Object[][] { { "Solar", "23", "10" }, { "Generator", "24", "1" },
-								{ "Something Else", "25", "3" }, },
-						new String[] { "Gadget", "Production", "Quantity" }));
-		table_2.getColumnModel().getColumn(0).setPreferredWidth(103);
-		table_2.getColumnModel().getColumn(1).setPreferredWidth(107);
-		table_2.getColumnModel().getColumn(2).setPreferredWidth(125);
 		frmCyberPhysical.getContentPane().setLayout(new BorderLayout(0, 0));
-		splitPane_2.setDividerLocation(200);
-
-		splitPane.setLeftComponent(scrollPane_1);
 
 		TreeCellRenderer customRenderer = new TreeCellRenderer() {
 			@Override
@@ -209,7 +179,7 @@ public class GUI implements CategoryListener {
 						for (CpsObject cps : cat.getObjects()) {
 							if (value.toString().compareTo(cps.getCompareName()) == 0) {
 								imgR = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
-										.getScaledInstance(GlobalVariables.SCALE, GlobalVariables.SCALE,
+										.getScaledInstance(controller.getScale(), controller.getScale(),
 												java.awt.Image.SCALE_SMOOTH);
 								if (imgR != null) {
 									label.setIcon(new ImageIcon(imgR));
@@ -219,7 +189,7 @@ public class GUI implements CategoryListener {
 						}
 					}
 				}
-				tree.setRowHeight(GlobalVariables.SCALE);
+				tree.setRowHeight(controller.getScale());
 				if (hasFocus) {
 					label.setForeground(new Color(0, 0, 255));
 					label.setOpaque(true);
@@ -258,6 +228,10 @@ public class GUI implements CategoryListener {
 						for (int i = 0; i < model.getObjectsOnCanvas().size(); i++) {
 							CpsObject temp = model.getObjectsOnCanvas().get(i);
 							String output = "Element: " + temp.getObjName() + " with ID: " + temp.getID();
+
+							if (temp.getClass() == HolonObject.class) {
+								output = output + " and Elements: " + ((HolonObject) temp).toStringElements();
+							}
 							System.out.println(output);
 						}
 						canvas.repaint();
@@ -278,7 +252,7 @@ public class GUI implements CategoryListener {
 						for (CpsObject cps : cat.getObjects()) {
 							if (actualObjectClicked.compareTo(cps.getCompareName()) == 0) {
 								img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
-										.getScaledInstance(GlobalVariables.SCALE, GlobalVariables.SCALE,
+										.getScaledInstance(controller.getScale(), controller.getScale(),
 												java.awt.Image.SCALE_SMOOTH);
 								tempCps = cps;
 								dragging = true;
@@ -397,6 +371,12 @@ public class GUI implements CategoryListener {
 			}
 		});
 
+		splitPane.setRightComponent(splitPane_1);
+		splitPane.setDividerLocation(200);
+		splitPane_1.setDividerLocation(500);
+		splitPane.setLeftComponent(scrollPane_1);
+		splitPane_1.setLeftComponent(tabbedPane);
+		splitPane_1.setRightComponent(scrollPane);
 	}
 
 	/*

+ 59 - 1
src/ui/view/MyCanvas.java

@@ -30,7 +30,6 @@ import javax.swing.JPopupMenu;
 import javax.swing.JToolTip;
 
 import classes.CpsObject;
-import classes.GlobalVariables;
 import classes.HolonElement;
 import classes.HolonObject;
 import ui.controller.Control;
@@ -103,16 +102,28 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		// drawEdges
 		g2.setColor(Color.BLACK);
 		if (drawEdge)
+<<<<<<< HEAD
 			g2.drawLine(tempCps.getPosition().x + GlobalVariables.SCALE_DIVIDED2,
 					tempCps.getPosition().y + GlobalVariables.SCALE_DIVIDED2, x, y);
+=======
+			g2.drawLine(tempCps.getPos().x + controller.getScaleDiv2(),
+					tempCps.getPos().y + controller.getScaleDiv2(), x, y);
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			for (CpsObject con : cps.getConnectedTo()) {
 				if (con.getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
+<<<<<<< HEAD
 					g2.drawLine(cps.getPosition().x + GlobalVariables.SCALE_DIVIDED2,
 							cps.getPosition().y + GlobalVariables.SCALE_DIVIDED2,
 							con.getPosition().x + GlobalVariables.SCALE_DIVIDED2,
 							con.getPosition().y + GlobalVariables.SCALE_DIVIDED2);
+=======
+					g2.drawLine(cps.getPos().x + controller.getScaleDiv2(),
+							cps.getPos().y + controller.getScaleDiv2(),
+							con.getPos().x + controller.getScaleDiv2(),
+							con.getPos().y + controller.getScaleDiv2());
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 			}
 		}
 
@@ -121,17 +132,28 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			for (CpsObject con : cps.getConnectedTo()) {
 				if (con.getID() == model.getSelectedObjectID())
+<<<<<<< HEAD
 					g2.drawLine(cps.getPosition().x + GlobalVariables.SCALE_DIVIDED2,
 							cps.getPosition().y + GlobalVariables.SCALE_DIVIDED2,
 							con.getPosition().x + GlobalVariables.SCALE_DIVIDED2,
 							con.getPosition().y + GlobalVariables.SCALE_DIVIDED2);
+=======
+					g2.drawLine(cps.getPos().x + controller.getScaleDiv2(),
+							cps.getPos().y + controller.getScaleDiv2(),
+							con.getPos().x + controller.getScaleDiv2(),
+							con.getPos().y + controller.getScaleDiv2());
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 			}
 		}
 
 		// Objects
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
+<<<<<<< HEAD
 			g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, GlobalVariables.SCALE, GlobalVariables.SCALE, null);
+=======
+			g2.drawImage(img, cps.getPos().x, cps.getPos().y, controller.getScale(), controller.getScale(), null);
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 		}
 	}
 
@@ -161,9 +183,15 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		tempCps = null;
 		// Object Selection
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
+<<<<<<< HEAD
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - GlobalVariables.SCALE <= cx && y - GlobalVariables.SCALE <= cy && x >= cx && y >= cy) {
+=======
+			cx = cps.getPos().x;
+			cy = cps.getPos().y;
+			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 				tempCps = cps;
 				if (e.isControlDown())
 					drawEdge = true;
@@ -188,7 +216,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			y = e.getY();
 
 			dragging = false;
+<<<<<<< HEAD
 			tempCps.setPosition(e.getX() - GlobalVariables.SCALE_DIVIDED2, e.getY() - GlobalVariables.SCALE_DIVIDED2);
+=======
+			tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 			tempCps = null;
 		}
 
@@ -214,10 +246,17 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			repaint();
 		} else {
 			try {
+<<<<<<< HEAD
 				tempCps.setPosition(e.getX() - GlobalVariables.SCALE_DIVIDED2, e.getY() - GlobalVariables.SCALE_DIVIDED2);
 				dragging = true;
 				selectRect.setLocation(tempCps.getPosition().x - (GlobalVariables.SCALE / 20),
 						tempCps.getPosition().y - (GlobalVariables.SCALE / 20));
+=======
+				tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
+				dragging = true;
+				selectRect.setLocation(tempCps.getPos().x - (controller.getScale() / 20),
+						tempCps.getPos().y - (controller.getScale() / 20));
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 				objectTT.setTipText(tempCps.getName());
 				objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y);
 				repaint();
@@ -234,9 +273,15 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 
 		boolean on = false;
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
+<<<<<<< HEAD
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - GlobalVariables.SCALE <= cx && y - GlobalVariables.SCALE <= cy && x >= cx && y >= cy) {
+=======
+			cx = cps.getPos().x;
+			cy = cps.getPos().y;
+			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 				objectTT.setTipText(cps.getName());
 				objectTT.setLocation(cx, cy);
 				on = true;
@@ -253,10 +298,17 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void objectSelectionHighlighting() {
 		if (tempCps != null) {
+<<<<<<< HEAD
 			selectRect.setBounds(tempCps.getPosition().x - (GlobalVariables.SCALE / 20),
 					tempCps.getPosition().y - (GlobalVariables.SCALE / 20),
 					GlobalVariables.SCALE + GlobalVariables.SCALE / 10,
 					GlobalVariables.SCALE + GlobalVariables.SCALE / 10);
+=======
+			selectRect.setBounds(tempCps.getPos().x - (controller.getScale() / 20),
+					tempCps.getPos().y - (controller.getScale() / 20),
+					controller.getScale() + controller.getScale() / 10,
+					controller.getScale() + controller.getScale() / 10);
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 			controller.setSelectedObjectID(tempCps.getID());
 		} else {
 			controller.setSelectedObjectID(0);
@@ -269,9 +321,15 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void drawDeleteEdge() {
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
+<<<<<<< HEAD
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - GlobalVariables.SCALE <= cx && y - GlobalVariables.SCALE <= cy && x >= cx && y >= cy) {
+=======
+			cx = cps.getPos().x;
+			cy = cps.getPos().y;
+			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+>>>>>>> cfc3d43ad93ea7d7c8145b30eb7c48f5dd5f5d0a
 				if (!cps.getConnectedTo().contains(tempCps)) {
 					cps.AddConnection(tempCps);
 					tempCps.AddConnection(cps);