Add dark contrasted theme

This commit is contained in:
SiboVG 2023-09-24 22:08:08 +02:00
parent eeea22087d
commit 36e0cf2168
2 changed files with 238 additions and 0 deletions

View File

@ -410,6 +410,7 @@ PreferencesOptionPanel.checkbox.windowInfo.ttip = If unchecked, window informati
UITheme.Auto = Auto (detect)
UITheme.Light = Light (default)
UITheme.Dark = Dark
UITheme.DarkContrast = Dark, high contrast
! Welcome dialog
welcome.dlg.title = Welcome to OpenRocket

View File

@ -2,6 +2,7 @@ package net.sf.openrocket.gui.util;
import com.github.weisj.darklaf.LafManager;
import com.github.weisj.darklaf.theme.DarculaTheme;
import com.github.weisj.darklaf.theme.OneDarkTheme;
import com.jthemedetecor.OsThemeDetector;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application;
@ -106,6 +107,9 @@ public class UITheme {
}
public enum Themes implements Theme {
/*
Standard light theme
*/
LIGHT {
private final String displayName = trans.get("UITheme.Light");
@ -330,8 +334,12 @@ public class UITheme {
}
}
},
/*
Dark theme
*/
DARK {
private final String displayName = trans.get("UITheme.Dark");
@Override
public void applyTheme() {
final SwingPreferences prefs = (SwingPreferences) Application.getPreferences();
@ -552,6 +560,235 @@ public class UITheme {
}
}
},
/*
High-contrast dark theme
*/
DARK_CONTRAST {
private final String displayName = trans.get("UITheme.DarkContrast");
@Override
public void applyTheme() {
final SwingPreferences prefs = (SwingPreferences) Application.getPreferences();
LafManager.install(new OneDarkTheme());
setGlobalFontSize(prefs.getUIFontSize());
}
@Override
public String getDisplayName() {
return displayName;
}
@Override
public Color getBackgroundColor() {
return new Color(43, 45, 51);
}
@Override
public Color getBorderColor() {
return new Color(163, 163, 163, 204);
}
@Override
public Color getTextColor() {
return UIManager.getColor("Label.foreground");
}
@Override
public Color getDimTextColor() {
return new Color(189, 189, 189);
}
@Override
public Color getTextSelectionForegroundColor() {
return Color.WHITE;
}
@Override
public Color getTextSelectionBackgroundColor() {
return new Color(62, 108, 173);
}
@Override
public Color getWarningColor() {
return new Color(255, 162, 162);
}
@Override
public Color getDarkWarningColor() {
return new Color(238, 125, 125);
}
@Override
public Color getRowBackgroundLighterColor() {
return new Color(43, 49, 58);
}
@Override
public Color getRowBackgroundDarkerColor() {
return new Color(34, 37, 44);
}
@Override
public Color getFlightDataTextActiveColor() {
return new Color(173, 206, 255);
}
@Override
public Color getFlightDataTextInactiveColor() {
return new Color(149, 186, 255, 127);
}
@Override
public String getDefaultBodyComponentColor() {
return "150,175,255";
}
@Override
public String getDefaultTubeFinSetColor() {
return "150,184,254";
}
@Override
public String getDefaultFinSetColor() {
return "150,184,255";
}
@Override
public String getDefaultLaunchLugColor() {
return "142,153,238";
}
@Override
public String getDefaultRailButtonColor() {
return "142,153,238";
}
@Override
public String getDefaultInternalComponentColor() {
return "181,128,151";
}
@Override
public String getDefaultMassObjectColor() {
return "210,210,210";
}
@Override
public String getDefaultRecoveryDeviceColor() {
return "220,90,90";
}
@Override
public String getDefaultPodSetColor() {
return "190,190,235";
}
@Override
public String getDefaultParallelStageColor() {
return "210,180,195";
}
@Override
public Color getMotorBorderColor() {
return new Color(255, 255, 255, 200);
}
@Override
public Color getMotorFillColor() {
return new Color(0, 0, 0, 70);
}
@Override
public Color getCGColor() {
return new Color(85, 133, 253);
}
@Override
public Color getCPColor() {
return new Color(255, 72, 106);
}
@Override
public Color getURLColor() {
return new Color(171, 185, 255);
}
@Override
public Color getComponentTreeBackgroundColor() {
return getBackgroundColor();
}
@Override
public Color getComponentTreeForegroundColor() {
return getTextColor();
}
@Override
public Color getFinPointGridMajorLineColor() {
return new Color(164, 164, 224, 197);
}
@Override
public Color getFinPointGridMinorLineColor() {
return new Color(134, 134, 201, 69);
}
@Override
public Color getFinPointPointColor() {
return new Color(242, 121, 121, 255);
}
@Override
public Color getFinPointSelectedPointColor() {
return new Color(232, 78, 78, 255);
}
@Override
public Color getFinPointBodyLineColor() {
return Color.WHITE;
}
@Override
public Icon getMassOverrideIcon() {
return Icons.MASS_OVERRIDE_DARK;
}
@Override
public Icon getMassOverrideSubcomponentIcon() {
return Icons.MASS_OVERRIDE_SUBCOMPONENT_DARK;
}
@Override
public Icon getCGOverrideIcon() {
return Icons.CG_OVERRIDE_DARK;
}
@Override
public Icon getCGOverrideSubcomponentIcon() {
return Icons.CG_OVERRIDE_SUBCOMPONENT_DARK;
}
@Override
public Icon getCDOverrideIcon() {
return Icons.CD_OVERRIDE_DARK;
}
@Override
public Icon getCDOverrideSubcomponentIcon() {
return Icons.CD_OVERRIDE_SUBCOMPONENT_DARK;
}
@Override
public Border getBorder() {
return BorderFactory.createLineBorder(getBorderColor());
}
@Override
public void formatScriptTextArea(RSyntaxTextArea textArea) {
try {
org.fife.ui.rsyntaxtextarea.Theme theme = org.fife.ui.rsyntaxtextarea.Theme.load(getClass().getResourceAsStream(
"/org/fife/ui/rsyntaxtextarea/themes/monokai.xml"));
theme.apply(textArea);
} catch (IOException ioe) {
log.warn("Unable to load RSyntaxTextArea theme", ioe);
}
}
},
/*
Detect best theme based on operating system theme
*/
AUTO {
private final String displayName = trans.get("UITheme.Auto");