Restructured the Preferences system
[Mograsim.git] / plugins / net.mograsim.logic.model / src / net / mograsim / logic / model / model / components / atomic / ModelManualSwitch.java
index f495b4e..ef3c817 100644 (file)
@@ -1,5 +1,8 @@
 package net.mograsim.logic.model.model.components.atomic;
 
+import static net.mograsim.logic.model.preferences.RenderPreferences.FOREGROUND_COLOR;
+import static net.mograsim.logic.model.preferences.RenderPreferences.TEXT_COLOR;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Consumer;
@@ -8,23 +11,23 @@ import org.eclipse.swt.graphics.Color;
 
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.core.LogicObserver;
 import net.mograsim.logic.core.components.CoreManualSwitch;
 import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.model.BitVectorFormatter;
 import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.PinUsage;
 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
 import net.mograsim.logic.model.modeladapter.componentadapters.ManualSwitchAdapter;
+import net.mograsim.logic.model.preferences.RenderPreferences;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
-import net.mograsim.preferences.Preferences;
+import net.mograsim.logic.model.util.TextRenderingHelper;
 
 public class ModelManualSwitch extends ModelComponent
 {
@@ -32,6 +35,7 @@ public class ModelManualSwitch extends ModelComponent
        private static final double height = 10;
        private static final double fontHeight = 5;
        private static final double heightMiniButtons = 4; // 0 is disabled
+       private static final double textMargin = 0.5;
 
        public final int logicWidth;
        private final Pin outputPin;
@@ -136,9 +140,9 @@ public class ModelManualSwitch extends ModelComponent
        }
 
        @Override
-       public void render(GeneralGC gc, Rectangle visibleRegion)
+       public void render(GeneralGC gc, RenderPreferences renderPrefs, Rectangle visibleRegion)
        {
-               Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+               Color foreground = renderPrefs.getColor(FOREGROUND_COLOR);
                if (foreground != null)
                        gc.setForeground(foreground);
                gc.drawRectangle(getBounds());
@@ -146,11 +150,10 @@ public class ModelManualSwitch extends ModelComponent
                Font oldFont = gc.getFont();
                Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
                gc.setFont(labelFont);
-               Point textExtent = gc.textExtent(label);
-               Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+               Color textColor = renderPrefs.getColor(TEXT_COLOR);
                if (textColor != null)
                        gc.setForeground(textColor);
-               gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
+               TextRenderingHelper.drawTextFitting(gc, label, getBounds(), textMargin, true);
                gc.setFont(oldFont);
 
                if (manualSwitch != null && logicWidth > 1 && heightMiniButtons > 0 && visibleRegion.y < getPosY() + heightMiniButtons)