feat(renderer): extend ToggleButtonData and SwitchData to include allowNoneToggledInGroup flag
This commit is contained in:
@@ -10,6 +10,8 @@ public interface ThemeManager {
|
||||
|
||||
List<String> getAvailableThemeNames();
|
||||
|
||||
List<String> getPatternRendererNames();
|
||||
|
||||
Optional<Theme> loadThemeFromStorage(String themeName);
|
||||
|
||||
void saveThemeToStorage(Theme theme);
|
||||
|
||||
@@ -12,9 +12,12 @@ public abstract class G2DAbstractToggleButtonControlImpl extends G2DButtonContro
|
||||
|
||||
protected boolean drawBorder = true;
|
||||
|
||||
protected boolean allowNoneToggledInGroup;
|
||||
|
||||
protected void applyToggleButtonData(final ToggleButtonData data) {
|
||||
if (data != null) {
|
||||
if (this.lastControlDataUpdateTimeInternal < this.lastControlDataUpdateTime) {
|
||||
this.allowNoneToggledInGroup = data.allowNoneToggledInGroup();
|
||||
this.setToggled(data.toggled());
|
||||
this.lastControlDataUpdateTimeInternal = this.lastControlDataUpdateTime;
|
||||
}
|
||||
@@ -70,7 +73,7 @@ public abstract class G2DAbstractToggleButtonControlImpl extends G2DButtonContro
|
||||
}
|
||||
}
|
||||
|
||||
if (!controlInGroupToggled) {
|
||||
if (!controlInGroupToggled && !this.allowNoneToggledInGroup) {
|
||||
this.control.setToggled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,16 +23,21 @@ public class G2DThemeManager implements ThemeManager {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(G2DThemeManager.class);
|
||||
|
||||
private static final List<String> THEME_STORAGE_PATH = List.of("gameEngine");
|
||||
|
||||
private static final String THEME_STORAGE_NAME = "lastTheme";
|
||||
|
||||
private G2DRenderer g2dRenderer;
|
||||
|
||||
private G2DRendererControl g2dRendererControl;
|
||||
|
||||
private final StaticResourceService staticResourceService;
|
||||
|
||||
private final StorageService storageService;
|
||||
|
||||
private final Map<String, PatternRenderer> patternRenderers;
|
||||
|
||||
private final Map<String, Theme> themes;
|
||||
|
||||
private final Theme defaultTheme;
|
||||
|
||||
private Theme currentTheme;
|
||||
@@ -220,4 +225,11 @@ public class G2DThemeManager implements ThemeManager {
|
||||
public PatternRenderer getCurrentPatternRenderer() {
|
||||
return this.patternRenderers.get(this.currentTheme.getPatternRendererName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getPatternRendererNames() {
|
||||
return this.patternRenderers.keySet().stream()
|
||||
.sorted()
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ public interface ControlRenderingBo extends RenderingBoHasDimension {
|
||||
|
||||
record ButtonData(RgbaColor backgroundColor, StaticResource iconResource) {}
|
||||
|
||||
record ToggleButtonData(boolean toggled, StaticResource iconResource) {}
|
||||
record ToggleButtonData(boolean toggled, boolean allowNoneToggledInGroup, StaticResource iconResource) {}
|
||||
|
||||
record SwitchData(boolean toggled, StaticResource iconResource, boolean drawBorder) {}
|
||||
record SwitchData(boolean toggled, boolean allowNoneToggledInGroup, StaticResource iconResource, boolean drawBorder) {}
|
||||
|
||||
record WindowCloseButtonData(boolean thickBorder) {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user