mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-21 15:10:23 +00:00
Refactor
This commit is contained in:
parent
a37821e22c
commit
09052de9ee
45 changed files with 146 additions and 240 deletions
|
@ -67,10 +67,9 @@ final class BrowserBookmarkList extends SimpleComp {
|
|||
.pseudoClassStateChanged(
|
||||
SELECTED,
|
||||
newValue != null
|
||||
&& newValue.getEntry()
|
||||
&& newValue.getEntry().get()
|
||||
.equals(s.getWrapper()
|
||||
.getEntry()
|
||||
.getStore()));
|
||||
.getEntry()));
|
||||
});
|
||||
struc.get().setOnAction(event -> {
|
||||
ThreadHelper.runFailableAsync(() -> {
|
||||
|
|
|
@ -34,7 +34,7 @@ public class BrowserClipboard {
|
|||
static {
|
||||
Toolkit.getDefaultToolkit()
|
||||
.getSystemClipboard()
|
||||
.addFlavorListener(e -> ThreadHelper.runFailableAsync(new FailableRunnable<Throwable>() {
|
||||
.addFlavorListener(e -> ThreadHelper.runFailableAsync(new FailableRunnable<>() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void run() throws Throwable {
|
||||
|
|
|
@ -19,6 +19,7 @@ import javafx.geometry.Pos;
|
|||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.layout.*;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -28,7 +29,9 @@ public abstract class MultiStepComp extends Comp<CompStructure<VBox>> {
|
|||
private static final PseudoClass NEXT = PseudoClass.getPseudoClass("next");
|
||||
private final Property<Boolean> completed = new SimpleBooleanProperty();
|
||||
private final Property<Step<?>> currentStep = new SimpleObjectProperty<>();
|
||||
@Getter
|
||||
private List<Entry> entries;
|
||||
@Getter
|
||||
private int currentIndex = 0;
|
||||
|
||||
private Step<?> getValue() {
|
||||
|
@ -94,10 +97,6 @@ public abstract class MultiStepComp extends Comp<CompStructure<VBox>> {
|
|||
return entries.indexOf(e) == currentIndex;
|
||||
}
|
||||
|
||||
public int getCurrentIndex() {
|
||||
return currentIndex;
|
||||
}
|
||||
|
||||
public boolean isFirstPage() {
|
||||
return currentIndex == 0;
|
||||
}
|
||||
|
@ -260,10 +259,6 @@ public abstract class MultiStepComp extends Comp<CompStructure<VBox>> {
|
|||
|
||||
protected abstract void finish();
|
||||
|
||||
public List<Entry> getEntries() {
|
||||
return entries;
|
||||
}
|
||||
|
||||
public ReadOnlyProperty<Boolean> completedProperty() {
|
||||
return completed;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import java.util.stream.Stream;
|
|||
|
||||
public interface StoreSortMode {
|
||||
|
||||
static StoreSortMode ALPHABETICAL_DESC = new StoreSortMode() {
|
||||
StoreSortMode ALPHABETICAL_DESC = new StoreSortMode() {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "alphabetical-desc";
|
||||
|
@ -19,12 +19,12 @@ public interface StoreSortMode {
|
|||
|
||||
@Override
|
||||
public Comparator<StoreSection> comparator() {
|
||||
return Comparator.<StoreSection, String>comparing(
|
||||
return Comparator.comparing(
|
||||
e -> e.getWrapper().nameProperty().getValue().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
};
|
||||
|
||||
static StoreSortMode ALPHABETICAL_ASC = new StoreSortMode() {
|
||||
StoreSortMode ALPHABETICAL_ASC = new StoreSortMode() {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "alphabetical-asc";
|
||||
|
@ -38,7 +38,7 @@ public interface StoreSortMode {
|
|||
}
|
||||
};
|
||||
|
||||
static StoreSortMode DATE_DESC = new StoreSortMode() {
|
||||
StoreSortMode DATE_DESC = new StoreSortMode() {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "date-desc";
|
||||
|
@ -55,7 +55,7 @@ public interface StoreSortMode {
|
|||
}
|
||||
};
|
||||
|
||||
static StoreSortMode DATE_ASC = new StoreSortMode() {
|
||||
StoreSortMode DATE_ASC = new StoreSortMode() {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "date-asc";
|
||||
|
@ -78,7 +78,7 @@ public interface StoreSortMode {
|
|||
section.getAllChildren().stream().flatMap(section1 -> flatten(section1)));
|
||||
}
|
||||
|
||||
static List<StoreSortMode> ALL = List.of(ALPHABETICAL_DESC, ALPHABETICAL_ASC, DATE_DESC, DATE_ASC);
|
||||
List<StoreSortMode> ALL = List.of(ALPHABETICAL_DESC, ALPHABETICAL_ASC, DATE_DESC, DATE_ASC);
|
||||
|
||||
static Optional<StoreSortMode> fromId(String id) {
|
||||
return ALL.stream()
|
||||
|
|
|
@ -12,10 +12,12 @@ import javafx.application.Application;
|
|||
import javafx.application.Platform;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.stage.Stage;
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
|
||||
@Getter
|
||||
public class App extends Application {
|
||||
|
||||
private static App APP;
|
||||
|
@ -116,7 +118,4 @@ public class App extends Application {
|
|||
});
|
||||
}
|
||||
|
||||
public Stage getStage() {
|
||||
return stage;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.xpipe.app.issue.ErrorEvent;
|
|||
import io.xpipe.app.issue.TrackEvent;
|
||||
import io.xpipe.core.util.ModuleHelper;
|
||||
import io.xpipe.core.util.XPipeInstallation;
|
||||
import lombok.Getter;
|
||||
import lombok.Value;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -28,6 +29,7 @@ public class AppExtensionManager {
|
|||
private final List<ModuleLayer> leafModuleLayers = new ArrayList<>();
|
||||
private final List<Path> extensionBaseDirectories = new ArrayList<>();
|
||||
private ModuleLayer baseLayer = ModuleLayer.boot();
|
||||
@Getter
|
||||
private ModuleLayer extendedLayer;
|
||||
|
||||
public AppExtensionManager(boolean loadedProviders) {
|
||||
|
@ -314,10 +316,6 @@ public class AppExtensionManager {
|
|||
}
|
||||
}
|
||||
|
||||
public ModuleLayer getExtendedLayer() {
|
||||
return extendedLayer;
|
||||
}
|
||||
|
||||
@Value
|
||||
private static class Extension {
|
||||
Path dir;
|
||||
|
|
|
@ -3,6 +3,7 @@ package io.xpipe.app.core;
|
|||
import io.xpipe.app.issue.ErrorEvent;
|
||||
import io.xpipe.app.issue.TrackEvent;
|
||||
import io.xpipe.app.util.ThreadHelper;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.*;
|
||||
|
@ -106,6 +107,7 @@ public class AppFileWatcher {
|
|||
|
||||
private class WatchedDirectory {
|
||||
private final BiConsumer<Path, WatchEvent.Kind<Path>> listener;
|
||||
@Getter
|
||||
private final Path baseDir;
|
||||
|
||||
private WatchedDirectory(Path dir, BiConsumer<Path, WatchEvent.Kind<Path>> listener) {
|
||||
|
@ -183,8 +185,5 @@ public class AppFileWatcher {
|
|||
listener.accept(file, ev.kind());
|
||||
}
|
||||
|
||||
public Path getBaseDir() {
|
||||
return baseDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import javafx.css.SizeUnits;
|
|||
import javafx.scene.Node;
|
||||
import javafx.scene.text.Font;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.FileVisitResult;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
|
|
@ -43,7 +43,9 @@ public class AppLogs {
|
|||
DateTimeFormatter.ofPattern("HH:mm:ss:SSS").withZone(ZoneId.systemDefault());
|
||||
|
||||
private static AppLogs INSTANCE;
|
||||
@Getter
|
||||
private final PrintStream originalSysOut;
|
||||
@Getter
|
||||
private final PrintStream originalSysErr;
|
||||
private final Path logDir;
|
||||
|
||||
|
@ -299,14 +301,6 @@ public class AppLogs {
|
|||
}
|
||||
}
|
||||
|
||||
public PrintStream getOriginalSysOut() {
|
||||
return originalSysOut;
|
||||
}
|
||||
|
||||
public PrintStream getOriginalSysErr() {
|
||||
return originalSysErr;
|
||||
}
|
||||
|
||||
public Path getLogsDirectory() {
|
||||
return logDir.getParent();
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@ public class AppTheme {
|
|||
public String toTranslatedString() {
|
||||
return name;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
public static class Theme implements PrefsChoiceValue {
|
||||
|
|
|
@ -6,6 +6,7 @@ import io.xpipe.app.issue.ErrorEvent;
|
|||
import io.xpipe.app.issue.ErrorHandler;
|
||||
import io.xpipe.core.process.OsType;
|
||||
import javafx.application.Platform;
|
||||
import lombok.Getter;
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
import javax.swing.*;
|
||||
|
@ -19,8 +20,9 @@ public class AppTray {
|
|||
|
||||
private static AppTray INSTANCE;
|
||||
private final FXTrayIcon icon;
|
||||
@Getter
|
||||
private final ErrorHandler errorHandler;
|
||||
private TrayIcon privateTrayIcon = null;
|
||||
private TrayIcon privateTrayIcon;
|
||||
|
||||
@SneakyThrows
|
||||
private AppTray() {
|
||||
|
@ -91,7 +93,7 @@ public class AppTray {
|
|||
if (OsType.getLocal().equals(OsType.LINUX)) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
try {
|
||||
Field peerField = null;
|
||||
Field peerField;
|
||||
peerField = TrayIcon.class.getDeclaredField("peer");
|
||||
peerField.setAccessible(true);
|
||||
var peer = peerField.get(this.privateTrayIcon);
|
||||
|
@ -129,10 +131,6 @@ public class AppTray {
|
|||
}
|
||||
}
|
||||
|
||||
public ErrorHandler getErrorHandler() {
|
||||
return errorHandler;
|
||||
}
|
||||
|
||||
private class TrayErrorHandler implements ErrorHandler {
|
||||
|
||||
private Instant lastErrorShown = Instant.MIN;
|
||||
|
|
|
@ -60,8 +60,4 @@ public class GuiMode extends PlatformMode {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorHandler getErrorHandler() {
|
||||
return new SyncErrorHandler(new GuiErrorHandler());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import io.xpipe.core.util.XPipeDaemonMode;
|
|||
import io.xpipe.core.util.XPipeInstallation;
|
||||
import io.xpipe.core.util.XPipeSystemId;
|
||||
import javafx.application.Platform;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -25,8 +26,11 @@ public abstract class OperationMode {
|
|||
public static final OperationMode GUI = new GuiMode();
|
||||
private static final Pattern PROPERTY_PATTERN = Pattern.compile("^-[DP](.+)=(.+)$");
|
||||
private static final List<OperationMode> ALL = List.of(BACKGROUND, TRAY, GUI);
|
||||
@Getter
|
||||
private static boolean inStartup;
|
||||
@Getter
|
||||
private static boolean inShutdown;
|
||||
@Getter
|
||||
private static boolean inShutdownHook;
|
||||
private static OperationMode CURRENT = null;
|
||||
|
||||
|
@ -116,14 +120,6 @@ public abstract class OperationMode {
|
|||
DataStoreProviders.postInit(AppExtensionManager.getInstance().getExtendedLayer());
|
||||
}
|
||||
|
||||
public static boolean isInStartup() {
|
||||
return inStartup;
|
||||
}
|
||||
|
||||
public static boolean isInShutdown() {
|
||||
return inShutdown;
|
||||
}
|
||||
|
||||
public static void switchToAsync(OperationMode newMode) {
|
||||
ThreadHelper.createPlatformThread("mode switcher", false, () -> switchTo(newMode)).start();
|
||||
}
|
||||
|
@ -285,10 +281,6 @@ public abstract class OperationMode {
|
|||
return CURRENT;
|
||||
}
|
||||
|
||||
public static boolean isInShutdownHook() {
|
||||
return inShutdownHook;
|
||||
}
|
||||
|
||||
public abstract boolean isSupported();
|
||||
|
||||
public abstract String getId();
|
||||
|
|
|
@ -4,12 +4,11 @@ import lombok.Getter;
|
|||
|
||||
import java.nio.file.Path;
|
||||
|
||||
@Getter
|
||||
public abstract class ModuleInstall {
|
||||
|
||||
@Getter
|
||||
private final String id;
|
||||
|
||||
@Getter
|
||||
private final String module;
|
||||
|
||||
protected ModuleInstall(String id, String module) {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package io.xpipe.app.fxcomps.augment;
|
||||
|
||||
import io.xpipe.app.fxcomps.CompStructure;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.Cursor;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
|
||||
public class DraggableAugment<S extends CompStructure<?>> implements Augment<S> {
|
||||
|
||||
|
@ -17,44 +15,32 @@ public class DraggableAugment<S extends CompStructure<?>> implements Augment<S>
|
|||
public void augment(S struc) {
|
||||
var circle = struc.get();
|
||||
var oldDepth = struc.get().getViewOrder();
|
||||
circle.setOnMousePressed(new EventHandler<MouseEvent>() {
|
||||
@Override public void handle(MouseEvent mouseEvent) {
|
||||
lastMouseX = mouseEvent.getSceneX();
|
||||
lastMouseY = mouseEvent.getSceneY();
|
||||
circle.getScene().setCursor(Cursor.MOVE);
|
||||
circle.setViewOrder(1000);
|
||||
}
|
||||
circle.setOnMousePressed(mouseEvent -> {
|
||||
lastMouseX = mouseEvent.getSceneX();
|
||||
lastMouseY = mouseEvent.getSceneY();
|
||||
circle.getScene().setCursor(Cursor.MOVE);
|
||||
circle.setViewOrder(1000);
|
||||
});
|
||||
circle.setOnMouseReleased(new EventHandler<MouseEvent>() {
|
||||
@Override public void handle(MouseEvent mouseEvent) {
|
||||
circle.setOnMouseReleased(mouseEvent -> circle.getScene().setCursor(Cursor.HAND));
|
||||
circle.setOnMouseDragged(mouseEvent -> {
|
||||
final double deltaX = mouseEvent.getSceneX() - lastMouseX;
|
||||
final double deltaY = mouseEvent.getSceneY() - lastMouseY;
|
||||
final double initialTranslateX = circle.getTranslateX();
|
||||
final double initialTranslateY = circle.getTranslateY();
|
||||
circle.setTranslateX(initialTranslateX + deltaX);
|
||||
circle.setTranslateY(initialTranslateY + deltaY);
|
||||
lastMouseX = mouseEvent.getSceneX();
|
||||
lastMouseY = mouseEvent.getSceneY();
|
||||
|
||||
});
|
||||
circle.setOnMouseEntered(mouseEvent -> {
|
||||
if (!mouseEvent.isPrimaryButtonDown()) {
|
||||
circle.getScene().setCursor(Cursor.HAND);
|
||||
}
|
||||
});
|
||||
circle.setOnMouseDragged(new EventHandler<MouseEvent>() {
|
||||
@Override public void handle(MouseEvent mouseEvent) {
|
||||
final double deltaX = mouseEvent.getSceneX() - lastMouseX;
|
||||
final double deltaY = mouseEvent.getSceneY() - lastMouseY;
|
||||
final double initialTranslateX = circle.getTranslateX();
|
||||
final double initialTranslateY = circle.getTranslateY();
|
||||
circle.setTranslateX(initialTranslateX + deltaX);
|
||||
circle.setTranslateY(initialTranslateY + deltaY);
|
||||
lastMouseX = mouseEvent.getSceneX();
|
||||
lastMouseY = mouseEvent.getSceneY();
|
||||
|
||||
}
|
||||
});
|
||||
circle.setOnMouseEntered(new EventHandler<MouseEvent>() {
|
||||
@Override public void handle(MouseEvent mouseEvent) {
|
||||
if (!mouseEvent.isPrimaryButtonDown()) {
|
||||
circle.getScene().setCursor(Cursor.HAND);
|
||||
}
|
||||
}
|
||||
});
|
||||
circle.setOnMouseExited(new EventHandler<MouseEvent>() {
|
||||
@Override public void handle(MouseEvent mouseEvent) {
|
||||
if (!mouseEvent.isPrimaryButtonDown()) {
|
||||
circle.getScene().setCursor(Cursor.DEFAULT);
|
||||
}
|
||||
circle.setOnMouseExited(mouseEvent -> {
|
||||
if (!mouseEvent.isPrimaryButtonDown()) {
|
||||
circle.getScene().setCursor(Cursor.DEFAULT);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -43,11 +43,10 @@ public class DataStoreListChoiceComp<T extends DataStore> extends SimpleComp {
|
|||
var delete = new IconButtonComp("mdal-delete_outline", () -> {
|
||||
selectedList.remove(t);
|
||||
});
|
||||
var hbox = new HorizontalComp(List.of(label, Comp.hspacer(), delete)).styleClass("entry");
|
||||
return hbox;
|
||||
return new HorizontalComp(List.of(label, Comp.hspacer(), delete)).styleClass("entry");
|
||||
}).padding(new Insets(0)).apply(struc -> struc.get().setMinHeight(0)).apply(struc -> ((VBox) struc.get().getContent()).setSpacing(5));
|
||||
var selected = new SimpleObjectProperty<DataStoreEntryRef<T>>();
|
||||
var add = new DataStoreChoiceComp<T>(DataStoreChoiceComp.Mode.OTHER, null, selected, storeClass, applicableCheck, initialCategory);
|
||||
var add = new DataStoreChoiceComp<>(DataStoreChoiceComp.Mode.OTHER, null, selected, storeClass, applicableCheck, initialCategory);
|
||||
selected.addListener((observable, oldValue, newValue) -> {
|
||||
if (newValue != null) {
|
||||
if (!selectedList.contains(newValue)
|
||||
|
|
|
@ -18,10 +18,12 @@ import javafx.geometry.Pos;
|
|||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.*;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
public class OptionsComp extends Comp<CompStructure<Pane>> {
|
||||
|
||||
private final List<OptionsComp.Entry> entries;
|
||||
|
@ -46,7 +48,6 @@ public class OptionsComp extends Comp<CompStructure<Pane>> {
|
|||
pane.getStyleClass().add("options-comp");
|
||||
|
||||
var nameRegions = new ArrayList<Region>();
|
||||
var compRegions = new ArrayList<Region>();
|
||||
|
||||
for (var entry : getEntries()) {
|
||||
Region compRegion = null;
|
||||
|
@ -135,7 +136,6 @@ public class OptionsComp extends Comp<CompStructure<Pane>> {
|
|||
|
||||
if (compRegion != null) {
|
||||
compRegion.accessibleTextProperty().bind(name.textProperty());
|
||||
compRegions.add(compRegion);
|
||||
line.getChildren().add(compRegion);
|
||||
HBox.setHgrow(compRegion, Priority.ALWAYS);
|
||||
}
|
||||
|
@ -143,7 +143,6 @@ public class OptionsComp extends Comp<CompStructure<Pane>> {
|
|||
pane.getChildren().add(line);
|
||||
} else {
|
||||
if (compRegion != null) {
|
||||
compRegions.add(compRegion);
|
||||
pane.getChildren().add(compRegion);
|
||||
}
|
||||
}
|
||||
|
@ -165,10 +164,6 @@ public class OptionsComp extends Comp<CompStructure<Pane>> {
|
|||
return new SimpleCompStructure<>(pane);
|
||||
}
|
||||
|
||||
public List<OptionsComp.Entry> getEntries() {
|
||||
return entries;
|
||||
}
|
||||
|
||||
public record Entry(
|
||||
String key,
|
||||
ObservableValue<String> description,
|
||||
|
|
|
@ -21,7 +21,7 @@ public class SvgHelper {
|
|||
}
|
||||
|
||||
public static Point2D getDimensions(String val) {
|
||||
var regularExpression = Pattern.compile("<svg[^>]+?width=\"([^\s]+)\"", Pattern.DOTALL);
|
||||
var regularExpression = Pattern.compile("<svg[^>]+?width=\"([^ ]+)\"", Pattern.DOTALL);
|
||||
var matcher = regularExpression.matcher(val);
|
||||
|
||||
if (!matcher.find()) {
|
||||
|
@ -36,7 +36,7 @@ public class SvgHelper {
|
|||
}
|
||||
|
||||
var width = matcher.group(1);
|
||||
regularExpression = Pattern.compile("<svg.+?height=\"([^\s]+)\"", Pattern.DOTALL);
|
||||
regularExpression = Pattern.compile("<svg.+?height=\"([^ ]+)\"", Pattern.DOTALL);
|
||||
matcher = regularExpression.matcher(val);
|
||||
matcher.find();
|
||||
var height = matcher.group(1);
|
||||
|
|
|
@ -209,7 +209,7 @@ public class BindingsHelper {
|
|||
|
||||
public static <V> ObservableList<V> orderedContentBinding(ObservableList<V> l2, Comparator<V> comp, Observable... observables) {
|
||||
return orderedContentBinding(l2, Bindings.createObjectBinding(() -> {
|
||||
return new Comparator<V>() {
|
||||
return new Comparator<>() {
|
||||
@Override
|
||||
public int compare(V o1, V o2) {
|
||||
return comp.compare(o1, o2);
|
||||
|
@ -240,7 +240,7 @@ public class BindingsHelper {
|
|||
|
||||
public static <V> ObservableList<V> filteredContentBinding(ObservableList<V> l2, Predicate<V> predicate, Observable... observables) {
|
||||
return filteredContentBinding(l2, Bindings.createObjectBinding(() -> {
|
||||
return new Predicate<V>() {
|
||||
return new Predicate<>() {
|
||||
@Override
|
||||
public boolean test(V v) {
|
||||
return predicate.test(v);
|
||||
|
|
|
@ -125,9 +125,9 @@ public abstract class LauncherInput {
|
|||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
public abstract static class ActionInput extends LauncherInput {
|
||||
|
||||
@Getter
|
||||
private final List<String> args;
|
||||
|
||||
protected ActionInput(List<String> args) {
|
||||
|
|
|
@ -31,6 +31,7 @@ import javafx.beans.value.ObservableValue;
|
|||
import javafx.collections.FXCollections;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import lombok.Getter;
|
||||
import lombok.SneakyThrows;
|
||||
import org.kordamp.ikonli.javafx.FontIcon;
|
||||
|
||||
|
@ -127,7 +128,9 @@ public class AppPrefs {
|
|||
// Lock
|
||||
// ====
|
||||
|
||||
@Getter
|
||||
private final Property<SecretValue> lockPassword = new SimpleObjectProperty<>();
|
||||
@Getter
|
||||
private final StringProperty lockCrypt = typed(new SimpleStringProperty(""), String.class);
|
||||
|
||||
// Window opacity
|
||||
|
@ -297,14 +300,6 @@ public class AppPrefs {
|
|||
}
|
||||
}
|
||||
|
||||
public StringProperty getLockCrypt() {
|
||||
return lockCrypt;
|
||||
}
|
||||
|
||||
public Property<SecretValue> getLockPassword() {
|
||||
return lockPassword;
|
||||
}
|
||||
|
||||
public final ReadOnlyIntegerProperty editorReloadTimeout() {
|
||||
return editorReloadTimeout;
|
||||
}
|
||||
|
@ -664,6 +659,7 @@ public class AppPrefs {
|
|||
name, Arrays.stream(settings).filter(setting -> setting != null).toArray(Setting[]::new));
|
||||
}
|
||||
|
||||
@Getter
|
||||
private class PrefsHandlerImpl implements PrefsHandler {
|
||||
|
||||
private final List<Category> categories;
|
||||
|
@ -710,8 +706,5 @@ public class AppPrefs {
|
|||
categories.add(index, newCategory);
|
||||
}
|
||||
|
||||
public List<Category> getCategories() {
|
||||
return categories;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -507,7 +507,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
|
|||
}
|
||||
|
||||
@Value
|
||||
static class LaunchConfiguration {
|
||||
class LaunchConfiguration {
|
||||
|
||||
DataStoreColor color;
|
||||
String title;
|
||||
|
|
|
@ -4,8 +4,7 @@ import com.dlsc.formsfx.model.util.ResourceBundleService;
|
|||
import io.xpipe.app.core.AppI18n;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.*;
|
||||
|
||||
public class QuietResourceBundleService extends ResourceBundleService {
|
||||
|
||||
|
@ -17,8 +16,8 @@ public class QuietResourceBundleService extends ResourceBundleService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Enumeration<String> getKeys() {
|
||||
return null;
|
||||
public @NonNull Enumeration<String> getKeys() {
|
||||
return Collections.emptyEnumeration();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class UpdateCheckComp extends SimpleComp {
|
|||
return "mdi2r-refresh";
|
||||
},
|
||||
updateReady);
|
||||
var button = new TileButtonComp(name, description, graphic, actionEvent -> {
|
||||
return new TileButtonComp(name, description, graphic, actionEvent -> {
|
||||
actionEvent.consume();
|
||||
if (updateReady.getValue()) {
|
||||
restart();
|
||||
|
@ -91,6 +91,5 @@ public class UpdateCheckComp extends SimpleComp {
|
|||
.disable(PlatformThread.sync(
|
||||
XPipeDistributionType.get().getUpdateHandler().getBusy()))
|
||||
.createRegion();
|
||||
return button;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,8 +62,7 @@ public class VaultCategory extends AppPrefsCategory {
|
|||
BooleanField enable = BooleanField.ofBooleanType(prefs.enableGitStorage)
|
||||
.editable(pro)
|
||||
.render(() -> {
|
||||
var c = new CustomToggleControl();
|
||||
return c;
|
||||
return new CustomToggleControl();
|
||||
});
|
||||
StringField remote = StringField.ofStringType(prefs.storageGitRemote)
|
||||
.editable(pro)
|
||||
|
|
|
@ -45,7 +45,7 @@ public class DataStateProviderImpl extends DataStateProvider {
|
|||
if (found == null) {
|
||||
entry.get().setStorePersistentState(def.get());
|
||||
}
|
||||
return (T) entry.get().getStorePersistentState();
|
||||
return entry.get().getStorePersistentState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,7 +8,6 @@ public class DataStorageWriter {
|
|||
|
||||
public static JsonNode storeToNode(DataStore store) {
|
||||
var mapper = JacksonMapper.getDefault();
|
||||
var tree = mapper.valueToTree(store);
|
||||
return tree;
|
||||
return mapper.valueToTree(store);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -227,7 +227,7 @@ public class DataStoreEntry extends StorageElement {
|
|||
}
|
||||
|
||||
public <T extends DataStore> DataStoreEntryRef<T> ref() {
|
||||
return new DataStoreEntryRef<T>(this);
|
||||
return new DataStoreEntryRef<>(this);
|
||||
}
|
||||
|
||||
public void setStoreCache(String key, Object value) {
|
||||
|
|
|
@ -15,15 +15,20 @@ import java.util.UUID;
|
|||
|
||||
public abstract class StorageElement {
|
||||
|
||||
@Getter
|
||||
protected final UUID uuid;
|
||||
protected final List<Listener> listeners = new ArrayList<>();
|
||||
@Getter
|
||||
protected boolean dirty;
|
||||
@Getter
|
||||
protected Path directory;
|
||||
|
||||
@Getter
|
||||
protected String name;
|
||||
|
||||
@Getter
|
||||
protected Instant lastUsed;
|
||||
@Getter
|
||||
protected Instant lastModified;
|
||||
|
||||
public StorageElement(
|
||||
|
@ -67,22 +72,10 @@ public abstract class StorageElement {
|
|||
return getLastUsed().isAfter(getLastModified()) ? getLastUsed() : getLastModified();
|
||||
}
|
||||
|
||||
public Path getDirectory() {
|
||||
return directory;
|
||||
}
|
||||
|
||||
public void setDirectory(Path directory) {
|
||||
this.directory = directory;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
if (name.equals(this.name)) {
|
||||
return;
|
||||
|
@ -94,14 +87,6 @@ public abstract class StorageElement {
|
|||
notifyUpdate();
|
||||
}
|
||||
|
||||
public Instant getLastUsed() {
|
||||
return lastUsed;
|
||||
}
|
||||
|
||||
public Instant getLastModified() {
|
||||
return lastModified;
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void onUpdate();
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ public class ScanAlert {
|
|||
|
||||
@Override
|
||||
protected List<Entry> setup() {
|
||||
return List.of(new Entry(AppI18n.observable("a"), new Step<CompStructure<?>>() {
|
||||
return List.of(new Entry(AppI18n.observable("a"), new Step<>() {
|
||||
@Override
|
||||
public CompStructure<?> createBase() {
|
||||
var b = new OptionsBuilder()
|
||||
|
@ -88,9 +88,10 @@ public class ScanAlert {
|
|||
null,
|
||||
entry,
|
||||
ShellStore.class,
|
||||
store1 -> true,
|
||||
StoreViewState.get().getAllConnectionsCategory())
|
||||
.disable(new SimpleBooleanProperty(initialStore != null)))
|
||||
store1 -> true,
|
||||
StoreViewState.get().getAllConnectionsCategory()
|
||||
)
|
||||
.disable(new SimpleBooleanProperty(initialStore != null)))
|
||||
.name("scanAlertHeader")
|
||||
.description("scanAlertHeaderDescription")
|
||||
.addComp(Comp.of(() -> stackPane).vgrow())
|
||||
|
@ -99,7 +100,7 @@ public class ScanAlert {
|
|||
.prefHeight(600)
|
||||
.styleClass("window-content")
|
||||
.apply(struc -> {
|
||||
VBox.setVgrow(((VBox) struc.get().getChildren().get(1)), ALWAYS);
|
||||
VBox.setVgrow(struc.get().getChildren().get(1), ALWAYS);
|
||||
})
|
||||
.createStructure()
|
||||
.get();
|
||||
|
@ -123,16 +124,17 @@ public class ScanAlert {
|
|||
}
|
||||
|
||||
selected.setAll(a.stream()
|
||||
.filter(
|
||||
scanOperation ->
|
||||
scanOperation.isDefaultSelected())
|
||||
.toList());
|
||||
.filter(
|
||||
scanOperation ->
|
||||
scanOperation.isDefaultSelected())
|
||||
.toList());
|
||||
var r = new ListSelectorComp<>(
|
||||
a,
|
||||
scanOperation ->
|
||||
AppI18n.get(scanOperation.getNameKey()),
|
||||
selected,
|
||||
a.size() > 3)
|
||||
a,
|
||||
scanOperation ->
|
||||
AppI18n.get(scanOperation.getNameKey()),
|
||||
selected,
|
||||
a.size() > 3
|
||||
)
|
||||
.createRegion();
|
||||
stackPane.getChildren().add(r);
|
||||
});
|
||||
|
|
|
@ -6,6 +6,7 @@ import io.xpipe.beacon.util.QuietDialogHandler;
|
|||
import io.xpipe.core.store.InternalStreamStore;
|
||||
import io.xpipe.core.util.FailableBiConsumer;
|
||||
import io.xpipe.core.util.FailableConsumer;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
@ -13,6 +14,7 @@ import java.io.OutputStream;
|
|||
|
||||
public abstract class BeaconConnection implements AutoCloseable {
|
||||
|
||||
@Getter
|
||||
protected BeaconClient beaconClient;
|
||||
|
||||
private InputStream bodyInput;
|
||||
|
@ -20,10 +22,6 @@ public abstract class BeaconConnection implements AutoCloseable {
|
|||
|
||||
protected abstract void constructSocket();
|
||||
|
||||
public BeaconClient getBeaconClient() {
|
||||
return beaconClient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
try {
|
||||
|
|
|
@ -16,7 +16,7 @@ public class MessageExchanges {
|
|||
if (ALL == null) {
|
||||
ALL = ServiceLoader.load(MessageExchange.class).stream()
|
||||
.map(s -> {
|
||||
return (MessageExchange) s.get();
|
||||
return s.get();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package io.xpipe.core.charsetter;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
|
@ -11,6 +12,7 @@ public enum NewLine {
|
|||
CRLF("\r\n", "crlf");
|
||||
|
||||
private final String newLine;
|
||||
@Getter
|
||||
private final String id;
|
||||
|
||||
NewLine(String newLine, String id) {
|
||||
|
@ -36,7 +38,4 @@ public enum NewLine {
|
|||
return newLine;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import lombok.ToString;
|
|||
public class BaseQueryElement extends DialogElement {
|
||||
|
||||
private final String description;
|
||||
@Getter
|
||||
private final boolean newLine;
|
||||
private final boolean required;
|
||||
private final boolean secret;
|
||||
|
@ -35,10 +36,6 @@ public class BaseQueryElement extends DialogElement {
|
|||
return required && value == null;
|
||||
}
|
||||
|
||||
public boolean isNewLine() {
|
||||
return newLine;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toDisplayString() {
|
||||
return description;
|
||||
|
|
|
@ -14,11 +14,15 @@ import java.util.List;
|
|||
@Getter
|
||||
public class ChoiceElement extends DialogElement {
|
||||
|
||||
@Getter
|
||||
private final String description;
|
||||
@Getter
|
||||
private final List<Choice> elements;
|
||||
@Getter
|
||||
private final boolean required;
|
||||
private final boolean quiet;
|
||||
|
||||
@Getter
|
||||
private int selected;
|
||||
|
||||
@JsonCreator
|
||||
|
@ -76,19 +80,4 @@ public class ChoiceElement extends DialogElement {
|
|||
return false;
|
||||
}
|
||||
|
||||
public List<Choice> getElements() {
|
||||
return elements;
|
||||
}
|
||||
|
||||
public int getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public boolean isRequired() {
|
||||
return required;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,10 +2,12 @@ package io.xpipe.core.dialog;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
|
||||
|
@ -27,7 +29,4 @@ public abstract class DialogElement {
|
|||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,10 @@ package io.xpipe.core.dialog;
|
|||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@JsonTypeName("header")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString
|
||||
|
@ -27,7 +29,4 @@ public class HeaderElement extends DialogElement {
|
|||
return true;
|
||||
}
|
||||
|
||||
public String getHeader() {
|
||||
return header;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public interface ShellControl extends ProcessControl {
|
|||
s.setOsName(shellControl.getOsName());
|
||||
store.setState(s);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
default ShellControl withSupportCheckInit(Predicate<ShellControl> predicate, String name) {
|
||||
return onInit(shellControl -> {
|
||||
|
@ -52,7 +52,7 @@ public interface ShellControl extends ProcessControl {
|
|||
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
default <T extends ShellStoreState> ShellControl withShellStateFail(StatefulDataStore<T> store) {
|
||||
return onFail(shellControl -> {
|
||||
|
@ -60,7 +60,7 @@ public interface ShellControl extends ProcessControl {
|
|||
s.setRunning(false);
|
||||
store.setState(s);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
ShellControl onExit(Consumer<ShellControl> pc);
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package io.xpipe.core.store;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum DataFlow {
|
||||
@JsonProperty("input")
|
||||
INPUT("Input"),
|
||||
|
@ -28,7 +30,4 @@ public enum DataFlow {
|
|||
return this == OUTPUT || this == INPUT_OUTPUT;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ import java.nio.ByteBuffer;
|
|||
import java.nio.CharBuffer;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@EqualsAndHashCode
|
||||
public abstract class EncryptedSecretValue implements SecretValue {
|
||||
|
||||
@Getter
|
||||
String encryptedValue;
|
||||
|
||||
public EncryptedSecretValue(char[] c) {
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
|
|||
import com.fasterxml.jackson.databind.Module;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -16,6 +17,7 @@ public class JacksonMapper {
|
|||
|
||||
private static final ObjectMapper BASE = new ObjectMapper();
|
||||
private static final ObjectMapper INSTANCE;
|
||||
@Getter
|
||||
private static boolean init = false;
|
||||
|
||||
public static <T> T parse(String s, Class<T> c) throws JsonProcessingException {
|
||||
|
@ -85,7 +87,4 @@ public class JacksonMapper {
|
|||
return INSTANCE;
|
||||
}
|
||||
|
||||
public static boolean isInit() {
|
||||
return init;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Getter
|
||||
public enum XPipeDaemonMode {
|
||||
@JsonProperty("background")
|
||||
BACKGROUND("background", List.of("base", "background")),
|
||||
|
@ -29,10 +30,8 @@ public enum XPipeDaemonMode {
|
|||
.collect(Collectors.joining(", "))));
|
||||
}
|
||||
|
||||
@Getter
|
||||
private final String displayName;
|
||||
|
||||
@Getter
|
||||
private final List<String> nameAlternatives;
|
||||
|
||||
XPipeDaemonMode(String displayName, List<String> nameAlternatives) {
|
||||
|
|
|
@ -90,28 +90,33 @@ public class XPipeUrlAction implements ActionProvider {
|
|||
|
||||
@Override
|
||||
public Action createAction(List<String> args) throws Exception {
|
||||
if (args.get(0).equals("addStore")) {
|
||||
var storeString = DefaultSecretValue.builder()
|
||||
.encryptedValue(args.get(1))
|
||||
.build();
|
||||
var store = JacksonMapper.parse(storeString.getSecretValue(), DataStore.class);
|
||||
return new AddStoreAction(store);
|
||||
} else if (args.get(0).equals("launch")) {
|
||||
var entry = DataStorage.get()
|
||||
.getStoreEntryIfPresent(UUID.fromString(args.get(1)))
|
||||
.orElseThrow();
|
||||
return new LaunchAction(entry);
|
||||
} else if (args.get(0).equals("action")) {
|
||||
var id = args.get(1);
|
||||
ActionProvider provider = ActionProvider.ALL.stream().filter(actionProvider -> {
|
||||
return actionProvider.getDataStoreCallSite() != null && id.equals(actionProvider.getId());
|
||||
}).findFirst().orElseThrow();
|
||||
var entry = DataStorage.get()
|
||||
.getStoreEntryIfPresent(UUID.fromString(args.get(2)))
|
||||
.orElseThrow();
|
||||
return new CallAction(provider, entry);
|
||||
} else {
|
||||
return null;
|
||||
switch (args.get(0)) {
|
||||
case "addStore" -> {
|
||||
var storeString = DefaultSecretValue.builder()
|
||||
.encryptedValue(args.get(1))
|
||||
.build();
|
||||
var store = JacksonMapper.parse(storeString.getSecretValue(), DataStore.class);
|
||||
return new AddStoreAction(store);
|
||||
}
|
||||
case "launch" -> {
|
||||
var entry = DataStorage.get()
|
||||
.getStoreEntryIfPresent(UUID.fromString(args.get(1)))
|
||||
.orElseThrow();
|
||||
return new LaunchAction(entry);
|
||||
}
|
||||
case "action" -> {
|
||||
var id = args.get(1);
|
||||
ActionProvider provider = ActionProvider.ALL.stream().filter(actionProvider -> {
|
||||
return actionProvider.getDataStoreCallSite() != null && id.equals(actionProvider.getId());
|
||||
}).findFirst().orElseThrow();
|
||||
var entry = DataStorage.get()
|
||||
.getStoreEntryIfPresent(UUID.fromString(args.get(2)))
|
||||
.orElseThrow();
|
||||
return new CallAction(provider, entry);
|
||||
}
|
||||
default -> {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -2,7 +2,6 @@ package io.xpipe.ext.base.browser;
|
|||
|
||||
import io.xpipe.app.browser.BrowserEntry;
|
||||
import io.xpipe.app.browser.OpenFileSystemModel;
|
||||
import io.xpipe.app.browser.action.BrowserAction;
|
||||
import io.xpipe.app.browser.action.LeafAction;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.input.KeyCode;
|
||||
|
|
|
@ -54,7 +54,7 @@ public class SimpleScriptStore extends ScriptStore {
|
|||
}
|
||||
|
||||
@Getter
|
||||
public static enum ExecutionType {
|
||||
public enum ExecutionType {
|
||||
@JsonProperty("dumbOnly")
|
||||
DUMB_ONLY("dumbOnly"),
|
||||
@JsonProperty("terminalOnly")
|
||||
|
|
Loading…
Reference in a new issue