From 0f47403d0220757fed189b76e2071e25b1025cb8 Mon Sep 17 00:00:00 2001 From: Runemoro Date: Wed, 3 Jun 2020 13:39:42 -0400 Subject: Split GUI code to separate module (#242) * Split into modules * Post merge compile fixes Co-authored-by: modmuss50 --- .../enigma/gui/util/AbstractListCellRenderer.java | 77 --------------- src/main/java/cuchaz/enigma/gui/util/History.java | 49 --------- .../enigma/gui/util/ScaleChangeListener.java | 8 -- .../java/cuchaz/enigma/gui/util/ScaleUtil.java | 110 --------------------- 4 files changed, 244 deletions(-) delete mode 100644 src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java delete mode 100644 src/main/java/cuchaz/enigma/gui/util/History.java delete mode 100644 src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java delete mode 100644 src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java (limited to 'src/main/java/cuchaz/enigma/gui/util') diff --git a/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java b/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java deleted file mode 100644 index 612e3e9..0000000 --- a/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java +++ /dev/null @@ -1,77 +0,0 @@ -package cuchaz.enigma.gui.util; - -import java.awt.Component; -import java.awt.event.MouseEvent; - -import javax.swing.*; -import javax.swing.border.Border; - -public abstract class AbstractListCellRenderer extends JPanel implements ListCellRenderer { - - private static final Border NO_FOCUS_BORDER = BorderFactory.createEmptyBorder(1, 1, 1, 1); - - private Border noFocusBorder; - - public AbstractListCellRenderer() { - setBorder(getNoFocusBorder()); - } - - protected Border getNoFocusBorder() { - if (noFocusBorder == null) { - Border border = UIManager.getLookAndFeel().getDefaults().getBorder("List.List.cellNoFocusBorder"); - noFocusBorder = border != null ? border : NO_FOCUS_BORDER; - } - return noFocusBorder; - } - - protected Border getBorder(boolean isSelected, boolean cellHasFocus) { - Border b = null; - if (cellHasFocus) { - UIDefaults defaults = UIManager.getLookAndFeel().getDefaults(); - if (isSelected) { - b = defaults.getBorder("List.focusSelectedCellHighlightBorder"); - } - if (b == null) { - b = defaults.getBorder("List.focusCellHighlightBorder"); - } - } else { - b = getNoFocusBorder(); - } - return b; - } - - public abstract void updateUiForEntry(JList list, E value, int index, boolean isSelected, boolean cellHasFocus); - - @Override - public Component getListCellRendererComponent(JList list, E value, int index, boolean isSelected, boolean cellHasFocus) { - updateUiForEntry(list, value, index, isSelected, cellHasFocus); - - if (isSelected) { - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - } else { - setBackground(list.getBackground()); - setForeground(list.getForeground()); - } - - setEnabled(list.isEnabled()); - setFont(list.getFont()); - - setBorder(getBorder(isSelected, cellHasFocus)); - - // This isn't the width of the cell, but it's close enough for where it's needed (getComponentAt in getToolTipText) - setSize(list.getWidth(), getPreferredSize().height); - - return this; - } - - @Override - public String getToolTipText(MouseEvent event) { - Component c = getComponentAt(event.getPoint()); - if (c instanceof JComponent) { - return ((JComponent) c).getToolTipText(); - } - return getToolTipText(); - } - -} diff --git a/src/main/java/cuchaz/enigma/gui/util/History.java b/src/main/java/cuchaz/enigma/gui/util/History.java deleted file mode 100644 index 94f3105..0000000 --- a/src/main/java/cuchaz/enigma/gui/util/History.java +++ /dev/null @@ -1,49 +0,0 @@ -package cuchaz.enigma.gui.util; - -import com.google.common.collect.Queues; - -import java.util.Deque; - -public class History { - private final Deque previous = Queues.newArrayDeque(); - private final Deque next = Queues.newArrayDeque(); - private T current; - - public History(T initial) { - current = initial; - } - - public T getCurrent() { - return current; - } - - public void push(T value) { - previous.addLast(current); - current = value; - next.clear(); - } - - public void replace(T value) { - current = value; - } - - public boolean canGoBack() { - return !previous.isEmpty(); - } - - public T goBack() { - next.addFirst(current); - current = previous.removeLast(); - return current; - } - - public boolean canGoForward() { - return !next.isEmpty(); - } - - public T goForward() { - previous.addLast(current); - current = next.removeFirst(); - return current; - } -} diff --git a/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java b/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java deleted file mode 100644 index d045c6d..0000000 --- a/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java +++ /dev/null @@ -1,8 +0,0 @@ -package cuchaz.enigma.gui.util; - -@FunctionalInterface -public interface ScaleChangeListener { - - void onScaleChanged(float scale, float oldScale); - -} diff --git a/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java b/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java deleted file mode 100644 index 9f722e9..0000000 --- a/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java +++ /dev/null @@ -1,110 +0,0 @@ -package cuchaz.enigma.gui.util; - -import java.awt.Dimension; -import java.awt.Font; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.BorderFactory; -import javax.swing.UIManager; -import javax.swing.border.Border; - -import com.github.swingdpi.UiDefaultsScaler; -import com.github.swingdpi.plaf.BasicTweaker; -import com.github.swingdpi.plaf.MetalTweaker; -import com.github.swingdpi.plaf.NimbusTweaker; -import com.github.swingdpi.plaf.WindowsTweaker; -import cuchaz.enigma.config.Config; -import de.sciss.syntaxpane.DefaultSyntaxKit; - -public class ScaleUtil { - - private static List listeners = new ArrayList<>(); - - public static float getScaleFactor() { - return Config.getInstance().scaleFactor; - } - - public static void setScaleFactor(float scaleFactor) { - float oldScale = getScaleFactor(); - float clamped = Math.min(Math.max(0.25f, scaleFactor), 10.0f); - Config.getInstance().scaleFactor = clamped; - try { - Config.getInstance().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - listeners.forEach(l -> l.onScaleChanged(clamped, oldScale)); - } - - public static void addListener(ScaleChangeListener listener) { - listeners.add(listener); - } - - public static void removeListener(ScaleChangeListener listener) { - listeners.remove(listener); - } - - public static Dimension getDimension(int width, int height) { - return new Dimension(scale(width), scale(height)); - } - - public static Font getFont(String fontName, int plain, int fontSize) { - return scaleFont(new Font(fontName, plain, fontSize)); - } - - public static Font scaleFont(Font font) { - return createTweakerForCurrentLook(getScaleFactor()).modifyFont("", font); - } - - public static float scale(float f) { - return f * getScaleFactor(); - } - - public static float invert(float f) { - return f / getScaleFactor(); - } - - public static int scale(int i) { - return (int) (i * getScaleFactor()); - } - - public static Border createEmptyBorder(int top, int left, int bottom, int right) { - return BorderFactory.createEmptyBorder(scale(top), scale(left), scale(bottom), scale(right)); - } - - public static int invert(int i) { - return (int) (i / getScaleFactor()); - } - - public static void applyScaling() { - float scale = getScaleFactor(); - UiDefaultsScaler.updateAndApplyGlobalScaling((int) (100 * scale), true); - try { - Field defaultFontField = DefaultSyntaxKit.class.getDeclaredField("DEFAULT_FONT"); - defaultFontField.setAccessible(true); - Font font = (Font) defaultFontField.get(null); - font = font.deriveFont(12 * scale); - defaultFontField.set(null, font); - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } - } - - private static BasicTweaker createTweakerForCurrentLook(float dpiScaling) { - String testString = UIManager.getLookAndFeel().getName().toLowerCase(); - if (testString.contains("windows")) { - return new WindowsTweaker(dpiScaling, testString.contains("classic")); - } - if (testString.contains("metal")) { - return new MetalTweaker(dpiScaling); - } - if (testString.contains("nimbus")) { - return new NimbusTweaker(dpiScaling); - } - return new BasicTweaker(dpiScaling); - } - -} -- cgit v1.2.3