From 05983ec78ff82acd0b9e2380fcd289bf03ecd729 Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 3 Jan 2016 15:32:06 -0500 Subject: [PATCH] add font/color customization support for the run sub title setting --- .../java/org/fenix/llanfair/Language.java | 2 + .../org/fenix/llanfair/config/Settings.java | 6 ++- .../fenix/llanfair/dialog/TabComponents.java | 51 ++++++++++++++++--- .../java/org/fenix/llanfair/gui/RunPane.java | 10 ++-- src/main/resources/language.properties | 2 + 5 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/fenix/llanfair/Language.java b/src/main/java/org/fenix/llanfair/Language.java index 303d163..92c5169 100644 --- a/src/main/java/org/fenix/llanfair/Language.java +++ b/src/main/java/org/fenix/llanfair/Language.java @@ -38,6 +38,7 @@ public enum Language { setting_color_timeLost, setting_color_newRecord, setting_color_title, + setting_color_subTitle, setting_color_highlight, setting_color_separators, @@ -57,6 +58,7 @@ public enum Language { setting_header_title, setting_header_showAttempts, setting_header_titleFont, + setting_header_subTitleFont, // Settings > History setting_history_rowCount, diff --git a/src/main/java/org/fenix/llanfair/config/Settings.java b/src/main/java/org/fenix/llanfair/config/Settings.java index 0fbe2d1..b1e1afb 100644 --- a/src/main/java/org/fenix/llanfair/config/Settings.java +++ b/src/main/java/org/fenix/llanfair/config/Settings.java @@ -48,6 +48,7 @@ public class Settings { public static final Property colorTimeLost = new Property<>( "color.timeLost" ); public static final Property colorNewRecord = new Property<>( "color.newRecord" ); public static final Property colorTitle = new Property<>( "color.title" ); + public static final Property colorSubTitle = new Property<>( "color.subTitle" ); public static final Property colorHighlight = new Property<>( "color.highlight" ); public static final Property colorSeparators = new Property<>( "color.separators" ); @@ -67,7 +68,8 @@ public class Settings { public static final Property headerShowSubtitle = new Property<>( "header.subTitle" ); public static final Property headerShowTitle = new Property<>( "header.title" ); public static final Property headerShowAttempts = new Property<>( "header.showAttempts" ); - public static final Property headerTitleFont = new Property<>(" header.titleFont" ); + public static final Property headerTitleFont = new Property<>( "header.titleFont" ); + public static final Property headerSubTitleFont = new Property<>( "header.subTitleFont" ); /* HISTORY properties */ @@ -215,6 +217,7 @@ public class Settings { global.put( colorTimeLost.key, Color.decode( "0xe82323" ) ); global.put( colorNewRecord.key, Color.decode( "0xf0b012" ) ); global.put( colorTitle.key, Color.decode( "0xf0b012" ) ); + global.put( colorSubTitle.key, Color.decode( "0xffffff" ) ); global.put( colorHighlight.key, Color.decode( "0xffffff" ) ); global.put( colorSeparators.key, Color.decode( "0x666666" ) ); @@ -231,6 +234,7 @@ public class Settings { global.put( headerShowTitle.key, true ); global.put( headerShowAttempts.key, true ); global.put( headerTitleFont.key, Font.decode( "Arial-14" ) ); + global.put( headerSubTitleFont.key, Font.decode( "Arial-12" ) ); global.put( historyRowCount.key, 8 ); global.put( historyTabular.key, true ); diff --git a/src/main/java/org/fenix/llanfair/dialog/TabComponents.java b/src/main/java/org/fenix/llanfair/dialog/TabComponents.java index f590b62..bbf3924 100644 --- a/src/main/java/org/fenix/llanfair/dialog/TabComponents.java +++ b/src/main/java/org/fenix/llanfair/dialog/TabComponents.java @@ -58,6 +58,10 @@ public class TabComponents extends SettingsTab private JSpinner headerTitleSize; + private JComboBox headerSubTitleFont; + + private JSpinner headerSubTitleSize; + private JComboBox coreFont; private JSpinner coreFontSize; @@ -127,6 +131,18 @@ public class TabComponents extends SettingsTab ); headerTitleSize.addChangeListener(this); + // header sub-title font family and size selector + String headerSubTitleFontName = Settings.headerSubTitleFont.get().getName(); + headerSubTitleFont = new JComboBox(gEnv.getAvailableFontFamilyNames()); + headerSubTitleFont.setSelectedItem(headerSubTitleFontName); + headerSubTitleFont.setPreferredSize(new Dimension(130, 22)); + headerSubTitleFont.addActionListener(this); + + headerSubTitleSize = new JSpinner(new SpinnerNumberModel( + Settings.headerSubTitleFont.get().getSize(), 8, 240, 1) + ); + headerSubTitleSize.addChangeListener(this); + // other/general font family and size selector String coreFontName = Settings.coreFont.get().getName(); coreFont = new JComboBox(gEnv.getAvailableFontFamilyNames()); @@ -167,6 +183,7 @@ public class TabComponents extends SettingsTab Object source = event.getSource(); if (source.equals(iconSizes)) { Settings.coreIconSize.set((Integer) iconSizes.getSelectedItem()); + } else if (source.equals(timerFont)) { String fontName = timerFont.getSelectedItem().toString(); Font font = Font.decode(fontName).deriveFont( @@ -176,12 +193,14 @@ public class TabComponents extends SettingsTab if (timerSameFont.isSelected()) { timerSegFont.setSelectedItem(fontName); } + } else if (source.equals(timerSegFont)) { String fontName = timerSegFont.getSelectedItem().toString(); Font font = Font.decode(fontName).deriveFont( (float) Settings.coreSegmentTimerFont.get().getSize() ); Settings.coreSegmentTimerFont.set(font); + } else if (source.equals(headerTitleFont)) { String fontName = headerTitleFont.getSelectedItem().toString(); Font font = Font.decode(fontName).deriveFont( @@ -189,6 +208,13 @@ public class TabComponents extends SettingsTab ); Settings.headerTitleFont.set(font); + } else if (source.equals(headerSubTitleFont)) { + String fontName = headerSubTitleFont.getSelectedItem().toString(); + Font font = Font.decode(fontName).deriveFont( + (float) Settings.headerSubTitleFont.get().getSize() + ); + Settings.headerSubTitleFont.set(font); + } else if (source.equals(coreFont)) { String fontName = coreFont.getSelectedItem().toString(); Font font = Font.decode(fontName).deriveFont( @@ -232,6 +258,12 @@ public class TabComponents extends SettingsTab Settings.headerTitleFont.get().deriveFont((float) size) ); + } else if (source.equals(headerSubTitleSize)) { + int size = (Integer) headerSubTitleSize.getValue(); + Settings.headerSubTitleFont.set( + Settings.headerSubTitleFont.get().deriveFont((float) size) + ); + } else if (source.equals(coreFontSize)) { int size = (Integer) coreFontSize.getValue(); Settings.coreFont.set( @@ -291,18 +323,25 @@ public class TabComponents extends SettingsTab fontPanel.add(headerTitleSize, GBC.grid(2, 3).insets(0, 5)); fontPanel.add( - new JLabel("" + Language.setting_core_font), + new JLabel("" + Language.setting_header_subTitleFont), GBC.grid(0, 4).anchor(GBC.LS).insets(0, 5) ); - fontPanel.add(coreFont, GBC.grid(1, 4)); - fontPanel.add(coreFontSize, GBC.grid(2, 4).insets(0, 5)); + fontPanel.add(headerSubTitleFont, GBC.grid(1, 4)); + fontPanel.add(headerSubTitleSize, GBC.grid(2, 4).insets(0, 5)); + + fontPanel.add( + new JLabel("" + Language.setting_core_font), + GBC.grid(0, 5).anchor(GBC.LS).insets(0, 5) + ); + fontPanel.add(coreFont, GBC.grid(1, 5)); + fontPanel.add(coreFontSize, GBC.grid(2, 5).insets(0, 5)); fontPanel.add( new JLabel("" + Language.setting_core_otherTimeFont), - GBC.grid(0, 5).anchor(GBC.LS).insets(0, 5) + GBC.grid(0, 6).anchor(GBC.LS).insets(0, 5) ); - fontPanel.add(otherTimeFont, GBC.grid(1, 5)); - fontPanel.add(otherTimeSize, GBC.grid(2, 5).insets(0, 5)); + fontPanel.add(otherTimeFont, GBC.grid(1, 6)); + fontPanel.add(otherTimeSize, GBC.grid(2, 6).insets(0, 5)); } JPanel timerPanel = new JPanel(new GridBagLayout()); { timerPanel.add( diff --git a/src/main/java/org/fenix/llanfair/gui/RunPane.java b/src/main/java/org/fenix/llanfair/gui/RunPane.java index 4b55647..f5e78b8 100644 --- a/src/main/java/org/fenix/llanfair/gui/RunPane.java +++ b/src/main/java/org/fenix/llanfair/gui/RunPane.java @@ -226,7 +226,8 @@ public class RunPane extends JPanel { updateColors(SEPARATOR); } else if (Settings.historyRowCount.equals(property)) { updateValues(SEPARATOR); - } else if (Settings.colorTitle.equals(property)) { + } else if (Settings.colorTitle.equals(property) + || Settings.colorSubTitle.equals(property)) { updateColors(TITLE); } else if (Settings.graphDisplay.equals(property)) { updateVisibility(GRAPH); @@ -247,7 +248,8 @@ public class RunPane extends JPanel { } else if (Run.ATTEMPT_COUNTER_PROPERTY.equals(property) || Run.COMPLETED_ATTEMPT_COUNTER_PROPERTY.equals(property)) { updateValues(ATTEMPTS); - } else if (Settings.headerTitleFont.equals(property)) { + } else if (Settings.headerTitleFont.equals(property) + || Settings.headerSubTitleFont.equals(property)) { updateFonts(TITLE); } else if (Settings.coreFont.equals(property)) { updateFonts(ALL & ~TITLE); @@ -341,7 +343,7 @@ public class RunPane extends JPanel { private void updateColors(int identifier) { if ((identifier & TITLE) == TITLE) { title.setForeground(Settings.colorTitle.get()); - subTitle.setForeground(Settings.colorForeground.get()); + subTitle.setForeground(Settings.colorSubTitle.get()); } if ((identifier & BACKGROUND) == BACKGROUND) { setBackground(Settings.colorBackground.get()); @@ -366,7 +368,7 @@ public class RunPane extends JPanel { private void updateFonts(int identifier) { if ((identifier & TITLE) == TITLE) { title.setFont(Settings.headerTitleFont.get()); - subTitle.setFont(Settings.headerTitleFont.get()); + subTitle.setFont(Settings.headerSubTitleFont.get()); } if ((identifier & ATTEMPTS) == ATTEMPTS) { attemptCounter.setFont(Settings.coreFont.get()); diff --git a/src/main/resources/language.properties b/src/main/resources/language.properties index 8b59cff..fc4399c 100644 --- a/src/main/resources/language.properties +++ b/src/main/resources/language.properties @@ -19,6 +19,7 @@ setting_color_timeGained = Time Gained setting_color_timeLost = Time Lost setting_color_newRecord = New Record setting_color_title = Title +setting_color_subTitle = Sub Title setting_color_highlight = Highlight setting_color_separators = Separators @@ -38,6 +39,7 @@ setting_header_subTitle = Display Sub Title setting_header_title = Display Run Title setting_header_showAttempts = Display Attempt Counter setting_header_titleFont = Main Title +setting_header_subTitleFont = Sub Title # Settings > History setting_history_rowCount = Number of Rows