Browse Source

Table for HolonCanvas/ HolonBody info

jess 7 years ago
parent
commit
228e5b5d3e

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

@@ -814,4 +814,14 @@ public class Control {
 		return globalController.getHolonBodyScale();
 	}
 
+	/**
+	 * Sets the ID of the selected HolonBody
+	 * 
+	 * @param i
+	 *            ID of the selected HolonBody
+	 */
+	public void addSelectedHolonBody(int i) {
+		objectController.addSelectedHolonBody(i);
+	}
+
 }

+ 10 - 0
src/ui/controller/ObjectController.java

@@ -261,4 +261,14 @@ public class ObjectController {
 		}
 		return val;
 	}
+
+	/**
+	 * add the ID of a HolonBody.
+	 * 
+	 * @param i
+	 *            int
+	 */
+	public void addSelectedHolonBody(int i) {
+		model.setSelectedHolonBody(i);
+	}
 }

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

@@ -10,6 +10,7 @@ import classes.CpsUpperNode;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
+import classes.SubNet;
 import ui.view.DefaulTable;
 import ui.view.Languages;
 import ui.view.PropertyTable;
@@ -350,4 +351,23 @@ public class UpdateController {
 		return obj;
 	}
 
+	/**
+	 * fills the table when HolonCanvas is open
+	 * 
+	 * @param id
+	 *            ID of the selected HolonBody
+	 */
+	public void paintHolonBody(int id) {
+		SubNet sub = controller.getSimManager().getSubNets().get(id);
+		Object[] tempId = { "ID", id };
+		model.getPropertyTable().addRow(tempId);
+		Object[] tempObj = { "Nr. of Objects", sub.getObjects().size() };
+		model.getPropertyTable().addRow(tempObj);
+		Object[] tempEdg = { "Nr. of Edges", sub.getEdges().size() };
+		model.getPropertyTable().addRow(tempEdg);
+		Object[] tempSwi = { "Nr. of Switches", sub.getSwitches().size() };
+		model.getPropertyTable().addRow(tempSwi);
+
+	}
+
 }

+ 25 - 3
src/ui/model/Model.java

@@ -74,8 +74,8 @@ public class Model {
 	private ArrayList<Category> categories;
 
 	/*
-	 * Array of all HolonObj and HolonSwitches, that should be tracked through out the statistics
-	 * tab
+	 * Array of all HolonObj and HolonSwitches, that should be tracked through
+	 * out the statistics tab
 	 */
 	private ArrayList<AbstractCpsObject> trackedObjects;
 
@@ -108,6 +108,8 @@ public class Model {
 	 * Object that runs the Algorithm
 	 */
 	private Object algorithm = null;
+	private int selectedHolonBody;
+
 
 	/**
 	 * Constructor for the model. It initializes the categories and
@@ -728,7 +730,7 @@ public class Model {
 	public void setTableHolonElement(JTable tableHolonElement) {
 		this.tableHolonElement = tableHolonElement;
 	}
-	
+
 	/**
 	 * Sets the HolonBody Scale.
 	 * 
@@ -748,4 +750,24 @@ public class Model {
 		return holonBodysCALE;
 	}
 
+	/**
+	 * Sets the ID of the selected HolonBody
+	 * 
+	 * @param i
+	 *            int
+	 */
+	public void setSelectedHolonBody(int i) {
+		selectedHolonBody = i;
+	}
+	
+	
+	/**
+	 *  Returns the ID of the selected HolonBody
+	 * 
+	 * @return selectedHolonBody
+	 */
+	public int getSelectedHolonBody() {
+		return selectedHolonBody;
+	}
+
 }

+ 16 - 0
src/ui/view/GUI.java

@@ -1353,6 +1353,22 @@ public class GUI<E> implements CategoryListener {
 
 		});
 
+		holonCanvas.addMouseListener(new MouseAdapter() {
+			@Override
+			public void mousePressed(MouseEvent e) {
+				unitGraph.empty();
+				elementGraph.setText(Languages.getLanguage()[25]);
+				if (model.getPropertyTable().getRowCount() > 0) {
+					for (int i = model.getPropertyTable().getRowCount() - 1; i > -1; i--) {
+						model.getPropertyTable().removeRow(i);
+					}
+				}
+				updCon.deleteRows(model.getMultiTable());
+				updCon.deleteRows(model.getSingleTable());
+				updCon.paintHolonBody(model.getSelectedHolonBody());
+			}
+		});
+
 		toolBar.add(btnAdd);
 
 		// Del Button

+ 41 - 1
src/ui/view/HolonCanvas.java

@@ -8,6 +8,8 @@ import java.awt.RenderingHints;
 import java.awt.ScrollPane;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
 import java.awt.event.MouseWheelEvent;
 import java.awt.event.MouseWheelListener;
 import java.util.ArrayList;
@@ -15,6 +17,7 @@ import java.util.ArrayList;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
+import classes.AbstractCpsObject;
 import classes.Constants;
 import classes.HolonBody;
 import classes.HolonObject;
@@ -27,7 +30,7 @@ import java.awt.List;
 import javax.swing.JComboBox;
 import javax.swing.JMenuBar;
 
-public class HolonCanvas extends JPanel implements MouseWheelListener {
+public class HolonCanvas extends JPanel implements MouseWheelListener, MouseListener {
 
 	/**
 	 * 
@@ -84,6 +87,7 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 				comboChoice = combo.getSelectedIndex();
 			}
 		});
+		this.addMouseListener(this);
 	}
 
 	// Start Render and Update Threads
@@ -271,4 +275,40 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 		controller.setHolonBodyScale(model.getHolonBodyScale() + (-e.getScrollAmount() * e.getWheelRotation()));
 	}
 
+	@Override
+	public void mouseClicked(MouseEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void mouseEntered(MouseEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void mouseExited(MouseEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void mousePressed(MouseEvent e) {
+		// Body Selection
+		for (int i = 0; i < subCount; i++) {
+			float cx = bodies.get(i).position.getX();
+			float cy = bodies.get(i).position.getY();
+			float cr = bodies.get(i).getRadius();
+			if (e.getX() - cr <= cx && e.getY() - cr <= cy && e.getX() + cr >= cx && e.getY() + cr >= cy) {
+				controller.addSelectedHolonBody(bodies.get(i).getId());
+			}
+		}
+	}
+
+	@Override
+	public void mouseReleased(MouseEvent e) {
+		// TODO Auto-generated method stub
+	}
+
 }