Browse Source

Toggel Button

Troppmann, Tom 3 years ago
parent
commit
232507da02

+ 1 - 1
src/addOns/RandomSwitch.java

@@ -62,7 +62,7 @@ public class RandomSwitch implements AddOn {
 		return flipChance;
 	}
 	private void run() {
-		for (HolonSwitch s : control.getModel().getSwitches()) {
+		for (HolonSwitch s : control.getModel().getAllSwitches()) {
 			// Set to Manual Mode
 			s.setManualMode(true);
 			// Generate a random number between 0 and 1

+ 4 - 1
src/algorithm/objectiveFunction/GraphMetrics.java

@@ -16,6 +16,7 @@ import ui.model.Supplier;
 public class GraphMetrics {
 	
 	
+	
 	public static class Vertex{
 		public int id = 0;
 		public Vertex(int id){
@@ -35,6 +36,8 @@ public class GraphMetrics {
 	public static class Graph{
 		Vertex[] V;
 		Edge[] E;
+		//For disjoint Path
+		Vertex[] Sources;
 	}
 	
 	
@@ -183,7 +186,7 @@ public class GraphMetrics {
 	  * Source from
 	  * <a href="https://github.com/hunglvosu/algorithm/blob/master/algorithm/src/Stoer-Wagner.c">
 	  * https://github.com/hunglvosu/algorithm/blob/master/algorithm/src/Stoer-Wagner.c</a> <br>
-	  * in C formatted in java
+	  * in C formatted written in java
 	  * @param V Vertex Array
 	  * @param E Edge Array
 	  * @return

+ 25 - 10
src/api/TopologieAlgorithmFramework.java

@@ -1,10 +1,8 @@
 package api;
 
 import java.awt.BorderLayout;
-import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
-import java.awt.image.BufferedImage;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -16,7 +14,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -29,13 +26,11 @@ import java.util.stream.Collectors;
 import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
-import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JFileChooser;
 import javax.swing.JFormattedTextField;
 import javax.swing.JLabel;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JProgressBar;
 import javax.swing.JScrollPane;
@@ -46,7 +41,6 @@ import classes.Category;
 import classes.Edge;
 import classes.GroupNode;
 import classes.Flexibility;
-import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.IdCounterElem;
@@ -54,12 +48,9 @@ import classes.Node;
 import classes.HolonElement.Priority;
 import ui.controller.Control;
 import ui.controller.FlexManager.FlexState;
-import ui.controller.FlexManager.FlexWrapper;
 import ui.model.DecoratedGroupNode;
 import ui.model.DecoratedState;
-import ui.model.IntermediateCableWithState;
 import ui.model.Model;
-import ui.model.DecoratedCable.CableState;
 import ui.model.DecoratedHolonObject.HolonObjectState;
 import ui.model.DecoratedSwitch.SwitchState;
 import ui.model.DecoratedNetwork;
@@ -126,6 +117,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	@SuppressWarnings("rawtypes")
 	LinkedList<ParameterStepping> parameterSteppingList= new LinkedList<ParameterStepping>();
 	protected boolean useStepping = false;
+	//SwitchButton
 	
 
 	
@@ -179,6 +171,13 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	private JPanel createButtonPanel() {
 		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
 		
+		JButton toggleSwitchesButton =  new JButton("Toggle Switches");
+		toggleSwitchesButton.setToolTipText("Set all switches active or inactive.");
+		toggleSwitchesButton.addActionListener(actionEvent -> toggleSwitches());
+		buttonPanel.add(toggleSwitchesButton);
+		
+		
+		
 		JButton resetButton =  new JButton("Reset");
 		resetButton.setToolTipText("Resets the State to before the Algorithm has runed.");
 		resetButton.addActionListener(actionEvent -> reset());
@@ -216,6 +215,22 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	
 	//ParameterImports
 	
+	private void toggleSwitches() {
+		List<HolonSwitch> allSwitchList = control.getModel().getAllSwitches();
+		if(allSwitchList.isEmpty()) return;
+		boolean set = allSwitchList.get(0).getState(control.getModel().getCurIteration());
+		allSwitchList.forEach(hSwitch -> {
+			hSwitch.setManualMode(true);
+			hSwitch.setManualState(!set);
+		});
+		updateVisual();
+	}
+
+
+
+
+
+
 	//int
 	protected void addIntParameter(String parameterName, int parameterValue, Consumer<Integer> setter, Supplier<Integer> getter) {
 		this.addIntParameter(parameterName, parameterValue, setter, getter, Integer.MIN_VALUE, Integer.MAX_VALUE);
@@ -825,7 +840,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 		}
 		IndexCable cable = new IndexCable(index0, index1);
 		//if cable is in existing cables
-		if(cableSet.contains(cable) || addedIndexCable.values().contains(cable)) {
+		if(cableSet.contains(cable) || addedIndexCable.keySet().contains(cable)) {
 			return;
 		}
 		generateEdgeFromIndexCable(cable, switchBetween);

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

@@ -790,7 +790,7 @@ public class Model {
     /**
      * get all Switches
      */
-    public ArrayList<HolonSwitch> getSwitches() {
+    public ArrayList<HolonSwitch> getAllSwitches() {
         ArrayList<HolonSwitch> switches = new ArrayList<>();
         for (AbstractCanvasObject obj : getObjectsOnCanvas()) {
             if (obj instanceof HolonSwitch) {

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

@@ -233,7 +233,7 @@ public class StatisticGraph extends JPanel {
                     }
                     break;
                 case TrackedDataSet.AMOUNT_CLOSED_SWITCHES:
-                    val = model.getSwitches().size();
+                    val = model.getAllSwitches().size();
                     break;
                 case TrackedDataSet.AVG_AMOUNT_OBJECTS_IN_HOLONS:
                     for (SubNet sub : controller.getSimManager().getSubNets()) {
@@ -389,7 +389,7 @@ public class StatisticGraph extends JPanel {
                     set.setValAt(controller.getSimManager().getSubNets().size(), model.getCurIteration());
                     break;
                 case TrackedDataSet.AMOUNT_CLOSED_SWITCHES:
-                    for (HolonSwitch s : model.getSwitches()) {
+                    for (HolonSwitch s : model.getAllSwitches()) {
                         if (s.getState(model.getCurIteration())) {
                             val++;
                         }