From 9538f1d234987149efedb42e9304e191e2f71dbd Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 19 Apr 2025 11:58:32 +0000 Subject: [PATCH] Rework --- .../BrowserFileChooserSessionComp.java | 1 - .../BrowserFileChooserSessionModel.java | 7 ++- .../browser/file/BrowserHistoryTabComp.java | 20 +++++-- .../comp/store/StoreIdentitiesIntroComp.java | 2 +- .../store/StoreQuickAccessButtonComp.java | 11 +++- .../app/core/AppConfigurationDialog.java | 42 ++++++++++++++ .../io/xpipe/app/core/AppGreetingsDialog.java | 1 + .../java/io/xpipe/app/core/AppProperties.java | 4 ++ .../java/io/xpipe/app/core/mode/BaseMode.java | 2 + .../java/io/xpipe/app/prefs/AppPrefs.java | 18 ++++-- .../xpipe/app/prefs/AppearanceCategory.java | 26 +++++---- .../io/xpipe/app/prefs/EditorCategory.java | 58 ++++++++++--------- .../java/io/xpipe/app/prefs/SyncCategory.java | 2 +- .../io/xpipe/app/prefs/TerminalCategory.java | 19 +++--- .../xpipe/app/terminal/TerminalLauncher.java | 16 ++--- .../app/terminal/TmuxTerminalMultiplexer.java | 1 + .../xpipe/app/util/DerivedObservableList.java | 57 +++++++++--------- .../io/xpipe/app/resources/style/prefs.css | 7 ++- .../ext/system/incus/IncusContainerStore.java | 8 ++- .../incus/IncusContainerStoreProvider.java | 20 +++++-- .../ext/system/lxd/LxdContainerStore.java | 8 ++- .../system/lxd/LxdContainerStoreProvider.java | 25 +++++--- .../system/podman/PodmanContainerStore.java | 7 ++- .../podman/PodmanContainerStoreProvider.java | 20 +++++-- lang/strings/translations_da.properties | 10 +++- lang/strings/translations_de.properties | 10 +++- lang/strings/translations_en.properties | 11 ++-- lang/strings/translations_es.properties | 10 +++- lang/strings/translations_fr.properties | 10 +++- lang/strings/translations_id.properties | 10 +++- lang/strings/translations_it.properties | 10 +++- lang/strings/translations_ja.properties | 10 +++- lang/strings/translations_nl.properties | 10 +++- lang/strings/translations_pl.properties | 10 +++- lang/strings/translations_pt.properties | 10 +++- lang/strings/translations_ru.properties | 10 +++- lang/strings/translations_sv.properties | 10 +++- lang/strings/translations_tr.properties | 10 +++- lang/strings/translations_zh.properties | 6 +- 39 files changed, 357 insertions(+), 172 deletions(-) create mode 100644 app/src/main/java/io/xpipe/app/core/AppConfigurationDialog.java diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java index 27852dd84..87efb6be2 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java @@ -143,7 +143,6 @@ public class BrowserFileChooserSessionComp extends ModalOverlayContentComp { var vertical = new VerticalComp(List.of(bookmarkTopBar, bookmarksContainer)).styleClass("left"); var splitPane = new LeftSplitPaneComp(vertical, stack) .withInitialWidth(AppLayoutModel.get().getSavedState().getBrowserConnectionsWidth()) - .styleClass("background") .apply(struc -> { struc.getLeft().setMinWidth(200); struc.getLeft().setMaxWidth(500); diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java index cd3e54924..949ee6248 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java @@ -14,6 +14,7 @@ import io.xpipe.core.util.FailableFunction; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import lombok.Getter; @@ -40,8 +41,10 @@ public class BrowserFileChooserSessionModel extends BrowserAbstractSessionModel< return; } - var l = DerivedObservableList.wrap(fileSelection, true); - l.bindContent(newValue.getFileList().getSelection()); + fileSelection.setAll(newValue.getFileList().getSelection()); + newValue.getFileList().getSelection().addListener((ListChangeListener) c -> { + fileSelection.setAll(newValue.getFileList().getSelection()); + }); }); } diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java index c1fab5b45..535a7f423 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java @@ -8,6 +8,7 @@ import io.xpipe.app.core.AppI18n; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.util.DerivedObservableList; +import io.xpipe.app.util.DocumentationLink; import io.xpipe.app.util.LabelGraphic; import io.xpipe.app.util.ThreadHelper; @@ -113,15 +114,26 @@ public class BrowserHistoryTabComp extends SimpleComp { } private Comp createEmptyDisplay() { - var intro = new IntroComp( + var docs = new IntroComp( + "browserWelcomeDocs", + new LabelGraphic.IconGraphic("mdi2b-book-open-variant")); + docs.setButtonAction(() -> { + DocumentationLink.INDEX.open(); + }); + docs.setButtonDefault(true); + + var open = new IntroComp( "browserWelcomeEmpty", new LabelGraphic.CompGraphic(PrettyImageHelper.ofSpecificFixedSize("graphics/Hips.svg", 100, 122))); - intro.setButtonAction(() -> { + open.setButtonAction(() -> { BrowserFullSessionModel.DEFAULT.openFileSystemAsync( DataStorage.get().local().ref(), null, null); }); - intro.setButtonDefault(true); - return intro; + + var v = new VerticalComp(List.of(docs, open)); + v.spacing(70); + v.apply(struc -> struc.get().setAlignment(Pos.CENTER)); + return v; } private Comp entryButton(BrowserHistorySavedState.Entry e, BooleanProperty disable) { diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIdentitiesIntroComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIdentitiesIntroComp.java index f16461126..292f072b3 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreIdentitiesIntroComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIdentitiesIntroComp.java @@ -97,7 +97,7 @@ public class StoreIdentitiesIntroComp extends SimpleComp { fi.setIconSize(80); var img = new StackPane(fi); img.setPrefWidth(100); - img.setPrefHeight(150); + img.setPrefHeight(120); var text = new VBox(title, importDesc); text.setSpacing(5); text.setAlignment(Pos.CENTER_LEFT); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java index d6a4e780b..2df011739 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java @@ -14,6 +14,7 @@ import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; public class StoreQuickAccessButtonComp extends Comp> { @@ -83,13 +84,17 @@ public class StoreQuickAccessButtonComp extends Comp> { public CompStructure