mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-10-25 00:01:02 +00:00
Rework script handling for enabled state
This commit is contained in:
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());
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user