Ver Fonte

StatisticPanel update

dominik.rieder há 8 anos atrás
pai
commit
ef9d76bd53

+ 43 - 0
src/DataSets/GraphDataSet.java

@@ -0,0 +1,43 @@
+package DataSets;
+
+import java.awt.Color;
+import java.util.Hashtable;
+
+import classes.AbstractCpsObject;
+
+/*
+ * a class which contains one AbstractCpsObject and a corresponding Hashtable
+ * for the properties "total Consumption", "total Produktion" and "number of activated Elements"
+ * so far...
+ */
+public class GraphDataSet {
+	Hashtable<String, PropertyDataSet> propertyTable;
+	AbstractCpsObject cpsObject;
+	
+	public GraphDataSet(AbstractCpsObject obj){
+		cpsObject = obj;
+		propertyTable = new Hashtable<String, PropertyDataSet>();
+	}
+	
+	public GraphDataSet(AbstractCpsObject obj, Hashtable<String, PropertyDataSet> ht){
+		cpsObject = obj;
+		propertyTable = ht;
+	}
+	
+	public void setObject(AbstractCpsObject aco){
+		cpsObject = aco;
+	}
+	
+	public void setPropertyTable(Hashtable<String, PropertyDataSet> ht){
+		propertyTable = ht;
+	}
+	
+	public AbstractCpsObject getObject(){
+		return cpsObject;
+	}
+	
+	public Hashtable<String, PropertyDataSet> getPropertytTable(){
+		return propertyTable;
+	}
+	
+}

+ 2 - 2
src/classes/PropertyDataSet.java → src/DataSets/PropertyDataSet.java

@@ -1,4 +1,4 @@
-package classes;
+package DataSets;
 
 import java.awt.Color;
 
@@ -10,7 +10,7 @@ public class PropertyDataSet {
 	
 	public PropertyDataSet(){
 		assignedGraph = "";
-		color = new Color(0,0,0);
+		color = new Color(255,255,255);
 	}
 	
 	public PropertyDataSet(String graph, Color color){

+ 0 - 1
src/classes/HolonObject.java

@@ -30,7 +30,6 @@ public class HolonObject extends AbstractCpsObject {
 	private float[] trackingProd;
 	/* Array for tracking Consumption */
 	private float[] trackingCons;
-
 	/*
 	 * 0 = no energy, 1 = not supplied, 2 = supplied, 3 producer
 	 */

+ 0 - 9
src/classes/graphDataSet.java

@@ -1,9 +0,0 @@
-package classes;
-
-import java.awt.Color;
-import java.util.Hashtable;
-
-public class graphDataSet {
-	Hashtable<String, PropertyDataSet> propertyTable;
-	
-}

+ 0 - 257
src/ui/view/splitPane.java

@@ -1,257 +0,0 @@
-package ui.view;
-
-import javax.swing.JSplitPane;
-import javax.swing.JScrollPane;
-import javax.swing.JPanel;
-
-import java.util.ArrayList;
-import java.util.Hashtable;
-
-import javax.swing.GroupLayout;
-import javax.swing.GroupLayout.Alignment;
-import javax.swing.JLabel;
-import javax.swing.LayoutStyle.ComponentPlacement;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.MutableTreeNode;
-import javax.swing.tree.TreeNode;
-
-import classes.HolonObject;
-import classes.PropertyDataSet;
-import interfaces.GraphListener;
-
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JButton;
-import javax.swing.JTree;
-import java.awt.Color;
-import javax.swing.border.LineBorder;
-
-public class splitPane extends JSplitPane implements GraphListener {
-	private JTextField graphNrTxtField;
-	private JTextField redField;
-	private JTextField greenField;
-	private JTextField blueField;
-	private JTree objectTree;
-	private DefaultTreeModel treeModel;
-	private DefaultMutableTreeNode objectsNode;
-	private DefaultMutableTreeNode wholeHolon;
-	private Hashtable<String, Hashtable<String, PropertyDataSet>> objectHashtable;
-
-	JLabel showObjectlbl;
-	JLabel showPropertylbl;
-	public splitPane() {
-		
-		objectHashtable = new Hashtable<String, Hashtable<String, PropertyDataSet>>();
-
-		JPanel panel = new JPanel();
-		setLeftComponent(panel);
-		
-		JScrollPane treeScrollPane = new JScrollPane();
-		
-		JLabel lblObject = new JLabel("Object(s):");
-		
-		showObjectlbl = new JLabel("...");
-		
-		JLabel lblProperty = new JLabel("Property:");
-		
-		showPropertylbl = new JLabel("...");
-		
-		JLabel lblGraph = new JLabel("Graph:");
-		
-		graphNrTxtField = new JTextField();
-		graphNrTxtField.setColumns(10);
-		
-		JLabel lblColor = new JLabel("Color:");
-		
-		JComboBox colorComboBox = new JComboBox();
-		
-		redField = new JTextField();
-		redField.setColumns(10);
-		
-		greenField = new JTextField();
-		greenField.setColumns(10);
-		
-		blueField = new JTextField();
-		blueField.setColumns(10);
-		
-		JLabel lblR = new JLabel("R:");
-		
-		JLabel lblG = new JLabel("G:");
-		
-		JLabel lblB = new JLabel("B:");
-		
-		JButton btnAdd = new JButton("Add");
-		
-		JPanel colorPanel = new JPanel();
-		colorPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
-		colorPanel.setBackground(Color.WHITE);
-		GroupLayout gl_panel = new GroupLayout(panel);
-		gl_panel.setHorizontalGroup(
-			gl_panel.createParallelGroup(Alignment.LEADING)
-				.addGroup(gl_panel.createSequentialGroup()
-					.addContainerGap()
-					.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
-						.addComponent(treeScrollPane, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
-						.addGroup(gl_panel.createSequentialGroup()
-							.addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
-								.addComponent(lblGraph)
-								.addComponent(lblObject)
-								.addComponent(lblProperty)
-								.addComponent(lblColor)
-								.addGroup(gl_panel.createSequentialGroup()
-									.addComponent(lblR)
-									.addPreferredGap(ComponentPlacement.RELATED)
-									.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
-										.addComponent(colorPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-										.addComponent(redField, GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE))))
-							.addPreferredGap(ComponentPlacement.RELATED)
-							.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
-								.addComponent(showObjectlbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-								.addComponent(showPropertylbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-								.addComponent(colorComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-								.addGroup(gl_panel.createSequentialGroup()
-									.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
-										.addComponent(btnAdd)
-										.addGroup(gl_panel.createSequentialGroup()
-											.addComponent(lblG)
-											.addPreferredGap(ComponentPlacement.RELATED)
-											.addComponent(greenField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)))
-									.addPreferredGap(ComponentPlacement.RELATED)
-									.addComponent(lblB)
-									.addPreferredGap(ComponentPlacement.RELATED)
-									.addComponent(blueField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE))
-								.addComponent(graphNrTxtField))))
-					.addContainerGap())
-		);
-		gl_panel.setVerticalGroup(
-			gl_panel.createParallelGroup(Alignment.LEADING)
-				.addGroup(gl_panel.createSequentialGroup()
-					.addContainerGap()
-					.addComponent(treeScrollPane, GroupLayout.PREFERRED_SIZE, 153, GroupLayout.PREFERRED_SIZE)
-					.addGap(27)
-					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
-						.addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)
-						.addComponent(showObjectlbl))
-					.addPreferredGap(ComponentPlacement.RELATED)
-					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
-						.addComponent(lblProperty)
-						.addComponent(showPropertylbl))
-					.addPreferredGap(ComponentPlacement.RELATED)
-					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
-						.addComponent(lblGraph)
-						.addComponent(graphNrTxtField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-					.addPreferredGap(ComponentPlacement.RELATED)
-					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
-						.addComponent(lblColor)
-						.addComponent(colorComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-					.addGap(18)
-					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
-						.addComponent(lblR)
-						.addComponent(redField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addComponent(lblG)
-						.addComponent(greenField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addComponent(lblB)
-						.addComponent(blueField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-					.addPreferredGap(ComponentPlacement.RELATED)
-					.addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
-					.addPreferredGap(ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
-					.addComponent(btnAdd)
-					.addContainerGap())
-		);
-		
-		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"));
-
-		objectsNode = new DefaultMutableTreeNode("Objects");
-		DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
-	
-		objectsNode.add(defaultNode);
-		treeModel.setRoot(root);
-		root.add(wholeHolon);
-		root.add(objectsNode);
-		objectTree.setModel(treeModel);
-		
-		treeScrollPane.setViewportView(objectTree);
-		
-		objectTree.addTreeSelectionListener(new TreeSelectionListener(){
-
-			@Override
-			public void valueChanged(TreeSelectionEvent e) {
-				showObjectlbl.setText("...");
-				showPropertylbl.setText("...");
-				 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)objectTree.getLastSelectedPathComponent();
-				 if(selectedNode == null){
-					 return;
-				 }else{
-					 if(selectedNode.getLevel() == 1){
-						 showObjectlbl.setText(selectedNode.toString());
-					 }
-					 if(selectedNode.getLevel() == 2){
-						 if(((DefaultMutableTreeNode)selectedNode.getParent()).toString().equals("whole Holon")){
-							 showPropertylbl.setText(selectedNode.toString());
-							 showObjectlbl.setText(selectedNode.getParent().toString());
-						 }else{
-							 showObjectlbl.setText(selectedNode.toString());
-						 }
-					 }
-					 if(selectedNode.getLevel() == 3){
-						 String object = ((DefaultMutableTreeNode)selectedNode.getParent()).toString();
-						 String property = selectedNode.toString();
-						 int r = objectHashtable.get(object).get(property).getColor().getRed();
-						 redField.setText(Integer.toString(r));
-						 int g = objectHashtable.get(object).get(property).getColor().getGreen();
-						 greenField.setText(Integer.toString(g));
-						 int b = objectHashtable.get(object).get(property).getColor().getBlue();
-						 blueField.setText(Integer.toString(b));
-						 
-						 showObjectlbl.setText(object);
-						 showPropertylbl.setText(property);
-						 graphNrTxtField.setText(objectHashtable.get(object).get(property).getAssignedGraph());
-					 }
-				 }
-			}
-			
-		});
-		panel.setLayout(gl_panel);
-		
-		JScrollPane graphScrollPane = new JScrollPane();
-		setRightComponent(graphScrollPane);
-		repaintGraph();
-	}
-	@Override
-	public void repaintGraph() {
-		treeModel.reload();
-	}
-	@Override
-	public void addTrackedObject(ArrayList<HolonObject> hlList) {
-		if(hlList.size() > 0 && hlList != null){
-			objectsNode.removeAllChildren();
-			for(HolonObject hO : hlList){
-				Hashtable<String, PropertyDataSet> tmpHash = new Hashtable<String, PropertyDataSet>();
-				String name = hO.getName() + " " + hO.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());
-				objectHashtable.put(name, tmpHash);
-				objectsNode.add(tmp);
-			}
-		}else{
-			objectsNode.add(new DefaultMutableTreeNode("empty"));
-		}
-		
-	}
-}

+ 0 - 0
src/ui/view/AboutUsPopUp.java → ui/view/AboutUsPopUp.java


+ 0 - 0
src/ui/view/AddElementPopUp.java → ui/view/AddElementPopUp.java


+ 0 - 0
src/ui/view/AddObjectPopUp.java → ui/view/AddObjectPopUp.java


+ 0 - 0
src/ui/view/ButtonTabComponent.java → ui/view/ButtonTabComponent.java


+ 0 - 0
src/ui/view/CategoryPanel.java → ui/view/CategoryPanel.java


+ 0 - 0
src/ui/view/Console.java → ui/view/Console.java


+ 0 - 0
src/ui/view/DefaulTable.java → ui/view/DefaulTable.java


+ 0 - 0
src/ui/view/EditEdgesPopUp.java → ui/view/EditEdgesPopUp.java


+ 1 - 1
src/ui/view/GUI.java → ui/view/GUI.java

@@ -279,7 +279,7 @@ public class GUI<E> implements CategoryListener {
 	public GUI(Control control) {
 		this.controller = control;
 		this.model = control.getModel();
-		statSplitPane = new splitPane();
+		statSplitPane = new splitPane(controller);
 		model.addGraphListener(statSplitPane);
 		statScrollPane = new JScrollPane(statSplitPane);
 		this.canvas = new MyCanvas(model, control);

+ 0 - 0
src/ui/view/Languages.java → ui/view/Languages.java


+ 0 - 0
src/ui/view/Main.java → ui/view/Main.java


+ 0 - 0
src/ui/view/MyCanvas.java → ui/view/MyCanvas.java


+ 0 - 0
src/ui/view/PropertyTable.java → ui/view/PropertyTable.java


+ 0 - 0
src/ui/view/SearchPopUp.java → ui/view/SearchPopUp.java


+ 0 - 0
src/ui/view/ShowedInformationPopUp.java → ui/view/ShowedInformationPopUp.java


+ 0 - 0
src/ui/view/SimulationMenu.java → ui/view/SimulationMenu.java


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


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


+ 0 - 0
src/ui/view/StatisticsTab.java → ui/view/StatisticsTab.java


+ 0 - 0
src/ui/view/TimePanel.java → ui/view/TimePanel.java


+ 0 - 0
src/ui/view/UnitGraph.java → ui/view/UnitGraph.java


+ 0 - 0
src/ui/view/UpperNodeCanvas.java → ui/view/UpperNodeCanvas.java


+ 597 - 0
ui/view/splitPane.java

@@ -0,0 +1,597 @@
+package ui.view;
+
+import javax.swing.JSplitPane;
+import javax.swing.JScrollPane;
+import javax.swing.JPanel;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Random;
+
+import javax.swing.GroupLayout;
+import javax.swing.GroupLayout.Alignment;
+import javax.swing.JLabel;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.TreeNode;
+
+import DataSets.GraphDataSet;
+import DataSets.PropertyDataSet;
+import classes.HolonObject;
+import interfaces.GraphListener;
+import ui.controller.Control;
+
+import javax.swing.JTextField;
+import javax.swing.JComboBox;
+import javax.swing.JButton;
+import javax.swing.JTree;
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.border.LineBorder;
+import javax.swing.JPopupMenu;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import javax.swing.JMenuItem;
+import javax.swing.BoxLayout;
+
+public class splitPane extends JSplitPane implements GraphListener {
+	private JTextField graphNrTxtField;
+	private JTextField redField;
+	private JTextField greenField;
+	private JTextField blueField;
+	private JTree objectTree;
+	private DefaultTreeModel treeModel;
+	private DefaultMutableTreeNode objectsNode;
+	private DefaultMutableTreeNode wholeHolon;
+	private Hashtable<String, GraphDataSet> objectHashtable;
+	private JPanel colorPanel;
+	private PropertyDataSet currentProperty = new PropertyDataSet();
+	private JComboBox colorComboBox;
+	private Control controller;
+	private JPanel graphPanel;
+
+	JLabel showObjectlbl;
+	JLabel showPropertylbl;
+	public splitPane(Control cont) {
+		//this.rightComponent
+		this.controller = cont;
+		objectHashtable = new Hashtable<String, GraphDataSet>();
+
+		JScrollPane dataPane = new JScrollPane(); 
+		setLeftComponent(dataPane);
+		JPanel panel = new JPanel();
+		dataPane.setViewportView(panel);
+		
+		JScrollPane treeScrollPane = new JScrollPane();
+		
+		JLabel lblObject = new JLabel("Object(s):");
+		
+		showObjectlbl = new JLabel("...");
+		
+		JLabel lblProperty = new JLabel("Property:");
+		
+		showPropertylbl = new JLabel("...");
+		
+		JLabel lblGraph = new JLabel("Graph:");
+		
+		JLabel lblColor = new JLabel("Color:");
+		
+		colorComboBox = new JComboBox();
+		colorComboBox.addItem("");
+		colorComboBox.addItem("Red");
+		colorComboBox.addItem("Blue");
+		colorComboBox.addItem("Green");
+		colorComboBox.addItem("Yellow");
+		colorComboBox.addItem("Orange");
+		colorComboBox.addItem("Cyan");
+		colorComboBox.addItem("Magenta");
+		colorComboBox.addItem("Pink");
+		colorComboBox.addItem("Gray");
+		colorComboBox.addItem("Random");
+		colorComboBox.addItemListener(new ItemListener(){
+
+			@Override
+			public void itemStateChanged(ItemEvent e) {
+				String colorName = (String) colorComboBox.getSelectedItem();
+				Color tmpColor = Color.WHITE;
+				switch(colorName){
+				case "" : 	tmpColor = currentProperty.getColor();
+							break;
+				case "Red": tmpColor = Color.RED;
+							colorChanged(tmpColor);
+							break;
+				case "Blue":tmpColor = Color.BLUE; 
+							colorChanged(tmpColor);
+							break;
+				case "Green":tmpColor = Color.GREEN;
+							colorChanged(tmpColor);
+							break;
+				case "Yellow":tmpColor = Color.YELLOW; 
+							colorChanged(tmpColor);
+							break;
+				case "Orange":tmpColor = Color.ORANGE; 
+							colorChanged(tmpColor);
+							break;
+				case "Cyan":tmpColor = Color.CYAN; 
+							colorChanged(tmpColor);
+							break;
+				case "Magenta":tmpColor = Color.MAGENTA; 
+							colorChanged(tmpColor);
+							break;	
+				case "Pink":tmpColor = Color.PINK; 
+							colorChanged(tmpColor);
+							break;
+				case "Gray":tmpColor = Color.GRAY; 
+							colorChanged(tmpColor);
+							break;
+				case "Random":Random rdm = new Random(); 
+							tmpColor = new Color(rdm.nextInt(255),rdm.nextInt(255),rdm.nextInt(255));
+				}
+				redField.setText(Integer.toString(tmpColor.getRed()));
+				greenField.setText(Integer.toString(tmpColor.getGreen()));
+				blueField.setText(Integer.toString(tmpColor.getBlue()));
+			}
+			
+		});
+				
+		//====================GRAPH NR TEXTFIELD======================//
+		graphNrTxtField = new JTextField();
+		graphNrTxtField.setColumns(10);
+		graphNrTxtField.getDocument().addDocumentListener(new DocumentListener(){
+			/*
+			 * if textField for Red changes, changes will applied in the DataStructure "currentProperty"
+			 * if Value is legit
+			 */
+			@Override
+			public void insertUpdate(DocumentEvent e) {
+				if(currentProperty != null){
+					currentProperty.setGraph(graphNrTxtField.getText());
+				}
+			}
+
+			@Override
+			public void removeUpdate(DocumentEvent e) {
+				if(currentProperty != null){
+					currentProperty.setGraph(graphNrTxtField.getText());
+				}
+			}
+
+			@Override
+			public void changedUpdate(DocumentEvent e) {
+				
+			}
+		});
+		
+		//====================GRAPH NR TEXTFIELD END==================//
+		
+		//====================RED TEXTFIELD===========================//
+		redField = new JTextField();
+		redField.setColumns(10);
+		redField.getDocument().addDocumentListener(new DocumentListener(){
+			/*
+			 * if textField for Red changes, changes will applied in the DataStructure "currentProperty"
+			 * if Value is legit
+			 */
+			@Override
+			public void insertUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(redField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(tmp, oldColor.getGreen(), oldColor.getBlue());
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}	
+			}
+
+			@Override
+			public void removeUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(redField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(tmp, oldColor.getGreen(), oldColor.getBlue());
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}
+			}
+
+			@Override
+			public void changedUpdate(DocumentEvent e) {
+	
+			}
+		});
+		//======================RED TEXTFIELD END==========================//
+		
+		//======================GREEN TEXTFIELD============================//
+		greenField = new JTextField();
+		greenField.setColumns(10);
+		greenField.getDocument().addDocumentListener(new DocumentListener(){
+			/*
+			 * if textField for Red changes, changes will applied in the DataStructure "currentProperty"
+			 * if Value is legit
+			 */
+			@Override
+			public void insertUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(greenField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(oldColor.getRed(), tmp, oldColor.getBlue());
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}	
+			}
+
+			@Override
+			public void removeUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(greenField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(oldColor.getRed(), tmp, oldColor.getBlue());
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}
+			}
+
+			@Override
+			public void changedUpdate(DocumentEvent e) {
+				
+			}
+		});
+		//======================GREEN TEXTFIELD END========================//
+		
+		//======================BLUE TEXTFIELD=============================//
+		blueField = new JTextField();
+		blueField.setColumns(10);
+		blueField.getDocument().addDocumentListener(new DocumentListener(){
+			/*
+			 * if textField for Red changes, changes will applied in the DataStructure "currentProperty"
+			 * if Value is legit
+			 */
+			@Override
+			public void insertUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(blueField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(oldColor.getRed(), oldColor.getGreen(), tmp);
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}	
+			}
+
+			@Override
+			public void removeUpdate(DocumentEvent e) {
+				int tmp = -1;
+				try{
+					tmp = Integer.parseInt(blueField.getText());
+				}catch(NumberFormatException e1){
+					
+				}
+				if(tmp > -1 && tmp <= 255){
+					if(currentProperty != null){
+						Color oldColor = currentProperty.getColor();
+						Color color = new Color(oldColor.getRed(), oldColor.getGreen(), tmp);
+						currentProperty.setColor(color);
+						colorChanged(color);
+					}
+				}
+			}
+
+			@Override
+			public void changedUpdate(DocumentEvent e) {
+				
+			}
+		});
+		//======================BLUE TEXTFIELD END=========================//
+		
+		JLabel lblR = new JLabel("R:");
+		
+		JLabel lblG = new JLabel("G:");
+		
+		JLabel lblB = new JLabel("B:");
+		
+		JButton btnAdd = new JButton("Add");
+		btnAdd.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				graphPanel.add(new JButton("new"));
+				graphPanel.updateUI();
+			}
+		});
+		
+		colorPanel = new JPanel();
+		colorPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
+		colorPanel.setBackground(Color.WHITE);
+		GroupLayout gl_panel = new GroupLayout(panel);
+		gl_panel.setHorizontalGroup(
+			gl_panel.createParallelGroup(Alignment.LEADING)
+				.addGroup(gl_panel.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
+						.addGroup(gl_panel.createSequentialGroup()
+							.addComponent(treeScrollPane, GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)
+							.addContainerGap())
+						.addGroup(gl_panel.createSequentialGroup()
+							.addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
+								.addComponent(lblGraph)
+								.addComponent(lblObject)
+								.addComponent(lblProperty)
+								.addComponent(lblColor)
+								.addGroup(gl_panel.createSequentialGroup()
+									.addComponent(lblR)
+									.addPreferredGap(ComponentPlacement.RELATED)
+									.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
+										.addComponent(colorPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+										.addComponent(redField, GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE))))
+							.addPreferredGap(ComponentPlacement.RELATED)
+							.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
+								.addComponent(showObjectlbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+								.addComponent(showPropertylbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+								.addComponent(colorComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+								.addComponent(graphNrTxtField)
+								.addGroup(gl_panel.createSequentialGroup()
+									.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
+										.addComponent(btnAdd)
+										.addGroup(gl_panel.createSequentialGroup()
+											.addComponent(lblG)
+											.addPreferredGap(ComponentPlacement.RELATED)
+											.addComponent(greenField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)))
+									.addPreferredGap(ComponentPlacement.RELATED)
+									.addComponent(lblB)
+									.addPreferredGap(ComponentPlacement.RELATED)
+									.addComponent(blueField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)))
+							.addGap(32))))
+		);
+		gl_panel.setVerticalGroup(
+			gl_panel.createParallelGroup(Alignment.LEADING)
+				.addGroup(gl_panel.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(treeScrollPane, GroupLayout.PREFERRED_SIZE, 174, GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
+						.addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)
+						.addComponent(showObjectlbl))
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
+						.addComponent(lblProperty)
+						.addComponent(showPropertylbl))
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
+						.addComponent(lblGraph)
+						.addComponent(graphNrTxtField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
+						.addComponent(lblColor)
+						.addComponent(colorComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+					.addGap(18)
+					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
+						.addComponent(lblR)
+						.addComponent(redField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+						.addComponent(lblG)
+						.addComponent(greenField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+						.addComponent(lblB)
+						.addComponent(blueField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(ComponentPlacement.RELATED)
+					.addComponent(btnAdd)
+					.addContainerGap(35, Short.MAX_VALUE))
+		);
+		
+		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"));
+
+		objectsNode = new DefaultMutableTreeNode("Objects");
+		DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
+	
+		objectsNode.add(defaultNode);
+		treeModel.setRoot(root);
+		root.add(wholeHolon);
+		root.add(objectsNode);
+		objectTree.setModel(treeModel);
+		
+		treeScrollPane.setViewportView(objectTree);
+		
+		JPopupMenu popupMenu = new JPopupMenu();
+		addPopup(objectTree, popupMenu);
+		
+		JMenuItem mntmUntrack = new JMenuItem("Untrack");
+		mntmUntrack.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)objectTree.getLastSelectedPathComponent();
+				 if(selectedNode.getLevel() == 2 && !selectedNode.getParent().toString().equals("whole Holon")){
+					 String object = selectedNode.toString();
+					 controller.removeTrackingObj((HolonObject)objectHashtable.get(object).getObject());
+				 }
+			}
+		});
+		popupMenu.add(mntmUntrack);
+		
+		objectTree.addTreeSelectionListener(new TreeSelectionListener(){
+
+			@Override
+			public void valueChanged(TreeSelectionEvent e) {
+				resetFields();
+				showObjectlbl.setText("...");
+				showPropertylbl.setText("...");
+				 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)objectTree.getLastSelectedPathComponent();
+				 if(selectedNode == null){
+					 return;
+				 }else{
+					 if(selectedNode.getLevel() == 0){
+						 disableFields();
+					 }
+					 if(selectedNode.getLevel() == 1){
+						 disableFields();
+						 currentProperty = null;
+						 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());
+						 }else{
+							 disableFields();
+							 currentProperty = null;
+							 showObjectlbl.setText(selectedNode.toString());
+						 }
+					 }
+					 if(selectedNode.getLevel() == 3){
+						 enableFields();
+						 String object = ((DefaultMutableTreeNode)selectedNode.getParent()).toString();
+						 String property = selectedNode.toString();
+						 currentProperty = objectHashtable.get(object).getPropertytTable().get(property);
+						 Color color = currentProperty.getColor();
+						 redField.setText(Integer.toString(color.getRed()));
+						 greenField.setText(Integer.toString(color.getGreen()));
+						 blueField.setText(Integer.toString(color.getBlue()));
+						 
+						 showObjectlbl.setText(object);
+						 showPropertylbl.setText(property);
+						 graphNrTxtField.setText(currentProperty.getAssignedGraph());
+						 colorPanel.setBackground(color);
+					 }
+				 }
+			}
+			
+		});
+		panel.setLayout(gl_panel);
+		
+		JScrollPane graphScrollPane = new JScrollPane();
+		setRightComponent(graphScrollPane);
+		
+		graphPanel = new JPanel();
+		graphScrollPane.setViewportView(graphPanel);
+		graphPanel.setLayout(new BoxLayout(graphPanel, BoxLayout.Y_AXIS));
+		repaintGraph();
+	}
+	@Override
+	public void repaintGraph() {
+		treeModel.reload();
+	}
+	@Override
+	public void addTrackedObject(ArrayList<HolonObject> hlList) {
+		objectsNode.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();
+				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);
+				objectHashtable.put(name, gS);
+				objectsNode.add(tmp);
+			}
+		}else{
+			objectsNode.add(new DefaultMutableTreeNode("empty"));
+		}
+		
+	}
+	
+	public void colorChanged(Color color){
+		colorPanel.setBackground(color);
+	}
+	
+	public void resetFields(){
+		colorPanel.setBackground(Color.WHITE);
+		redField.setText("");
+		greenField.setText("");
+		blueField.setText("");
+		//graphNrTxtField.setText("");
+		colorComboBox.setSelectedIndex(0);
+	}
+	
+	public void disableFields(){
+		redField.setEnabled(false);
+		greenField.setEnabled(false);
+		blueField.setEnabled(false);
+		graphNrTxtField.setEnabled(false);
+		colorComboBox.setEnabled(false);
+		colorPanel.setBackground(Color.LIGHT_GRAY);
+	}
+	
+	public void enableFields(){
+		redField.setEnabled(true);
+		greenField.setEnabled(true);
+		blueField.setEnabled(true);
+		graphNrTxtField.setEnabled(true);
+		colorComboBox.setEnabled(true);
+		colorPanel.setBackground(Color.WHITE);
+	}
+	
+	private static void addPopup(Component component, final JPopupMenu popup) {
+		component.addMouseListener(new MouseAdapter() {
+			public void mousePressed(MouseEvent e) {
+				if (e.isPopupTrigger()) {
+					showMenu(e);
+				}
+			}
+			public void mouseReleased(MouseEvent e) {
+				if (e.isPopupTrigger()) {
+					showMenu(e);
+				}
+			}
+			private void showMenu(MouseEvent e) {
+				popup.show(e.getComponent(), e.getX(), e.getY());
+			}
+		});
+	}
+}