From 3747ef33a4359d1b0f746e5a895b910fe0852bae Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Fri, 12 Apr 2024 19:37:37 +0300 Subject: [PATCH] move config classes to its own module, make font configurable --- config.json.example | 4 +++- src/main/java/com/mykola2312/mptv/Main.java | 3 ++- .../com/mykola2312/mptv/{ => config}/Config.java | 12 ++---------- .../com/mykola2312/mptv/config/FrameConfig.java | 10 ++++++++++ src/main/java/com/mykola2312/mptv/ui/MainFrame.java | 13 +++++++------ src/main/java/com/mykola2312/mptv/ui/MenuPanel.java | 8 ++++++++ 6 files changed, 32 insertions(+), 18 deletions(-) rename src/main/java/com/mykola2312/mptv/{ => config}/Config.java (55%) create mode 100644 src/main/java/com/mykola2312/mptv/config/FrameConfig.java diff --git a/config.json.example b/config.json.example index a941580..3b71e13 100644 --- a/config.json.example +++ b/config.json.example @@ -2,6 +2,8 @@ "frame": { "width": 1366, "height": 1024, - "fullscreen": false + "fullscreen": false, + "fontName": "Arial", + "fontSize": 64 } } \ No newline at end of file diff --git a/src/main/java/com/mykola2312/mptv/Main.java b/src/main/java/com/mykola2312/mptv/Main.java index 6f143dd..a82024c 100644 --- a/src/main/java/com/mykola2312/mptv/Main.java +++ b/src/main/java/com/mykola2312/mptv/Main.java @@ -1,5 +1,6 @@ package com.mykola2312.mptv; +import com.mykola2312.mptv.config.Config; import com.mykola2312.mptv.ui.MainFrame; import org.apache.commons.cli.*; @@ -34,6 +35,6 @@ public class Main { } MainFrame frame = new MainFrame(); - frame.create(config.frame.width, config.frame.height, config.frame.fullscreen); + frame.create(config.frame); } } diff --git a/src/main/java/com/mykola2312/mptv/Config.java b/src/main/java/com/mykola2312/mptv/config/Config.java similarity index 55% rename from src/main/java/com/mykola2312/mptv/Config.java rename to src/main/java/com/mykola2312/mptv/config/Config.java index e8da9cf..02f9274 100644 --- a/src/main/java/com/mykola2312/mptv/Config.java +++ b/src/main/java/com/mykola2312/mptv/config/Config.java @@ -1,20 +1,12 @@ -package com.mykola2312.mptv; +package com.mykola2312.mptv.config; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; import java.io.File; import java.io.IOException; public class Config { - - public class Frame { - public short width; - public short height; - public boolean fullscreen; - - } - public Frame frame; + public FrameConfig frame; public static Config loadConfig(String path) throws IOException { return new ObjectMapper().readerFor(Config.class).readValue(new File(path)); diff --git a/src/main/java/com/mykola2312/mptv/config/FrameConfig.java b/src/main/java/com/mykola2312/mptv/config/FrameConfig.java new file mode 100644 index 0000000..4316ba4 --- /dev/null +++ b/src/main/java/com/mykola2312/mptv/config/FrameConfig.java @@ -0,0 +1,10 @@ +package com.mykola2312.mptv.config; + +public class FrameConfig { + public short width; + public short height; + public boolean fullscreen; + + public String fontName; + public short fontSize; +} diff --git a/src/main/java/com/mykola2312/mptv/ui/MainFrame.java b/src/main/java/com/mykola2312/mptv/ui/MainFrame.java index 26462ba..645ae3e 100644 --- a/src/main/java/com/mykola2312/mptv/ui/MainFrame.java +++ b/src/main/java/com/mykola2312/mptv/ui/MainFrame.java @@ -1,6 +1,7 @@ package com.mykola2312.mptv.ui; import com.mykola2312.mptv.I18n; +import com.mykola2312.mptv.config.FrameConfig; import javax.swing.*; import java.awt.*; @@ -9,20 +10,20 @@ public class MainFrame { private JFrame frame; private MenuPanel menu; - private void spawn(short width, short height, boolean fullscreen) { - Font font = new Font("Arial", Font.PLAIN, 48); + private void spawn(FrameConfig config) { + Font font = new Font(config.fontName, Font.PLAIN, config.fontSize); frame = new JFrame(I18n.get("MainFrame_Title")); menu = new MenuPanel(font); frame.add(menu, BorderLayout.CENTER); - if (fullscreen) { + if (config.fullscreen) { frame.setUndecorated(true); frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); } else { - Dimension size = new Dimension(width, height); + Dimension size = new Dimension(config.width, config.height); frame.setPreferredSize(size); frame.setSize(size); } @@ -30,9 +31,9 @@ public class MainFrame { frame.setVisible(true); } - public void create(short width, short height, boolean fullscreen) { + public void create(FrameConfig config) { SwingUtilities.invokeLater(() -> { - spawn(width, height, fullscreen); + spawn(config); }); } } diff --git a/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java b/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java index f7befa0..4f96bc2 100644 --- a/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java +++ b/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java @@ -84,10 +84,16 @@ public class MenuPanel extends JPanel { switch (menuPosition) { case MENU_CATEGORIES -> { + categoryList.setEnabled(true); + channelList.setEnabled(false); + categoryList.setSelectedIndex(categoryIndex); categoryList.ensureIndexIsVisible(categoryIndex); } case MENU_CHANNELS -> { + categoryList.setEnabled(false); + channelList.setEnabled(true); + channelList.setSelectedIndex(channelIndex); channelList.ensureIndexIsVisible(channelIndex); } @@ -144,5 +150,7 @@ public class MenuPanel extends JPanel { getActionMap().put("D", new KeyboardMenuAction(this, MenuAction.ACTION_RIGHT)); menuPosition = MenuPosition.MENU_CATEGORIES; + categoryList.setEnabled(true); + channelList.setEnabled(false); } }