Переглянути джерело

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons

Edgardo Palza 7 роки тому
батько
коміт
f9f312c120

+ 2 - 0
src/classes/TrackedDataSet.java

@@ -14,6 +14,8 @@ public class TrackedDataSet {
 	public static final int PERCENT_SUPPLIED = 6;
 	public static final int PERCENT_NOT_SUPPLIED = 7;
 	public static final int PERCENT_PARTIAL_SUPPLIED = 8;
+	public static final int GRID_PRODUCTION = 9;
+	public static final int GRID_CONSUMPTION = 10;
 	
 	//Variables of the Data Set
 	private AbstractCpsObject cps;

+ 3 - 2
src/interfaces/GraphListener.java

@@ -2,12 +2,13 @@ package interfaces;
 
 import java.util.ArrayList;
 
-import classes.HolonObject;
+import classes.AbstractCpsObject;
 
 public interface GraphListener {
 	
 	public void repaintTree();
 	
-	public void addTrackedObject(ArrayList<HolonObject> hlList);
+	public void addTrackedObject(ArrayList<AbstractCpsObject> hlList);
+	
 
 }

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

@@ -15,6 +15,7 @@ import classes.CpsUpperNode;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import interfaces.CategoryListener;
 import ui.model.Model;
 import ui.view.MyCanvas;
@@ -721,27 +722,25 @@ public class Control {
 		}
 	}
 
-	/**
-	 * Set Tracking Objects
-	 */
-	public void setTrackingObj(ArrayList<HolonObject> objArr) {
+	//========================= MANAGING TRACKED OBJECTS ====================
+	
+	public void setTrackingObj(ArrayList<AbstractCpsObject> objArr) {
 		statsController.setTrackingObj(objArr);
 	}
 
-	/**
-	 * Get Tracking Objects
-	 */
-	public ArrayList<HolonObject> getTrackingObj() {
+	public ArrayList<AbstractCpsObject> getTrackingObj() {
 		return statsController.getTrackingObj();
 	}
 
-	public void addTrackingObj(HolonObject obj) {
+	public void addTrackingObj(AbstractCpsObject obj) {
 		statsController.addTrackingObj(obj);
 	}
 
-	public void removeTrackingObj(HolonObject obj) {
+	public void removeTrackingObj(AbstractCpsObject obj) {
 		statsController.removeTrackingObj(obj);
 	}
+	
+	//========================== MANAGING TRACKED OBJECTS END ================
 
 	/**
 	 * Controlling Nodes of Nodes

+ 7 - 5
src/ui/controller/StatsController.java

@@ -2,8 +2,10 @@ package ui.controller;
 
 import java.util.ArrayList;
 
+import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import ui.model.Model;
 
 public class StatsController {
@@ -15,21 +17,21 @@ public class StatsController {
 
 	}
 
-	public void setTrackingObj(ArrayList<HolonObject> objArr) {
+	public void setTrackingObj(ArrayList<AbstractCpsObject> objArr) {
 		model.setTrackingObj(objArr);
 	}
 
-	public ArrayList<HolonObject> getTrackingObj() {
+	public ArrayList<AbstractCpsObject> getTrackingObj() {
 		return model.getTrackingObj();
 	}
 
-	public void addTrackingObj(HolonObject obj) {
+	public void addTrackingObj(AbstractCpsObject obj) {
 		model.getTrackingObj().add(obj);
 		model.addObjectsToGraphListeners();
 	}
 
-	public void removeTrackingObj(HolonObject obj) {
-		ArrayList<HolonObject> objArr = model.getTrackingObj();
+	public void removeTrackingObj(AbstractCpsObject obj) {
+		ArrayList<AbstractCpsObject> objArr = model.getTrackingObj();
 		objArr.remove(obj);
 		model.setTrackingObj(objArr);
 		model.addObjectsToGraphListeners();

+ 9 - 8
src/ui/model/Model.java

@@ -14,6 +14,7 @@ import classes.CpsEdge;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import interfaces.CategoryListener;
 import interfaces.GraphListener;
 import interfaces.ObjectListener;
@@ -72,10 +73,10 @@ public class Model {
 	private ArrayList<Category> categories;
 
 	/*
-	 * Array of all HolonObj, that should be tracked through out the statistics
+	 * Array of all HolonObj and HolonSwitches, that should be tracked through out the statistics
 	 * tab
 	 */
-	private ArrayList<HolonObject> trackingObj;
+	private ArrayList<AbstractCpsObject> trackedObjects;
 
 	/*
 	 * Array of all CpsObjects in our canvas. It is set by default as an empty
@@ -121,7 +122,7 @@ public class Model {
 		setCgIdx(new HashMap<String, Integer>());
 		setCvsObjIdx(new HashMap<Integer, Integer>());
 		setClipboradObjects(new ArrayList<AbstractCpsObject>());
-		setTrackingObj(new ArrayList<HolonObject>());
+		setTrackingObj(new ArrayList<AbstractCpsObject>());
 		setEleToDelete(new HashMap<Integer, ArrayList<HolonElement>>());
 		setSingleTable(new PropertyTable());
 		setMultiTable(new PropertyTable());
@@ -668,12 +669,12 @@ public class Model {
 		return this.subNetColors;
 	}
 
-	public void setTrackingObj(ArrayList<HolonObject> toTrack) {
-		trackingObj = toTrack;
+	public void setTrackingObj(ArrayList<AbstractCpsObject> toTrack) {
+		trackedObjects = toTrack;
 	}
 
-	public ArrayList<HolonObject> getTrackingObj() {
-		return trackingObj;
+	public ArrayList<AbstractCpsObject> getTrackingObj() {
+		return trackedObjects;
 	}
 
 	public void addGraphListener(GraphListener gl) {
@@ -706,7 +707,7 @@ public class Model {
 
 	public void addObjectsToGraphListeners() {
 		for (GraphListener gl : graphListeners) {
-			gl.addTrackedObject(trackingObj);
+			gl.addTrackedObject(trackedObjects);
 			gl.repaintTree();
 		}
 	}

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

@@ -450,6 +450,16 @@ public class GUI<E> implements CategoryListener {
 						.getComponent(0) instanceof MyCanvas) {
 					for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
 						controller.delCanvasObject(cps);
+						// Remove UpperNodeTab if UpperNode deleted
+						if (cps instanceof CpsUpperNode) {
+							for (int i = 3; i < tabbedPane.getTabCount(); i++) {
+								if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
+										.getComponent(0)).upperNode.getID() == cps.getID()) {
+									tabbedPane.remove(i);
+									i = tabbedPane.getTabCount();
+								}
+							}
+						}
 					}
 					canvas.repaint();
 				}

+ 2 - 2
src/ui/view/HolonCanvas.java

@@ -83,8 +83,8 @@ public class HolonCanvas extends JPanel implements ActionListener {
 		// the central mass
 		bodies.add(0, new HolonBody(center.width, center.height, 0, 0, 1e6 * solarmass, new Color(0, 0, 0)));
 		for (int i = 0; i < N - 1; i++) {
-			int px = (int) (Math.random() * 201);
-			int py = (int) (Math.random() * 201);
+			int px = (int) (Math.random() * this.getWidth());
+			int py = (int) (Math.random() * this.getHeight());
 
 			double mass = (subnets.get(i).getObjects().size()) / 10 * solarmass * 10 + 1e20;
 			Color color = model.getSubNetColors().get(i);

+ 26 - 22
src/ui/view/MyCanvas.java

@@ -259,29 +259,28 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				animT.start();
 			}
 		});
-
+		
+		//adds the selected object(s) to the statistic panel
 		itemTrack.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
-					if (o instanceof HolonObject) {
-						boolean found = false;
-						if (controller.getTrackingObj() != null) {
-							for (HolonObject obj : controller.getTrackingObj()) {
-								if (obj.getID() == o.getID()) {
-									found = true;
-								}
-							}
+					boolean found = false;
+					if (controller.getTrackingObj() != null) {
+						if(controller.getTrackingObj().contains(o)){
+							found = true;
 						}
-						if (!found) {
-							controller.addTrackingObj((HolonObject) o);
+					}
+					if (!found) {
+						controller.addTrackingObj(o);
+						if(o instanceof HolonObject){
 							((HolonObject) o).updateTrackingInfo();
 						}
-						controller.addTextToConsole("Tracking: ", Color.BLACK, 12, false, false, false);
-						controller.addTextToConsole("" + o.getName(), Color.BLUE, 12, true, false, false);
-						controller.addTextToConsole(", ID:", Color.BLACK, 12, false, false, false);
-						controller.addTextToConsole("" + o.getID(), Color.RED, 12, true, false, true);
 					}
+					controller.addTextToConsole("Tracking: ", Color.BLACK, 12, false, false, false);
+					controller.addTextToConsole("" + o.getName(), Color.BLUE, 12, true, false, false);
+					controller.addTextToConsole(", ID:", Color.BLACK, 12, false, false, false);
+					controller.addTextToConsole("" + o.getID(), Color.RED, 12, true, false, true);
 				}
 			}
 		});
@@ -294,9 +293,11 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					if (o instanceof HolonObject) {
 						boolean found = false;
 						if (controller.getTrackingObj() != null) {
-							for (HolonObject obj : controller.getTrackingObj()) {
-								if (obj.getID() == o.getID()) {
-									found = true;
+							for (AbstractCpsObject obj : controller.getTrackingObj()) {
+								if(obj instanceof HolonObject){
+									if (obj.getID() == o.getID()) {
+										found = true;
+									}
 								}
 							}
 						}
@@ -326,7 +327,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					// Remove UpperNodeTab if UpperNode deleted
 					if (cps instanceof CpsUpperNode) {
 						JTabbedPane tabbedPane = (JTabbedPane) getParent().getParent().getParent();
-						for (int i = 2; i < tabbedPane.getTabCount(); i++) {
+						for (int i = 3; i < tabbedPane.getTabCount(); i++) {
 							if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
 									.getComponent(0)).upperNode.getID() == cps.getID()) {
 								tabbedPane.remove(i);
@@ -672,14 +673,17 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					itemUngroup.setEnabled(true);
 				else
 					itemUngroup.setEnabled(false);
-
+				/*
 				if (!(tempCps instanceof HolonSwitch)) {
 					itemTrack.setEnabled(true);
 					itemUntrack.setEnabled(true);
 				} else {
-					itemTrack.setEnabled(false);
-					itemUntrack.setEnabled(false);
+				*/
+					itemTrack.setEnabled(true);
+					itemUntrack.setEnabled(true);
+					/*
 				}
+				*/
 				if (model.getSelectedCpsObjects().size() == 0) {
 					controller.addSelectedObject(tempCps);
 				}

+ 1 - 0
src/ui/view/StatisticGraph.java

@@ -120,6 +120,7 @@ public class StatisticGraph extends JPanel {
 				default:
 					break;
 				}
+				g2.setColor(set.getColor());
 				g2.draw(path);
 
 			}

+ 0 - 231
src/ui/view/StatisticPane.java

@@ -1,231 +0,0 @@
-package ui.view;
-
-import javax.swing.DefaultListModel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import javax.swing.GroupLayout;
-import javax.swing.GroupLayout.Alignment;
-import javax.swing.GroupLayout.Group;
-import javax.swing.JLabel;
-import java.awt.Font;
-import javax.swing.JCheckBox;
-import javax.swing.LayoutStyle.ComponentPlacement;
-import java.awt.Color;
-import javax.swing.SwingConstants;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import classes.HolonObject;
-import interfaces.GraphListener;
-import ui.controller.Control;
-import ui.model.Model;
-
-import javax.swing.JComboBox;
-import javax.swing.JButton;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.awt.event.ActionEvent;
-
-public class StatisticPane extends JPanel implements GraphListener{
-	private JScrollPane listScrollPane = new JScrollPane();
-    private JList objectList;
-    private DefaultListModel listModel =  new DefaultListModel();
-    private Model model;
-    private Control controller;
-    //private StatisticGraph statGraph1;
-    private JPanel statGraph1;
-    //private StatisticGraph statGraph2;
-    private JPanel statGraph2;
-    private HashMap<String, HolonObject> objectHashMap = new HashMap<String, HolonObject>();
-    private JLabel nameThreshHolder;
-    private GroupLayout groupLayout;
-    
-    
-    public StatisticPane(Model m, Control c){
-    	model = m;
-    	controller = c;
-    	objectList = new JList(listModel);
-    	listScrollPane.setViewportView(objectList);
-    	
-    	JLabel lblOverallStatistics = new JLabel("Overall Statistics:");
-    	lblOverallStatistics.setFont(new Font("Tahoma", Font.PLAIN, 13));
-    	
-    	JCheckBox chckbxNewCheckBox = new JCheckBox("total consumption");
-    	chckbxNewCheckBox.setForeground(Color.RED);
-    	
-    	JCheckBox chckbxNewCheckBox_1 = new JCheckBox("total production");
-    	chckbxNewCheckBox_1.setForeground(Color.BLUE);
-    	
-    	JLabel lblObject = new JLabel("Object:");
-    	lblObject.setFont(new Font("Tahoma", Font.PLAIN, 13));
-    	
-    	JLabel lblName = new JLabel("Name:");
-    	
-    	nameThreshHolder = new JLabel("...");
-    	nameThreshHolder.setHorizontalAlignment(SwingConstants.LEFT);
-    	
-    	JCheckBox checkBox = new JCheckBox("total consumption");
-    	checkBox.setForeground(Color.RED);
-    	
-    	JCheckBox checkBox_1 = new JCheckBox("total production");
-    	checkBox_1.setForeground(Color.BLUE);
-    	
-    	//statGraph1 = new StatisticGraph(model, controller);
-    	statGraph1 = new JPanel();
-    	
-    	JButton btnRefresh = new JButton("Refresh Tracked Objects");
-    	btnRefresh.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			refreshTrackedList();
-    		}
-    	});
-    	
-    	//statGraph2 = new StatisticGraph(model, controller);
-    	statGraph2 = new JPanel();
-    	
-    	JButton btnUntrack = new JButton("Untrack");
-    	btnUntrack.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			controller.getTrackingObj().remove(objectHashMap.get(nameThreshHolder.getText()));
-    			refreshTrackedList();
-    			nameThreshHolder.setText("...");
-    		}
-    	});
-    	
-    	JButton btnAddGraph = new JButton("add Graph");
-    	btnAddGraph.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			JPanel tmp = new JPanel();
-    		}
-    	});
-    	
-    	/*
-		Group gr = groupLayout.createParallelGroup();
-		for(int i = 0; i < 4; i++){
-			gr.addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE);
-		}
-		*/
-    	groupLayout = new GroupLayout(this);
-    	groupLayout.setHorizontalGroup(
-    		groupLayout.createParallelGroup(Alignment.LEADING)
-    			.addGroup(groupLayout.createSequentialGroup()
-    				.addContainerGap()
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 177, GroupLayout.PREFERRED_SIZE)
-    						.addGap(323))
-    					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    						.addGroup(groupLayout.createSequentialGroup()
-    							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addGap(10)
-    									.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    										.addGroup(groupLayout.createSequentialGroup()
-    											.addComponent(lblName)
-    											.addPreferredGap(ComponentPlacement.RELATED)
-    											.addComponent(nameThreshHolder, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE))
-    										.addComponent(checkBox, GroupLayout.PREFERRED_SIZE, 111, GroupLayout.PREFERRED_SIZE)
-    										.addComponent(checkBox_1, GroupLayout.PREFERRED_SIZE, 101, GroupLayout.PREFERRED_SIZE)))
-    								.addComponent(lblOverallStatistics, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addGap(10)
-    									.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    										.addComponent(chckbxNewCheckBox_1)
-    										.addComponent(chckbxNewCheckBox)))
-    								.addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 56, GroupLayout.PREFERRED_SIZE)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addComponent(btnUntrack)
-    									.addGap(18)
-    									.addComponent(btnAddGraph)))
-    							.addGap(125)
-    							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    								.addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
-    								.addComponent(statGraph1, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)))
-    						.addGroup(groupLayout.createSequentialGroup()
-    							.addComponent(btnRefresh)
-    							.addContainerGap(349, Short.MAX_VALUE)))))
-    	);
-    	groupLayout.setVerticalGroup(
-    		groupLayout.createParallelGroup(Alignment.LEADING)
-    			.addGroup(groupLayout.createSequentialGroup()
-    				.addGap(17)
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(lblOverallStatistics)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addComponent(chckbxNewCheckBox)
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(chckbxNewCheckBox_1))
-    					.addComponent(statGraph1, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE))
-    				.addGap(41)
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(lblObject)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
-    							.addComponent(lblName)
-    							.addComponent(nameThreshHolder))
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(checkBox)
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(checkBox_1)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
-    							.addComponent(btnUntrack)
-    							.addComponent(btnAddGraph))
-    						.addGap(30)
-    						.addComponent(btnRefresh)
-    						.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-    						.addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 160, GroupLayout.PREFERRED_SIZE)
-    						.addPreferredGap(ComponentPlacement.RELATED))
-    					.addComponent(statGraph2, GroupLayout.PREFERRED_SIZE, 122, GroupLayout.PREFERRED_SIZE))
-    				.addContainerGap(89, GroupLayout.PREFERRED_SIZE))
-    	);
-    	setLayout(groupLayout);
-    	
-    	objectList.addListSelectionListener(new ListSelectionListener(){
-    		
-    		@Override
-    		public void valueChanged(ListSelectionEvent arg0){
-    			if(objectList.getSelectedValue() != null){
-    			nameThreshHolder.setText(objectList.getSelectedValue().toString());
-    			}
-    		}
-    	});
-
-    }
-    
-    public void refreshTrackedList(){
-		listModel.removeAllElements();
-		objectHashMap.clear();
-		for(int i = 0; i < controller.getTrackingObj().size(); i++){
-			String name = controller.getTrackingObj().get(i).getName() + " " +
-			controller.getTrackingObj().get(i).getID();
-			
-			listModel.addElement(name);
-			objectHashMap.put(name, controller.getTrackingObj().get(i));
-			if(i < 8){
-				//statGraph1.addObject(controller.getTrackingObj().get(i));
-			}
-		}
-    }
-    public void updateGraphs(){
-    	statGraph1.repaint();
-    }
-
-	@Override
-	public void repaintTree() {
-		// TODO Auto-generated method stub
-		statGraph1.repaint();
-	}
-
-	@Override
-	public void addTrackedObject(ArrayList<HolonObject> hl) {
-		// TODO Auto-generated method stub
-		
-	}
-}

+ 10 - 6
src/ui/view/UpperNodeCanvas.java

@@ -171,9 +171,11 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 					if (o instanceof HolonObject) {
 						boolean found = false;
 						if (controller.getTrackingObj() != null) {
-							for (HolonObject obj : controller.getTrackingObj()) {
-								if (obj.getID() == o.getID()) {
-									found = true;
+							for (AbstractCpsObject obj : controller.getTrackingObj()) {
+								if(obj instanceof HolonObject){
+									if (obj.getID() == o.getID()) {
+										found = true;
+									}	
 								}
 							}
 						}
@@ -198,9 +200,11 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 					if (o instanceof HolonObject) {
 						boolean found = false;
 						if (controller.getTrackingObj() != null) {
-							for (HolonObject obj : controller.getTrackingObj()) {
-								if (obj.getID() == o.getID()) {
-									found = true;
+							for (AbstractCpsObject obj : controller.getTrackingObj()) {
+								if(obj instanceof HolonObject){
+									if (obj.getID() == o.getID()) {
+										found = true;
+									}
 								}
 							}
 						}

+ 169 - 35
src/ui/view/splitPane.java

@@ -23,7 +23,10 @@ import javax.swing.tree.TreeNode;
 
 import DataSets.GraphDataSet;
 import DataSets.PropertyDataSet;
+import classes.AbstractCpsObject;
+import classes.CpsUpperNode;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import classes.TrackedDataSet;
 import interfaces.GraphListener;
 import ui.controller.Control;
@@ -54,23 +57,55 @@ import java.awt.BorderLayout;
 
 public class splitPane extends JSplitPane implements GraphListener {
 	// Property Integers
-	public static final int CONSUMPTION = 0;
-	public static final int PRODUCTION = 1;
-	public static final int ACTIVATED_ELEMENTS = 2;
-	public static final int ON_OFF = 3;
-
+	public static final int CONS_OBJ_INT = 0;
+	public static final int PROD_OBJ_INT = 1;
+	public static final int ACTIVE_ELEMENTS_INT = 2;
+	public static final int SW_ACTIVE_INT = 3;
+	public static final int PROD_HOLON_INT = 4;
+	public static final int CONS_HOLON_INT = 5;
+	public static final int SUPPLIED_INT = 6;
+	public static final int NOT_SUPPLIED_INT = 7;
+	public static final int PART_SUPPLIED_INT = 8;
+	public static final int GRID_PROD_INT = 9;
+	public static final int GRID_CONS_INT = 10;
+	
+	// Property Strings
+	public static final String TOT_PROD_HOLON = "total Holon Production";
+	public static final String TOT_CONS_HOLON = "total Holon Consumption";
+	public static final String SUPPLIED_OBJ = "Percentage of supplied Objects";
+	public static final String NOT_SUPPLIED_OBJ = "Percentage of not supplied Objects";
+	public static final String PART_SUPPLIED_OBJ = "Percentage of partially supplied Objects";
+	
+	public static final String TOT_PROD_OBJ = "total Production";
+	public static final String TOT_CONS_OBJ = "total Consumption";
+	public static final String NR_ACTIVE_ELEMENTS = "active Elements";
+	
+	public static final String SW_ACTIVE = "active";
+	
+	public static final String TOT_PROD_GRID = "total Grid Production";
+	public static final String TOT_CONS_GRID = "total Grid Consumption";
+	
+	// editable textfields
 	private JTextField graphNrTxtField;
 	private JTextField redField;
 	private JTextField greenField;
 	private JTextField blueField;
+	
+	// Tree Properties
 	private JTree objectTree;
 	private DefaultTreeModel treeModel;
 	private DefaultMutableTreeNode objectsNode;
 	private DefaultMutableTreeNode wholeHolon;
+	private DefaultMutableTreeNode switchesNode;
+	private DefaultMutableTreeNode gridsNode;
+	
 	private Hashtable<String, GraphDataSet> objectHashtable;
 	private Hashtable<String, StatisticGraphPanel> graphHashtable;
+	private Hashtable<String, PropertyDataSet> holonHashtable;
 	private Hashtable<String, Integer> propValTable;
 	private JPanel colorPanel;
+	
+	//contains information about a selected property
 	private PropertyDataSet currentProperty = new PropertyDataSet();
 	private JComboBox colorComboBox;
 	private Control controller;
@@ -83,10 +118,27 @@ public class splitPane extends JSplitPane implements GraphListener {
 		this.controller = cont;
 		objectHashtable = new Hashtable<String, GraphDataSet>();
 		graphHashtable = new Hashtable<String, StatisticGraphPanel>();
+		
+		holonHashtable = new Hashtable<String, PropertyDataSet>();
+		holonHashtable.put(TOT_PROD_HOLON, new PropertyDataSet());
+		holonHashtable.put(TOT_CONS_HOLON, new PropertyDataSet());
+		holonHashtable.put(SUPPLIED_OBJ, new PropertyDataSet());
+		holonHashtable.put(NOT_SUPPLIED_OBJ, new PropertyDataSet());
+		holonHashtable.put(PART_SUPPLIED_OBJ, new PropertyDataSet());
+		
+		//propValTable associates the Strings to the numbers
 		propValTable = new Hashtable<String, Integer>();
-		propValTable.put("total Production", PRODUCTION);
-		propValTable.put("total Consumption", CONSUMPTION);
-		propValTable.put("number of activated Elements", ACTIVATED_ELEMENTS);
+		propValTable.put(TOT_PROD_OBJ, PROD_OBJ_INT);
+		propValTable.put(TOT_CONS_OBJ, CONS_OBJ_INT);
+		propValTable.put(NR_ACTIVE_ELEMENTS, ACTIVE_ELEMENTS_INT);
+		propValTable.put(SW_ACTIVE, SW_ACTIVE_INT);
+		propValTable.put(TOT_PROD_HOLON, PROD_HOLON_INT);
+		propValTable.put(TOT_CONS_HOLON, CONS_HOLON_INT);
+		propValTable.put(SUPPLIED_OBJ, SUPPLIED_INT);
+		propValTable.put(NOT_SUPPLIED_OBJ, NOT_SUPPLIED_INT);
+		propValTable.put(PART_SUPPLIED_OBJ, PART_SUPPLIED_INT);
+		propValTable.put(TOT_PROD_GRID, GRID_PROD_INT);
+		propValTable.put(TOT_CONS_GRID, GRID_CONS_INT);
 
 		JScrollPane dataPane = new JScrollPane();
 		setLeftComponent(dataPane);
@@ -94,6 +146,10 @@ public class splitPane extends JSplitPane implements GraphListener {
 		dataPane.setViewportView(panel);
 
 		JScrollPane treeScrollPane = new JScrollPane();
+		
+		
+		//================= LABLES ON THE LEFT SIDE =================//
+		
 		JLabel lblObject = new JLabel("Object(s):");
 
 		showObjectlbl = new JLabel("...");
@@ -105,7 +161,12 @@ public class splitPane extends JSplitPane implements GraphListener {
 		JLabel lblGraph = new JLabel("Graph:");
 
 		JLabel lblColor = new JLabel("Color:");
-
+		
+		//================= LABLES END ===============================//
+		
+		
+		//================= COLOR COMBOBOX ===========================//
+		
 		colorComboBox = new JComboBox();
 		colorComboBox.addItem("");
 		colorComboBox.addItem("Red");
@@ -174,6 +235,8 @@ public class splitPane extends JSplitPane implements GraphListener {
 			}
 
 		});
+		
+		// ==================== COLORBOX END ==========================//
 
 		// ====================GRAPH NR TEXTFIELD======================//
 		graphNrTxtField = new JTextField();
@@ -363,6 +426,9 @@ public class splitPane extends JSplitPane implements GraphListener {
 		JLabel lblG = new JLabel("G:");
 
 		JLabel lblB = new JLabel("B:");
+		
+		
+		//======================== ADD BUTTON =============================//
 
 		JButton btnAdd = new JButton("Add");
 		btnAdd.addActionListener(new ActionListener() {
@@ -400,10 +466,16 @@ public class splitPane extends JSplitPane implements GraphListener {
 				}
 			}
 		});
+		
+		//============================== ADD BUTTON END ==============================//
 
 		colorPanel = new JPanel();
 		colorPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
 		colorPanel.setBackground(Color.WHITE);
+		
+		
+		//================== LAYOUT FOR COMPONENTS ON THE LEFT SIDE ==================//
+		
 		GroupLayout gl_panel = new GroupLayout(panel);
 		gl_panel.setHorizontalGroup(gl_panel.createParallelGroup(Alignment.LEADING)
 				.addGroup(gl_panel.createSequentialGroup().addContainerGap().addGroup(gl_panel
@@ -475,24 +547,36 @@ public class splitPane extends JSplitPane implements GraphListener {
 								.addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
 								.addPreferredGap(ComponentPlacement.RELATED).addComponent(btnAdd)
 								.addContainerGap(35, Short.MAX_VALUE)));
-
+		
+		//======================== LAYOUT END ================================//
+		
+		
+		//======================== TREE STRUCTURE=============================//
+		
 		objectTree = new JTree();
 		treeModel = (DefaultTreeModel) objectTree.getModel();
 		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Statistics");
 		wholeHolon = new DefaultMutableTreeNode("whole Holon");
-		wholeHolon.add(new DefaultMutableTreeNode("total Production"));
-		wholeHolon.add(new DefaultMutableTreeNode("total Consumption"));
-		wholeHolon.add(new DefaultMutableTreeNode("Percentage of Supplied Objects"));
-		wholeHolon.add(new DefaultMutableTreeNode("Percentage of not Supplied Objects"));
-		wholeHolon.add(new DefaultMutableTreeNode("Percentage of partially Supplied Objects"));
+		wholeHolon.add(new DefaultMutableTreeNode(TOT_PROD_HOLON));
+		wholeHolon.add(new DefaultMutableTreeNode(TOT_CONS_HOLON));
+		wholeHolon.add(new DefaultMutableTreeNode(SUPPLIED_OBJ));
+		wholeHolon.add(new DefaultMutableTreeNode(NOT_SUPPLIED_OBJ));
+		wholeHolon.add(new DefaultMutableTreeNode(PART_SUPPLIED_OBJ));
 
 		objectsNode = new DefaultMutableTreeNode("Objects");
-		DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
-
-		objectsNode.add(defaultNode);
+		objectsNode.add(new DefaultMutableTreeNode("empty"));
+		
+		switchesNode = new DefaultMutableTreeNode("Switches");
+		switchesNode.add(new DefaultMutableTreeNode("empty"));
+		
+		gridsNode = new DefaultMutableTreeNode("Grids");
+		gridsNode.add(new DefaultMutableTreeNode("empty"));
+		
 		treeModel.setRoot(root);
 		root.add(wholeHolon);
 		root.add(objectsNode);
+		root.add(switchesNode);
+		root.add(gridsNode);
 		objectTree.setModel(treeModel);
 
 		treeScrollPane.setViewportView(objectTree);
@@ -507,7 +591,7 @@ public class splitPane extends JSplitPane implements GraphListener {
 						.getLastSelectedPathComponent();
 				if (selectedNode.getLevel() == 2 && !selectedNode.getParent().toString().equals("whole Holon")) {
 					String object = selectedNode.toString();
-					controller.removeTrackingObj((HolonObject) objectHashtable.get(object).getObject());
+					controller.removeTrackingObj(objectHashtable.get(object).getObject());
 				}
 			}
 		});
@@ -531,16 +615,29 @@ public class splitPane extends JSplitPane implements GraphListener {
 					if (selectedNode.getLevel() == 1) {
 						disableFields();
 						currentProperty = null;
+						graphNrTxtField.setText("");
 						showObjectlbl.setText(selectedNode.toString());
 					}
 					if (selectedNode.getLevel() == 2) {
 						if (((DefaultMutableTreeNode) selectedNode.getParent()).toString().equals("whole Holon")) {
 							enableFields();
-							showPropertylbl.setText(selectedNode.toString());
-							showObjectlbl.setText(selectedNode.getParent().toString());
+							String object = selectedNode.getParent().toString();
+							String property = selectedNode.toString();
+							currentProperty = holonHashtable.get(property);
+							Color color = currentProperty.getColor();
+							
+							redField.setText(Integer.toString(color.getRed()));
+							greenField.setText(Integer.toString(color.getGreen()));
+							blueField.setText(Integer.toString(color.getBlue()));
+							
+							showPropertylbl.setText(property);
+							showObjectlbl.setText(object);
+							graphNrTxtField.setText(currentProperty.getAssignedGraph());
+							colorPanel.setBackground(color);
 						} else {
 							disableFields();
 							currentProperty = null;
+							graphNrTxtField.setText("");
 							showObjectlbl.setText(selectedNode.toString());
 						}
 					}
@@ -563,6 +660,10 @@ public class splitPane extends JSplitPane implements GraphListener {
 			}
 
 		});
+		
+		//========================= TREE STRUCTURE END ============================//
+		
+		
 		panel.setLayout(gl_panel);
 
 		JScrollPane graphScrollPane = new JScrollPane();
@@ -575,34 +676,68 @@ public class splitPane extends JSplitPane implements GraphListener {
 		graphScrollPane.setViewportView(graphPanel);
 		repaintTree();
 	}
+	
+	//=============================== END CONSTRUCTOR ==============================//
 
+	
+	//=============================== METHODS ======================================//
 	@Override
 	public void repaintTree() {
 		treeModel.reload();
 	}
 
 	@Override
-	public void addTrackedObject(ArrayList<HolonObject> hlList) {
+	public void addTrackedObject(ArrayList<AbstractCpsObject> hlList) {
 		objectsNode.removeAllChildren();
+		switchesNode.removeAllChildren();
+		gridsNode.removeAllChildren();
 		objectHashtable.clear();
 		if (hlList.size() > 0 && hlList != null) {
-			for (HolonObject hO : hlList) {
-				Hashtable<String, PropertyDataSet> tmpHash = new Hashtable<String, PropertyDataSet>();
-				String name = hO.getName() + " " + hO.getID();
+			for (AbstractCpsObject abs : hlList) {
+				String name = abs.getName() + " " + abs.getID();
 				DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(name);
-				tmp.add(new DefaultMutableTreeNode("total Production"));
-				tmp.add(new DefaultMutableTreeNode("total Consumption"));
-				tmp.add(new DefaultMutableTreeNode("number of activated Elements"));
-				tmpHash.put("total Production", new PropertyDataSet());
-				tmpHash.put("total Consumption", new PropertyDataSet());
-				tmpHash.put("number of activated Elements", new PropertyDataSet());
-				GraphDataSet gS = new GraphDataSet(hO, tmpHash);
+				Hashtable<String, PropertyDataSet> tmpHash = new Hashtable<String, PropertyDataSet>();
+
+				//HolonObjects
+				if(abs instanceof HolonObject){
+					tmp.add(new DefaultMutableTreeNode(TOT_PROD_OBJ));
+					tmp.add(new DefaultMutableTreeNode(TOT_CONS_OBJ));
+					tmp.add(new DefaultMutableTreeNode(NR_ACTIVE_ELEMENTS));
+					tmpHash.put(TOT_PROD_OBJ, new PropertyDataSet());
+					tmpHash.put(TOT_CONS_OBJ, new PropertyDataSet());
+					tmpHash.put(NR_ACTIVE_ELEMENTS, new PropertyDataSet());
+					objectsNode.add(tmp);
+				}
+				
+				//HolonSwitches
+				if(abs instanceof HolonSwitch){
+					tmp.add(new DefaultMutableTreeNode(SW_ACTIVE));
+					tmpHash.put(SW_ACTIVE, new PropertyDataSet());
+					switchesNode.add(tmp);
+				}
+				
+				//NodesOfNodes
+				if(abs instanceof CpsUpperNode){
+					tmp.add(new DefaultMutableTreeNode(TOT_PROD_GRID));
+					tmp.add(new DefaultMutableTreeNode(TOT_CONS_GRID));
+					tmpHash.put(TOT_PROD_GRID, new PropertyDataSet());
+					tmpHash.put(TOT_CONS_GRID, new PropertyDataSet());
+					gridsNode.add(tmp);
+				}
+				
+				GraphDataSet gS = new GraphDataSet(abs, tmpHash);
 				objectHashtable.put(name, gS);
-				objectsNode.add(tmp);
 			}
-		} else {
+		}
+		if(objectsNode.getChildCount() == 0){
 			objectsNode.add(new DefaultMutableTreeNode("empty"));
 		}
+		if(switchesNode.getChildCount() == 0){
+			switchesNode.add(new DefaultMutableTreeNode("empty"));
+		}
+		if(gridsNode.getChildCount() == 0){
+			gridsNode.add(new DefaultMutableTreeNode("empty"));
+		}
 
 	}
 
@@ -615,7 +750,6 @@ public class splitPane extends JSplitPane implements GraphListener {
 		redField.setText("");
 		greenField.setText("");
 		blueField.setText("");
-		// graphNrTxtField.setText("");
 		colorComboBox.setSelectedIndex(0);
 	}