Rework script handling for enabled state

This commit is contained in:
crschnick committed 2026-04-16 21:20:54 +00:00
1 parent e2a77bc594
commit 7be3a3712a
5 files changed
+84 -19

No files matched your search

@@ -0,0 +1,61 @@
package io.xpipe.app.comp.base;
import atlantafx.base.controls.ToggleSwitch;
import io.xpipe.app.comp.RegionBuilder;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.platform.LabelGraphic;
import io.xpipe.app.platform.PlatformThread;
import javafx.beans.binding.Bindings;
import javafx.beans.property.Property;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.css.PseudoClass;
import javafx.geometry.Pos;
import javafx.scene.control.CheckBox;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import lombok.EqualsAndHashCode;
import lombok.Value;
@Value
@EqualsAndHashCode(callSuper = true)
public class CheckBoxComp extends RegionBuilder<CheckBox> {
Property<Boolean> selected;
ObservableValue<String> name;
ObservableValue<LabelGraphic> graphic;
@Override
public CheckBox createSimple() {
var s = new CheckBox();
s.setOnAction(event -> event.consume());
s.setAlignment(Pos.CENTER);
s.getStyleClass().add("check-box-comp");
s.setSelected(selected.getValue() != null ? selected.getValue() : false);
s.selectedProperty().addListener((observable, oldValue, newValue) -> {
selected.setValue(newValue);
});
selected.addListener((observable, oldValue, newValue) -> {
PlatformThread.runLaterIfNeeded(() -> {
s.setSelected(newValue);
});
});
if (name != null) {
name.subscribe(value -> {
PlatformThread.runLaterIfNeeded(() -> {
s.setText(value);
});
});
}
if (graphic != null) {
graphic.subscribe(value -> {
PlatformThread.runLaterIfNeeded(() -> {
s.setGraphic(value.createGraphicNode());
});
});
s.setAlignment(Pos.CENTER);
s.pseudoClassStateChanged(PseudoClass.getPseudoClass("has-graphic"), true);
}
return s;
}
}
@@ -73,14 +73,6 @@ public class ToggleSwitchComp extends RegionBuilder<ToggleSwitch> {
s.setAlignment(Pos.CENTER);
s.pseudoClassStateChanged(PseudoClass.getPseudoClass("has-graphic"), true);
}
s.setOnKeyPressed(keyEvent -> {
if (keyEvent.getCode() == KeyCode.SPACE || keyEvent.getCode() == KeyCode.ENTER) {
s.setSelected(!s.isSelected());
keyEvent.consume();
}
});
return s;
}
}
@@ -2,15 +2,18 @@ package io.xpipe.app.ext;
import io.xpipe.app.platform.OptionsBuilder;
import io.xpipe.app.storage.DataStoreEntry;
import lombok.AllArgsConstructor;
import lombok.Value;
import java.util.function.Consumer;
@Value
@AllArgsConstructor
public class GuiDialog {
OptionsBuilder options;
Runnable onFinish;
Consumer<DataStoreEntry> onFinish;
public GuiDialog(OptionsBuilder options) {
this.options = options;
@@ -82,7 +82,7 @@ public class StoreCreationComp extends ModalOverlayContentComp {
model.getFinished().addListener((observable, oldValue, newValue) -> {
if (newValue && d.equals(activeDialog.get())) {
ThreadHelper.runAsync(() -> {
d.getOnFinish().run();
d.getOnFinish().accept(model.getEntry().getValue());
});
}
});