Browse Source

Adds EdgeCapacityVisibilityToggle

TomTroppmann 2 years ago
parent
commit
589934ab29

+ 3 - 0
src/holeg/preferences/PreferenceKeys.java

@@ -7,7 +7,10 @@ public class PreferenceKeys {
         public static final String YPos = "YPos";
         public static final String Width = "Width";
         public static final String Height = "Height";
+    }
+    public static class Appearance {
         public static final String SupplyBarVisible = "SupplyBarVisible";
+        public static final String EdgeCapacityVisible = "EdgeCapacityVisible";
     }
     public static class EmailNotification{
         public static final String Hostname = "Hostname";

+ 1 - 1
src/holeg/ui/model/GuiSettings.java

@@ -18,7 +18,7 @@ public class GuiSettings {
     
     
     public static int timerSpeed = 1000;
-    public static boolean showSupplyBars = true;
+
     public static float maxCapacityForNewCreatedEdges = 10000;
     
     

+ 9 - 22
src/holeg/ui/view/canvas/Canvas.java

@@ -30,8 +30,6 @@ public class Canvas extends JPanel {
     private final JMenuItem deleteMenu = new JMenuItem("Delete");
     private final JMenuItem templateMenu = new JMenuItem("Template");
 
-    private AbstractCanvasObject checkForReplacement;
-
 
 
     public Canvas(Control control, GroupNode groupNode) {
@@ -58,19 +56,12 @@ public class Canvas extends JPanel {
             control.deleteCanvasObjects(GuiSettings.getSelectedObjects());
             control.clearSelection();
         });
-        groupMenu.addActionListener(clicked -> {
-           control.group();
-        });
-        ungroupMenu.addActionListener(clicked -> {
-            control.ungroup();
-        });
-        templateMenu.addActionListener(clicked -> {
-            GuiSettings.getSelectedObjects().stream().findAny().ifPresent(obj -> {
-               HolonObject hObject = (HolonObject)obj;
-                CreateTemplatePopUp templateDialog = new CreateTemplatePopUp(hObject, (JFrame) SwingUtilities.getWindowAncestor(this), control);
-            });
-
-        });
+        groupMenu.addActionListener(clicked -> control.group());
+        ungroupMenu.addActionListener(clicked -> control.ungroup());
+        templateMenu.addActionListener(clicked -> GuiSettings.getSelectedObjects().stream().findAny().ifPresent(obj -> {
+           HolonObject hObject = (HolonObject)obj;
+            new CreateTemplatePopUp(hObject, (JFrame) SwingUtilities.getWindowAncestor(this), control);
+        }));
 
     }
 
@@ -147,7 +138,6 @@ public class Canvas extends JPanel {
             if (current.getGroupNode().get() == this.groupNode) {
                 return Optional.of(current);
             }
-            ;
             current = current.getGroupNode().get();
         }
         return Optional.empty();
@@ -280,7 +270,8 @@ public class Canvas extends JPanel {
 
                     Node node = new Node("Node");
                     groupNode.add(node);
-                    Geometry.Circle detectionCircle = new Geometry.Circle(new Vec2f(lastPosition), 15f);
+                    final float splitDetectionDistance = 15f;
+                    Geometry.Circle detectionCircle = new Geometry.Circle(new Vec2f(lastPosition), splitDetectionDistance);
                     node.setPosition(new Vec2i(boundsToCanvas(lastPosition)));
                     for(Edge edge : control.getModel().getEdgesOnCanvas()) {
                         if(edge.getA().getGroupNode().isEmpty() || edge.getB().getGroupNode().isEmpty() ||
@@ -299,11 +290,7 @@ public class Canvas extends JPanel {
                     control.addEdgeOnCanvas(new Edge(selectedOnPressed, node, GuiSettings.maxCapacityForNewCreatedEdges));
                     control.calculateStateForCurrentIteration();
                 });
-                case ObjectDragging -> {
-                    checkForReplacement(new Vec2i(e.getPoint())).ifPresent(obj -> {
-                       control.replaceCanvasObject(obj, selectedOnPressed);
-                    });
-                }
+                case ObjectDragging -> checkForReplacement(new Vec2i(e.getPoint())).ifPresent(obj -> control.replaceCanvasObject(obj, selectedOnPressed));
             }
             canBeReplaced = false;
             state = State.None;

+ 5 - 2
src/holeg/ui/view/canvas/Rendering.java

@@ -5,6 +5,7 @@ import holeg.preferences.ColorPreference;
 import holeg.preferences.ImagePreference;
 import holeg.ui.model.GuiSettings;
 import holeg.ui.view.image.Import;
+import holeg.ui.view.main.Appearance;
 import holeg.utility.math.vector.Vec2i;
 
 import java.awt.*;
@@ -42,7 +43,7 @@ class Rendering {
         g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() - GuiSettings.getPictureScaleDiv2(),
                 GuiSettings.getPictureScale(), GuiSettings.getPictureScale());
         drawCanvasObject(g, hO.getImagePath(), pos);
-        if (GuiSettings.showSupplyBars && (hO.isConsumer() && !hO.getState().equals(HolonObject.HolonObjectState.NO_ENERGY) )) {
+        if (Appearance.supplyBarVisible && (hO.isConsumer() && !hO.getState().equals(HolonObject.HolonObjectState.NO_ENERGY) )) {
             drawSupplyBar(g, hO.getSupplyBarPercentage(), stateColor, pos);
         }
     }
@@ -83,7 +84,9 @@ class Rendering {
         }
         g.drawLine(start.getX(), start.getY(), end.getX(), end.getY());
         Vec2i middle = new Vec2i((start.getX() + end.getX()) / 2, (start.getY() + end.getY()) / 2);
-        g.drawString(currentEnergy + "/" + (unlimited ? "\u221E" : capacity), middle.getX(), middle.getY());
+        if(Appearance.edgeCapacityVisible){
+            g.drawString(currentEnergy + "/" + (unlimited ? "\u221E" : capacity), middle.getX(), middle.getY());
+        }
     }
 
     static void drawExternConnection(Graphics2D g, AbstractCanvasObject object) {

+ 20 - 0
src/holeg/ui/view/main/Appearance.java

@@ -0,0 +1,20 @@
+package holeg.ui.view.main;
+
+import holeg.preferences.PreferenceKeys;
+
+import java.util.prefs.Preferences;
+
+public class Appearance {
+    private static final Preferences prefs = Preferences.userNodeForPackage(Appearance.class);
+    public static boolean supplyBarVisible = true;
+    public static boolean edgeCapacityVisible = true;
+
+    public static void loadPrefs(){
+        supplyBarVisible = prefs.getBoolean(PreferenceKeys.Appearance.SupplyBarVisible, true);
+        edgeCapacityVisible = prefs.getBoolean(PreferenceKeys.Appearance.EdgeCapacityVisible, true);
+    }
+    public static void savePrefs(){
+        prefs.putBoolean(PreferenceKeys.Appearance.SupplyBarVisible, supplyBarVisible);
+        prefs.putBoolean(PreferenceKeys.Appearance.EdgeCapacityVisible, edgeCapacityVisible);
+    }
+}

+ 13 - 14
src/holeg/ui/view/main/Gui.java

@@ -1,6 +1,5 @@
 package holeg.ui.view.main;
 
-import holeg.model.AbstractCanvasObject;
 import holeg.model.GroupNode;
 import holeg.model.Model;
 import holeg.preferences.ImagePreference;
@@ -26,13 +25,11 @@ import javax.swing.*;
 import javax.swing.filechooser.FileNameExtensionFilter;
 import javax.swing.filechooser.FileSystemView;
 import java.awt.*;
-import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.io.File;
 import java.net.URI;
 import java.util.Optional;
-import java.util.Set;
 import java.util.logging.Logger;
 import java.util.prefs.Preferences;
 import java.util.stream.Collectors;
@@ -72,12 +69,12 @@ public class Gui extends JFrame {
     private void initFrame() {
         this.setIconImage(Import.loadImage(ImagePreference.Logo, 30, 30));
         this.setBounds(new Rectangle(prefs.getInt(PreferenceKeys.Gui.Width, 1200), prefs.getInt(PreferenceKeys.Gui.Height, 800)));
+        Appearance.loadPrefs();
         if (prefs.get(PreferenceKeys.Gui.Width, null) != null) {
             this.setLocation(prefs.getInt(PreferenceKeys.Gui.XPos, 1200), prefs.getInt(PreferenceKeys.Gui.YPos, 800));
         } else {
             this.setLocationRelativeTo(null);
         }
-        GuiSettings.showSupplyBars = prefs.getBoolean(PreferenceKeys.Gui.SupplyBarVisible, true);
         this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
         this.addWindowListener((WindowClosingListener) e -> {
             Rectangle bounds = this.getBounds();
@@ -85,7 +82,7 @@ public class Gui extends JFrame {
             prefs.putInt(PreferenceKeys.Gui.YPos, bounds.y);
             prefs.putInt(PreferenceKeys.Gui.Width, bounds.width);
             prefs.putInt(PreferenceKeys.Gui.Height, bounds.height);
-            prefs.putBoolean(PreferenceKeys.Gui.SupplyBarVisible, GuiSettings.showSupplyBars);
+            Appearance.savePrefs();
             control.saveCategories();
             if (JOptionPane.showConfirmDialog(this, "Are you sure you want to exit?", "HOLEG",
                     JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
@@ -178,7 +175,8 @@ public class Gui extends JFrame {
         //ViewMenu
         private final JMenu appearanceMenu = new JMenu("Appearance");
         private final JMenuItem canvasSizeButton = new JMenuItem("Set View Size");
-        private final JCheckBoxMenuItem showSupplyBarsCheckBox = new JCheckBoxMenuItem("Show supply bars.", GuiSettings.showSupplyBars);
+        private final JCheckBoxMenuItem showSupplyBarsCheckBox = new JCheckBoxMenuItem("Supply bars", Appearance.supplyBarVisible);
+        private final JCheckBoxMenuItem edgeCapacityVisibleCheckBox = new JCheckBoxMenuItem("Edge Capacity", Appearance.edgeCapacityVisible);
         private final JFileChooser fileChooser = initFileChooser();
 
         private final static int IconSize = 15;
@@ -250,6 +248,7 @@ public class Gui extends JFrame {
 
             viewMenu.add(appearanceMenu);
             appearanceMenu.add(showSupplyBarsCheckBox);
+            appearanceMenu.add(edgeCapacityVisibleCheckBox);
             viewMenu.add(canvasSizeButton);
 
             windowMenu.add(algorithmButton);
@@ -287,7 +286,14 @@ public class Gui extends JFrame {
             });
             resetCategoryButton.addActionListener(clicked -> control.resetCategories());
 
-            showSupplyBarsCheckBox.addActionListener(clicked -> toggleSupplyBarAppearance());
+            showSupplyBarsCheckBox.addActionListener(clicked -> {
+                Appearance.supplyBarVisible = showSupplyBarsCheckBox.isSelected();
+                control.OnCanvasUpdate.broadcast();
+            });
+            edgeCapacityVisibleCheckBox.addActionListener(clicked -> {
+                Appearance.edgeCapacityVisible = edgeCapacityVisibleCheckBox.isSelected();
+                control.OnCanvasUpdate.broadcast();
+            });
             canvasSizeButton.addActionListener(clicked -> new CanvasResizePopUp(control, Gui.this));
             algorithmButton.addActionListener(clicked -> new AddOnWindow(Gui.this, control));
             outlinerButton.addActionListener(clicked -> new Outliner(Gui.this, control));
@@ -347,13 +353,6 @@ public class Gui extends JFrame {
             flexMenuButton.setAccelerator(KeyStroke.getKeyStroke('F', InputEvent.ALT_DOWN_MASK));
         }
 
-
-
-        private void toggleSupplyBarAppearance() {
-            GuiSettings.showSupplyBars = showSupplyBarsCheckBox.isSelected();
-            control.OnCanvasUpdate.broadcast();
-        }
-
         private void saveFile() {
             GuiSettings.getActualSaveFile().ifPresentOrElse(control::saveFile, this::saveNewFile);
         }