Bladeren bron

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

Jessey Widhalm 7 jaren geleden
bovenliggende
commit
de04cd16c3

+ 6 - 0
src/interfaces/GraphListener.java

@@ -1,7 +1,13 @@
 package interfaces;
 
+import java.util.ArrayList;
+
+import classes.HolonObject;
+
 public interface GraphListener {
 	
 	public void repaintGraph();
+	
+	public void addTrackedObject(ArrayList<HolonObject> hlList);
 
 }

+ 1 - 0
src/ui/controller/StatsController.java

@@ -25,6 +25,7 @@ public class StatsController {
 
 	public void addTrackingObj(HolonObject obj) {
 		model.getTrackingObj().add(obj);
+		model.addObjectsToGraphListeners();
 		/*
 		for(int i = 0; i < model.getTrackingObj().size(); i++){
 			System.out.println(model.getTrackingObj().get(i).getName() + " " + model.getTrackingObj().get(i).getID());

+ 7 - 1
src/ui/model/Model.java

@@ -24,7 +24,7 @@ import ui.view.Console;
  * @author Gruppe14
  *
  */
-public class Model {
+public class Model{
 
 	// Global Variables
 	private int canvasX = 1000;
@@ -644,4 +644,10 @@ public class Model {
 		graphListeners.add(gl);
 	}
 
+	public void addObjectsToGraphListeners(){
+		for(GraphListener gl : graphListeners){
+			gl.addTrackedObject(trackingObj);
+		}
+	}
+
 }

+ 5 - 7
src/ui/view/GUI.java

@@ -124,8 +124,9 @@ public class GUI<E> implements CategoryListener {
 	private String catOfObjToBeEdited;
 	private final JScrollPane statTab = new JScrollPane();
 
-	private StatisticPane statPane;
+	private splitPane statSplitPane;
 	private JScrollPane statScrollPane;
+	private UpperNodeCanvas unc;;
 
 	private final JLabel maxGraph = new JLabel("100%");
 	private final JLabel medGraph = new JLabel("50%");
@@ -235,7 +236,6 @@ public class GUI<E> implements CategoryListener {
 	private Console console = new Console();
 	private MyCanvas canvas;
 	private UnitGraph unitGraph;
-	private StatisticGraph statGraph;
 	private final JSplitPane splitPane3 = new JSplitPane();
 	private final JSlider sizeSlider = new JSlider();
 	private final JLabel lblImageSize = new JLabel(Languages.getLanguage()[94]);
@@ -279,12 +279,11 @@ public class GUI<E> implements CategoryListener {
 	public GUI(Control control) {
 		this.controller = control;
 		this.model = control.getModel();
-		statPane = new StatisticPane(model, controller);
-		model.addGraphListener(statPane);
-		statScrollPane = new JScrollPane(statPane);
+		statSplitPane = new splitPane();
+		model.addGraphListener(statSplitPane);
+		statScrollPane = new JScrollPane(statSplitPane);
 		this.canvas = new MyCanvas(model, control);
 		this.unitGraph = new UnitGraph(model, control);
-		this.statGraph = new StatisticGraph(model, controller);
 		control.initListener(this);
 		controller.setCanvas(canvas);
 		model.setConsole(console);
@@ -1971,7 +1970,6 @@ public class GUI<E> implements CategoryListener {
 	 */
 	private void openNewUpperNodeTab() {
 
-		UpperNodeCanvas unc;
 		if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0) instanceof MyCanvas) {
 			unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp, "");
 		} else {

+ 15 - 1
src/ui/view/StatisticPane.java

@@ -8,6 +8,7 @@ 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;
@@ -25,6 +26,7 @@ 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;
 
@@ -98,9 +100,15 @@ public class StatisticPane extends JPanel implements GraphListener{
     	btnAddGraph.addActionListener(new ActionListener() {
     		public void actionPerformed(ActionEvent e) {
     			JPanel tmp = new JPanel();
-    			//groupLayout.
     		}
     	});
+    	
+    	/*
+		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)
@@ -214,4 +222,10 @@ public class StatisticPane extends JPanel implements GraphListener{
 		// TODO Auto-generated method stub
 		statGraph1.repaint();
 	}
+
+	@Override
+	public void addTrackedObject(ArrayList<HolonObject> hl) {
+		// TODO Auto-generated method stub
+		
+	}
 }

+ 4 - 4
src/ui/view/UpperNodeCanvas.java

@@ -139,7 +139,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		itemGroup.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.addUpperNode("NodeOfNode", UpperNode);
+				controller.addUpperNode("NodeOfNode", upperNode);
 				repaint();
 			}
 		});
@@ -147,7 +147,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		itemUngroup.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.delUpperNode((CpsUpperNode) tempCps, UpperNode);
+				controller.delUpperNode((CpsUpperNode) tempCps, upperNode);
 				repaint();
 			}
 		});
@@ -207,7 +207,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				// Remove the selected Object objects
-				for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+				for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
 					controller.delObjUpperNode(cps, UpperNode);
 					// Remove UpperNodeTab if UpperNode deleted
 					if(cps instanceof CpsUpperNode){
@@ -219,7 +219,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 								i = tabbedPane.getTabCount();				
 							}
 						}
-					}
+					}
 				}
 				model.getSelectedCpsObjects().clear();
 				tempCps = null;

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

@@ -0,0 +1,225 @@
+package ui.view;
+
+import javax.swing.JSplitPane;
+import javax.swing.JScrollPane;
+import javax.swing.JPanel;
+
+import java.util.ArrayList;
+
+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 interfaces.GraphListener;
+
+import javax.swing.JTextField;
+import javax.swing.JComboBox;
+import javax.swing.JButton;
+import javax.swing.JTree;
+
+public class splitPane extends JSplitPane implements GraphListener {
+	private JTextField graphNrTxtField;
+	private JTextField redField;
+	private JTextField blueField;
+	private JTextField greenField;
+	private JTree objectTree;
+	private DefaultTreeModel treeModel;
+	DefaultMutableTreeNode objectsNode;
+	DefaultMutableTreeNode wholeHolon;
+	JLabel showObjectlbl;
+	JLabel showPropertylbl;
+	public splitPane() {
+		
+		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);
+		
+		blueField = new JTextField();
+		blueField.setColumns(10);
+		
+		greenField = new JTextField();
+		greenField.setColumns(10);
+		
+		JLabel lblR = new JLabel("R:");
+		
+		JLabel lblB = new JLabel("B:");
+		
+		JLabel lblG = new JLabel("G:");
+		
+		JButton btnAdd = new JButton("Add");
+		GroupLayout gl_panel = new GroupLayout(panel);
+		gl_panel.setHorizontalGroup(
+			gl_panel.createParallelGroup(Alignment.LEADING)
+				.addGroup(gl_panel.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING, false)
+						.addComponent(treeScrollPane, Alignment.LEADING)
+						.addGroup(Alignment.LEADING, 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)
+									.addComponent(redField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)))
+							.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(graphNrTxtField)
+								.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING, false)
+									.addComponent(colorComboBox, Alignment.LEADING, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+									.addGroup(Alignment.LEADING, gl_panel.createSequentialGroup()
+										.addComponent(lblB)
+										.addPreferredGap(ComponentPlacement.RELATED)
+										.addComponent(blueField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(ComponentPlacement.RELATED)
+										.addComponent(lblG)
+										.addPreferredGap(ComponentPlacement.RELATED)
+										.addComponent(greenField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE))
+									.addComponent(btnAdd, Alignment.LEADING)))))
+					.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+		);
+		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(lblB)
+						.addComponent(blueField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+						.addComponent(lblG)
+						.addComponent(greenField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+					.addPreferredGap(ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
+					.addComponent(btnAdd)
+					.addContainerGap())
+		);
+		
+		objectTree = new JTree();
+		treeModel = new DefaultTreeModel(null);
+		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){
+						 showObjectlbl.setText(((DefaultMutableTreeNode)selectedNode.getParent()).toString());
+						 showPropertylbl.setText(selectedNode.toString());
+					 }
+				 }
+			}
+			
+		});
+		panel.setLayout(gl_panel);
+		
+		JScrollPane graphScrollPane = new JScrollPane();
+		setRightComponent(graphScrollPane);
+	}
+	@Override
+	public void repaintGraph() {
+		// TODO Auto-generated method stub
+		
+	}
+	@Override
+	public void addTrackedObject(ArrayList<HolonObject> hlList) {
+		if(hlList.size() > 0 && hlList != null){
+			objectsNode.removeAllChildren();
+			for(HolonObject hO : hlList){
+				DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(hO.getName() + " " + hO.getID());
+				tmp.add(new DefaultMutableTreeNode("total Production"));
+				tmp.add(new DefaultMutableTreeNode("total Consumption"));
+				tmp.add(new DefaultMutableTreeNode("number of activated Elements"));
+				objectsNode.add(tmp);
+			}
+		}else{
+			objectsNode.add(new DefaultMutableTreeNode("empty"));
+		}
+		objectTree.repaint();
+		
+	}
+}