Browse Source

Adds Energy visibility on canvas

TomTroppmann 2 years ago
parent
commit
882673285c

+ 2 - 0
src/holeg/preferences/ColorPreference.java

@@ -86,6 +86,8 @@ public class ColorPreference {
         public static final Color MouseSelectionFill = new Color(128, 174, 247, 40);
         public static final Color ObjectSelectionBorder = new Color(153, 209, 255);
         public static final Color ObjectSelectionFill = new Color(205, 233, 255);
+        public static final Color HolonObjectEnergy = new Color(26, 26, 26);
+
     }
 
     public static class InformationPanel{

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

@@ -11,6 +11,7 @@ public class PreferenceKeys {
     public static class Appearance {
         public static final String SupplyBarVisible = "SupplyBarVisible";
         public static final String EdgeCapacityVisible = "EdgeCapacityVisible";
+        public static final String CanvasObjectEnergyVisible = "CanvasObjectEnergyVisible";
     }
     public static class EmailNotification{
         public static final String Hostname = "Hostname";

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

@@ -6,6 +6,7 @@ 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.decimal.Format;
 import holeg.utility.math.vector.Vec2i;
 
 import java.awt.*;
@@ -21,8 +22,6 @@ class Rendering {
     private static final Dimension SupplyBarDimensions = new Dimension(GuiSettings.getPictureScale(), GuiSettings.getPictureScale() / 5);
     private static final Font SupplyBarFont = new Font("TimesNewRoman", Font.PLAIN, (int) (GuiSettings.getPictureScale() * 0.3) - 2);
 
-    private static final Image ReplaceSymbol = Import.loadImage(
-            ImagePreference.Canvas.ReplaceSymbol, 20, 20);
 
 
     static Graphics2D initGraphics2D(Graphics g) {
@@ -39,6 +38,12 @@ class Rendering {
     static void drawHolonObject(Graphics2D g, HolonObject hO) {
         Vec2i pos = hO.getPosition();
         Color stateColor = ColorPreference.HolonObject.getStateColor(hO.getState());
+        g.setColor(ColorPreference.Canvas.HolonObjectEnergy);
+        if(Appearance.canvasObjectEnergyVisible){
+            final int gapBetweenRectAndEnergyString = 1;
+            g.drawString(Format.doubleTwoPlaces(hO.getActualEnergy()),pos.getX() - GuiSettings.getPictureScaleDiv2(),
+                    pos.getY() - GuiSettings.getPictureScaleDiv2() - gapBetweenRectAndEnergyString);
+        }
         g.setColor(stateColor);
         g.fillRect(pos.getX() - GuiSettings.getPictureScaleDiv2(), pos.getY() - GuiSettings.getPictureScaleDiv2(),
                 GuiSettings.getPictureScale(), GuiSettings.getPictureScale());

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

@@ -8,13 +8,16 @@ public class Appearance {
     private static final Preferences prefs = Preferences.userNodeForPackage(Appearance.class);
     public static boolean supplyBarVisible = true;
     public static boolean edgeCapacityVisible = true;
+    public static boolean canvasObjectEnergyVisible = true;
 
     public static void loadPrefs(){
         supplyBarVisible = prefs.getBoolean(PreferenceKeys.Appearance.SupplyBarVisible, true);
         edgeCapacityVisible = prefs.getBoolean(PreferenceKeys.Appearance.EdgeCapacityVisible, true);
+        canvasObjectEnergyVisible = prefs.getBoolean(PreferenceKeys.Appearance.EdgeCapacityVisible, true);
     }
     public static void savePrefs(){
         prefs.putBoolean(PreferenceKeys.Appearance.SupplyBarVisible, supplyBarVisible);
         prefs.putBoolean(PreferenceKeys.Appearance.EdgeCapacityVisible, edgeCapacityVisible);
+        prefs.putBoolean(PreferenceKeys.Appearance.CanvasObjectEnergyVisible, canvasObjectEnergyVisible);
     }
 }

+ 7 - 1
src/holeg/ui/view/main/Gui.java

@@ -176,7 +176,8 @@ public class Gui extends JFrame {
         private final JMenu appearanceMenu = new JMenu("Appearance");
         private final JMenuItem canvasSizeButton = new JMenuItem("Set View Size");
         private final JCheckBoxMenuItem showSupplyBarsCheckBox = new JCheckBoxMenuItem("Supply bars", Appearance.supplyBarVisible);
-        private final JCheckBoxMenuItem edgeCapacityVisibleCheckBox = new JCheckBoxMenuItem("Edge Capacity", Appearance.edgeCapacityVisible);
+        private final JCheckBoxMenuItem edgeCapacityVisibleCheckBox = new JCheckBoxMenuItem("Edge capacity", Appearance.edgeCapacityVisible);
+        private final JCheckBoxMenuItem canvasObjectEnergyVisibleCheckBox = new JCheckBoxMenuItem("HolonObject energy", Appearance.canvasObjectEnergyVisible);
         private final JFileChooser fileChooser = initFileChooser();
 
         private final static int IconSize = 15;
@@ -249,6 +250,7 @@ public class Gui extends JFrame {
             viewMenu.add(appearanceMenu);
             appearanceMenu.add(showSupplyBarsCheckBox);
             appearanceMenu.add(edgeCapacityVisibleCheckBox);
+            appearanceMenu.add(canvasObjectEnergyVisibleCheckBox);
             viewMenu.add(canvasSizeButton);
 
             windowMenu.add(algorithmButton);
@@ -294,6 +296,10 @@ public class Gui extends JFrame {
                 Appearance.edgeCapacityVisible = edgeCapacityVisibleCheckBox.isSelected();
                 control.OnCanvasUpdate.broadcast();
             });
+            canvasObjectEnergyVisibleCheckBox.addActionListener(clicked -> {
+                Appearance.canvasObjectEnergyVisible = canvasObjectEnergyVisibleCheckBox.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));