Procházet zdrojové kódy

Removes GlobalController

TomTroppmann před 2 roky
rodič
revize
099dbf90ba

+ 2 - 2
src/holeg/algorithm/example/FlexExample.java

@@ -211,7 +211,7 @@ public class FlexExample implements AddOn {
 			control.resetSimulation();
 			RunResult result= new RunResult();
 			for(int i = 0; i < 100; i++) {
-				control.setCurIteration(i);
+				control.getModel().setCurrentIteration(i);
 				executeDemoAlgo(result);
 				if(cancel) {
 					resetLast();
@@ -252,7 +252,7 @@ public class FlexExample implements AddOn {
 				setState(resetChain.getFirst());
 				resetChain.clear();
 				control.resetSimulation();
-				control.setCurIteration(0);
+				control.getModel().setCurrentIteration(0);
 				updateVisual();
 			}else {
 				println("No run inistialized.");

+ 1 - 1
src/holeg/api/AlgorithmFrameworkFlex.java

@@ -730,7 +730,7 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
 			setState(resetChain.getFirst());
 			resetChain.clear();
 			control.resetSimulation();
-			control.setCurIteration(0);
+			control.getModel().setCurrentIteration(0);
 			updateVisual();
 		}else {
 			console.println("No run inistialized.");

+ 1 - 1
src/holeg/api/TopologieAlgorithmFramework.java

@@ -657,7 +657,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 			setState(resetChain.getFirst());
 			resetChain.clear();
 			control.resetSimulation();
-			control.setCurIteration(0);
+			control.getModel().setCurrentIteration(0);
 			updateVisual();
 		}else {
 			console.println("No run inistialized.");

+ 0 - 8
src/holeg/ui/controller/AutoSaveController.java

@@ -54,14 +54,6 @@ public class AutoSaveController {
 		model.setAutoSaveNr(currentSave);
 	}
 
-	/**
-	 * Return the Autosave Number.
-	 * 
-	 * @return Autosave Number
-	 */
-	public int getAutoSaveNr() {
-		return model.getAutoSaveNr();
-	}
 
 	/**
 	 * Return isAllowed.

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

@@ -15,6 +15,7 @@ import holeg.model.HolonObject;
 import holeg.model.HolonSwitch;
 import holeg.model.Node;
 import holeg.ui.model.DecoratedState;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.ui.view.main.GUI;
 import holeg.utility.Vector2Int;
@@ -63,7 +64,7 @@ public class CanvasController {
 			int y = object.getPosition().getY();
 			
 			/** distance treshold for replacement */
-			int treshhold = model.getScale()/2;
+			int treshhold = GuiSettings.getPictureScale()/2;
 			
 			/** number of Objects that might be replaced (should be 1) */
 			int replaceCounter = 0;

+ 7 - 6
src/holeg/ui/controller/ClipboardController.java

@@ -7,6 +7,7 @@ import holeg.ui.controller.SaveController.EDGETYPE;
 import holeg.ui.controller.SaveController.GRAPHTYPE;
 import holeg.ui.controller.SaveController.NUMTYPE;
 import holeg.ui.controller.SaveController.TYPE;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.utility.Vector2Float;
 import holeg.utility.Vector2Int;
@@ -411,16 +412,16 @@ public class ClipboardController {
         int y = temp.getPosition().getY() - point.y;
 
         if (y < 0)
-            y = 0 + Model.getScaleDiv2() + 1;
+            y = 0 + GuiSettings.getPictureScaleDiv2() + 1;
         if (upperNode != null) {
-            if (x < Model.getScaleDiv2() + 1)
-                x = Model.getScaleDiv2() + 1;
+            if (x < GuiSettings.getPictureScaleDiv2() + 1)
+                x = GuiSettings.getPictureScaleDiv2() + 1;
         } else if (x < 0)
-            x = 0 + Model.getScaleDiv2() + 1;
+            x = 0 + GuiSettings.getPictureScaleDiv2() + 1;
         if (x > model.getCanvasX())
-            x = model.getCanvasX() - Model.getScaleDiv2() - 1;
+            x = model.getCanvasX() - GuiSettings.getPictureScaleDiv2() - 1;
         if (y > model.getCanvasX())
-            y = model.getCanvasY() - Model.getScaleDiv2() - 1;
+            y = model.getCanvasY() - GuiSettings.getPictureScaleDiv2() - 1;
 
         temp.setPosition(new Vector2Int(x, y));
 

+ 9 - 97
src/holeg/ui/controller/Control.java

@@ -23,8 +23,8 @@ import holeg.model.GroupNode;
 import holeg.model.HolonElement;
 import holeg.model.HolonObject;
 import holeg.model.Node;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
-import holeg.ui.model.Model.FairnessModel;
 import holeg.ui.view.dialog.CreateTemplatePopUp;
 import holeg.ui.view.main.Category;
 import holeg.ui.view.main.GUI;
@@ -40,7 +40,6 @@ public class Control {
 	private final CategoryController categoryController;
 	private final ObjectController objectController;
 	private final CanvasController canvasController;
-	private final GlobalController globalController;
 	private final SaveController saveController;
 	private final LoadController loadController;
 	private final AutoSaveController autoSaveController;
@@ -70,7 +69,6 @@ public class Control {
 		this.categoryController = new CategoryController(model, multiPurposeController, this);
 		this.objectController = new ObjectController(model, multiPurposeController);
 		this.canvasController = new CanvasController(model, multiPurposeController);
-		this.globalController = new GlobalController(model);
 		this.saveController = new SaveController(model);
 		this.nodeController = new NodeController(model, canvasController);
 		this.loadController = new LoadController(model, categoryController, canvasController, objectController,
@@ -101,7 +99,7 @@ public class Control {
 	 */
 	private void createAutoRandom() {
 		rand = (int) (Math.random() * 1000);
-		while (new File(autosaveDir + rand + (autoSaveController.getAutoSaveNr())).exists()) {
+		while (new File(autosaveDir + rand + (GuiSettings.autoSaveNr)).exists()) {
 			rand = (int) Math.random() * 1000;
 		}
 	}
@@ -407,43 +405,6 @@ public class Control {
 	}
 
 
-	/**
-	 * Returns SCALE.
-	 *
-	 * @return SCALE
-	 */
-	public int getScale() {
-		return globalController.getScale();
-	}
-
-	/**
-	 * Changes the value of SCALE and SCALEDIV2.
-	 *
-	 * @param s Scale
-	 */
-	public void setScale(int s) {
-		globalController.setScale(s);
-	}
-
-	/**
-	 * Returns SCALE Divided by 2.
-	 *
-	 * @return SCALE Divided by 2
-	 */
-	public int getScaleDiv2() {
-		return globalController.getScaleDiv2();
-	}
-
-	/**
-	 * sets the current Iteration.
-	 *
-	 * @param curit the current Iteration
-	 */
-	public void setCurIteration(int curit) {
-		globalController.setCurIteration(curit);
-		// getGui().getTimePanel().getTimeSlider().setValue(curit);
-	}
-
 	/**
 	 * Writes the current State of the Modelling into a JSON File which can be
 	 * loaded.
@@ -526,9 +487,9 @@ public class Control {
 	 */
 	public void autoSave() throws IOException {
 		autoSaveController.increaseAutoSaveNr();
-		saveController.writeAutosave(autosaveDir + rand + autoSaveController.getAutoSaveNr());
+		saveController.writeAutosave(autosaveDir + rand + GuiSettings.autoSaveNr);
 		if (autoSaveController.allowed()) {
-			new File(autosaveDir + rand + (autoSaveController.getAutoSaveNr() - globalController.getNumbersOfSaves()))
+			new File(autosaveDir + rand + (GuiSettings.autoSaveNr - GuiSettings.numberOfSaves))
 					.delete();
 		}
 	}
@@ -583,10 +544,10 @@ public class Control {
 	 */
 	public String getUndoSave() {
 		autoSaveController.decreaseAutoSaveNr();
-		if (!new File(autosaveDir + rand + (autoSaveController.getAutoSaveNr())).exists()) {
+		if (!new File(autosaveDir + rand + (GuiSettings.autoSaveNr)).exists()) {
 			autoSaveController.increaseAutoSaveNr();
 		}
-		return autosaveDir + rand + (autoSaveController.getAutoSaveNr());
+		return autosaveDir + rand + (GuiSettings.autoSaveNr);
 	}
 
 	/**
@@ -596,18 +557,18 @@ public class Control {
 	 */
 	public String getRedoSave() {
 		autoSaveController.increaseAutoSaveNr();
-		if (!new File(autosaveDir + rand + (autoSaveController.getAutoSaveNr())).exists()) {
+		if (!new File(autosaveDir + rand + (GuiSettings.autoSaveNr)).exists()) {
 			autoSaveController.decreaseAutoSaveNr();
 
 			// if it still does not exist, try old autosaves
-			if (!new File(autosaveDir + rand + (autoSaveController.getAutoSaveNr())).exists()) {
+			if (!new File(autosaveDir + rand + (GuiSettings.autoSaveNr)).exists()) {
 				ArrayList<File> oldAutoSaves = filterOldAutoSaveFiles();
 				if (oldAutoSaves.size() > 0) {
 					return autosaveDir + oldAutoSaves.get(oldAutoSaves.size() - 1).getName();
 				}
 			}
 		}
-		return autosaveDir + rand + (autoSaveController.getAutoSaveNr());
+		return autosaveDir + rand + (GuiSettings.autoSaveNr);
 	}
 
 	/**
@@ -628,38 +589,6 @@ public class Control {
 		return simulationManager;
 	}
 
-	/**
-	 * Set the timerSpeed.
-	 *
-	 * @param t interval in ms
-	 */
-	public void setTimerSpeed(int t) {
-		globalController.setTimerSpeed(t);
-	}
-
-	/**
-	 * Set the Canvas X Size.
-	 *
-	 * @param canvasX the cANVAS_X to set
-	 */
-	public void setCanvasX(int canvasX) {
-		globalController.setCanvasX(canvasX);
-		tryAutoSave();
-	}
-
-	/**
-	 * Set the Canvas Y Size.
-	 *
-	 * @param canvasY the cANVAS_Y to set
-	 */
-	public void setCanvasY(int canvasY) {
-		globalController.setCanvasY(canvasY);
-		tryAutoSave();
-	}
-
-	public void setMaxCapacity(float cap) {
-		globalController.setMaxCapacity(cap);
-	}
 
 	// ========================== MANAGING TRACKED OBJECTS END ================
 
@@ -751,23 +680,6 @@ public class Control {
 		canvasController.setBackgroundImage(imagePath, mode, width, height);
 	}
 
-	/**
-	 * Sets show
-	 * 
-	 * @param showSupplyBars wether the bars should be shown
-	 */
-	public void setShowSupplyBars(boolean showSupplyBars) {
-		globalController.setShowSupplyBars(showSupplyBars);
-	}
-
-	/**
-	 * Sets fairness Model
-	 * 
-	 * @param fairnessModel that should be used.
-	 */
-	public void setFairnessModel(FairnessModel fairnessModel) {
-		globalController.setFairnessModel(fairnessModel);
-	}
 
 	public void updateOutliner() {
 		this.canvasController.updateOutliner(simulationManager);

+ 0 - 134
src/holeg/ui/controller/GlobalController.java

@@ -1,134 +0,0 @@
-package holeg.ui.controller;
-
-import holeg.ui.model.Model;
-import holeg.ui.model.Model.FairnessModel;
-
-/**
- * Controller for the Global Variables.
- * 
- * @author Gruppe14
- */
-public class GlobalController {
-
-	private Model model;
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param model
-	 *            the Model
-	 */
-	public GlobalController(Model model) {
-		this.model = model;
-	}
-
-	/**
-	 * Returns SCALE.
-	 * 
-	 * @return SCALE
-	 */
-	public int getScale() {
-		return model.getScale();
-	}
-
-	/**
-	 * Returns SCALE Divided by 2.
-	 * 
-	 * @return SCALE Divided by 2
-	 */
-	public int getScaleDiv2() {
-		return Model.getScaleDiv2();
-	}
-
-	/**
-	 * Changes the value of SCALE and SCALEDIV2.
-	 * 
-	 * @param s
-	 *            Scale
-	 */
-	public void setScale(int s) {
-		Model.setScale(s);
-	}
-
-	/**
-	 * sets the current Iteration.
-	 * 
-	 * @param curit
-	 *            the current Iteration
-	 */
-	public void setCurIteration(int curit) {
-		model.setCurrentIteration(curit);
-	}
-
-	/**
-	 * Returns numberOfSaves.
-	 * 
-	 * @return numberOfSaves
-	 */
-	public int getNumbersOfSaves() {
-		return model.getNumberOfSaves();
-	}
-
-	/**
-	 * sets the max number of autosaves.
-	 * 
-	 * @param numberofSaves
-	 *            the max number of autosaves
-	 */
-	public void setNumberOfSaves(int numberofSaves) {
-		model.setNumberOfSaves(numberofSaves);
-		;
-	}
-
-	/**
-	 * Set the timerSpeed.
-	 * @param t
-	 *            Interval in ms
-	 */
-	public void setTimerSpeed(int t) {
-		model.setTimerSpeed(t);
-	}
-
-	/**
-	 * Set the Canvas X Size.
-	 * 
-	 * @param canvasX the cANVAS_X to set
-	 */
-	public void setCanvasX(int canvasX) {
-		model.setCanvasX(canvasX);
-	}
-
-
-	/**
-	 * Set the Canvas Y Size.
-	 * 
-	 * @param canvasY the cANVAS_Y to set
-	 */
-	public void setCanvasY(int canvasY) {
-		model.setCanvasY(canvasY);
-	}
-	
-	
-	
-	public void setMaxCapacity(float cap) {
-		model.setMaxCapacity(cap);
-	}
-
-
-	
-	/**
-	 * sets showSupplyBars
-	 * @param showSupplyBars
-	 */
-	public void setShowSupplyBars(boolean showSupplyBars) {
-		model.setShowSupplyBars(showSupplyBars);
-	}
-	
-	/**
-	 * sets showSupplyBars
-	 * @param showSupplyBars
-	 */
-	public void setFairnessModel(FairnessModel fairnessModel) {
-		model.setFairnessModel(fairnessModel);
-	}
-}

+ 8 - 7
src/holeg/ui/controller/NodeController.java

@@ -10,6 +10,7 @@ import holeg.model.AbstractCanvasObject;
 import holeg.model.Edge;
 import holeg.model.GroupNode;
 import holeg.model.Node;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.utility.Vector2Int;
 
@@ -177,7 +178,7 @@ class NodeController {
 			int y = object.getPosition().getY();
 			
 			/** distance threshold for replacement */
-			int treshhold = model.getScale()/2;
+			int treshhold = GuiSettings.getPictureScaleDiv2();
 		
 			/** number of Objects that might be replaced (should be 1) */
 			int replaceCounter = 0;
@@ -264,16 +265,16 @@ class NodeController {
 		int y = temp.getPosition().getY() - point.y;
 
 		if (y < 0)
-			y = 0 + Model.getScaleDiv2() + 1;
+			y = 0 + GuiSettings.getPictureScaleDiv2() + 1;
 		if (upperNode != null) {
-			if (x < Model.getScaleDiv2() + 1)
-				x = Model.getScaleDiv2() + 1;
+			if (x < GuiSettings.getPictureScaleDiv2() + 1)
+				x = GuiSettings.getPictureScaleDiv2() + 1;
 		} else if (x < 0)
-			x = 0 + Model.getScaleDiv2() + 1;
+			x = 0 + GuiSettings.getPictureScaleDiv2() + 1;
 		if (x > model.getCanvasX())
-			x = model.getCanvasX() - Model.getScaleDiv2() - 1;
+			x = model.getCanvasX() - GuiSettings.getPictureScaleDiv2() - 1;
 		if (y > model.getCanvasX())
-			y = model.getCanvasY() - Model.getScaleDiv2() - 1;
+			y = model.getCanvasY() - GuiSettings.getPictureScaleDiv2() - 1;
 
 		temp.setPosition(new Vector2Int(x, y));
 

+ 9 - 2
src/holeg/ui/model/GuiSettings.java

@@ -23,12 +23,17 @@ public class GuiSettings {
     public static float maxCapacityForNewCreatedEdges = 10000;
     
     
-    private static Edge selectedEdge;
+    private static Set<Edge> selectedEdges = new HashSet<>();
     private static ArrayList<Category> categories = new ArrayList<>();
     private static Set<AbstractCanvasObject> clipboardObjects = new HashSet<>();
     private static Set<AbstractCanvasObject> selectedObjects = new HashSet<>();
     
-    public int getPictureScale() {
+    public static int autoSaveNr = -1;
+    public static int numberOfSaves = 35;
+    
+    
+    
+    public static int getPictureScale() {
         return pictureScale;
     }
 
@@ -39,4 +44,6 @@ public class GuiSettings {
     	pictureScale = value;
     	halfPictureScale = (value + 1) / 2;
     }
+    
+    
 }

+ 28 - 3
src/holeg/ui/model/HolegModel.java

@@ -1,12 +1,15 @@
 package holeg.ui.model;
 
+import java.util.ArrayList;
 import java.util.logging.Logger;
+import java.util.stream.Stream;
+
+import holeg.model.Edge;
+import holeg.model.GroupNode;
 
 public class HolegModel {
 	private static final Logger log = Logger.getLogger(HolegModel.class.getName());
 	
-	
-
 	public enum FairnessModel{
 		/**
 		 * One Element of each HolonObject will be powered first, starting with the
@@ -19,8 +22,30 @@ public class HolegModel {
 		 */
 		AllEqual
 	}
-    private FairnessModel fairnessModel = FairnessModel.MininumDemandFirst;
+    private FairnessModel fairnessModel = FairnessModel.MininumDemandFirst;    
+    private GroupNode canvas = new GroupNode("Canvas");
+    private ArrayList<Edge> edges = new ArrayList<>();
+
+    public FairnessModel getFairnessModel() {
+    	return fairnessModel;
+    }
+    public void setFairnessModel(FairnessModel fairnessModel) {
+    	this.fairnessModel = fairnessModel;
+    }
     
+	public Stream<Edge> getEdges() {
+		return edges.stream();
+	}
+	public void addEdge(Edge edge) {
+		edges.add(edge);
+	}
+	public void removeEdge(Edge edge) {
+		edges.remove(edge);
+	}
+
+	public GroupNode getCanvas() {
+		return canvas;
+	}
     
     
 

+ 0 - 4
src/holeg/ui/model/IdCounter.java

@@ -1,7 +1,5 @@
 package holeg.ui.model;
 
-import com.google.gson.annotations.Expose;
-
 /**
  * Static counter
  * ID-Counter for all Cps Objects.
@@ -9,9 +7,7 @@ import com.google.gson.annotations.Expose;
  * @author Gruppe14
  */
 public class IdCounter {
-	@Expose
 	private static int counterObjects = 1;
-	@Expose
 	private static int counterElements = 1;
 
 	public enum CounterType {

+ 2 - 32
src/holeg/ui/model/Model.java

@@ -28,6 +28,8 @@ import holeg.model.Node;
 import holeg.ui.view.main.Category;
 import holeg.utility.Vector2Int;
 
+
+
 /**
  * The Class Model is the class where everything is saved. All changes made to
  * the Data is managed via a controller.
@@ -38,10 +40,6 @@ public class Model {
 
 	private static final Logger log = Logger.getLogger(Model.class.getName());
     private static final int GRAPH_ITERATIONS = 100;
-    // Global Variables
-    // TODO(Tom2021-12-07): REMOVE
-    private static int scale = 50; // Picture Scale
-    private static int halfScale = scale / 2;
     // Canvas Attributes
     private String imgPath = "";
     private int backgroundMode = 0;
@@ -227,34 +225,6 @@ public class Model {
 
 
 
-    /**
-     * Returns the sCale (Scale for the Images).
-     *
-     * @return scale
-     */
-    public int getScale() {
-        return scale;
-    }
-
-
-    /**
-     * Returns scaledIV2 (The Scale divided by 2).
-     *
-     * @return scaledIV2
-     */
-    public static int getScaleDiv2() {
-        return halfScale;
-    }
-    /**
-     * Sets the Image Scale.
-     *
-     * @param value for the image
-     */
-    public static void setScale(int value) {
-    	scale = value;
-    	halfScale = (value + 1) / 2;
-    }
-
     /**
      * Returns the maximum ITERATIONS.
      *

+ 15 - 14
src/holeg/ui/view/canvas/AbstractCanvas.java

@@ -25,6 +25,7 @@ import holeg.model.HolonElement;
 import holeg.model.HolonObject;
 import holeg.model.Node;
 import holeg.ui.controller.Control;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.utility.Vector2Int;
 
@@ -139,7 +140,7 @@ public abstract class AbstractCanvas extends JPanel {
 			// width
 
 			// fixed x and y Position to the screen
-			int fixXPos = toolTipPos.getX() - (textWidth >> 1) + Model.getScaleDiv2();
+			int fixXPos = toolTipPos.getX() - (textWidth >> 1) + GuiSettings.getPictureScaleDiv2();
 			int fixYPos = toolTipPos.getY();
 
 			if (fixXPos < 0) {
@@ -219,18 +220,18 @@ public abstract class AbstractCanvas extends JPanel {
 		int lx, ly, hx, hy;
 
 		if (p.getA().getPosition().getX() > p.getB().getPosition().getX()) {
-			hx = p.getA().getPosition().getX() + Model.getScaleDiv2() + 7;
-			lx = p.getB().getPosition().getX() + Model.getScaleDiv2() - 7;
+			hx = p.getA().getPosition().getX() + GuiSettings.getPictureScaleDiv2() + 7;
+			lx = p.getB().getPosition().getX() + GuiSettings.getPictureScaleDiv2() - 7;
 		} else {
-			lx = p.getA().getPosition().getX() + Model.getScaleDiv2() - 7;
-			hx = p.getB().getPosition().getX() + Model.getScaleDiv2() + 7;
+			lx = p.getA().getPosition().getX() + GuiSettings.getPictureScaleDiv2() - 7;
+			hx = p.getB().getPosition().getX() + GuiSettings.getPictureScaleDiv2() + 7;
 		}
 		if (p.getA().getPosition().getY() > p.getB().getPosition().getY()) {
-			hy = p.getA().getPosition().getY() + Model.getScaleDiv2() + 7;
-			ly = p.getB().getPosition().getY() + Model.getScaleDiv2() - 7;
+			hy = p.getA().getPosition().getY() + GuiSettings.getPictureScaleDiv2() + 7;
+			ly = p.getB().getPosition().getY() + GuiSettings.getPictureScaleDiv2() - 7;
 		} else {
-			ly = p.getA().getPosition().getY() + Model.getScaleDiv2() - 7;
-			hy = p.getB().getPosition().getY() + Model.getScaleDiv2() + 7;
+			ly = p.getA().getPosition().getY() + GuiSettings.getPictureScaleDiv2() - 7;
+			hy = p.getB().getPosition().getY() + GuiSettings.getPictureScaleDiv2() + 7;
 		}
 
 		return new int[] { lx, ly, hx, hy };
@@ -277,7 +278,7 @@ public abstract class AbstractCanvas extends JPanel {
 			int x, int y) {
 
 		/** distance treshold for replacement */
-		int treshhold = controller.getScale() / 2;
+		int treshhold = GuiSettings.getPictureScaleDiv2();
 
 		/** number of Objects that might be replaced (should be 1) */
 		int replaceCounter = 0;
@@ -343,10 +344,10 @@ public abstract class AbstractCanvas extends JPanel {
 	protected void highlightMayBeReplaced(Graphics2D g2) {
 		if (mayBeReplaced != null) {
 			g2.setColor(Color.RED);
-			g2.fillRect((int) (mayBeReplaced.getPosition().getX() - controller.getScaleDiv2() - (scalediv20 + 3)),
-					(int) (mayBeReplaced.getPosition().getY() - controller.getScaleDiv2() - (scalediv20 + 3)),
-					(int) (controller.getScale() + ((scalediv20 + 3) * 2)),
-					(int) (controller.getScale() + ((scalediv20 + 3) * 2)));
+			g2.fillRect((int) (mayBeReplaced.getPosition().getX() - GuiSettings.getPictureScaleDiv2() - (scalediv20 + 3)),
+					(int) (mayBeReplaced.getPosition().getY() - GuiSettings.getPictureScaleDiv2() - (scalediv20 + 3)),
+					(int) (GuiSettings.getPictureScale() + ((scalediv20 + 3) * 2)),
+					(int) (GuiSettings.getPictureScale() + ((scalediv20 + 3) * 2)));
 		}
 	}
 

+ 58 - 58
src/holeg/ui/view/canvas/Canvas.java

@@ -40,6 +40,7 @@ import holeg.ui.model.DecoratedGroupNode;
 import holeg.ui.model.DecoratedHolonObject;
 import holeg.ui.model.DecoratedSwitch;
 import holeg.ui.model.ExitCable;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.ui.model.Passiv;
 import holeg.ui.model.Supplier;
@@ -79,10 +80,9 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		this.controller = control;
 		this.model = mod;
 
-		scalediv20 = model.getScale() / 20;
+		scalediv20 = GuiSettings.getPictureScale() / 20;
 
 		showConnectionInformation = true;
-		control.setMaxCapacity(10000);
 		popmenu.add(itemCut);
 		popmenu.add(itemCopy);
 		popmenu.add(itemPaste);
@@ -236,7 +236,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 
 		itemAlign.addActionListener(actionEvent -> {
 			for (AbstractCanvasObject cps : model.getSelectedObjects())
-				align(cps, Model.getScaleDiv2());
+				align(cps, GuiSettings.getPictureScaleDiv2());
 			repaint();
 		});
 		itemPaste.addActionListener(actionEvent -> {
@@ -273,17 +273,17 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		Vector2Int pos = decoratedHolonObject.getModel().getPosition();
 		Color statecolor = ColorPreference.HolonObject.getStateColor(decoratedHolonObject.getState());
 		g.setColor(statecolor);
-		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() - controller.getScaleDiv2(),
-				controller.getScale(), controller.getScale());
+		g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() - GuiSettings.getPictureScaleDiv2(),
+				GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 		drawCanvasObject(g, decoratedHolonObject.getModel().getImage(), pos);
 	}
 
 	protected void drawCanvasObjectString(Graphics2D g, Vector2Int posOfCanvasObject, float energy) {
 		g.setColor(Color.BLACK);
-		g.setFont(new Font("TimesNewRoman", Font.PLAIN, (int) (controller.getScale() / 4f)));
+		g.setFont(new Font("TimesNewRoman", Font.PLAIN, (int) (GuiSettings.getPictureScale() / 4f)));
 		g.drawString((energy > 0) ? "+" + Float.toString(energy) : Float.toString(energy),
-				posOfCanvasObject.getX() - controller.getScaleDiv2(),
-				posOfCanvasObject.getY() - controller.getScaleDiv2() - 1);
+				posOfCanvasObject.getX() - GuiSettings.getPictureScaleDiv2(),
+				posOfCanvasObject.getY() - GuiSettings.getPictureScaleDiv2() - 1);
 	}
 
 	protected void paintConsumer(Graphics2D g, Consumer con) {
@@ -301,9 +301,9 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 	}
 
 	protected void drawCanvasObject(Graphics2D g, String Image, Vector2Int pos) {
-		g.drawImage(ImageImport.loadImage(Image, controller.getScale(), controller.getScale()),
-				pos.getX() - controller.getScaleDiv2(), pos.getY() - controller.getScaleDiv2(), controller.getScale(),
-				controller.getScale(), null);
+		g.drawImage(ImageImport.loadImage(Image, GuiSettings.getPictureScale(), GuiSettings.getPictureScale()),
+				pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() - GuiSettings.getPictureScaleDiv2(), GuiSettings.getPictureScale(),
+				GuiSettings.getPictureScale(), null);
 	}
 
 	protected void paintCable(Graphics2D g, Edge cable, boolean isSelected) {
@@ -328,7 +328,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		g.drawLine(start.getX(), start.getY(), end.getX(), end.getY());
 		if (showConnectionInformation) {
 			Vector2Int middle = new Vector2Int((start.getX() + end.getX()) / 2, (start.getY() + end.getY()) / 2);
-			g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10)));
+			g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (GuiSettings.getPictureScale() / 3.5f), 10)));
 			g.drawString(currentEnergy + "/" + (unlimited ? "\u221E" : capacity), middle.getX(), middle.getY());
 		}
 	}
@@ -362,38 +362,38 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		}
 		g.drawLine(start.getX(), start.getY(), end.getX(), end.getY());
 		Vector2Int middle = new Vector2Int((start.getX() + end.getX()) / 2, (start.getY() + end.getY()) / 2);
-		g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10)));
+		g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (GuiSettings.getPictureScale() / 3.5f), 10)));
 		g.drawString(currentEnergy + "/" + (unlimited ? "\u221E" : capacity), middle.getX(), middle.getY());
 	}
 
 	protected void paintGroupNode(Graphics2D g, DecoratedGroupNode dGroupNode) {
 		Vector2Int pos = dGroupNode.getModel().getPosition();
 		g.setColor(Color.lightGray);
-		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() - controller.getScaleDiv2(),
-				controller.getScale(), controller.getScale());
+		g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() - GuiSettings.getPictureScaleDiv2(),
+				GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 		drawCanvasObject(g, "/Images/upper_node.png", pos);
 		paintGroupNodeBar(g, dGroupNode, pos);
 	}
 
 	private void paintGroupNodeBar(Graphics2D g, DecoratedGroupNode dGroupNode, Vector2Int pos) {
 		// +1, -2, -1 little Adjustment for pixel perfect alignment
-		int barWidth = (int) (controller.getScale());
-		int barHeight = (int) (controller.getScale() / 5);
+		int barWidth = (int) (GuiSettings.getPictureScale());
+		int barHeight = (int) (GuiSettings.getPictureScale() / 5);
 		g.setColor(Color.WHITE);
-		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, (int) barWidth,
+		g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1, (int) barWidth,
 				barHeight);
 		float[] percentages = getGroupNodeBarPercentages(dGroupNode);
 
 		for (int i = 5; i >= 0; i--) {
 			g.setColor(colors[i]);
-			g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1,
+			g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1,
 					(int) (barWidth * percentages[i] - 1), barHeight);
 		}
 //		g.setColor(color);
-//		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, (int) (barWidth * (percentage < 1 ? percentage : 1.0f) - 1), barHeight);
+//		g.fillRect(pos.getX() - GuiSettings.GetPictureScaleDiv2(), pos.getY() + GuiSettings.GetPictureScaleDiv2() - 1, (int) (barWidth * (percentage < 1 ? percentage : 1.0f) - 1), barHeight);
 		g.setColor(Color.BLACK);
 		g.setStroke(new BasicStroke(1));
-		g.drawRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, barWidth - 1,
+		g.drawRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1, barWidth - 1,
 				barHeight);
 	}
 
@@ -424,17 +424,17 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 
 	private void paintSupplyBar(Graphics2D g, float percentage, Color color, Vector2Int pos) {
 		// +1, -2, -1 little Adjustment for pixel perfect alignment
-		int barWidth = (int) (controller.getScale());
-		int barHeight = (int) (controller.getScale() / 5);
+		int barWidth = (int) (GuiSettings.getPictureScale());
+		int barHeight = (int) (GuiSettings.getPictureScale() / 5);
 		g.setColor(Color.WHITE);
-		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, (int) barWidth,
+		g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1, (int) barWidth,
 				barHeight);
 		g.setColor(color);
-		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1,
+		g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1,
 				(int) (barWidth * (percentage < 1 ? percentage : 1.0f) - 1), barHeight);
 		g.setColor(Color.BLACK);
 		g.setStroke(new BasicStroke(1));
-		g.drawRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, barWidth - 1,
+		g.drawRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() + GuiSettings.getPictureScaleDiv2() - 1, barWidth - 1,
 				barHeight);
 		g.setFont(new Font("TimesNewRoman", Font.PLAIN, (int) (barHeight * 1.5) - 2));
 		String percentageString = (Math.round((percentage * 100))) + "%";
@@ -442,7 +442,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		if (percentage > 1.0f)
 			g.setColor(Color.WHITE); // Just to see better on purple
 		g.drawString(percentageString, pos.getX() + 1 - stringWidth / 2,
-				pos.getY() + controller.getScaleDiv2() - 1 + barHeight);
+				pos.getY() + GuiSettings.getPictureScaleDiv2() - 1 + barHeight);
 
 	}
 
@@ -489,7 +489,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		if (model.getSelectedEdge() != null)
 			selectedEdges.add(model.getSelectedEdge());
 		// timstep:
-		g.setFont(new Font("TimesNewRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10)));
+		g.setFont(new Font("TimesNewRoman", Font.PLAIN, Math.max((int) (GuiSettings.getPictureScale() / 3.5f), 10)));
 		g2d.setColor(Color.BLACK);
 
 		Optional<VisualRepresentationalState> optVisualState = controller.getSimManager().getActualVisualRepresentationalState();
@@ -539,23 +539,23 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 			if (aCps instanceof Node) {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillOval(pos.getX() - (int) (controller.getScaleDiv2()),
-						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
+				g2d.fillOval(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2()),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2()), GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 				g2d.setColor(Color.LIGHT_GRAY);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawOval(pos.getX() - (int) (controller.getScaleDiv2()),
-						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
+				g2d.drawOval(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2()),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2()), GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 			} else {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
-						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
-						(int) (controller.getScale() * 1.5f));
+				g2d.fillRect(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f), (int) (GuiSettings.getPictureScale() * 1.5f),
+						(int) (GuiSettings.getPictureScale() * 1.5f));
 				g2d.setColor(Color.LIGHT_GRAY);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
-						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
-						(int) (controller.getScale() * 1.5f));
+				g2d.drawRect(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f), (int) (GuiSettings.getPictureScale() * 1.5f),
+						(int) (GuiSettings.getPictureScale() * 1.5f));
 			}
 
 		}
@@ -563,8 +563,8 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		if (mayBeReplaced != null) {
 			g2d.setColor(Color.RED);
 			Vector2Int pos = mayBeReplaced.getPosition();
-			g2d.drawImage(ImageImport.loadImage("/Images/replace.png"), pos.getX() + controller.getScaleDiv2(),
-					pos.getY() - controller.getScale(), controller.getScaleDiv2(), controller.getScaleDiv2(), null);
+			g2d.drawImage(ImageImport.loadImage("/Images/replace.png"), pos.getX() + GuiSettings.getPictureScaleDiv2(),
+					pos.getY() - GuiSettings.getPictureScale(), GuiSettings.getPictureScaleDiv2(), GuiSettings.getPictureScaleDiv2(), null);
 		}
 		// <-- OldCode
 	}
@@ -590,9 +590,9 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 			controller.setSelecteEdge(null);
 			// Object Selection
 			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
-				cx = cps.getPosition().getX() - controller.getScaleDiv2();
-				cy = cps.getPosition().getY() - controller.getScaleDiv2();
-				if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+				cx = cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2();
+				cy = cps.getPosition().getY() - GuiSettings.getPictureScaleDiv2();
+				if (x - GuiSettings.getPictureScale() <= cx && y - GuiSettings.getPictureScale() <= cy && x >= cx && y >= cy) {
 					tempCps = cps;
 
 					dragging = true;
@@ -731,7 +731,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 					y = e.getY();
 
 					// Make sure its in bounds
-					int scaleDiv2 = controller.getScaleDiv2();
+					int scaleDiv2 = GuiSettings.getPictureScaleDiv2();
 					if (e.getX() < scaleDiv2)
 						x = scaleDiv2;
 					else if (e.getX() > this.getWidth() - scaleDiv2)
@@ -797,8 +797,8 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 						y1 = y;
 						y2 = sy;
 					}
-					if (x1 <= cps.getPosition().getX() + Model.getScaleDiv2()
-							&& y1 <= cps.getPosition().getY() + Model.getScaleDiv2() && x2 >= cps.getPosition().getX()
+					if (x1 <= cps.getPosition().getX() + GuiSettings.getPictureScaleDiv2()
+							&& y1 <= cps.getPosition().getY() + GuiSettings.getPictureScaleDiv2() && x2 >= cps.getPosition().getX()
 							&& y2 >= cps.getPosition().getY()) {
 						tempSelected.add(cps);
 
@@ -819,13 +819,13 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 			// Everything for the tooltip :)
 			boolean on = false;
 			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
-				cx = cps.getPosition().getX() - controller.getScaleDiv2();
-				cy = cps.getPosition().getY() - controller.getScaleDiv2();
+				cx = cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2();
+				cy = cps.getPosition().getY() - GuiSettings.getPictureScaleDiv2();
 
-				if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+				if (x - GuiSettings.getPictureScale() <= cx && y - GuiSettings.getPictureScale() <= cy && x >= cx && y >= cy) {
 					on = true;
-					toolTipPos.setX(cps.getPosition().getX() - controller.getScaleDiv2());
-					toolTipPos.setY(cps.getPosition().getY() + controller.getScaleDiv2());
+					toolTipPos.setX(cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2());
+					toolTipPos.setY(cps.getPosition().getY() + GuiSettings.getPictureScaleDiv2());
 					toolTipText = cps.getName() + ", " + cps.getId();
 				}
 			}
@@ -847,9 +847,9 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 			Edge e = null;
 
 			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
-				cx = cps.getPosition().getX() - controller.getScaleDiv2();
-				cy = cps.getPosition().getY() - controller.getScaleDiv2();
-				if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy
+				cx = cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2();
+				cy = cps.getPosition().getY() - GuiSettings.getPictureScaleDiv2();
+				if (x - GuiSettings.getPictureScale() <= cx && y - GuiSettings.getPictureScale() <= cy && x >= cx && y >= cy
 						&& cps != tempCps) {
 					node = false;
 					onEdge = false;
@@ -964,8 +964,8 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 	 * @return CpsEdge the Mouse is on, null if the mouse is not on an Edge
 	 */
 	protected Edge mousePositionOnEdge(int x, int y) {
-		x += controller.getScaleDiv2();
-		y += controller.getScaleDiv2();
+		x += GuiSettings.getPictureScaleDiv2();
+		y += GuiSettings.getPictureScaleDiv2();
 		for (Edge p : model.getEdgesOnCanvas()) {
 			Line2D l = new Line2D.Float(p.getA().getPosition().getX(), p.getA().getPosition().getY(),
 					p.getB().getPosition().getX(), p.getB().getPosition().getY());
@@ -977,7 +977,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 			int hy = positions[3];
 
 			// distance from a point to a line and between both Objects
-			if (l.ptLineDistSq(x - Model.getScaleDiv2(), y - Model.getScaleDiv2()) < 20 && x > lx && x < hx && y > ly
+			if (l.ptLineDistSq(x - GuiSettings.getPictureScaleDiv2(), y - GuiSettings.getPictureScaleDiv2()) < 20 && x > lx && x < hx && y > ly
 					&& y < hy) {
 				return p;
 			}
@@ -1017,7 +1017,7 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		 * Align all Objects
 		 */
 		for (AbstractCanvasObject cps : model.getObjectsOnCanvas())
-			align(cps, 3 * Model.getScaleDiv2());
+			align(cps, 3 * GuiSettings.getPictureScaleDiv2());
 
 		/**
 		 * AutoSave new Positons

+ 48 - 47
src/holeg/ui/view/canvas/GroupNodeCanvas.java

@@ -24,6 +24,7 @@ import holeg.ui.model.Consumer;
 import holeg.ui.model.DecoratedGroupNode;
 import holeg.ui.model.DecoratedSwitch;
 import holeg.ui.model.ExitCable;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.ui.model.Passiv;
 import holeg.ui.model.Supplier;
@@ -131,31 +132,31 @@ public class GroupNodeCanvas extends Canvas {
 			if (aCps instanceof Node) {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillOval(pos.getX() - (int) (controller.getScaleDiv2()),
-						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
+				g2d.fillOval(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2()),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2()), GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 				g2d.setColor(ColorPreference.Panel.ObjectSelectionBorder);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawOval(pos.getX() - (int) (controller.getScaleDiv2()),
-						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
+				g2d.drawOval(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2()),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2()), GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
 			} else {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
-						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
-						(int) (controller.getScale() * 1.5f));
+				g2d.fillRect(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f), (int) (GuiSettings.getPictureScale() * 1.5f),
+						(int) (GuiSettings.getPictureScale() * 1.5f));
 				g2d.setColor(ColorPreference.Panel.ObjectSelectionBorder);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
-						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
-						(int) (controller.getScale() * 1.5f));
+				g2d.drawRect(pos.getX() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f),
+						pos.getY() - (int) (GuiSettings.getPictureScaleDiv2() * 1.5f), (int) (GuiSettings.getPictureScale() * 1.5f),
+						(int) (GuiSettings.getPictureScale() * 1.5f));
 			}
 
 		}
 		// maybeReplace:
 		if (mayBeReplaced != null) {
 			Vector2Int pos = mayBeReplaced.getPosition();
-			g.drawImage(ImageImport.loadImage("/Images/replace.png"), pos.getX() + controller.getScaleDiv2(),
-					pos.getY() - controller.getScale(), controller.getScaleDiv2(), controller.getScaleDiv2(), null);
+			g.drawImage(ImageImport.loadImage("/Images/replace.png"), pos.getX() + GuiSettings.getPictureScaleDiv2(),
+					pos.getY() - GuiSettings.getPictureScale(), GuiSettings.getPictureScaleDiv2(), GuiSettings.getPictureScaleDiv2(), null);
 		}
 		// <-- OldCode
 	}
@@ -172,9 +173,9 @@ public class GroupNodeCanvas extends Canvas {
 
 			if (e.getX() > 0) {
 				for (AbstractCanvasObject cps : groupNode.getObjectsInThisLayer().toList()) {
-					cx = cps.getPosition().getX() - Model.getScaleDiv2();
-					cy = cps.getPosition().getY() - Model.getScaleDiv2();
-					if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+					cx = cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2();
+					cy = cps.getPosition().getY() - GuiSettings.getPictureScaleDiv2();
+					if (x - GuiSettings.getPictureScale() <= cx && y - GuiSettings.getPictureScale() <= cy && x >= cx && y >= cy) {
 						tempCps = cps;
 
 						dragging = true;
@@ -211,11 +212,11 @@ public class GroupNodeCanvas extends Canvas {
 					} else {
 						cps = ed.getA();
 					}
-					if (x - controller.getScale() <= (Model.getScaleDiv2())
-							&& y - controller.getScale() <= (scalediv20 + 5
-									+ (model.getScale() + scalediv20 + 10) * count)
-							&& x >= Model.getScaleDiv2()
-							&& y >= (scalediv20 + 5 + (model.getScale() + scalediv20 + 10) * count)) {
+					if (x - GuiSettings.getPictureScale() <= (GuiSettings.getPictureScaleDiv2())
+							&& y - GuiSettings.getPictureScale() <= (scalediv20 + 5
+									+ (GuiSettings.getPictureScale() + scalediv20 + 10) * count)
+							&& x >= GuiSettings.getPictureScaleDiv2()
+							&& y >= (scalediv20 + 5 + (GuiSettings.getPictureScale() + scalediv20 + 10) * count)) {
 						tempCps = cps;
 						// If drawing an Edge (CTRL down)
 						if (tempCps.getClass() == HolonObject.class) {
@@ -338,14 +339,14 @@ public class GroupNodeCanvas extends Canvas {
 						y = e.getY();
 
 						// Make sure its in bounds
-						if (e.getX() < controller.getScaleDiv2() + +5)
-							x = controller.getScaleDiv2() + +5;
-						else if (e.getX() > this.getWidth() - controller.getScaleDiv2())
-							x = this.getWidth() - controller.getScaleDiv2();
-						if (e.getY() < controller.getScaleDiv2())
-							y = controller.getScaleDiv2();
-						else if (e.getY() > this.getHeight() - controller.getScaleDiv2())
-							y = this.getHeight() - controller.getScaleDiv2();
+						if (e.getX() < GuiSettings.getPictureScaleDiv2() + +5)
+							x = GuiSettings.getPictureScaleDiv2() + +5;
+						else if (e.getX() > this.getWidth() - GuiSettings.getPictureScaleDiv2())
+							x = this.getWidth() - GuiSettings.getPictureScaleDiv2();
+						if (e.getY() < GuiSettings.getPictureScaleDiv2())
+							y = GuiSettings.getPictureScaleDiv2();
+						else if (e.getY() > this.getHeight() - GuiSettings.getPictureScaleDiv2())
+							y = this.getHeight() - GuiSettings.getPictureScaleDiv2();
 
 						// Distance
 						xDist = x - tempCps.getPosition().getX();
@@ -356,8 +357,8 @@ public class GroupNodeCanvas extends Canvas {
 						// TipText Position and name
 						toolTip = true;
 						toolTipText = tempCps.getName() + ", " + tempCps.getId();
-						toolTipPos.setX(tempCps.getPosition().getX() - Model.getScaleDiv2());
-						toolTipPos.setY(tempCps.getPosition().getY() - Model.getScaleDiv2());
+						toolTipPos.setX(tempCps.getPosition().getX() - GuiSettings.getPictureScaleDiv2());
+						toolTipPos.setY(tempCps.getPosition().getY() - GuiSettings.getPictureScaleDiv2());
 
 						// All Selected Objects
 						for (AbstractCanvasObject cps : model.getSelectedObjects()) {
@@ -366,14 +367,14 @@ public class GroupNodeCanvas extends Canvas {
 								y = (int) (cps.getPosition().getY() + yDist);
 
 								// Make sure its in bounds
-								if (x < +5 + controller.getScaleDiv2())
-									x = controller.getScaleDiv2() + +5;
-								else if (x > this.getWidth() - controller.getScaleDiv2())
-									x = this.getWidth() - controller.getScaleDiv2();
-								if (y <= controller.getScaleDiv2())
-									y = controller.getScaleDiv2();
-								else if (y > this.getHeight() - controller.getScaleDiv2())
-									y = this.getHeight() - controller.getScaleDiv2();
+								if (x < +5 + GuiSettings.getPictureScaleDiv2())
+									x = GuiSettings.getPictureScaleDiv2() + +5;
+								else if (x > this.getWidth() - GuiSettings.getPictureScaleDiv2())
+									x = this.getWidth() - GuiSettings.getPictureScaleDiv2();
+								if (y <= GuiSettings.getPictureScaleDiv2())
+									y = GuiSettings.getPictureScaleDiv2();
+								else if (y > this.getHeight() - GuiSettings.getPictureScaleDiv2())
+									y = this.getHeight() - GuiSettings.getPictureScaleDiv2();
 
 								cps.setPosition(x, y);
 							}
@@ -407,8 +408,8 @@ public class GroupNodeCanvas extends Canvas {
 						y1 = y;
 						y2 = sy;
 					}
-					if (x1 <= cps.getPosition().getX() + Model.getScaleDiv2()
-							&& y1 <= cps.getPosition().getY() + Model.getScaleDiv2() && x2 >= cps.getPosition().getX()
+					if (x1 <= cps.getPosition().getX() + GuiSettings.getPictureScaleDiv2()
+							&& y1 <= cps.getPosition().getY() + GuiSettings.getPictureScaleDiv2() && x2 >= cps.getPosition().getX()
 							&& y2 >= cps.getPosition().getY()) {
 						tempSelected.add(cps);
 					}
@@ -433,8 +434,8 @@ public class GroupNodeCanvas extends Canvas {
 						y2 = sy;
 					}
 
-					if (x1 <= 0 && y1 <= (int) (5 + (model.getScale() + scalediv20 + 10) * count) + Model.getScaleDiv2()
-							&& x2 >= 0 && y2 >= (int) (5 + (model.getScale() + scalediv20 + 10) * count)) {
+					if (x1 <= 0 && y1 <= (int) (5 + (GuiSettings.getPictureScale() + scalediv20 + 10) * count) + GuiSettings.getPictureScaleDiv2()
+							&& x2 >= 0 && y2 >= (int) (5 + (GuiSettings.getPictureScale() + scalediv20 + 10) * count)) {
 						tempSelected.add(cps);
 
 					}
@@ -455,16 +456,16 @@ public class GroupNodeCanvas extends Canvas {
 			boolean on = false;
 			Optional<AbstractCanvasObject> objectUnderCursor = groupNode.getObjectsInThisLayer().filter(cps -> {
 
-				cx = cps.getPosition().getX() - controller.getScaleDiv2();
-				cy = cps.getPosition().getY() - controller.getScaleDiv2();
-				boolean mouseOverObject = x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx
+				cx = cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2();
+				cy = cps.getPosition().getY() - GuiSettings.getPictureScaleDiv2();
+				boolean mouseOverObject = x - GuiSettings.getPictureScale() <= cx && y - GuiSettings.getPictureScale() <= cy && x >= cx
 						&& y >= cy;
 				return mouseOverObject;
 			}).findAny();
 			on |= objectUnderCursor.isPresent();
 			objectUnderCursor.ifPresent(cps -> {
-				toolTipPos.setX(cps.getPosition().getX() - controller.getScaleDiv2());
-				toolTipPos.setY(cps.getPosition().getY() + controller.getScaleDiv2());
+				toolTipPos.setX(cps.getPosition().getX() - GuiSettings.getPictureScaleDiv2());
+				toolTipPos.setY(cps.getPosition().getY() + GuiSettings.getPictureScaleDiv2());
 				toolTipText = cps.getName() + ", " + cps.getId();
 			});
 			int count = 0;

+ 3 - 2
src/holeg/ui/view/dialog/CanvasResizePopUp.java

@@ -3,6 +3,7 @@ package holeg.ui.view.dialog;
 import javax.swing.*;
 
 import holeg.ui.controller.Control;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.Model;
 import holeg.ui.view.canvas.Canvas;
 import holeg.ui.view.canvas.GroupNodeCanvas;
@@ -53,8 +54,8 @@ public class CanvasResizePopUp extends JDialog {
 		btnOk.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.setCanvasX(Integer.parseInt(tFieldWidht.getText()));
-				controller.setCanvasY(Integer.parseInt(tFieldHeight.getText()));
+				GuiSettings.canvasSize.setX(Integer.parseInt(tFieldWidht.getText()));
+				GuiSettings.canvasSize.setY(Integer.parseInt(tFieldHeight.getText()));
 				int width = model.getCanvasX();
 				int height = model.getCanvasY();
 				Dimension preferedSize = new Dimension(width, height);

+ 2 - 1
src/holeg/ui/view/dialog/EditEdgesPopUp.java

@@ -18,6 +18,7 @@ import javax.swing.border.EmptyBorder;
 
 import holeg.model.Edge;
 import holeg.ui.controller.Control;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.view.canvas.Canvas;
 
 /**
@@ -152,7 +153,7 @@ public class EditEdgesPopUp extends JDialog {
 	 *            the capacity
 	 */
 	public void changeForNew(float cap) {
-		controller.setMaxCapacity(cap);
+		GuiSettings.maxCapacityForNewCreatedEdges = cap;
 		controller.resetSimulation();
 	}
 

+ 7 - 6
src/holeg/ui/view/main/GUI.java

@@ -73,6 +73,7 @@ import holeg.model.HolonSwitch;
 import holeg.preferences.ColorPreference;
 import holeg.ui.controller.Control;
 import holeg.ui.model.DecoratedState;
+import holeg.ui.model.GuiSettings;
 import holeg.ui.model.IdCounter;
 import holeg.ui.model.Model;
 import holeg.ui.model.IdCounter.CounterType;
@@ -630,7 +631,7 @@ public class GUI {
 						+ "After that as many HolonObjects as possible will get fully supplied.");
 
 		mntmFairMinFirst.addActionListener(arg0 -> {
-			controller.setFairnessModel(FairnessModel.MininumDemandFirst);
+			controller.getModel().setFairnessModel(FairnessModel.MininumDemandFirst);
 			mntmFairMinFirst.setForeground(Color.BLUE);
 			mntmFairAlleEqual.setForeground(mnFairnessModel.getForeground());
 			controller.calculateStateAndVisualForCurrentTimeStep();
@@ -645,7 +646,7 @@ public class GUI {
 		mntmFairAlleEqual.setToolTipText("HolonObjects will all get the same amount of energy.");
 
 		mntmFairAlleEqual.addActionListener(arg0 -> {
-			controller.setFairnessModel(FairnessModel.AllEqual);
+			controller.getModel().setFairnessModel(FairnessModel.AllEqual);
 			mntmFairAlleEqual.setForeground(Color.BLUE);
 			mntmFairMinFirst.setForeground(mnFairnessModel.getForeground());
 			controller.calculateStateAndVisualForCurrentTimeStep();
@@ -676,7 +677,7 @@ public class GUI {
 		mnNewMenuView.add(showSupplyBarsCheckBox);
 		showSupplyBarsCheckBox.setSelected(true);
 		showSupplyBarsCheckBox.addActionListener(arg0 -> {
-			controller.setShowSupplyBars(showSupplyBarsCheckBox.isSelected());
+			GuiSettings.showSupplyBars = showSupplyBarsCheckBox.isSelected();
 
 			canvas.repaint();
 
@@ -1154,7 +1155,7 @@ public class GUI {
 			model.getObjectsOnCanvas().clear();
 			controller.OnSelectionChanged.broadcast();
 			controller.setSelecteEdge(null);
-			controller.setCurIteration(0);
+			controller.getModel().setCurrentIteration(0);
 			elementGraph.setText("None");
 			canvas.tempCps = null;
 			canvas.repaint();
@@ -1360,8 +1361,8 @@ public class GUI {
 		canvasSP.addComponentListener(new ComponentAdapter() {
 			@Override
 			public void componentResized(ComponentEvent e) {
-				controller.setCanvasX(Math.max(model.getCanvasX(), canvasSP.getViewport().getWidth()));
-				controller.setCanvasY(Math.max(model.getCanvasY(), canvasSP.getViewport().getHeight()));
+				GuiSettings.canvasSize.setX(Math.max(model.getCanvasX(), canvasSP.getViewport().getWidth()));
+				GuiSettings.canvasSize.setY(Math.max(model.getCanvasY(), canvasSP.getViewport().getHeight()));
 				canvas.repaint();
 			}
 		});

+ 7 - 6
src/holeg/ui/view/main/TimePanel.java

@@ -35,6 +35,7 @@ import javax.swing.plaf.basic.BasicSliderUI;
 
 import holeg.preferences.ColorPreference;
 import holeg.ui.controller.Control;
+import holeg.ui.model.GuiSettings;
 import holeg.utility.ImageImport;
 import holeg.utility.listener.LostFocusListener;
 
@@ -128,7 +129,7 @@ public class TimePanel extends JPanel implements ActionListener {
 		timeSlider.setToolTipText("Time Slider");
 		timeSlider.setMaximum(cont.getModel().getMaxIterations() - 1);
 		timeSlider.setValue(0);
-		timeSlider.addChangeListener(changeEvent -> control.setCurIteration(timeSlider.getValue()));
+		timeSlider.addChangeListener(changeEvent -> control.getModel().setCurrentIteration(timeSlider.getValue()));
 
 		timeSlider.addMouseListener(new MouseAdapter() {
 			@Override
@@ -168,7 +169,7 @@ public class TimePanel extends JPanel implements ActionListener {
 		timeResetBtn.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent ae) {
 				timeSlider.setValue(timeSlider.getMinimum());
-				control.setCurIteration(timeSlider.getValue());
+				control.getModel().setCurrentIteration(timeSlider.getValue());
 				control.resetSimulation();
 				control.calculateStateAndVisualForCurrentTimeStep();
 				if (running) {
@@ -184,7 +185,7 @@ public class TimePanel extends JPanel implements ActionListener {
 		timeForwardBtn.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent ae) {
 				timeSlider.setValue(timeSlider.getValue() + 1);
-				control.setCurIteration(timeSlider.getValue());
+				control.getModel().setCurrentIteration(timeSlider.getValue());
 			}
 		});
 		timeBackwardBtn.setToolTipText("Backward");
@@ -194,7 +195,7 @@ public class TimePanel extends JPanel implements ActionListener {
 		timeBackwardBtn.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent ae) {
 				timeSlider.setValue(timeSlider.getValue() - 1);
-				control.setCurIteration(timeSlider.getValue());
+				control.getModel().setCurrentIteration(timeSlider.getValue());
 			}
 		});
 
@@ -233,7 +234,7 @@ public class TimePanel extends JPanel implements ActionListener {
 				 * Second and so on,
 				 */
 				int calculationsPerSecond = 1 << speedSlider.getValue();
-				control.setTimerSpeed(1024 >> speedSlider.getValue());
+				GuiSettings.timerSpeed = (1024 >> speedSlider.getValue());
 				speedSlider.setToolTipText("Speed: " + calculationsPerSecond + " Calculations per Second.");
 			}
 		});
@@ -322,7 +323,7 @@ public class TimePanel extends JPanel implements ActionListener {
 	
 	public void timerAction() {
 		timeSlider.setValue(timeSlider.getValue() + 1);
-		control.setCurIteration(timeSlider.getValue());
+		control.getModel().setCurrentIteration(timeSlider.getValue());
 		timer.setDelay(control.getModel().getTimerSpeed());
 		if (timeSlider.getValue() >= control.getModel().getMaxIterations() - 1) {
 			running = false;