Merge branch 'unstable' into issue-2258

This commit is contained in:
Sibo Van Gool 2023-11-13 03:57:48 +01:00 committed by GitHub
commit f304e4577a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 25 deletions

View File

@ -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).

View File

@ -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<ItemListener> itemListeners = new ArrayList<ItemListener>();
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();
}
/**

View File

@ -109,7 +109,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();
@ -129,10 +129,10 @@ 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")));
EditableSpinner spinner = new EditableSpinner(theta.getSpinnerModel());
panel.add(spinner, "growx");
panel.add(new UnitSelector(theta), "width 50lp!");
panel.add(new UnitSelector(theta));
BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI));
panel.add(slider, "growx, split 2");
//// Worst button
@ -162,21 +162,21 @@ 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 EditableSpinner(aoa.getSpinnerModel()), "growx");
panel.add(new UnitSelector(aoa), "width 50lp!");
panel.add(new UnitSelector(aoa));
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 EditableSpinner(mach.getSpinnerModel()), "width 120lp!");
panel.add(new UnitSelector(mach, true), "width 50lp!");
panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.machnumber")));
panel.add(new EditableSpinner(mach.getSpinnerModel()));
panel.add(new UnitSelector(mach));
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 EditableSpinner(roll.getSpinnerModel()), "growx");
panel.add(new UnitSelector(roll), "width 50lp!");
panel.add(new UnitSelector(roll));
panel.add(new BasicSlider(roll.getSliderModel(-20 * 2 * Math.PI, 20 * 2 * Math.PI)),
"growx, wrap");

View File

@ -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);