mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-06-22 06:19:02 -04:00
Fix many small issues
This commit is contained in:
@@ -55,8 +55,6 @@ public class DsStoreProviderChoiceComp extends Comp<CompStructure<ComboBox<Node>
|
||||
@Override
|
||||
public CompStructure<ComboBox<Node>> createBase() {
|
||||
var comboBox = new CustomComboBoxBuilder<>(provider, this::createGraphic, createDefaultNode(), v -> true);
|
||||
comboBox.add(null);
|
||||
comboBox.addSeparator();
|
||||
getProviders().stream()
|
||||
.filter(p -> AppPrefs.get().developerShowHiddenProviders().get() || p.shouldShow())
|
||||
.forEach(comboBox::add);
|
||||
|
||||
@@ -195,21 +195,14 @@ public class GuiDsStoreCreator extends MultiStepComp.Step<CompStructure<?>> {
|
||||
}
|
||||
|
||||
var d = n.guiDialog(input);
|
||||
|
||||
if (d == null || d.getComp() == null) {
|
||||
layout.setCenter(null);
|
||||
validator.setValue(new SimpleValidator());
|
||||
return;
|
||||
}
|
||||
|
||||
var propVal = new SimpleValidator();
|
||||
var propR = createStoreProperties(d.getComp(), propVal);
|
||||
var propR = createStoreProperties(d == null || d.getComp() == null ? null : d.getComp(), propVal);
|
||||
var box = new VBox(propR);
|
||||
box.setSpacing(7);
|
||||
|
||||
layout.setCenter(box);
|
||||
|
||||
validator.setValue(new ChainedValidator(List.of(d.getValidator(), propVal)));
|
||||
validator.setValue(new ChainedValidator(List.of(d != null && d.getValidator() != null ? d.getValidator() : new SimpleValidator(), propVal)));
|
||||
} else {
|
||||
layout.setCenter(null);
|
||||
validator.setValue(new SimpleValidator());
|
||||
|
||||
@@ -152,9 +152,14 @@ public class StoreEntryComp extends SimpleComp {
|
||||
button.setFocusTraversable(false);
|
||||
button.setOnAction(event -> {
|
||||
event.consume();
|
||||
if (entry.getEditable().get()) {
|
||||
entry.editDialog();
|
||||
}
|
||||
ThreadHelper.runFailableAsync(() -> {
|
||||
var found = entry.getDefaultActionProvider().getValue();
|
||||
if (found != null) {
|
||||
found.getDataStoreCallSite()
|
||||
.createAction(entry.getEntry().getStore().asNeeded())
|
||||
.execute();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return button;
|
||||
@@ -164,7 +169,7 @@ public class StoreEntryComp extends SimpleComp {
|
||||
var list = new ArrayList<Comp<?>>();
|
||||
for (var p : entry.getActionProviders().entrySet()) {
|
||||
var actionProvider = p.getKey().getDataStoreCallSite();
|
||||
if (!actionProvider.isMajor()) {
|
||||
if (!actionProvider.isMajor() || p.getKey().equals(entry.getDefaultActionProvider().getValue())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -213,7 +218,7 @@ public class StoreEntryComp extends SimpleComp {
|
||||
settingsButton.apply(s -> {
|
||||
s.get().prefWidthProperty().bind(Bindings.divide(s.get().heightProperty(), 1.35));
|
||||
});
|
||||
settingsButton.apply(new FancyTooltipAugment<>("entrySettings"));
|
||||
settingsButton.apply(new FancyTooltipAugment<>("more"));
|
||||
return settingsButton;
|
||||
}
|
||||
|
||||
@@ -263,11 +268,6 @@ public class StoreEntryComp extends SimpleComp {
|
||||
});
|
||||
contextMenu.getItems().add(refresh);
|
||||
|
||||
var edit = new MenuItem(I18n.get("edit"), new FontIcon("mdal-edit"));
|
||||
edit.disableProperty().bind(entry.getEditable().not());
|
||||
edit.setOnAction(event -> entry.editDialog());
|
||||
contextMenu.getItems().add(edit);
|
||||
|
||||
var del = new MenuItem(I18n.get("delete"), new FontIcon("mdal-delete_outline"));
|
||||
del.disableProperty().bind(entry.getDeletable().not());
|
||||
del.setOnAction(event -> entry.delete());
|
||||
|
||||
@@ -9,7 +9,7 @@ import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.value.ObservableBooleanValue;
|
||||
import javafx.scene.layout.Region;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
public class StoreEntryListComp extends SimpleComp {
|
||||
|
||||
@@ -28,13 +28,14 @@ public class StoreEntryListComp extends SimpleComp {
|
||||
|
||||
@Override
|
||||
protected Region createSimple() {
|
||||
var map = Map.<Comp<?>, ObservableBooleanValue>of(
|
||||
var map = new LinkedHashMap<Comp<?>, ObservableBooleanValue>();
|
||||
map.put(
|
||||
createList(),
|
||||
BindingsHelper.persist(Bindings.and(
|
||||
Bindings.not(StoreViewState.get().emptyProperty()),
|
||||
Bindings.not(Bindings.isEmpty(StoreViewState.get().getShownEntries())))),
|
||||
new StoreStorageEmptyIntroComp(),
|
||||
StoreViewState.get().emptyProperty(),
|
||||
BindingsHelper.persist(
|
||||
Bindings.not(Bindings.isEmpty(StoreViewState.get().getShownEntries()))));
|
||||
|
||||
map.put(new StoreStorageEmptyIntroComp(), StoreViewState.get().emptyProperty());
|
||||
map.put(
|
||||
new StoreNotFoundComp(),
|
||||
BindingsHelper.persist(Bindings.and(
|
||||
Bindings.not(Bindings.isEmpty(StoreViewState.get().getAllEntries())),
|
||||
|
||||
@@ -8,9 +8,11 @@ import io.xpipe.app.storage.DataStoreEntry;
|
||||
import io.xpipe.extension.event.ErrorEvent;
|
||||
import io.xpipe.extension.fxcomps.util.PlatformThread;
|
||||
import io.xpipe.extension.util.ActionProvider;
|
||||
import javafx.beans.Observable;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.property.*;
|
||||
import javafx.beans.value.ObservableBooleanValue;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.time.Duration;
|
||||
@@ -30,6 +32,7 @@ public class StoreEntryWrapper implements StorageFilter.Filterable {
|
||||
private final StringProperty information = new SimpleStringProperty();
|
||||
private final StringProperty summary = new SimpleStringProperty();
|
||||
private final Map<ActionProvider, ObservableBooleanValue> actionProviders;
|
||||
private final ObservableValue<ActionProvider> defaultActionProvider;
|
||||
private final BooleanProperty editable = new SimpleBooleanProperty();
|
||||
private final BooleanProperty renamable = new SimpleBooleanProperty();
|
||||
private final BooleanProperty refreshable = new SimpleBooleanProperty();
|
||||
@@ -65,6 +68,14 @@ public class StoreEntryWrapper implements StorageFilter.Filterable {
|
||||
lastAccess);
|
||||
actionProviders.put(dataStoreActionProvider, property);
|
||||
});
|
||||
this.defaultActionProvider = Bindings.createObjectBinding(() -> {
|
||||
var found = actionProviders.entrySet().stream()
|
||||
.filter(e -> e.getValue().get())
|
||||
.filter(e -> e.getKey().getDataStoreCallSite() != null
|
||||
&& e.getKey().getDataStoreCallSite().isDefault())
|
||||
.findFirst();
|
||||
return found.map(p -> p.getKey()).orElse(null);
|
||||
}, actionProviders.values().toArray(Observable[]::new));
|
||||
setupListeners();
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@ public class StoreStorageEmptyIntroComp extends SimpleComp {
|
||||
|
||||
var sp = new StackPane(v);
|
||||
sp.setAlignment(Pos.CENTER);
|
||||
sp.setPickOnBounds(false);
|
||||
return sp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class AppPrefs {
|
||||
private static ObservableBooleanValue bindDeveloperTrue(ObservableBooleanValue o) {
|
||||
return Bindings.createBooleanBinding(
|
||||
() -> {
|
||||
return AppPrefs.get().developerMode().getValue() || o.get();
|
||||
return AppPrefs.get().developerMode().getValue() && o.get();
|
||||
},
|
||||
o,
|
||||
AppPrefs.get().developerMode());
|
||||
@@ -39,7 +39,7 @@ public class AppPrefs {
|
||||
private static ObservableBooleanValue bindDeveloperFalse(ObservableBooleanValue o) {
|
||||
return Bindings.createBooleanBinding(
|
||||
() -> {
|
||||
return !AppPrefs.get().developerMode().getValue() || o.get();
|
||||
return !AppPrefs.get().developerMode().getValue() && o.get();
|
||||
},
|
||||
o,
|
||||
AppPrefs.get().developerMode());
|
||||
|
||||
Reference in New Issue
Block a user