[fixes #968] Use SelectColorToggleButton

This commit is contained in:
Sibo Van Gool 2021-07-21 01:01:18 +02:00
parent 295c9269b1
commit ebcdd469b7
5 changed files with 60 additions and 4 deletions

View File

@ -10,6 +10,7 @@ import javax.swing.JPanel;
import javax.swing.JToggleButton; import javax.swing.JToggleButton;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.gui.widgets.SelectColorToggleButton;
import net.sf.openrocket.rocketcomponent.AxialStage; import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.FlightConfiguration;
@ -36,7 +37,7 @@ public class StageSelector extends JPanel implements StateChangeListener {
buttons.clear(); buttons.clear();
this.removeAll(); this.removeAll();
for(AxialStage stage : configuration.getRocket().getStageList()){ for(AxialStage stage : configuration.getRocket().getStageList()){
JToggleButton button = new JToggleButton(new StageAction(stage)); JToggleButton button = new SelectColorToggleButton(new StageAction(stage));
button.setSelected(configuration.isStageActive(stage.getStageNumber())); button.setSelected(configuration.isStageActive(stage.getStageNumber()));
this.add(button); this.add(button);
buttons.add(button); buttons.add(button);

View File

@ -52,6 +52,7 @@ import net.sf.openrocket.gui.components.StyledLabel;
import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.components.UnitSelector;
import net.sf.openrocket.gui.scalefigure.RocketPanel; import net.sf.openrocket.gui.scalefigure.RocketPanel;
import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.widgets.SelectColorToggleButton;
import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.masscalc.CMAnalysisEntry; import net.sf.openrocket.masscalc.CMAnalysisEntry;
import net.sf.openrocket.masscalc.MassCalculator; import net.sf.openrocket.masscalc.MassCalculator;
@ -124,7 +125,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe
BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI)); BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI));
panel.add(slider, "growx, split 2"); panel.add(slider, "growx, split 2");
//// Worst button //// Worst button
worstToggle = new JToggleButton(trans.get("componentanalysisdlg.ToggleBut.worst")); worstToggle = new SelectColorToggleButton(trans.get("componentanalysisdlg.ToggleBut.worst"));
worstToggle.setSelected(true); worstToggle.setSelected(true);
worstToggle.addActionListener(new ActionListener() { worstToggle.addActionListener(new ActionListener() {
@Override @Override

View File

@ -73,6 +73,7 @@ import net.sf.openrocket.gui.scalefigure.RocketFigure;
import net.sf.openrocket.gui.scalefigure.ScaleScrollPane; import net.sf.openrocket.gui.scalefigure.ScaleScrollPane;
import net.sf.openrocket.gui.util.FileHelper; import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.widgets.SelectColorToggleButton;
import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.logging.Markers; import net.sf.openrocket.logging.Markers;
@ -88,7 +89,6 @@ import net.sf.openrocket.optimization.rocketoptimization.goals.MaximizationGoal;
import net.sf.openrocket.optimization.rocketoptimization.goals.MinimizationGoal; import net.sf.openrocket.optimization.rocketoptimization.goals.MinimizationGoal;
import net.sf.openrocket.optimization.rocketoptimization.goals.ValueSeekGoal; import net.sf.openrocket.optimization.rocketoptimization.goals.ValueSeekGoal;
import net.sf.openrocket.optimization.services.OptimizationServiceHelper; import net.sf.openrocket.optimization.services.OptimizationServiceHelper;
import net.sf.openrocket.rocketcomponent.FlightConfigurationId;
import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Application;
@ -527,7 +527,7 @@ public class GeneralOptimizationDialog extends JDialog {
// // Start/Stop button // // Start/Stop button
startButton = new JToggleButton(START_TEXT); startButton = new SelectColorToggleButton(START_TEXT);
startButton.addActionListener(e -> { startButton.addActionListener(e -> {
if (updating) { if (updating) {
log.debug("Updating, ignoring event"); log.debug("Updating, ignoring event");

View File

@ -0,0 +1,51 @@
package net.sf.openrocket.gui.widgets;
import net.sf.openrocket.gui.components.StageSelector;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class SelectColorToggleButton extends JToggleButton {
public SelectColorToggleButton(Action a) {
super(a);
}
public SelectColorToggleButton(String text) {
super(text);
}
public SelectColorToggleButton() {
}
public SelectColorToggleButton(Icon icon) {
super(icon);
}
public SelectColorToggleButton(Icon icon, boolean selected) {
super(icon, selected);
}
public SelectColorToggleButton(String text, boolean selected) {
super(text, selected);
}
public SelectColorToggleButton(String text, Icon icon) {
super(text, icon);
}
public SelectColorToggleButton(String text, Icon icon, boolean selected) {
super(text, icon, selected);
}
@Override
public void paint(Graphics g) {
if (isSelected()) {
setForeground(UIManager.getColor("ToggleButton.selectForeground"));
}
else {
setForeground(UIManager.getColor("ToggleButton.foreground"));
}
super.paint(g);
}
}

View File

@ -93,6 +93,9 @@ final class OSXSetup {
// Set the foreground of active tabs to black; there was a bug where you had a white background and white foreground // Set the foreground of active tabs to black; there was a bug where you had a white background and white foreground
UIManager.put("TabbedPane.foreground", Color.black); UIManager.put("TabbedPane.foreground", Color.black);
// Set the select foreground for buttons to not be black on a blue background
UIManager.put("ToggleButton.selectForeground", Color.WHITE);
} catch (final Throwable t) { } catch (final Throwable t) {
// None of the preceding is critical to the app, // None of the preceding is critical to the app,
// so at worst case log an error and continue // so at worst case log an error and continue