Browse Source

HolonElement im UpperNodeCanvas (for now only SingleSelection :( )

Edgardo Palza 7 years ago
parent
commit
413c47e2df

+ 11 - 0
src/ui/controller/UpdateController.java

@@ -187,4 +187,15 @@ public class UpdateController {
 			return null;
 		}
 	}
+
+	/**
+	 * Getter for selected CpsObject.
+	 * 
+	 * @return selected CpsObject
+	 */
+	public AbstractCpsObject getActualCps() {
+		int tempID = model.getSelectedObjectID();
+		AbstractCpsObject tempCps = controller.searchByID(tempID);
+		return tempCps;
+	}
 }

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

@@ -16,7 +16,9 @@ import interfaces.CategoryListener;
 import interfaces.GraphListener;
 import interfaces.ObjectListener;
 import ui.view.Console;
+import ui.view.DefaulTable;
 import ui.view.PropertyTable;
+import ui.view.DefaulTable;
 
 /**
  * The Class Model is the class where everything is saved. All changes made to
@@ -93,6 +95,8 @@ public class Model {
 
 	private PropertyTable tableModelHolonElementMulti;
 	private PropertyTable tableModelHolonElementSingle;
+	private DefaulTable tableModelProperties;
+	public String[] colNames = { "Field", "Information" };
 	/*
 	 * Object that runs the Algorithm
 	 */
@@ -116,6 +120,8 @@ public class Model {
 		setEleToDelete(new HashMap<Integer, ArrayList<HolonElement>>());
 		setSingleTable(new PropertyTable());
 		setMultiTable(new PropertyTable());
+		setPropertyTable(new DefaulTable(1000, colNames.length));
+		getPropertyTable().setColumnIdentifiers(colNames);
 	}
 
 	/**
@@ -699,4 +705,12 @@ public class Model {
 		}
 	}
 
+	public DefaulTable getPropertyTable() {
+		return this.tableModelProperties;
+	}
+
+	public void setPropertyTable(DefaulTable pt) {
+		this.tableModelProperties = pt;
+	}
+
 }

+ 12 - 6
src/ui/view/DefaulTable.java

@@ -16,10 +16,12 @@ public class DefaulTable extends DefaultTableModel {
 	/**
 	 * Constructor.
 	 * 
-	 * @param rows the Rows
-	 * @param cols the Cols
+	 * @param rows
+	 *            the Rows
+	 * @param cols
+	 *            the Cols
 	 */
-	DefaulTable(int rows, int cols) { // constructor
+	public DefaulTable(int rows, int cols) { // constructor
 		super(rows, cols);
 		this.editableCells = new boolean[rows][cols];
 	}
@@ -31,9 +33,13 @@ public class DefaulTable extends DefaultTableModel {
 
 	/**
 	 * Set Cell Editable.
-	 * @param row the Rows
-	 * @param col the Cols
-	 * @param value true or false
+	 * 
+	 * @param row
+	 *            the Rows
+	 * @param col
+	 *            the Cols
+	 * @param value
+	 *            true or false
 	 */
 	public void setCellEditable(int row, int col, boolean value) {
 		this.editableCells[row][col] = value; // set cell true/false

+ 73 - 87
src/ui/view/GUI.java

@@ -126,7 +126,7 @@ public class GUI<E> implements CategoryListener {
 
 	private splitPane statSplitPane;
 	private JScrollPane statScrollPane;
-	private UpperNodeCanvas unc;;
+	private UpperNodeCanvas unc;
 
 	private final JLabel maxGraph = new JLabel("100%");
 	private final JLabel medGraph = new JLabel("50%");
@@ -181,7 +181,6 @@ public class GUI<E> implements CategoryListener {
 		}
 	};
 	private JPanel graphLabel = new JPanel();
-	private DefaulTable tableModelProperties;
 	private final JScrollPane scrollProperties = new JScrollPane();
 
 	// In this section is the graph for the selected HolonElement of the clicked
@@ -259,14 +258,13 @@ public class GUI<E> implements CategoryListener {
 	private String[] columnNamesMulti = { "Object", "Nr.", "Device", "Energy", "Quantity", "Activated" };
 	private String[] columnNamesSingle = { "Nr.", "Device", "Energy", "Quantity", "Activated" };
 	private ArrayList<PropertyTable> tables = new ArrayList<PropertyTable>();
-	private String[] colNames = { "Field", "Information" };
 	private String[] comboBoxCat = { "Category", "Object", "Switch" };
 	private String warningText = "Warning";
 	private String saveBeforeNew = "Do you want to save your current data?";
 	private String eraseCategory = "Do you really want to delete the Category ";
 	private String selectObjBeforeErase = "Please select a Category or an Object in order to delete something.";
 
-	UpdateController updCon;
+	private UpdateController updCon;
 
 	/**
 	 * Create the application.
@@ -641,9 +639,7 @@ public class GUI<E> implements CategoryListener {
 		panelHolonEl.add(toolBarHolonEl);
 
 		// Set up of the Properties section
-		tableModelProperties = new DefaulTable(1000, colNames.length);
-		tableModelProperties.setColumnIdentifiers(colNames);
-		tableProperties.setModel(tableModelProperties);
+		tableProperties.setModel(model.getPropertyTable());
 		tableProperties.setFillsViewportHeight(true);
 		tableProperties.setCellSelectionEnabled(true);
 		tableProperties.setColumnSelectionAllowed(true);
@@ -676,11 +672,11 @@ public class GUI<E> implements CategoryListener {
 		btnAddHolEL.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent arg0) {
 				if (model.getSelectedCpsObjects().size() == 1) {
-					AbstractCpsObject tempCpsObject = getActualCps();
+					AbstractCpsObject tempCpsObject = updCon.getActualCps();
 					if (tempCpsObject != null && tempCpsObject.getClass() == HolonObject.class
 							&& tempCpsObject.getID() != 0) {
 						addElementPopUp = new AddElementPopUp();
-						addElementPopUp.setActualCps(getActualCps());
+						addElementPopUp.setActualCps(updCon.getActualCps());
 						addElementPopUp.setVisible(true);
 						HolonElement ele = addElementPopUp.getElement();
 						if (ele != null) {
@@ -688,7 +684,7 @@ public class GUI<E> implements CategoryListener {
 									ele.getEnergy());
 						}
 						updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
-						updCon.refreshTableProperties(tableModelProperties);
+						updCon.refreshTableProperties(model.getPropertyTable());
 						controller.calculateStateForTimeStep(model.getCurIteration());
 					}
 				}
@@ -702,12 +698,12 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent arg0) {
 				// For Single Selection of CpsObject
 				if (model.getSelectedCpsObjects().size() == 1) {
-					if (getActualCps().getClass() == HolonObject.class) {
-						HolonObject obj = (HolonObject) getActualCps();
+					if (updCon.getActualCps().getClass() == HolonObject.class) {
+						HolonObject obj = (HolonObject) updCon.getActualCps();
 						for (HolonElement e : selectedElements) {
 							controller.deleteElementCanvas(obj.getID(), e.getId());
 							updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
-							updCon.refreshTableProperties(tableModelProperties);
+							updCon.refreshTableProperties(model.getPropertyTable());
 							controller.calculateStateForTimeStep(model.getCurIteration());
 							// Names displayed in graph are not updated
 						}
@@ -722,7 +718,7 @@ public class GUI<E> implements CategoryListener {
 						}
 					}
 					updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
-					updCon.refreshTableProperties(tableModelProperties);
+					updCon.refreshTableProperties(model.getPropertyTable());
 					model.getEleToDelete().clear();
 					selectedElements.clear();
 				}
@@ -736,7 +732,7 @@ public class GUI<E> implements CategoryListener {
 		 */
 		tableHolonElement.addMouseListener(new MouseAdapter() {
 			public void mousePressed(MouseEvent e) {
-				HolonObject obj = (HolonObject) getActualCps();
+				HolonObject obj = (HolonObject) updCon.getActualCps();
 				yValueElements = e.getY();
 				HolonElement ele = null;
 				// Search for current clicked HolonElement
@@ -836,18 +832,18 @@ public class GUI<E> implements CategoryListener {
 					else if (model.getSelectedCpsObjects().size() == 1) {
 						int selectedValueX = (int) Math.floor(xThis / (tableHolonElement.getWidth() / 5));
 						int selectedValueBX = (int) Math.floor(xBThis / (tableHolonElement.getWidth() / 5));
-						if (getActualCps() != null && getActualCps().getClass() == HolonObject.class) {
+						if (updCon.getActualCps() != null && updCon.getActualCps().getClass() == HolonObject.class) {
 							// For last column (boolean with a checkbox)
 							if (selectedValueBX == 4) {
-								HolonElement eleBTemp = updCon.getActualHolonElement((HolonObject) getActualCps(),
-										yBMouse, 0, tables);
+								HolonElement eleBTemp = updCon
+										.getActualHolonElement((HolonObject) updCon.getActualCps(), yBMouse, 0, tables);
 								String newBStuff = model.getSingleTable().getValueAt(selectedValueBY, selectedValueBX)
 										.toString();
 								Boolean bTemp = Boolean.parseBoolean(newBStuff);
 								eleBTemp.setActive(bTemp);
 							} else {
 								// Update of HolonElement
-								HolonElement eleTemp = updCon.getActualHolonElement((HolonObject) getActualCps(),
+								HolonElement eleTemp = updCon.getActualHolonElement((HolonObject) updCon.getActualCps(),
 										yMouse, 0, tables);
 								String newStuff = model.getSingleTable().getValueAt(selectedValueY, selectedValueX)
 										.toString();
@@ -866,7 +862,7 @@ public class GUI<E> implements CategoryListener {
 							}
 						}
 					}
-					updCon.refreshTableProperties(tableModelProperties);
+					updCon.refreshTableProperties(model.getPropertyTable());
 					model.getSingleTable().fireTableDataChanged();
 					controller.calculateStateForTimeStep(model.getCurIteration());
 					unitGraph.repaint();
@@ -904,35 +900,35 @@ public class GUI<E> implements CategoryListener {
 					Point mousePos = tableProperties.getMousePosition();
 					int selValueY = (int) Math.floor(yProThis / 16);
 					int selValueX = (int) Math.floor(xProThis / (tableProperties.getWidth() / 2));
-					if (getActualCps() != null) {
-						temp = tableModelProperties.getValueAt(selValueY, selValueX);
-						if (getActualCps() instanceof HolonSwitch) {
-							btemp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
+					if (updCon.getActualCps() != null) {
+						temp = model.getPropertyTable().getValueAt(selValueY, selValueX);
+						if (updCon.getActualCps() instanceof HolonSwitch) {
+							btemp = model.getPropertyTable().getValueAt(mousePos.y / tableProperties.getRowHeight(),
 									mousePos.x / (tableProperties.getWidth() / 2));
 							if (mousePos.y / tableProperties.getRowHeight() == 0) {
-								getActualCps().setName(btemp.toString());
+								updCon.getActualCps().setName(btemp.toString());
 							} else if (mousePos.y / tableProperties.getRowHeight() == 2) {
 								Boolean bbTemp = Boolean.parseBoolean(btemp.toString());
-								((HolonSwitch) getActualCps()).setManualMode(bbTemp);
+								((HolonSwitch) updCon.getActualCps()).setManualMode(bbTemp);
 								if (bbTemp) {
-									tableModelProperties.setCellEditable(3, 1, true);
+									model.getPropertyTable().setCellEditable(3, 1, true);
 								} else {
-									tableModelProperties.setCellEditable(3, 1, false);
+									model.getPropertyTable().setCellEditable(3, 1, false);
 								}
 							} else if (mousePos.y / tableProperties.getRowHeight() == 3) {
-								if (((HolonSwitch) getActualCps()).getManualMode()) {
-									tableModelProperties.setCellEditable(3, 1, true);
+								if (((HolonSwitch) updCon.getActualCps()).getManualMode()) {
+									model.getPropertyTable().setCellEditable(3, 1, true);
 									Boolean bTemp = Boolean.parseBoolean(temp.toString());
-									((HolonSwitch) getActualCps()).setManualState(bTemp);
+									((HolonSwitch) updCon.getActualCps()).setManualState(bTemp);
 								}
 							}
 						} // else if (getActualCps() instanceof
 							// AbstractCpsObject) {
-						getActualCps().setName(temp.toString());
+						updCon.getActualCps().setName(temp.toString());
 						// }
 					} else {
-						temp = tableModelProperties.getValueAt(selValueY, selValueX);
-						btemp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
+						temp = model.getPropertyTable().getValueAt(selValueY, selValueX);
+						btemp = model.getPropertyTable().getValueAt(mousePos.y / tableProperties.getRowHeight(),
 								mousePos.x / (tableProperties.getWidth() / 2));
 						if (selValueY == 2) {
 							Float ftemp;
@@ -1224,11 +1220,11 @@ public class GUI<E> implements CategoryListener {
 					unitGraph.empty();
 					elementGraph.setText(Languages.getLanguage()[25]);
 				}
-				temp = getActualCps();
+				temp = updCon.getActualCps();
 				// Erase old data in the PropertyTable
-				if (tableModelProperties.getRowCount() > 0) {
-					for (int i = tableModelProperties.getRowCount() - 1; i > -1; i--) {
-						tableModelProperties.removeRow(i);
+				if (model.getPropertyTable().getRowCount() > 0) {
+					for (int i = model.getPropertyTable().getRowCount() - 1; i > -1; i--) {
+						model.getPropertyTable().removeRow(i);
 					}
 				}
 				if (e.isControlDown() && temp != null) {
@@ -1242,41 +1238,41 @@ public class GUI<E> implements CategoryListener {
 				if (temp != null) {
 					// Name of the CpsObject
 					Object[] tempName = { Languages.getLanguage()[72], temp.getName() };
-					tableModelProperties.addRow(tempName);
+					model.getPropertyTable().addRow(tempName);
 					// Id of the CpsObject
 					Object[] tempId = { "ID", temp.getID() };
-					tableModelProperties.addRow(tempId);
+					model.getPropertyTable().addRow(tempId);
 					// For HolonObjects the Total Energy (production or
 					// consumption) is calculated
 					if (temp instanceof HolonObject) {
 						updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
 						Object[] tempEnergy = { Languages.getLanguage()[73], ((HolonObject) temp).getCurrentEnergy() };
-						tableModelProperties.addRow(tempEnergy);
-						tableModelProperties.setCellEditable(0, 1, true);
-						tableModelProperties.setCellEditable(2, 1, false);
-						tableModelProperties.setCellEditable(3, 1, false);
+						model.getPropertyTable().addRow(tempEnergy);
+						model.getPropertyTable().setCellEditable(0, 1, true);
+						model.getPropertyTable().setCellEditable(2, 1, false);
+						model.getPropertyTable().setCellEditable(3, 1, false);
 					} // For HolonSwitches is showed the actual status (active
 						// or inactive)
 					else if (temp instanceof HolonSwitch) {
 						updCon.deleteRows(model.getSingleTable());
 						updCon.deleteRows(model.getMultiTable());
 						Object[] tempMode = { Languages.getLanguage()[74], ((HolonSwitch) temp).getManualMode() };
-						tableModelProperties.addRow(tempMode);
+						model.getPropertyTable().addRow(tempMode);
 						if (((HolonSwitch) temp).getManualMode()) {
 							Object[] tempActive = { Languages.getLanguage()[75],
 									((HolonSwitch) temp).getActiveManual() };
-							tableModelProperties.addRow(tempActive);
-							tableModelProperties.setCellEditable(3, 1, true);
+							model.getPropertyTable().addRow(tempActive);
+							model.getPropertyTable().setCellEditable(3, 1, true);
 						} else {
 							Object[] tempActive = { Languages.getLanguage()[75],
 									((HolonSwitch) temp).getActiveAt()[model.getCurIteration()] };
-							tableModelProperties.addRow(tempActive);
-							tableModelProperties.setCellEditable(3, 1, false);
+							model.getPropertyTable().addRow(tempActive);
+							model.getPropertyTable().setCellEditable(3, 1, false);
 						}
 						unitGraph.repaintWithNewSwitch((HolonSwitch) temp);
 						elementGraph.setText(temp.getName());
-						tableModelProperties.setCellEditable(0, 1, true);
-						tableModelProperties.setCellEditable(2, 1, true);
+						model.getPropertyTable().setCellEditable(0, 1, true);
+						model.getPropertyTable().setCellEditable(2, 1, true);
 					} else if (temp instanceof CpsUpperNode) {
 						updCon.deleteRows(model.getSingleTable());
 						updCon.deleteRows(model.getMultiTable());
@@ -1284,10 +1280,10 @@ public class GUI<E> implements CategoryListener {
 						Object[] numObj = { "Number of HolonObject", ((CpsUpperNode) temp).getNumHolonObj().size() };
 						Object[] numSwi = { "Number of HolonSwitch", ((CpsUpperNode) temp).getNumSwitches().size() };
 						Object[] numUpp = { "Number of UpperNodes", ((CpsUpperNode) temp).getNumUpperNodes().size() };
-						tableModelProperties.addRow(numEle);
-						tableModelProperties.addRow(numObj);
-						tableModelProperties.addRow(numSwi);
-						tableModelProperties.addRow(numUpp);
+						model.getPropertyTable().addRow(numEle);
+						model.getPropertyTable().addRow(numObj);
+						model.getPropertyTable().addRow(numSwi);
+						model.getPropertyTable().addRow(numUpp);
 					} else {
 						updCon.deleteRows(model.getSingleTable());
 						updCon.deleteRows(model.getMultiTable());
@@ -1304,22 +1300,22 @@ public class GUI<E> implements CategoryListener {
 									Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
 											temp2.getA().getName() + Languages.getLanguage()[77]
 													+ temp2.getA().getID() };
-									tableModelProperties.addRow(tempConnection);
+									model.getPropertyTable().addRow(tempConnection);
 								} else {
 									Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
 											temp2.getB().getName() + Languages.getLanguage()[77]
 													+ temp2.getB().getID() };
-									tableModelProperties.addRow(tempConnection);
+									model.getPropertyTable().addRow(tempConnection);
 								}
 							} else {
 								if (temp.getID() != temp2.getA().getID()) {
 									Object[] tempConnection = { "", temp2.getA().getName() + Languages.getLanguage()[77]
 											+ temp2.getA().getID() };
-									tableModelProperties.addRow(tempConnection);
+									model.getPropertyTable().addRow(tempConnection);
 								} else {
 									Object[] tempConnection = { "", temp2.getB().getName() + Languages.getLanguage()[77]
 											+ temp2.getB().getID() };
-									tableModelProperties.addRow(tempConnection);
+									model.getPropertyTable().addRow(tempConnection);
 								}
 							}
 						}
@@ -1330,22 +1326,22 @@ public class GUI<E> implements CategoryListener {
 					Object[] tempName = { Languages.getLanguage()[72],
 							Languages.getLanguage()[78] + model.getSelectedEdge().getA().getName()
 									+ Languages.getLanguage()[79] + model.getSelectedEdge().getB().getName() };
-					tableModelProperties.addRow(tempName);
+					model.getPropertyTable().addRow(tempName);
 					// Current Flow displayed
 					Object[] tempFlow = { Languages.getLanguage()[80], model.getSelectedEdge().getFlow() };
-					tableModelProperties.addRow(tempFlow);
+					model.getPropertyTable().addRow(tempFlow);
 					// Max Capacity displayed
 					Object[] tempCapacity = { Languages.getLanguage()[81], model.getSelectedEdge().getCapacity() };
-					tableModelProperties.addRow(tempCapacity);
+					model.getPropertyTable().addRow(tempCapacity);
 					// Status displayed
 					Object[] tempStatus = { Languages.getLanguage()[82], model.getSelectedEdge().getState() };
-					tableModelProperties.addRow(tempStatus);
+					model.getPropertyTable().addRow(tempStatus);
 					// For edges, the only possible editable cell is the max
 					// flow
-					tableModelProperties.setCellEditable(0, 1, false);
-					tableModelProperties.setCellEditable(2, 1, true);
-					tableModelProperties.setCellEditable(3, 1, true);
-				} else if (getActualCps() == null) {
+					model.getPropertyTable().setCellEditable(0, 1, false);
+					model.getPropertyTable().setCellEditable(2, 1, true);
+					model.getPropertyTable().setCellEditable(3, 1, true);
+				} else if (updCon.getActualCps() == null) {
 					updCon.deleteRows(model.getSingleTable());
 					updCon.deleteRows(model.getMultiTable());
 				} // Update of the HolonElementTable (Single- or
@@ -1364,7 +1360,7 @@ public class GUI<E> implements CategoryListener {
 			@Override
 			public void mouseReleased(MouseEvent e) {
 				updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 				if (model.getSelectedCpsObjects().size() > 1) {
 					tableHolonElement.setModel(model.getMultiTable());
 				} else if (model.getSelectedCpsObjects().size() == 1) {
@@ -1515,7 +1511,7 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				Languages.setLanguage(0);
 				refreshLanguages();
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 			}
 		});
 		spanishBtn.addActionListener(new ActionListener() {
@@ -1524,7 +1520,7 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				Languages.setLanguage(1);
 				refreshLanguages();
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 			}
 		});
 		germanBtn.addActionListener(new ActionListener() {
@@ -1533,7 +1529,7 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				Languages.setLanguage(2);
 				refreshLanguages();
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 			}
 		});
 		czechBtn.addActionListener(new ActionListener() {
@@ -1542,7 +1538,7 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				Languages.setLanguage(3);
 				refreshLanguages();
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 			}
 		});
 		chineseBtn.addActionListener(new ActionListener() {
@@ -1551,7 +1547,7 @@ public class GUI<E> implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				Languages.setLanguage(4);
 				refreshLanguages();
-				updCon.refreshTableProperties(tableModelProperties);
+				updCon.refreshTableProperties(model.getPropertyTable());
 				;
 			}
 		});
@@ -1791,17 +1787,6 @@ public class GUI<E> implements CategoryListener {
 		return frmCyberPhysical;
 	}
 
-	/**
-	 * Getter for selected CpsObject.
-	 * 
-	 * @return selected CpsObject
-	 */
-	private AbstractCpsObject getActualCps() {
-		int tempID = model.getSelectedObjectID();
-		AbstractCpsObject tempCps = controller.searchByID(tempID);
-		return tempCps;
-	}
-
 	/**
 	 * Adds a Popup.
 	 * 
@@ -1861,9 +1846,9 @@ public class GUI<E> implements CategoryListener {
 			columnNamesSingle[i] = tempArray[i + 18];
 		}
 		model.getSingleTable().setColumnIdentifiers(columnNamesSingle);
-		colNames[0] = tempArray[23];
-		colNames[1] = tempArray[24];
-		tableModelProperties.setColumnIdentifiers(colNames);
+		model.colNames[0] = tempArray[23];
+		model.colNames[1] = tempArray[24];
+		model.getPropertyTable().setColumnIdentifiers(model.colNames);
 		// Graph
 		elementGraph.setText(tempArray[25]);
 		holonEleNamesDisplayed = tempArray[25];
@@ -1945,6 +1930,7 @@ public class GUI<E> implements CategoryListener {
 					if (doubleClick() && temp instanceof CpsUpperNode) {
 						openNewUpperNodeTab();
 					}
+					// updCon.refreshTableProperties(table);
 				}
 			});
 

+ 30 - 13
src/ui/view/UpperNodeCanvas.java

@@ -38,6 +38,7 @@ import classes.HolonSwitch;
 import classes.Position;
 import classes.SubNet;
 import ui.controller.Control;
+import ui.controller.UpdateController;
 import ui.model.Model;
 
 /**
@@ -96,6 +97,8 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 
 	// contains the value of the Capacity for new created Edges
 
+	private UpdateController updCon;
+
 	/**
 	 * Constructor.
 	 * 
@@ -142,6 +145,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		itemUngroup.setEnabled(false);
 		itemTrack.setEnabled(false);
 		itemUntrack.setEnabled(false);
+		updCon = new UpdateController(model, controller);
 
 		itemGroup.addActionListener(new ActionListener() {
 			@Override
@@ -582,6 +586,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		edgeHighlight = null;
 		controller.setSelecteEdge(null);
 		// Object Selection
+
 		if (e.getX() > borderPos) {
 			for (AbstractCpsObject cps : upperNode.getNodes()) {
 				cx = cps.getPosition().x;
@@ -593,7 +598,19 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 					controller.addTextToConsole(", ID:", Color.BLACK, 12, false, false, false);
 					controller.addTextToConsole("" + cps.getID(), Color.RED, 12, true, false, true);
 					dragging = true;
-					controller.setSelectedObjectID(tempCps.getID());
+					if (e.isControlDown() && tempCps != null) {
+						System.out.println(tempCps.getName() + " " + tempCps.getID());
+						if (model.getSelectedCpsObjects().contains(tempCps)) {
+							controller.deleteSelectedObject(tempCps);
+						} else {
+							controller.addSelectedObject(tempCps);
+						}
+					} else {
+						System.out.println("HEre");
+						controller.setSelectedObjectID(tempCps.getID());
+						model.getSelectedCpsObjects().clear();
+						controller.addSelectedObject(tempCps);
+					}
 					// If drawing an Edge (CTRL down)
 					if (tempCps.getClass() == HolonObject.class) {
 						HolonObject tempObj = ((HolonObject) tempCps);
@@ -603,10 +620,11 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 						drawEdge = true;
 						dragging = false;
 					}
+					break;
 				}
 			}
 		} else {
-			// look fot objects connected to uppernode
+			// look for objects connected to uppernode
 			int count = 0;
 			for (CpsEdge ed : upperNode.getConnections()) {
 				AbstractCpsObject cps;
@@ -638,16 +656,8 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			}
 		}
 
-		if (e.isControlDown() && tempCps != null) {
-			if (model.getSelectedCpsObjects().contains(tempCps)) {
-				controller.deleteSelectedObject(tempCps);
-			} else {
-				controller.addSelectedObject(tempCps);
-			}
-		}
-		
 		// Selection of CpsObject
-		model.setSelectedCpsObject(tempCps);
+		// model.setSelectedCpsObject(tempCps);
 
 		// Edge Selection
 		if (tempCps == null) {
@@ -657,6 +667,8 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			if (!e.isControlDown() && e.getButton() != MouseEvent.BUTTON3) {
 				model.getSelectedCpsObjects().clear();
 			}
+			updCon.deleteRows(model.getMultiTable());
+			updCon.deleteRows(model.getSingleTable());
 		}
 
 		if (edgeHighlight == null && tempCps == null) {
@@ -664,7 +676,12 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			sy = e.getY();
 			doMark = true;
 		}
-
+		for (AbstractCpsObject temp : model.getSelectedCpsObjects()) {
+			System.out.println(temp.getName() + " " + temp.getID());
+		}
+		System.out.println("");
+		updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
+		updCon.refreshTableProperties(model.getPropertyTable());
 		repaint();
 	}
 
@@ -887,7 +904,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 
 		if (!on) {
 			objectTT.setTipText("");
-			//objectTT.setLocation(-200, -200);
+			// objectTT.setLocation(-200, -200);
 		}
 
 	}