dominik.rieder před 7 roky
rodič
revize
81f351a03f

+ 1 - 1
src/ui/controller/CanvasController.java

@@ -102,7 +102,7 @@ public class CanvasController {
 		mpC.decIdx(obj.getId(), model.getCvsObjIdx());
 		model.getCvsObjIdx().remove(obj.getId());
 		model.getObjectsOnCanvas().remove(obj);
-
+		notifyObjListeners();
 	}
 
 	/**

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

@@ -328,6 +328,7 @@ public class Control {
 	 */
 	public void addObjectCanvas(AbstractCpsObject object) {
 		canvasController.addNewObject(object);
+		simulationManager.calculateStateForTimeStep(model.getCurIteration());
 		if (!(object instanceof CpsNode)) {
 			try {
 				autoSave();
@@ -357,6 +358,7 @@ public class Control {
 	 */
 	public void delCanvasObject(AbstractCpsObject obj, boolean save) {
 		canvasController.deleteObjectOnCanvas(obj);
+		calculateStateForCurrentTimeStep();
 		if (obj instanceof CpsUpperNode)
 			canvasController.bfsNodeCleaner((CpsUpperNode) obj);
 		if (save)

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

@@ -27,7 +27,7 @@ public class FlexibleData extends JPanel {
 		add(name_lbl);
 		
 		JLabel lblFlProd = new JLabel("Flex. Prod.:");
-		lblFlProd.setForeground(new Color(0, 128, 0));
+		lblFlProd.setForeground(new Color(0, 204, 51));
 		lblFlProd.setBounds(31, 46, 64, 27);
 		add(lblFlProd);
 		
@@ -46,7 +46,7 @@ public class FlexibleData extends JPanel {
 		prodVal.setBounds(94, 46, 85, 24);
 		prodVal.setBorder(new EmptyBorder(0, 0, 0, 0));
 		prodVal.setStringPainted(true);
-		prodVal.setForeground(new Color(0, 128, 0));
+		prodVal.setForeground(new Color(0, 204, 51));
 		add(prodVal);
 		
 		consVal = new JProgressBar();

+ 19 - 4
src/ui/view/FlexiblePane.java

@@ -6,16 +6,19 @@ import java.awt.Font;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.util.ArrayList;
+import java.util.LinkedList;
 
 import javax.swing.BoxLayout;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
+import classes.AbstractCpsObject;
 import classes.HolonObject;
 import classes.SubNet;
+import interfaces.ObjectListener;
 import ui.controller.Control;
 
-public class FlexiblePane extends JScrollPane {
+public class FlexiblePane extends JScrollPane implements ObjectListener {
 	private JPanel flexPanel;
 	private Control controller;
 	
@@ -33,6 +36,7 @@ public class FlexiblePane extends JScrollPane {
 	}
 	
 	public void recalculate(){
+		LinkedList<Color> netColors = controller.getModel().getSubNetColors();
 		flexPanel.removeAll();
 		ArrayList<Float> maxVals = calcMax(controller.getSimManager().getSubNets());
 		float gridProd = maxVals.get(0);
@@ -41,14 +45,19 @@ public class FlexiblePane extends JScrollPane {
 		maingrid.getColorPanel().setVisible(false);
 		maingrid.getNamelbl().setFont(new Font("Tahoma", Font.BOLD, 11));
 		flexPanel.add(maingrid);
-		int counter = 1;
-		for(SubNet sn: controller.getSimManager().getSubNets()){
+		int counter = 0;
+		int colorCounter = 0;
+		ArrayList<SubNet> subnets = controller.getSimManager().getSubNets(); 
+		for(SubNet sn: subnets){
+			if(netColors.size() < subnets.size()){
+				netColors.add(new Color((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255)));
+			}
 			JPanel objects = new JPanel();
 			objects.setLayout(new BoxLayout(objects, BoxLayout.Y_AXIS));
 			int index = flexPanel.getComponentCount();
 			float subProd = 0;
 			float subCons = 0;
-			Color subColor = sn.getObjects().get(0).getBorderColor();
+			Color subColor = netColors.get(colorCounter);
 			for(HolonObject hl: sn.getObjects()){
 				subProd += hl.getFlexProd();
 				subCons += hl.getFlexCons();
@@ -65,6 +74,7 @@ public class FlexiblePane extends JScrollPane {
 			wholeSubnet.setListener(this);
 			flexPanel.add(wholeSubnet, index);
 			counter++;
+			colorCounter++;
 		}
 		flexPanel.revalidate();
 		flexPanel.repaint();
@@ -96,4 +106,9 @@ public class FlexiblePane extends JScrollPane {
 		}
 	}
 
+	@Override
+	public void onChange(ArrayList<AbstractCpsObject> objects) {
+		recalculate();
+	}
+
 }

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

@@ -1908,6 +1908,7 @@ public class GUI<E> implements CategoryListener {
 		tabbedPane.addTab("Holon", holonCanvas);
 		flexPane = new FlexiblePane(controller);
 		controller.setFlexiblePane(flexPane);
+		controller.getModel().getObjectListeners().add(flexPane);
 		tabbedPane.addTab("Flexibility", flexPane);
 
 		splitPaneCanvasConsole.setRightComponent(console);