From 8906eef681986418367695373d8121f9c623ca71 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Mon, 13 Nov 2023 03:13:49 +0100 Subject: [PATCH 1/3] No need to mention uploading a JAR file anymore --- CONTRIBUTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c1c17c594..d61d96806 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,7 +63,6 @@ Right, you've dug into the codebase, found that one nasty line that caused all y 1. Explain briefly which issue that you are trying to solve, e.g. 'This PR solves #123 in which buttons were displayed as red instead of blue' 2. Next explain what the underlying issue was, e.g. 'The problem was that by default Java swing displays buttons as red.' 3. Next is how you fixed the issue, e.g. 'Fixed it by overriding the default button color to blue' -4. Finally, for other people to test your code, it is good to include a jar file of your fixed OpenRocket. This can be done using ant ([more info here](https://github.com/openrocket/openrocket/wiki/Instructions-to-Build-from-Terminal)). You can upload this jar-file to e.g. Dropbox or Google Drive and include it in your PR, e.g. 'Here is a jar file for testing: ' or if you're really GitHub-savvy, you can add a hyperlink to the 'jar file'-text. If necessary, you can also include information on how to recreate the original issue so that testers can check whether your code solved the issue. If needed, you can also included information about the expected behavior so that others know what your solution should do. You can take a look at example PR [#979](https://github.com/openrocket/openrocket/pull/979). From 6b5b951fe5aa804a4e0efd6f3b080390d4e88525 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 13 Nov 2023 03:30:44 +0100 Subject: [PATCH 2/3] Add correct border for dark theme unit selectors --- .../gui/components/UnitSelector.java | 31 +++++----- .../net/sf/openrocket/gui/util/UITheme.java | 57 +++++++++++++++++++ 2 files changed, 74 insertions(+), 14 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/components/UnitSelector.java b/swing/src/net/sf/openrocket/gui/components/UnitSelector.java index 04b45d2f2..c999b1358 100644 --- a/swing/src/net/sf/openrocket/gui/components/UnitSelector.java +++ b/swing/src/net/sf/openrocket/gui/components/UnitSelector.java @@ -1,7 +1,6 @@ package net.sf.openrocket.gui.components; -import java.awt.Color; import java.awt.Dimension; import java.awt.ItemSelectable; import java.awt.event.ActionEvent; @@ -18,11 +17,10 @@ import javax.swing.Action; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.border.Border; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.LineBorder; import net.sf.openrocket.gui.adaptors.DoubleModel; +import net.sf.openrocket.gui.util.GUIUtil; +import net.sf.openrocket.gui.util.UITheme; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.StateChangeListener; @@ -47,13 +45,17 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo private final boolean showValue; - private final Border normalBorder; - private final Border withinBorder; + private static Border normalBorder; + private static Border withinBorder; private final List itemListeners = new ArrayList(); + static { + initColors(); + } + /** * Common private constructor that sets the values and sets up the borders. * Either model or group must be null. @@ -85,14 +87,6 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo addMouseListener(this); - // Define borders to use: - - normalBorder = new CompoundBorder( - new LineBorder(new Color(0f, 0f, 0f, 0.08f), 1), new EmptyBorder(1, 1, 1, - 1)); - withinBorder = new CompoundBorder(new LineBorder(new Color(0f, 0f, 0f, 0.6f)), - new EmptyBorder(1, 1, 1, 1)); - // Add model listener if showing value if (showValue) this.model.addChangeListener(this); @@ -117,6 +111,15 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo } + private static void initColors() { + updateColors(); + UITheme.Theme.addUIThemeChangeListener(UnitSelector::updateColors); + } + + private static void updateColors() { + normalBorder = GUIUtil.getUITheme().getUnitSelectorBorder(); + withinBorder = GUIUtil.getUITheme().getUnitSelectorFocusBorder(); + } /** diff --git a/swing/src/net/sf/openrocket/gui/util/UITheme.java b/swing/src/net/sf/openrocket/gui/util/UITheme.java index 4492b03e3..c4c9ee84c 100644 --- a/swing/src/net/sf/openrocket/gui/util/UITheme.java +++ b/swing/src/net/sf/openrocket/gui/util/UITheme.java @@ -14,6 +14,9 @@ import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.UIManager; import javax.swing.border.Border; +import javax.swing.border.CompoundBorder; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; import java.awt.Color; import java.awt.Font; import java.io.IOException; @@ -82,6 +85,8 @@ public class UITheme { Icon getCDOverrideSubcomponentIcon(); Border getBorder(); + Border getUnitSelectorBorder(); + Border getUnitSelectorFocusBorder(); void formatScriptTextArea(RSyntaxTextArea textArea); @@ -381,6 +386,20 @@ public class UITheme { return null; } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(0f, 0f, 0f, 0.08f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(0f, 0f, 0f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -729,6 +748,20 @@ public class UITheme { return BorderFactory.createLineBorder(getBorderColor()); } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(1f, 1f, 1f, 0.08f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(1f, 1f, 1f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -1073,6 +1106,20 @@ public class UITheme { return BorderFactory.createLineBorder(getBorderColor()); } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(.9f, 0.9f, 0.9f, 0.15f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(0.9f, 0.9f, 0.9f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -1439,6 +1486,16 @@ public class UITheme { return getCurrentTheme().getBorder(); } + @Override + public Border getUnitSelectorBorder() { + return getCurrentTheme().getUnitSelectorBorder(); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return getCurrentTheme().getUnitSelectorFocusBorder(); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { getCurrentTheme().formatScriptTextArea(textArea); From e62cd4c6db8571e6db9abf66cf818e1b306a4977 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 13 Nov 2023 03:43:38 +0100 Subject: [PATCH 3/3] Set column widths in miglayout --- .../gui/dialogs/ComponentAnalysisDialog.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java index e91a4af75..8e52d97f6 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java @@ -113,7 +113,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe JTable table; - JPanel panel = new JPanel(new MigLayout("fill")); + JPanel panel = new JPanel(new MigLayout("fill", "[120lp][70lp][]")); add(panel); rkt = rocketPanel.getDocument().getRocket(); @@ -133,7 +133,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe roll = new DoubleModel(rocketPanel, "CPRoll", UnitGroup.UNITS_ROLL); //// Wind direction: - panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.winddir")), "width 120lp!"); + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.winddir"))); panel.add(new UnitSelector(theta, true), "width 50lp!"); BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI)); panel.add(slider, "growx, split 2"); @@ -164,17 +164,17 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe panel.add(scrollPane, "gap paragraph, spany 4, w 300lp, grow, height :100lp:, wrap"); ////Angle of attack: - panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.angleofattack")), "width 120lp!"); + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.angleofattack"))); panel.add(new UnitSelector(aoa, true), "width 50lp!"); panel.add(new BasicSlider(aoa.getSliderModel(0, Math.PI)), "growx, wrap"); //// Mach number: - panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.machnumber")), "width 120lp!"); + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.machnumber"))); panel.add(new UnitSelector(mach, true), "width 50lp!"); panel.add(new BasicSlider(mach.getSliderModel(0, 3)), "growx, wrap"); //// Roll rate: - panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.rollrate")), "width 120lp!"); + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.rollrate"))); panel.add(new UnitSelector(roll, true), "width 50lp!"); panel.add(new BasicSlider(roll.getSliderModel(-20 * 2 * Math.PI, 20 * 2 * Math.PI)), "growx, wrap");