mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-07-01 04:21:11 +12:00
Small browser appearance improvements
This commit is contained in:
parent
ff2e5e67c4
commit
aa7c04d5ba
|
@ -39,6 +39,7 @@ public class BrowserBreadcrumbBar extends SimpleComp {
|
||||||
Callback<Breadcrumbs.BreadCrumbItem<String>, ? extends Node> dividerFactory) {
|
Callback<Breadcrumbs.BreadCrumbItem<String>, ? extends Node> dividerFactory) {
|
||||||
|
|
||||||
var breadcrumbs = new Breadcrumbs<String>();
|
var breadcrumbs = new Breadcrumbs<String>();
|
||||||
|
breadcrumbs.setMinWidth(0);
|
||||||
SimpleChangeListener.apply(PlatformThread.sync(model.getCurrentPath()), val -> {
|
SimpleChangeListener.apply(PlatformThread.sync(model.getCurrentPath()), val -> {
|
||||||
if (val == null) {
|
if (val == null) {
|
||||||
breadcrumbs.setSelectedCrumb(null);
|
breadcrumbs.setSelectedCrumb(null);
|
||||||
|
|
|
@ -114,12 +114,12 @@ public class BrowserComp extends SimpleComp {
|
||||||
});
|
});
|
||||||
var spacer = new Spacer(Orientation.HORIZONTAL);
|
var spacer = new Spacer(Orientation.HORIZONTAL);
|
||||||
var button = new Button("Select");
|
var button = new Button("Select");
|
||||||
|
button.setPadding(new Insets(5, 10, 5, 10));
|
||||||
button.setOnAction(event -> model.finishChooser());
|
button.setOnAction(event -> model.finishChooser());
|
||||||
button.setDefaultButton(true);
|
button.setDefaultButton(true);
|
||||||
var bottomBar = new HBox(selectedLabel, selected, spacer, button);
|
var bottomBar = new HBox(selectedLabel, selected, spacer, button);
|
||||||
HBox.setHgrow(selected, Priority.ALWAYS);
|
HBox.setHgrow(selected, Priority.ALWAYS);
|
||||||
bottomBar.setAlignment(Pos.CENTER);
|
bottomBar.setAlignment(Pos.CENTER);
|
||||||
bottomBar.setPadding(new Insets(15));
|
|
||||||
bottomBar.getStyleClass().add("chooser-bar");
|
bottomBar.getStyleClass().add("chooser-bar");
|
||||||
|
|
||||||
var layout = new VBox(r, bottomBar);
|
var layout = new VBox(r, bottomBar);
|
||||||
|
|
|
@ -66,6 +66,10 @@ public class BrowserFilterComp extends Comp<BrowserFilterComp.Structure> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var box = new HBox(text, button);
|
||||||
|
box.getStyleClass().add("browser-filter");
|
||||||
|
box.setAlignment(Pos.CENTER);
|
||||||
|
|
||||||
text.setPrefWidth(0);
|
text.setPrefWidth(0);
|
||||||
text.setFocusTraversable(false);
|
text.setFocusTraversable(false);
|
||||||
button.getStyleClass().add(Styles.FLAT);
|
button.getStyleClass().add(Styles.FLAT);
|
||||||
|
@ -84,9 +88,6 @@ public class BrowserFilterComp extends Comp<BrowserFilterComp.Structure> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
button.prefHeightProperty().bind(text.heightProperty());
|
button.prefHeightProperty().bind(text.heightProperty());
|
||||||
|
|
||||||
var box = new HBox(text, button);
|
|
||||||
box.setAlignment(Pos.CENTER);
|
|
||||||
return new Structure(box, (TextField) text, button);
|
return new Structure(box, (TextField) text, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,13 +115,16 @@ public class BrowserNavBar extends SimpleComp {
|
||||||
.augment(new SimpleCompStructure<>(historyButton));
|
.augment(new SimpleCompStructure<>(historyButton));
|
||||||
|
|
||||||
var breadcrumbs = new BrowserBreadcrumbBar(model).grow(false, true);
|
var breadcrumbs = new BrowserBreadcrumbBar(model).grow(false, true);
|
||||||
|
|
||||||
var stack = new StackComp(List.of(pathBar, breadcrumbs))
|
var stack = new StackComp(List.of(pathBar, breadcrumbs))
|
||||||
.apply(struc -> struc.get().setAlignment(Pos.CENTER_LEFT))
|
.apply(struc -> struc.get().setAlignment(Pos.CENTER_LEFT))
|
||||||
.hgrow()
|
.hgrow()
|
||||||
.apply(struc -> {
|
.apply(struc -> {
|
||||||
var t = struc.get().getChildren().get(0);
|
var t = struc.get().getChildren().get(0);
|
||||||
var b = struc.get().getChildren().get(1);
|
var b = struc.get().getChildren().get(1);
|
||||||
|
b.setOnMouseClicked(event -> {
|
||||||
|
t.requestFocus();
|
||||||
|
event.consume();
|
||||||
|
});
|
||||||
b.visibleProperty()
|
b.visibleProperty()
|
||||||
.bind(Bindings.createBooleanBinding(
|
.bind(Bindings.createBooleanBinding(
|
||||||
() -> {
|
() -> {
|
||||||
|
|
|
@ -12,13 +12,14 @@ import io.xpipe.app.fxcomps.impl.VerticalComp;
|
||||||
import io.xpipe.app.fxcomps.util.BindingsHelper;
|
import io.xpipe.app.fxcomps.util.BindingsHelper;
|
||||||
import io.xpipe.app.fxcomps.util.Shortcuts;
|
import io.xpipe.app.fxcomps.util.Shortcuts;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
|
import javafx.geometry.Pos;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.MenuButton;
|
import javafx.scene.control.MenuButton;
|
||||||
import javafx.scene.control.ToolBar;
|
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyCodeCombination;
|
import javafx.scene.input.KeyCodeCombination;
|
||||||
import javafx.scene.input.KeyCombination;
|
import javafx.scene.input.KeyCombination;
|
||||||
import javafx.scene.input.MouseButton;
|
import javafx.scene.input.MouseButton;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.Region;
|
import javafx.scene.layout.Region;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
|
@ -62,14 +63,17 @@ public class OpenFileSystemComp extends SimpleComp {
|
||||||
var filter = new BrowserFilterComp(model, model.getFilter()).createStructure();
|
var filter = new BrowserFilterComp(model, model.getFilter()).createStructure();
|
||||||
Shortcuts.addShortcut(filter.toggleButton(), new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN));
|
Shortcuts.addShortcut(filter.toggleButton(), new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN));
|
||||||
|
|
||||||
var topBar = new ToolBar();
|
var topBar = new HBox();
|
||||||
topBar.getItems()
|
topBar.setAlignment(Pos.CENTER);
|
||||||
|
topBar.getStyleClass().add("top-bar");
|
||||||
|
topBar.getChildren()
|
||||||
.setAll(
|
.setAll(
|
||||||
overview,
|
overview,
|
||||||
backBtn,
|
backBtn,
|
||||||
forthBtn,
|
forthBtn,
|
||||||
new Spacer(10),
|
new Spacer(10),
|
||||||
new BrowserNavBar(model).createRegion(),
|
new BrowserNavBar(model).hgrow().createRegion(),
|
||||||
|
new Spacer(5),
|
||||||
filter.get(),
|
filter.get(),
|
||||||
refreshBtn,
|
refreshBtn,
|
||||||
terminalBtn,
|
terminalBtn,
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class StandaloneFileBrowser {
|
||||||
var comp = new BrowserComp(model)
|
var comp = new BrowserComp(model)
|
||||||
.apply(struc -> struc.get().setPrefSize(1200, 700))
|
.apply(struc -> struc.get().setPrefSize(1200, 700))
|
||||||
.apply(struc -> AppFont.normal(struc.get()));
|
.apply(struc -> AppFont.normal(struc.get()));
|
||||||
var window = AppWindowHelper.sideWindow(AppI18n.get("openFileTitle"), stage -> comp, true, null);
|
var window = AppWindowHelper.sideWindow(AppI18n.get("openFileTitle"), stage -> comp, false, null);
|
||||||
model.setOnFinish(fileStores -> {
|
model.setOnFinish(fileStores -> {
|
||||||
file.accept(fileStores.size() > 0 ? fileStores.get(0) : null);
|
file.accept(fileStores.size() > 0 ? fileStores.get(0) : null);
|
||||||
window.close();
|
window.close();
|
||||||
|
|
|
@ -115,12 +115,34 @@
|
||||||
-fx-shape: null;
|
-fx-shape: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
.browser .tool-bar {
|
.browser .top-bar {
|
||||||
-fx-border-width: 1 0 1 0;
|
-fx-border-width: 1 0 1 0;
|
||||||
-fx-border-color: -color-border-default;
|
-fx-border-color: -color-border-default;
|
||||||
-fx-padding: 5px 10px ;
|
-fx-padding: 5px 10px ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.browser .top-bar > .button {
|
||||||
|
-fx-background-insets: 0;
|
||||||
|
-fx-background-color: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.browser .top-bar > .menu-button {
|
||||||
|
-fx-background-insets: 0;
|
||||||
|
-fx-background-color: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.browser .top-bar > .button:hover {
|
||||||
|
-fx-background-color: -color-accent-subtle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.browser .top-bar > .menu-button:hover {
|
||||||
|
-fx-background-color: -color-accent-subtle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.browser .top-bar .browser-filter .button:hover {
|
||||||
|
-fx-background-color: -color-accent-subtle;
|
||||||
|
}
|
||||||
|
|
||||||
.browser .status-bar {
|
.browser .status-bar {
|
||||||
-fx-border-width: 1 0 0 0;
|
-fx-border-width: 1 0 0 0;
|
||||||
-fx-border-color: -color-border-default;
|
-fx-border-color: -color-border-default;
|
||||||
|
@ -198,8 +220,8 @@
|
||||||
|
|
||||||
.chooser-bar {
|
.chooser-bar {
|
||||||
-fx-border-color: -color-border-default;
|
-fx-border-color: -color-border-default;
|
||||||
-fx-border-width: 0.1em 0 0 0;
|
-fx-border-width: 1 0 0 0;
|
||||||
-fx-padding: 1em;
|
-fx-padding: 0.4em 0.7em;
|
||||||
-fx-background-color: -color-neutral-muted;
|
-fx-background-color: -color-neutral-muted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue