Browse Source

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

Edgardo Palza 8 years ago
parent
commit
03ccc53fbd

+ 9 - 0
src/classes/CpsEdge.java

@@ -5,6 +5,7 @@ public class CpsEdge {
 	float maxCapacity;
 	float flow;
 	boolean isWorking;
+	boolean infinite;
 	
 	CpsObject A;
 	CpsObject B;
@@ -97,5 +98,13 @@ public class CpsEdge {
 	public boolean getState(){
 		return isWorking;
 	}
+	
+	public void setInfinite(boolean inf){
+		infinite = inf;
+	}
+	
+	public boolean getInfinite(){
+		return infinite;
+	}
 
 }

+ 29 - 5
src/ui/controller/SimulationManager.java

@@ -38,13 +38,14 @@ public class SimulationManager {
 			float consumption = calculateEnergy("cons", singleSubNet, x);
 			float minConsumption = calculateMinimumEnergy( singleSubNet, x);
 			for(CpsEdge e: singleSubNet.getEdges()){
-				e.setFlow(production);
+				e.setFlow(0);
 			}
+			setFlow(singleSubNet);
 			for(HolonObject hl: singleSubNet.getObjects()){
 				if(!(hl.getState() == 0) && !(hl.getState() == 3)){
 					for(int i = 0; i < hl.getConnections().size(); i++){
 						CpsEdge edge = hl.getConnectedTo().get(i);
-						if(edge.getState()){
+						if(edge.getState() && edge.getFlow() > 0){
 							// 0 = no energy, 1 = not supplied, 2 = supplied
 							if((production + consumption) >= 0){
 								hl.setState(2);
@@ -52,10 +53,8 @@ public class SimulationManager {
 							if((production + consumption) < 0){
 								if((production + minConsumption) >= 0){
 									hl.setState(4);
-									System.out.println("yellow");
 								}else{
 									hl.setState(1);
-									System.out.println("orange");
 								}
 							}
 							break;
@@ -69,6 +68,32 @@ public class SimulationManager {
 		canvas.repaint();
 	}
 	
+	public void setFlow(subNet sN){
+		for(HolonObject hl: sN.getObjects()){
+			if(hl.getCurrentEnergyAtTimeStep(timeStep) > 0){
+				fillConnectionsFor(hl, new ArrayList<Integer>(), new ArrayList<CpsEdge>(), hl.getCurrentEnergyAtTimeStep(timeStep));
+			}
+		}
+	}
+	
+	public void fillConnectionsFor(CpsObject cps, ArrayList<Integer> visitedObj, ArrayList<CpsEdge> visitedEdges ,float energy ){
+		visitedObj.add(cps.getID());
+		for(CpsEdge e: cps.getConnections()){
+			if(!(visitedEdges.contains(e))){
+				e.setFlow(e.getFlow() + energy);
+				if(e.getState()){
+					visitedEdges.add(e);
+					if(!(visitedObj.contains(e.getA().getID()))){
+					fillConnectionsFor(e.getA(), visitedObj, visitedEdges, energy);
+					}
+					if(!(visitedObj.contains(e.getB().getID()))){
+						fillConnectionsFor(e.getB(), visitedObj, visitedEdges, energy);
+					}
+			}
+			}
+		}
+	}
+	
 	/**
 	 * calculates the energy of either all producers or consumers
 	 * @param type
@@ -109,7 +134,6 @@ public class SimulationManager {
 					minElement = he.getTotalEnergyAtTimeStep(x);
 				}
 			}
-			System.out.println(minElement);
 			min = min + minElement;
 		}
 		return min;

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

@@ -10,6 +10,10 @@ import java.awt.Point;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.beans.PropertyChangeEvent;
@@ -18,12 +22,16 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
 import javax.swing.BoxLayout;
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.ImageIcon;
+import javax.swing.InputMap;
 import javax.swing.JButton;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JComboBox;
+import javax.swing.JComponent;
 import javax.swing.JEditorPane;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
@@ -42,6 +50,7 @@ import javax.swing.JTable;
 import javax.swing.JTextField;
 import javax.swing.JToolBar;
 import javax.swing.JTree;
+import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
 import javax.swing.border.LineBorder;
 import javax.swing.event.ChangeEvent;
@@ -230,6 +239,24 @@ public class GUI<E> implements CategoryListener {
 			}
 		});
 
+		
+
+		JPanel contentPane = (JPanel) frmCyberPhysical.getContentPane();
+
+		int condition = JComponent.WHEN_IN_FOCUSED_WINDOW;
+		InputMap inputMap = contentPane.getInputMap(condition);
+		ActionMap actionMap = contentPane.getActionMap();
+
+		String zDown = "z";
+		inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, 0), zDown);
+		actionMap.put(zDown, new AbstractAction() {
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				System.out.println("z");
+			}
+		});
+		
+
 		frmCyberPhysical.setJMenuBar(menuBar);
 
 		frmCyberPhysical.setIconImage(new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage()

+ 1 - 1
src/ui/view/MyCanvas.java

@@ -77,7 +77,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		this.controller = control;
 		this.model = model;
 
-		edgeCapacity = 100;
+		edgeCapacity = 10000;
 		popmenu.add(itemDelete);
 		itemDelete.setEnabled(false);
 		itemDelete.addActionListener(new ActionListener() {