This commit is contained in:
crschnick
2025-07-04 09:37:08 +00:00
parent e2d2b38d39
commit 430dc176ab
239 changed files with 477 additions and 450 deletions
@@ -3,6 +3,7 @@ package io.xpipe.app.action;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.base.*;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.BatchStoreAction;
import io.xpipe.app.hub.action.MultiStoreAction;
import io.xpipe.app.hub.action.StoreAction;
@@ -11,7 +12,6 @@ import io.xpipe.app.hub.comp.StoreListChoiceComp;
import io.xpipe.app.hub.comp.StoreViewState;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.*;
import io.xpipe.app.ext.DataStore;
import javafx.beans.property.*;
import javafx.collections.FXCollections;
@@ -2,6 +2,7 @@ package io.xpipe.app.action;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.BatchStoreAction;
import io.xpipe.app.hub.action.MultiStoreAction;
import io.xpipe.app.hub.action.StoreAction;
@@ -9,7 +10,6 @@ import io.xpipe.app.hub.comp.StoreListChoiceComp;
import io.xpipe.app.hub.comp.StoreViewState;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.OptionsBuilder;
import io.xpipe.app.ext.DataStore;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.FXCollections;
@@ -1,9 +1,9 @@
package io.xpipe.app.action;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.BatchStoreAction;
import io.xpipe.app.hub.action.MultiStoreAction;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.ext.DataStore;
import io.xpipe.core.JacksonMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -18,16 +18,16 @@ public interface ActionProvider {
actionProvider.init();
// For debugging
// if (actionProvider instanceof HubLeafProvider<?>) {
// actionProvider.getActionClass().orElseThrow();
// }
// if (actionProvider instanceof HubBranchProvider<?> b) {
// for (HubMenuItemProvider<?> child : b.getChildren(null)) {
// if (ALL.stream().noneMatch(a -> a.getClass().equals(child.getClass()))) {
// System.out.println(child.getClass());
// }
// }
// }
// if (actionProvider instanceof HubLeafProvider<?>) {
// actionProvider.getActionClass().orElseThrow();
// }
// if (actionProvider instanceof HubBranchProvider<?> b) {
// for (HubMenuItemProvider<?> child : b.getChildren(null)) {
// if (ALL.stream().noneMatch(a -> a.getClass().equals(child.getClass()))) {
// System.out.println(child.getClass());
// }
// }
// }
} catch (Throwable t) {
ErrorEventFactory.fromThrowable(t).handle();
@@ -1,7 +1,7 @@
package io.xpipe.app.beacon;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.storage.DataStoreEntry;
import lombok.Value;
@@ -1,15 +1,15 @@
package io.xpipe.app.beacon.impl;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.ValidationException;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.beacon.BeaconClientException;
import io.xpipe.beacon.api.ConnectionAddExchange;
import io.xpipe.app.ext.ValidationException;
import io.xpipe.core.JacksonMapper;
import com.sun.net.httpserver.HttpExchange;
import io.xpipe.core.JacksonMapper;
public class ConnectionAddExchangeImpl extends ConnectionAddExchange {
@@ -6,9 +6,9 @@ import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.beacon.BeaconClientException;
import io.xpipe.beacon.api.ShellStartExchange;
import io.xpipe.core.JacksonMapper;
import com.sun.net.httpserver.HttpExchange;
import io.xpipe.core.JacksonMapper;
import lombok.SneakyThrows;
public class ShellStartExchangeImpl extends ShellStartExchange {
@@ -1,9 +1,9 @@
package io.xpipe.app.beacon.impl;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.app.terminal.TerminalLauncherManager;
import io.xpipe.beacon.api.SshLaunchExchange;
import io.xpipe.app.process.ShellDialects;
import com.sun.net.httpserver.HttpExchange;
@@ -9,6 +9,7 @@ import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.base.*;
import io.xpipe.app.core.AppFontSizes;
import io.xpipe.app.core.AppLayoutModel;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.hub.comp.StoreEntryWrapper;
import io.xpipe.app.hub.comp.StoreViewState;
@@ -18,7 +19,6 @@ import io.xpipe.app.util.FileReference;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
@@ -2,13 +2,13 @@ package io.xpipe.app.browser;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.BooleanScope;
import io.xpipe.app.util.FileReference;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.core.FailableFunction;
import io.xpipe.core.FilePath;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
@@ -4,14 +4,14 @@ import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.browser.file.BrowserHistorySavedState;
import io.xpipe.app.browser.file.BrowserHistoryTabModel;
import io.xpipe.app.browser.file.BrowserTransferModel;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.BooleanScope;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.core.FailableFunction;
import io.xpipe.core.FilePath;
import javafx.beans.binding.Bindings;
import javafx.beans.property.BooleanProperty;
@@ -1,10 +1,10 @@
package io.xpipe.app.browser;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreColor;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -5,9 +5,9 @@ import io.xpipe.app.browser.BrowserStoreSessionTab;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.core.AppLayoutModel;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.experimental.SuperBuilder;
@@ -4,9 +4,9 @@ import io.xpipe.app.browser.action.BrowserAction;
import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.DesktopHelper;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.process.ShellControl;
import lombok.experimental.SuperBuilder;
import lombok.extern.jackson.Jacksonized;
@@ -4,11 +4,11 @@ import io.xpipe.app.browser.action.BrowserAction;
import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.LocalShell;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import lombok.experimental.SuperBuilder;
import lombok.extern.jackson.Jacksonized;
@@ -5,8 +5,8 @@ import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileOpener;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import lombok.experimental.SuperBuilder;
import lombok.extern.jackson.Jacksonized;
@@ -3,8 +3,8 @@ package io.xpipe.app.browser.action.impl;
import io.xpipe.app.browser.action.BrowserAction;
import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.util.CommandDialog;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.util.CommandDialog;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;
@@ -4,10 +4,10 @@ import io.xpipe.app.action.AbstractAction;
import io.xpipe.app.action.ActionProvider;
import io.xpipe.app.action.StoreContextAction;
import io.xpipe.app.browser.file.BrowserFileTransferOperation;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.FileSystemStore;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;
@@ -1,9 +1,9 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.util.GlobalClipboard;
import io.xpipe.app.ext.FileEntry;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleObjectProperty;
@@ -3,11 +3,11 @@ package io.xpipe.app.browser.file;
import io.xpipe.app.browser.menu.BrowserMenuProviders;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.*;
import io.xpipe.core.OsType;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.util.*;
import io.xpipe.core.FileInfo;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -1,12 +1,12 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.browser.action.impl.MoveFileActionProvider;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.core.OsType;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleBooleanProperty;
@@ -3,19 +3,19 @@ package io.xpipe.app.browser.file;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.ext.ConnectionFileSystem;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ElevationFunction;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.BooleanScope;
import io.xpipe.app.util.FileBridge;
import io.xpipe.app.util.FileOpener;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ElevationFunction;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileInfo;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import lombok.SneakyThrows;
@@ -45,8 +45,8 @@ public class BrowserFileOpener {
}
var sc = model.getFileSystem().getShell().orElseThrow();
var requiresSudo = sc.getOsType() != OsType.WINDOWS &&
requiresSudo(model, (FileInfo.Unix) file.getInfo(), file.getPath());
var requiresSudo =
sc.getOsType() != OsType.WINDOWS && requiresSudo(model, (FileInfo.Unix) file.getInfo(), file.getPath());
var defOutput = createFileOutput(model, file, totalBytes, false);
if (!requiresSudo) {
@@ -91,12 +91,16 @@ public class BrowserFileOpener {
return !test;
}
private static BrowserFileOutput createFileOutput(BrowserFileSystemTabModel model, FileEntry file, long totalBytes, boolean elevate) throws
Exception {
var sc = elevate ? model.getFileSystem().getShell().orElseThrow()
.identicalDialectSubShell()
.elevated(ElevationFunction.elevated(null))
.start() : model.getFileSystem().getShell().orElseThrow().start();
private static BrowserFileOutput createFileOutput(
BrowserFileSystemTabModel model, FileEntry file, long totalBytes, boolean elevate) throws Exception {
var sc = elevate
? model.getFileSystem()
.getShell()
.orElseThrow()
.identicalDialectSubShell()
.elevated(ElevationFunction.elevated(null))
.start()
: model.getFileSystem().getShell().orElseThrow().start();
var fs = elevate ? new ConnectionFileSystem(sc) : model.getFileSystem();
var isSudoersFile = file.getPath().startsWith("/etc/sudo");
var output = new BrowserFileOutput() {
@@ -135,7 +139,10 @@ public class BrowserFileOpener {
if (isSudoersFile) {
if (sc.view().findProgram("visudo").isPresent()) {
try {
sc.command(CommandBuilder.of().add("visudo", "-c", "-f").addFile(file.getPath())).execute();
sc.command(CommandBuilder.of()
.add("visudo", "-c", "-f")
.addFile(file.getPath()))
.execute();
} catch (ProcessOutputException ex) {
ErrorEventFactory.fromThrowable(ex).expected().handle();
fs.copy(sc.getSystemTemporaryDirectory().join(file.getName()), file.getPath());
@@ -1,11 +1,11 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.util.PasswdFile;
import io.xpipe.app.util.ShellControlCache;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.process.ShellDialect;
import io.xpipe.app.util.PasswdFile;
import io.xpipe.app.util.ShellControlCache;
import io.xpipe.core.OsType;
import lombok.Getter;
@@ -1,11 +1,11 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.ext.FileSystem;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.core.OsType;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import java.time.Instant;
import java.util.List;
@@ -8,6 +8,7 @@ import io.xpipe.app.browser.action.impl.TransferFilesActionProvider;
import io.xpipe.app.browser.menu.BrowserMenuItemProvider;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.core.window.AppMainWindow;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.ext.FileSystem;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.ext.ProcessControlProvider;
@@ -20,11 +21,10 @@ import io.xpipe.app.terminal.*;
import io.xpipe.app.util.BooleanScope;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.core.FailableConsumer;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import javafx.beans.binding.Bindings;
import javafx.beans.property.*;
import javafx.collections.FXCollections;
@@ -1,13 +1,13 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.ext.FileSystem;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.OsFileSystem;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import javafx.beans.property.BooleanProperty;
import javafx.beans.value.ChangeListener;
@@ -1,10 +1,10 @@
package io.xpipe.app.browser.file;
import io.xpipe.app.ext.LocalStore;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.ext.FileSystem;
import io.xpipe.app.ext.LocalStore;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -4,12 +4,12 @@ import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.base.SimpleTitledPaneComp;
import io.xpipe.app.comp.base.VerticalComp;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.OsFileSystem;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.DerivedObservableList;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.ext.FileEntry;
import javafx.application.Platform;
import javafx.collections.FXCollections;
@@ -3,10 +3,10 @@ package io.xpipe.app.browser.file;
import io.xpipe.app.browser.icon.BrowserIconManager;
import io.xpipe.app.comp.base.PrettyImageHelper;
import io.xpipe.app.core.AppFontSizes;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.util.BooleanAnimationTimer;
import io.xpipe.app.util.InputHelper;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.core.FileKind;
import javafx.application.Platform;
@@ -109,7 +109,8 @@ public class BrowserTransferModel {
return;
}
var fixedFile = OsFileSystem.ofLocal().makeFileSystemCompatible(entry.getRawFileEntry().getPath());
var fixedFile = OsFileSystem.ofLocal()
.makeFileSystemCompatible(entry.getRawFileEntry().getPath());
Path file = TEMP.resolve(fixedFile.getFileName());
var item = new Item(model, name, entry, file);
items.add(item);
@@ -4,9 +4,9 @@ import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.util.CommandDialog;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.CommandDialog;
import javafx.beans.value.ObservableValue;
@@ -11,8 +11,8 @@ import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -11,8 +11,8 @@ import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -11,8 +11,8 @@ import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -7,9 +7,9 @@ import io.xpipe.app.browser.menu.BrowserApplicationPathMenuProvider;
import io.xpipe.app.browser.menu.BrowserMenuCategory;
import io.xpipe.app.browser.menu.BrowserMenuLeafProvider;
import io.xpipe.app.browser.menu.FileTypeMenuProvider;
import io.xpipe.app.util.FileOpener;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.FileOpener;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -14,9 +14,9 @@ import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.OptionsBuilder;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -8,8 +8,8 @@ import io.xpipe.app.browser.menu.BrowserMenuCategory;
import io.xpipe.app.browser.menu.BrowserMenuLeafProvider;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.value.ObservableValue;
import javafx.scene.input.KeyCode;
@@ -5,13 +5,13 @@ import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.browser.menu.BrowserMenuCategory;
import io.xpipe.app.browser.menu.MultiExecuteMenuProvider;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.app.ext.FileEntry;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.value.ObservableValue;
@@ -53,7 +53,8 @@ public class BaseUntarMenuProvider implements BrowserApplicationPathMenuProvider
@Override
public ObservableValue<String> getName(BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType()).getFileSystemSeparator();
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType())
.getFileSystemSeparator();
var dir = entries.size() > 1
? "[...]"
: getTarget(entries.getFirst().getRawFileEntry().getPath()).getFileName() + sep;
@@ -50,7 +50,8 @@ public abstract class BaseUnzipUnixMenuProvider implements BrowserMenuLeafProvid
@Override
public ObservableValue<String> getName(BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType()).getFileSystemSeparator();
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType())
.getFileSystemSeparator();
var dir = entries.size() > 1
? "[...]"
: UnzipActionProvider.getTarget(
@@ -36,7 +36,8 @@ public abstract class BaseUnzipWindowsActionProvider implements BrowserMenuLeafP
@Override
public ObservableValue<String> getName(BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType()).getFileSystemSeparator();
var sep = OsFileSystem.of(model.getFileSystem().getShell().orElseThrow().getOsType())
.getFileSystemSeparator();
var dir = entries.size() > 1
? "[...]"
: UnzipActionProvider.getTarget(
@@ -8,8 +8,8 @@ import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.util.CommandSupport;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.OsType;
import io.xpipe.core.FileKind;
import io.xpipe.core.OsType;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -5,10 +5,10 @@ import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.browser.file.BrowserFileSystemTabModel;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import lombok.experimental.SuperBuilder;
import lombok.extern.jackson.Jacksonized;
@@ -4,10 +4,10 @@ import io.xpipe.app.browser.action.BrowserAction;
import io.xpipe.app.browser.action.BrowserActionProvider;
import io.xpipe.app.browser.file.BrowserEntry;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;
@@ -6,6 +6,7 @@ import io.xpipe.app.comp.CompStructure;
import io.xpipe.app.comp.SimpleCompStructure;
import io.xpipe.app.core.AppLayoutModel;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.prefs.AppPrefs;
@@ -14,7 +15,6 @@ import io.xpipe.app.storage.DataStorageSyncHandler;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -3,11 +3,11 @@ package io.xpipe.app.comp.base;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.CompStructure;
import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.FileOpener;
import io.xpipe.app.ext.StatefulDataStore;
import io.xpipe.app.process.ShellScript;
import io.xpipe.app.process.ShellStoreState;
import io.xpipe.app.ext.StatefulDataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.FileOpener;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -5,8 +5,8 @@ import io.xpipe.app.core.AppImages;
import io.xpipe.app.issue.TrackEvent;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.core.FilePath;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -98,7 +98,8 @@ public class PrettyImageComp extends SimpleComp {
&& AppPrefs.get().theme().getValue() != null
&& AppPrefs.get().theme().getValue().isDark();
var fixed = val != null
? FilePath.of(val).getBaseName() + (useDark ? "-dark" : "") + "." + FilePath.of(val).getExtension().orElseThrow()
? FilePath.of(val).getBaseName() + (useDark ? "-dark" : "") + "."
+ FilePath.of(val).getExtension().orElseThrow()
: null;
image.set(fixed);
@@ -4,9 +4,8 @@ import io.xpipe.app.comp.Comp;
import io.xpipe.app.core.AppImages;
import io.xpipe.app.core.window.AppMainWindow;
import io.xpipe.app.util.BindingsHelper;
import io.xpipe.core.FilePath;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;
@@ -5,8 +5,8 @@ import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.issue.TrackEvent;
import io.xpipe.app.util.ModuleAccess;
import io.xpipe.core.OsType;
import io.xpipe.core.ModuleLayerLoader;
import io.xpipe.core.OsType;
import io.xpipe.core.XPipeInstallation;
import lombok.Getter;
@@ -2,10 +2,10 @@ package io.xpipe.app.core;
import io.xpipe.app.core.mode.OperationMode;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.util.LocalShell;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellDialect;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.app.util.LocalShell;
import io.xpipe.core.OsType;
import io.xpipe.core.XPipeInstallation;
import java.util.List;
@@ -2,8 +2,8 @@ package io.xpipe.app.core.check;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.core.OsType;
import java.util.concurrent.TimeUnit;
@@ -1,9 +1,8 @@
package io.xpipe.app.core.check;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.core.OsType;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@@ -17,7 +16,8 @@ public class AppHomebrewCoreutilsCheck {
var out = new String(proc.getInputStream().readAllBytes());
proc.waitFor(1, TimeUnit.SECONDS);
var first = out.lines().findFirst();
return first.filter(s -> s.contains("coreutils")).map(s -> FilePath.of(s).getParent().toString());
return first.filter(s -> s.contains("coreutils"))
.map(s -> FilePath.of(s).getParent().toString());
} catch (Exception e) {
return Optional.empty();
}
@@ -2,10 +2,10 @@ package io.xpipe.app.core.check;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.util.ScriptHelper;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.process.ShellSpawnException;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.util.ScriptHelper;
import lombok.Value;
@@ -1,8 +1,8 @@
package io.xpipe.app.core.check;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.util.LocalShell;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.core.XPipeInstallation;
public class AppTestCommandCheck {
@@ -12,8 +12,8 @@ import io.xpipe.app.prefs.CloseBehaviour;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.update.AppDistributionType;
import io.xpipe.app.util.*;
import io.xpipe.core.OsType;
import io.xpipe.core.FailableRunnable;
import io.xpipe.core.OsType;
import io.xpipe.core.XPipeDaemonMode;
import javafx.application.Platform;
@@ -4,9 +4,10 @@ import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.update.AppDistributionType;
import io.xpipe.app.util.LicenseProvider;
import io.xpipe.app.util.PlatformThread;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import lombok.Getter;
public class AppWindowTitle {
@@ -17,26 +18,28 @@ public class AppWindowTitle {
public static void init() {
if (LicenseProvider.get() != null) {
var t = LicenseProvider.get().licenseTitle();
t.subscribe(_ -> {
t.subscribe(ignored -> {
title.setValue(createTitle());
});
}
var l = AppI18n.activeLanguage();
l.subscribe(_ -> {
l.subscribe(ignored -> {
title.setValue(createTitle());
});
if (AppDistributionType.get() != AppDistributionType.UNKNOWN) {
var u = AppDistributionType.get().getUpdateHandler().getPreparedUpdate();
u.subscribe(_ -> {
u.subscribe(ignored -> {
title.setValue(createTitle());
});
}
}
private static String createTitle() {
var t = LicenseProvider.get() != null ? " " + LicenseProvider.get().licenseTitle().getValue() : "";
var t = LicenseProvider.get() != null
? " " + LicenseProvider.get().licenseTitle().getValue()
: "";
var base = String.format("XPipe%s (%s)", t, AppProperties.get().getVersion());
var prefix = AppProperties.get().isStaging() ? "[Public Test Build, Not a proper release] " : "";
var dist = AppDistributionType.get();
@@ -1,10 +1,10 @@
package io.xpipe.app.ext;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.util.DocumentationLink;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.app.util.DocumentationLink;
import io.xpipe.core.FilePath;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -3,6 +3,7 @@ package io.xpipe.app.ext;
import io.xpipe.core.FileInfo;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import lombok.NonNull;
import lombok.Setter;
import lombok.Value;
@@ -3,9 +3,11 @@ package io.xpipe.app.ext;
import io.xpipe.core.FileInfo;
import io.xpipe.core.FileKind;
import io.xpipe.core.FilePath;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import lombok.Value;
import java.time.Instant;
@Value
@@ -1,7 +1,7 @@
package io.xpipe.app.ext;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.core.ModuleLayerLoader;
import lombok.AllArgsConstructor;
@@ -1,7 +1,7 @@
package io.xpipe.app.ext;
import io.xpipe.app.storage.DataStateHandler;
import lombok.SneakyThrows;
import java.util.Arrays;
@@ -2,9 +2,9 @@ package io.xpipe.app.hub.action;
import io.xpipe.app.action.AbstractAction;
import io.xpipe.app.action.ActionProvider;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.value.ObservableValue;
@@ -1,10 +1,10 @@
package io.xpipe.app.hub.action;
import io.xpipe.app.action.*;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.core.JacksonMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -1,7 +1,7 @@
package io.xpipe.app.hub.action;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import java.util.List;
@@ -1,8 +1,8 @@
package io.xpipe.app.hub.action;
import io.xpipe.app.action.AbstractAction;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import lombok.SneakyThrows;
@@ -1,9 +1,9 @@
package io.xpipe.app.hub.action;
import io.xpipe.app.action.ActionProvider;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.value.ObservableValue;
@@ -3,10 +3,10 @@ package io.xpipe.app.hub.action;
import io.xpipe.app.action.ActionJacksonMapper;
import io.xpipe.app.action.SerializableAction;
import io.xpipe.app.action.StoreContextAction;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.core.JacksonMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -3,10 +3,10 @@ package io.xpipe.app.hub.action;
import io.xpipe.app.action.ActionJacksonMapper;
import io.xpipe.app.action.SerializableAction;
import io.xpipe.app.action.StoreContextAction;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.core.JacksonMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -3,6 +3,7 @@ package io.xpipe.app.hub.action.impl;
import io.xpipe.app.browser.BrowserFullSessionModel;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppLayoutModel;
import io.xpipe.app.ext.FileSystemStore;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
@@ -10,7 +11,6 @@ import io.xpipe.app.hub.action.StoreActionCategory;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.FileSystemStore;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ObservableValue;
@@ -1,6 +1,7 @@
package io.xpipe.app.hub.action.impl;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.hub.action.StoreActionCategory;
@@ -8,7 +9,6 @@ import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.value.ObservableValue;
@@ -1,13 +1,13 @@
package io.xpipe.app.hub.action.impl;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.hub.action.StoreActionCategory;
import io.xpipe.app.hub.comp.StoreCreationDialog;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.value.ObservableValue;
@@ -1,10 +1,10 @@
package io.xpipe.app.hub.action.impl;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.comp.StoreViewState;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.ext.DataStore;
public abstract class InitHubLeafProvider<T extends DataStore, O> implements HubLeafProvider<T> {
@@ -17,11 +17,14 @@ public abstract class InitHubLeafProvider<T extends DataStore, O> implements Hub
// Update entries to potentially show item
if (available != null) {
StoreViewState.get().getAllEntries().getList().stream().filter(w -> w.getValidity().getValue().isUsable()).forEach(w -> {
if (getApplicableClass().isAssignableFrom(w.getStore().getValue().getClass())) {
w.update();
}
});
StoreViewState.get().getAllEntries().getList().stream()
.filter(w -> w.getValidity().getValue().isUsable())
.forEach(w -> {
if (getApplicableClass()
.isAssignableFrom(w.getStore().getValue().getClass())) {
w.update();
}
});
}
});
}
@@ -1,13 +1,13 @@
package io.xpipe.app.hub.action.impl;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.BatchHubProvider;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.hub.action.StoreActionCategory;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.value.ObservableValue;
@@ -1,8 +1,8 @@
package io.xpipe.app.hub.action.impl;
import io.xpipe.app.action.*;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.StoreAction;
import lombok.experimental.SuperBuilder;
import lombok.extern.jackson.Jacksonized;
@@ -5,12 +5,12 @@ import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.hub.action.StoreActionCategory;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.process.CommandControl;
import io.xpipe.app.process.ElevationFunction;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.process.ShellDialects;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.core.FilePath;
import javafx.beans.value.ObservableValue;
@@ -5,12 +5,12 @@ import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.hub.action.BatchHubProvider;
import io.xpipe.app.hub.action.MultiStoreAction;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.process.SystemState;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.ScanDialog;
import io.xpipe.app.util.ScanDialogAction;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.process.SystemState;
import javafx.beans.value.ObservableValue;
@@ -6,11 +6,11 @@ import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.hub.action.HubLeafProvider;
import io.xpipe.app.hub.action.StoreAction;
import io.xpipe.app.hub.action.StoreActionCategory;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.process.SystemState;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.ScanDialog;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.process.SystemState;
import javafx.beans.value.ObservableValue;
@@ -5,9 +5,8 @@ import io.xpipe.app.comp.base.PrettyImageHelper;
import io.xpipe.app.comp.base.StackComp;
import io.xpipe.app.core.AppResources;
import io.xpipe.app.process.SystemState;
import io.xpipe.core.FilePath;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ObservableValue;
@@ -76,7 +75,12 @@ public class OsLogoComp extends SimpleComp {
.map(path -> path.getFileName().toString())
.forEach(path -> {
var base = path.replace("-dark", "").replace("-24.png", ".svg");
ICONS.put(FilePath.of(base).getBaseName().toString().split("-")[0], "os/" + base);
ICONS.put(
FilePath.of(base)
.getBaseName()
.toString()
.split("-")[0],
"os/" + base);
});
}
});
@@ -30,15 +30,18 @@ public class StandardStoreEntryComp extends StoreEntryComp {
private Label createSummary() {
var summary = new Label();
summary.textProperty().bind(Bindings.createStringBinding(() -> {
var summaryValue = getWrapper().getShownSummary().getValue();
if (summaryValue != null) {
return summaryValue;
} else {
var provider = getWrapper().getEntry().getProvider();
return AppI18n.get(provider.getId() + ".displayName");
}
}, getWrapper().getShownSummary()));
summary.textProperty()
.bind(Bindings.createStringBinding(
() -> {
var summaryValue = getWrapper().getShownSummary().getValue();
if (summaryValue != null) {
return summaryValue;
} else {
var provider = getWrapper().getEntry().getProvider();
return AppI18n.get(provider.getId() + ".displayName");
}
},
getWrapper().getShownSummary()));
summary.getStyleClass().add("summary");
AppFontSizes.xs(summary);
return summary;
@@ -4,12 +4,12 @@ import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.base.ModalButton;
import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreCategoryConfig;
import io.xpipe.app.storage.DataStoreColor;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.OptionsBuilder;
import io.xpipe.app.ext.DataStore;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleIntegerProperty;
@@ -6,6 +6,7 @@ import io.xpipe.app.comp.base.*;
import io.xpipe.app.core.AppFontSizes;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.LocalStore;
import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.storage.DataStorage;
@@ -14,7 +15,6 @@ import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.BindingsHelper;
import io.xpipe.app.util.DataStoreCategoryChoiceComp;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.ext.DataStore;
import javafx.beans.binding.Bindings;
import javafx.beans.property.*;
@@ -5,6 +5,7 @@ import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppLayoutModel;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.DataStoreCreationCategory;
import io.xpipe.app.ext.DataStoreProvider;
import io.xpipe.app.ext.DataStoreProviders;
@@ -13,7 +14,6 @@ import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.*;
import io.xpipe.app.ext.DataStore;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleBooleanProperty;
@@ -1,17 +1,17 @@
package io.xpipe.app.hub.comp;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.DataStoreProvider;
import io.xpipe.app.ext.ShellStore;
import io.xpipe.app.ext.ValidatableStore;
import io.xpipe.app.ext.ValidationException;
import io.xpipe.app.hub.action.impl.LaunchHubMenuLeafProvider;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreCategory;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.*;
import io.xpipe.app.process.ShellTtyState;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.ValidatableStore;
import io.xpipe.app.ext.ValidationException;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -6,10 +6,10 @@ import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.augment.ContextMenuAugment;
import io.xpipe.app.comp.base.*;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.hub.action.BatchHubProvider;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.*;
import io.xpipe.app.ext.DataStore;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty;
@@ -1,6 +1,7 @@
package io.xpipe.app.hub.comp;
import io.xpipe.app.action.*;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.ext.GroupStore;
import io.xpipe.app.ext.LocalStore;
import io.xpipe.app.ext.ShellStore;
@@ -18,7 +19,6 @@ import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.FixedHierarchyStore;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.ext.DataStore;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -340,8 +340,9 @@ public class StoreEntryWrapper {
}
public boolean canBreakOutCategory() {
return (getStore().getValue() instanceof FixedHierarchyStore || getStore().getValue() instanceof GroupStore<?>) &&
StoreViewState.get().getParentSectionForWrapper(this).isPresent();
return (getStore().getValue() instanceof FixedHierarchyStore
|| getStore().getValue() instanceof GroupStore<?>)
&& StoreViewState.get().getParentSectionForWrapper(this).isPresent();
}
public void breakOutCategory() {
@@ -421,8 +422,9 @@ public class StoreEntryWrapper {
}
var isSingle = section.get().getAllChildren().getList().stream()
.filter(sec -> sec.getWrapper().getOrderIndex().get() == orderIndex.getValue())
.count() == 1;
.filter(sec -> sec.getWrapper().getOrderIndex().get() == orderIndex.getValue())
.count()
== 1;
var max = section.get().getAllChildren().getList().stream()
.map(sec -> sec.getWrapper().getOrderIndex().getValue())
.filter(value -> value != null && value != Integer.MIN_VALUE && value != Integer.MAX_VALUE)
@@ -443,8 +445,9 @@ public class StoreEntryWrapper {
}
var isSingle = section.get().getAllChildren().getList().stream()
.filter(sec -> sec.getWrapper().getOrderIndex().get() == orderIndex.getValue())
.count() == 1;
.filter(sec -> sec.getWrapper().getOrderIndex().get() == orderIndex.getValue())
.count()
== 1;
var min = section.get().getAllChildren().getList().stream()
.map(sec -> sec.getWrapper().getOrderIndex().getValue())
.filter(value -> value != null && value != Integer.MIN_VALUE && value != Integer.MAX_VALUE)
@@ -3,8 +3,8 @@ package io.xpipe.app.hub.comp;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.base.*;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntryRef;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ListProperty;
@@ -3,10 +3,10 @@ package io.xpipe.app.hub.comp;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.comp.base.ToggleSwitchComp;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.DataStore;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.ext.DataStore;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
@@ -1,9 +1,9 @@
package io.xpipe.app.hub.comp;
import io.xpipe.app.comp.SimpleComp;
import io.xpipe.app.process.ShellStoreState;
import io.xpipe.app.util.BindingsHelper;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.app.process.ShellStoreState;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
@@ -3,11 +3,11 @@ package io.xpipe.app.icon;
import io.xpipe.app.core.AppCache;
import io.xpipe.app.core.AppImages;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.ext.ValidationException;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.prefs.SupportedLocale;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.ext.ValidationException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -1,14 +1,13 @@
package io.xpipe.app.icon;
import io.xpipe.app.ext.ProcessControlProvider;
import io.xpipe.app.ext.ValidationException;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.util.DesktopHelper;
import io.xpipe.app.util.Hyperlinks;
import io.xpipe.app.util.Validators;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.ValidationException;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -1,8 +1,8 @@
package io.xpipe.app.issue;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.util.DocumentationLink;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ProcessOutputException;
import java.util.Arrays;
import java.util.IdentityHashMap;
@@ -6,6 +6,7 @@ import io.xpipe.app.ext.PrefsHandler;
import io.xpipe.app.ext.PrefsProvider;
import io.xpipe.app.icon.SystemIconManager;
import io.xpipe.app.icon.SystemIconSource;
import io.xpipe.app.process.ShellScript;
import io.xpipe.app.pwman.PasswordManager;
import io.xpipe.app.rdp.ExternalRdpClient;
import io.xpipe.app.storage.DataStorage;
@@ -18,7 +19,6 @@ import io.xpipe.app.util.PlatformThread;
import io.xpipe.app.vnc.ExternalVncClient;
import io.xpipe.app.vnc.InternalVncClient;
import io.xpipe.app.vnc.VncCategory;
import io.xpipe.app.process.ShellScript;
import javafx.beans.property.*;
import javafx.beans.value.ObservableBooleanValue;
@@ -6,11 +6,11 @@ import io.xpipe.app.comp.base.HorizontalComp;
import io.xpipe.app.comp.base.TextFieldComp;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.issue.TrackEvent;
import io.xpipe.app.process.ProcessOutputException;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.util.OptionsBuilder;
import io.xpipe.app.util.ThreadHelper;
import io.xpipe.app.process.ProcessOutputException;
import javafx.beans.property.SimpleStringProperty;
import javafx.geometry.Insets;
@@ -1,8 +1,8 @@
package io.xpipe.app.prefs;
import io.xpipe.app.issue.TrackEvent;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.util.LocalShell;
import java.util.Arrays;
import java.util.Locale;
@@ -2,13 +2,13 @@ package io.xpipe.app.prefs;
import io.xpipe.app.ext.PrefsValue;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.CommandControl;
import io.xpipe.app.process.ShellControl;
import io.xpipe.app.util.CommandSupport;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.util.Translatable;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.CommandControl;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellControl;
import java.io.IOException;
import java.nio.file.Files;
@@ -2,12 +2,12 @@ package io.xpipe.app.prefs;
import io.xpipe.app.ext.PrefsChoiceValue;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.app.process.ShellScript;
import io.xpipe.app.terminal.TerminalLauncher;
import io.xpipe.app.util.LocalShell;
import io.xpipe.app.util.WindowsRegistry;
import io.xpipe.app.process.CommandBuilder;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellScript;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
@@ -10,12 +10,11 @@ import io.xpipe.app.core.mode.OperationMode;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.issue.ErrorEventFactory;
import io.xpipe.app.issue.UserReportComp;
import io.xpipe.app.process.ShellScript;
import io.xpipe.app.terminal.TerminalLauncher;
import io.xpipe.app.util.*;
import io.xpipe.core.OsType;
import io.xpipe.app.process.ShellScript;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import io.xpipe.core.XPipeInstallation;
import com.sun.management.HotSpotDiagnosticMXBean;
@@ -1,8 +1,8 @@
package io.xpipe.app.process;
import io.xpipe.core.FilePath;
import io.xpipe.core.FailableConsumer;
import io.xpipe.core.FailableFunction;
import io.xpipe.core.FilePath;
import lombok.Getter;
import lombok.SneakyThrows;
@@ -19,11 +19,11 @@ public interface OsFileSystem {
static OsFileSystem of(OsType osType) {
return switch (osType) {
case OsType.Windows _ -> WINDOWS;
case OsType.Bsd _ -> UNIX;
case OsType.Linux _ -> UNIX;
case OsType.MacOs _ -> MACOS;
case OsType.Solaris _ -> UNIX;
case OsType.Windows ignored -> WINDOWS;
case OsType.Bsd ignored -> UNIX;
case OsType.Linux ignored -> UNIX;
case OsType.MacOs ignored -> MACOS;
case OsType.Solaris ignored -> UNIX;
default -> throw new IllegalStateException();
};
}
@@ -1,12 +1,12 @@
package io.xpipe.app.process;
import io.xpipe.app.ext.DataStore;
import io.xpipe.core.FilePath;
import io.xpipe.app.ext.StatefulDataStore;
import io.xpipe.core.FailableConsumer;
import io.xpipe.core.FailableFunction;
import io.xpipe.core.FilePath;
import io.xpipe.core.OsType;
import lombok.NonNull;
import java.io.IOException;

Some files were not shown because too many files have changed in this diff Show More