Move to atlantafx

This commit is contained in:
crschnick 2023-02-14 18:37:13 +00:00
parent 287f3d084d
commit 767941d096
42 changed files with 228 additions and 396 deletions

View file

@ -53,6 +53,7 @@ dependencies {
implementation 'com.jfoenix:jfoenix:9.0.10'
implementation 'org.controlsfx:controlsfx:11.1.1'
implementation 'net.synedra:validatorfx:0.3.1'
implementation 'io.github.mkpaz:atlantafx-base:1.2.0'
}
apply from: "$rootDir/gradle/gradle_scripts/junit.gradle"
@ -132,7 +133,7 @@ application {
run {
systemProperty 'io.xpipe.app.mode', 'gui'
systemProperty 'io.xpipe.app.dataDir', "$projectDir/local_stage/"
systemProperty 'io.xpipe.app.dataDir', "$projectDir/local6/"
systemProperty 'io.xpipe.app.writeLogs', "true"
systemProperty 'io.xpipe.app.writeSysOut', "true"
systemProperty 'io.xpipe.app.developerMode', "true"

View file

@ -5,6 +5,7 @@ import io.xpipe.app.util.Hyperlinks;
import io.xpipe.extension.fxcomps.Comp;
import io.xpipe.extension.fxcomps.CompStructure;
import io.xpipe.extension.fxcomps.SimpleCompStructure;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.*;
import javafx.scene.layout.StackPane;
@ -18,6 +19,7 @@ public class ThirdPartyDependencyListComp extends Comp<CompStructure<?>> {
link.setOnAction(e -> {
Hyperlinks.open(t.link());
});
tp.setPadding(Insets.EMPTY);
tp.setGraphic(link);
tp.setAlignment(Pos.CENTER_LEFT);
AppFont.medium(tp);
@ -49,6 +51,7 @@ public class ThirdPartyDependencyListComp extends Comp<CompStructure<?>> {
acc.setPrefWidth(500);
var sp = new ScrollPane(acc);
sp.setFitToWidth(true);
sp.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
return new SimpleCompStructure<>(sp);
}
}

View file

@ -5,6 +5,7 @@ import io.xpipe.extension.fxcomps.CompStructure;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
@ -48,7 +49,7 @@ public class BigIconButton extends ButtonComp {
@Value
@Builder
public static class Structure implements CompStructure<JFXButton> {
public static class Structure implements CompStructure<Button> {
JFXButton button;
VBox stack;
Node graphic;

View file

@ -1,6 +1,5 @@
package io.xpipe.app.comp.base;
import com.jfoenix.controls.JFXButton;
import io.xpipe.extension.fxcomps.Comp;
import io.xpipe.extension.fxcomps.CompStructure;
import io.xpipe.extension.fxcomps.SimpleCompStructure;
@ -11,9 +10,10 @@ import javafx.beans.value.ObservableValue;
import javafx.css.Size;
import javafx.css.SizeUnits;
import javafx.scene.Node;
import javafx.scene.control.Button;
import org.kordamp.ikonli.javafx.FontIcon;
public class ButtonComp extends Comp<CompStructure<JFXButton>> {
public class ButtonComp extends Comp<CompStructure<Button>> {
private final ObservableValue<String> name;
private final ObjectProperty<Node> graphic;
@ -48,14 +48,14 @@ public class ButtonComp extends Comp<CompStructure<JFXButton>> {
}
@Override
public CompStructure<JFXButton> createBase() {
var button = new JFXButton(null);
public CompStructure<Button> createBase() {
var button = new Button(null);
if (name != null) {
button.textProperty().bind(name);
}
var graphic = getGraphic();
if (graphic instanceof FontIcon f) {
f.iconColorProperty().bind(button.textFillProperty());
//f.iconColorProperty().bind(button.textFillProperty());
SimpleChangeListener.apply(button.fontProperty(), c -> {
f.setIconSize((int) new Size(c.getSize(), SizeUnits.PT).pixels());
});

View file

@ -1,8 +1,8 @@
package io.xpipe.app.comp.base;
import com.jfoenix.controls.JFXCheckBox;
import io.xpipe.extension.fxcomps.SimpleComp;
import javafx.beans.property.ListProperty;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.Region;
@ -24,8 +24,9 @@ public class ListSelectorComp<T> extends SimpleComp {
@Override
protected Region createSimple() {
var vbox = new VBox();
vbox.getStyleClass().add("content");
for (var v : values) {
var cb = new JFXCheckBox(null);
var cb = new CheckBox(null);
cb.selectedProperty().addListener((c, o, n) -> {
if (n) {
selected.add(v);

View file

@ -1,6 +1,6 @@
package io.xpipe.app.comp.storage.store;
import io.xpipe.app.comp.base.ListViewComp;
import io.xpipe.app.comp.base.ListBoxViewComp;
import io.xpipe.app.comp.base.MultiContentComp;
import io.xpipe.extension.fxcomps.Comp;
import io.xpipe.extension.fxcomps.SimpleComp;
@ -20,7 +20,7 @@ public class StoreEntryListComp extends SimpleComp {
StoreViewState.get()
.getFilterString()
.map(s -> (storeEntrySection -> storeEntrySection.shouldShow(s))));
var content = new ListViewComp<>(filtered, topLevel, null, (StoreEntrySection e) -> {
var content = new ListBoxViewComp<>(filtered, topLevel, (StoreEntrySection e) -> {
return e.comp(true);
});
return content.styleClass("store-list-comp");

View file

@ -1,10 +1,15 @@
package io.xpipe.app.core;
import atlantafx.base.theme.NordDark;
import atlantafx.base.theme.NordLight;
import atlantafx.base.theme.PrimerDark;
import atlantafx.base.theme.PrimerLight;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.extension.I18n;
import io.xpipe.extension.event.ErrorEvent;
import io.xpipe.extension.event.TrackEvent;
import io.xpipe.extension.prefs.PrefsChoiceValue;
import javafx.application.Application;
import javafx.scene.Scene;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -19,20 +24,16 @@ import java.util.*;
public class AppStyle {
private static final Map<String, String> COLOR_SCHEME_CONTENTS = new HashMap<>();
private static final Map<Path, String> STYLESHEET_CONTENTS = new HashMap<>();
private static final List<Scene> scenes = new ArrayList<>();
private static String FONT_CONTENTS = "";
public static void init() {
if (COLOR_SCHEME_CONTENTS.size() > 0) {
if (STYLESHEET_CONTENTS.size() > 0) {
return;
}
TrackEvent.info("Loading stylesheets ...");
for (var t : Theme.values()) {
loadTheme(t);
}
loadStylesheets();
if (AppPrefs.get() != null) {
@ -45,25 +46,6 @@ public class AppStyle {
}
}
private static void loadTheme(Theme theme) {
for (var module : AppExtensionManager.getInstance().getContentModules()) {
AppResources.with(module.getName(), "theme", path -> {
var file = path.resolve(theme.getId() + ".css");
if (!Files.exists(file)) {
return;
}
try {
var bytes = Files.readAllBytes(file);
var s = "data:text/css;base64," + Base64.getEncoder().encodeToString(bytes);
COLOR_SCHEME_CONTENTS.put(theme.getId(), s);
} catch (IOException ex) {
ErrorEvent.fromThrowable(ex).omitted(true).build().handle();
}
});
}
}
private static void loadStylesheets() {
AppResources.with(AppResources.XPIPE_MODULE, "font-config/font.css", path -> {
var bytes = Files.readAllBytes(path);
@ -99,8 +81,7 @@ public class AppStyle {
private static void changeTheme(Theme oldTheme, Theme newTheme) {
scenes.forEach(scene -> {
scene.getStylesheets().remove(COLOR_SCHEME_CONTENTS.get(oldTheme.getId()));
scene.getStylesheets().add(COLOR_SCHEME_CONTENTS.get(newTheme.getId()));
Application.setUserAgentStylesheet(newTheme.getTheme().getUserAgentStylesheet());
});
}
@ -117,7 +98,6 @@ public class AppStyle {
}
public static void reloadStylesheets(Scene scene) {
COLOR_SCHEME_CONTENTS.clear();
STYLESHEET_CONTENTS.clear();
FONT_CONTENTS = "";
@ -128,7 +108,7 @@ public class AppStyle {
public static void addStylesheets(Scene scene) {
var t = AppPrefs.get() != null ? AppPrefs.get().theme.getValue() : Theme.LIGHT;
scene.getStylesheets().add(COLOR_SCHEME_CONTENTS.get(t.getId()));
Application.setUserAgentStylesheet(t.getTheme().getUserAgentStylesheet());
TrackEvent.debug("Set theme " + t.getId() + " for scene");
if (AppPrefs.get() != null && !AppPrefs.get().useSystemFont.get()) {
@ -146,10 +126,14 @@ public class AppStyle {
@AllArgsConstructor
@Getter
public enum Theme implements PrefsChoiceValue {
LIGHT("light");
LIGHT("light", new PrimerLight()),
DARK("dark", new PrimerDark()),
NORD_LIGHT("nordLight", new NordLight()),
NORD_DARK("nordDark", new NordDark());
// DARK("dark");
private final String id;
private final atlantafx.base.theme.Theme theme;
@Override
public String toTranslatedString() {

View file

@ -23,6 +23,9 @@ import org.kordamp.ikonli.javafx.FontIcon;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_OUTLINED;
public class ErrorHandlerComp extends SimpleComp {
private static final AtomicBoolean showing = new AtomicBoolean(false);
@ -98,6 +101,7 @@ public class ErrorHandlerComp extends SimpleComp {
var ac = createActionComp(action);
actionBox.getChildren().add(ac);
}
actionBox.getChildren().get(1).getStyleClass().addAll(BUTTON_OUTLINED, ACCENT);
content.getChildren().addAll(actionBox, new Separator(Orientation.HORIZONTAL));
}

View file

@ -17,6 +17,7 @@ import javafx.beans.property.SimpleListProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.geometry.Pos;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
@ -25,6 +26,9 @@ import javafx.stage.Stage;
import java.nio.file.Path;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_OUTLINED;
public class UserReportComp extends SimpleComp {
private final StringProperty text = new SimpleStringProperty();
@ -45,13 +49,16 @@ public class UserReportComp extends SimpleComp {
}
private Comp<?> createAttachments() {
var list = new ListSelectorComp<>(event.getAttachments(), file -> {
if (file.equals(AppLogs.get().getSessionLogsDirectory())) {
return I18n.get("logFilesAttachment");
}
var list = new ListSelectorComp<>(
event.getAttachments(),
file -> {
if (file.equals(AppLogs.get().getSessionLogsDirectory())) {
return I18n.get("logFilesAttachment");
}
return file.getFileName().toString();
}, includedDiagnostics)
return file.getFileName().toString();
},
includedDiagnostics)
.styleClass("attachment-list");
var tp = new TitledPaneComp(I18n.observable("additionalErrorAttachments"), list, 100)
.apply(struc -> struc.get().setExpanded(true))
@ -93,9 +100,12 @@ public class UserReportComp extends SimpleComp {
dataPolicyButton.setOnAction(event1 -> {
Hyperlinks.open(Hyperlinks.DOCS_PRIVACY);
});
var sendButton = new ButtonComp(I18n.observable("sendReport"), null, this::send).createRegion();
var sendButton = new ButtonComp(I18n.observable("sendReport"), null, this::send)
.apply(struc -> struc.get().getStyleClass().addAll(BUTTON_OUTLINED, ACCENT))
.createRegion();
var spacer = new Region();
var buttons = new HBox(dataPolicyButton, spacer, sendButton);
buttons.setAlignment(Pos.CENTER);
buttons.getStyleClass().add("buttons");
HBox.setHgrow(spacer, Priority.ALWAYS);
AppFont.medium(dataPolicyButton);

View file

@ -3,7 +3,6 @@ package io.xpipe.app.prefs;
import com.dlsc.formsfx.model.structure.*;
import com.dlsc.preferencesfx.formsfx.view.controls.SimpleComboBoxControl;
import com.dlsc.preferencesfx.formsfx.view.controls.SimpleTextControl;
import com.dlsc.preferencesfx.formsfx.view.controls.ToggleControl;
import com.dlsc.preferencesfx.model.Category;
import com.dlsc.preferencesfx.model.Group;
import com.dlsc.preferencesfx.model.Setting;
@ -139,10 +138,10 @@ public class AppPrefs {
private final BooleanProperty automaticallyUpdate =
typed(new SimpleBooleanProperty(XPipeDistributionType.get().supportsUpdate()), Boolean.class);
private final BooleanField automaticallyUpdateField =
BooleanField.ofBooleanType(automaticallyUpdate).render(() -> new ToggleControl());
BooleanField.ofBooleanType(automaticallyUpdate).render(() -> new CustomToggleControl());
private final BooleanProperty updateToPrereleases = typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField updateToPrereleasesField =
BooleanField.ofBooleanType(updateToPrereleases).render(() -> new ToggleControl());
BooleanField.ofBooleanType(updateToPrereleases).render(() -> new CustomToggleControl());
private final BooleanProperty confirmDeletions = typed(new SimpleBooleanProperty(true), Boolean.class);
@ -179,31 +178,31 @@ public class AppPrefs {
: internalDeveloperMode;
private final BooleanField developerModeField = Field.ofBooleanType(effectiveDeveloperMode)
.editable(System.getProperty(DEVELOPER_MODE_PROP) == null)
.render(() -> new ToggleControl());
.render(() -> new CustomToggleControl());
private final BooleanProperty developerDisableUpdateVersionCheck =
typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField developerDisableUpdateVersionCheckField =
BooleanField.ofBooleanType(developerDisableUpdateVersionCheck).render(() -> new ToggleControl());
BooleanField.ofBooleanType(developerDisableUpdateVersionCheck).render(() -> new CustomToggleControl());
private final BooleanProperty developerDisableGuiRestrictions =
typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField developerDisableGuiRestrictionsField =
BooleanField.ofBooleanType(developerDisableGuiRestrictions).render(() -> new ToggleControl());
BooleanField.ofBooleanType(developerDisableGuiRestrictions).render(() -> new CustomToggleControl());
private final BooleanProperty developerShowHiddenProviders = typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField developerShowHiddenProvidersField =
BooleanField.ofBooleanType(developerShowHiddenProviders).render(() -> new ToggleControl());
BooleanField.ofBooleanType(developerShowHiddenProviders).render(() -> new CustomToggleControl());
private final BooleanProperty developerShowHiddenEntries = typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField developerShowHiddenEntriesField =
BooleanField.ofBooleanType(developerShowHiddenEntries).render(() -> new ToggleControl());
BooleanField.ofBooleanType(developerShowHiddenEntries).render(() -> new CustomToggleControl());
private final BooleanProperty developerDisableConnectorInstallationVersionCheck =
typed(new SimpleBooleanProperty(false), Boolean.class);
private final BooleanField developerDisableConnectorInstallationVersionCheckField = BooleanField.ofBooleanType(
developerDisableConnectorInstallationVersionCheck)
.render(() -> new ToggleControl());
.render(() -> new CustomToggleControl());
public ReadOnlyProperty<CloseBehaviour> closeBehaviour() {
return closeBehaviour;

View file

@ -52,7 +52,9 @@ public class CustomFormRenderer extends PreferencesFxFormRenderer {
AppFont.setSize(titleLabel, 2);
// Set margin for all but first group titles to visually separate groups
if (nextRow > 1) {
GridPane.setMargin(titleLabel, new Insets(SPACING * 3, 0, 0, 0));
GridPane.setMargin(titleLabel, new Insets(SPACING * 3, 0, SPACING, 0));
} else {
GridPane.setMargin(titleLabel, new Insets(SPACING, 0, SPACING, 0));
}
}
@ -79,7 +81,7 @@ public class CustomFormRenderer extends PreferencesFxFormRenderer {
var descriptionLabel = new Label();
descriptionLabel.setWrapText(true);
descriptionLabel.disableProperty().bind(c.getFieldLabel().disabledProperty());
descriptionLabel.opacityProperty().bind(c.getFieldLabel().opacityProperty());
descriptionLabel.opacityProperty().bind(c.getFieldLabel().opacityProperty().multiply(0.8));
descriptionLabel.managedProperty().bind(c.getFieldLabel().managedProperty());
descriptionLabel.visibleProperty().bind(c.getFieldLabel().visibleProperty());
descriptionLabel.setMaxHeight(USE_PREF_SIZE);

View file

@ -0,0 +1,82 @@
package io.xpipe.app.prefs;
import atlantafx.base.controls.ToggleSwitch;
import com.dlsc.formsfx.model.structure.BooleanField;
import com.dlsc.preferencesfx.formsfx.view.controls.SimpleControl;
import com.dlsc.preferencesfx.formsfx.view.controls.ToggleControl;
import com.dlsc.preferencesfx.util.VisibilityProperty;
import javafx.scene.control.Label;
/**
* Displays a control for boolean values with a toggle from ControlsFX.
*
* @author François Martin
* @author Marco Sanfratello
*/
public class CustomToggleControl extends SimpleControl<BooleanField, ToggleSwitch> {
/**
* Constructs a ToggleControl of {@link ToggleControl} type, with visibility condition.
*
* @param visibilityProperty property for control visibility of this element
*
* @return the constructed ToggleControl
*/
public static ToggleControl of(VisibilityProperty visibilityProperty) {
ToggleControl toggleControl = new ToggleControl();
toggleControl.setVisibilityProperty(visibilityProperty);
return toggleControl;
}
/**
* {@inheritDoc}
*/
@Override
public void initializeParts() {
super.initializeParts();
fieldLabel = new Label(field.labelProperty().getValue());
node = new atlantafx.base.controls.ToggleSwitch();
node.getStyleClass().add("toggle-control");
node.setSelected(field.getValue());
}
/**
* {@inheritDoc}
*/
@Override
public void layoutParts() {
}
/**
* {@inheritDoc}
*/
@Override
public void setupBindings() {
super.setupBindings();
}
/**
* {@inheritDoc}
*/
@Override
public void setupValueChangedListeners() {
super.setupValueChangedListeners();
field.userInputProperty().addListener((observable, oldValue, newValue) -> {
node.setSelected(Boolean.parseBoolean(field.getUserInput()));
});
}
/**
* {@inheritDoc}
*/
@Override
public void setupEventHandlers() {
node.selectedProperty().addListener((observable, oldValue, newValue) -> {
field.userInputProperty().setValue(String.valueOf(newValue));
});
}
}

View file

@ -36,6 +36,7 @@ open module io.xpipe.app {
requires com.sun.jna;
requires com.sun.jna.platform;
requires org.slf4j;
requires atlantafx.base;
requires org.ocpsoft.prettytime;
requires com.dlsc.preferencesfx;
requires com.vladsch.flexmark;

View file

@ -1,23 +0,0 @@
.dialog-pane .button {
-fx-font-size: 0.8em;
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-background-color: -xp-base;
-fx-border-radius: 2px;
-fx-background-radius: 2px;
}
.dialog-pane .button:hover {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}
.dialog-pane .button:pressed {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}
.dialog-pane .button:default {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}

View file

@ -1,17 +0,0 @@
.button-comp {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-background-color: -xp-base;
-fx-border-radius: 2px;
-fx-background-radius: 2px;
}
.button-comp:hover {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}
.button-comp:pressed {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}

View file

@ -1,36 +0,0 @@
.combo-box {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-background-color: -xp-base;
-fx-border-radius: 2px;
-fx-background-radius: 2px;
}
.combo-box:hover {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}
.combo-box:hover:pressed {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}
.combo-box .list-cell {
-fx-border-width: 0 0 0 0;
}
.combo-box .list-cell:hover {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}
.combo-box .list-cell:pressed {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}
.combo-box-popup .list-cell:selected {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}

View file

@ -1,8 +1,6 @@
.filter-comp .text-field {
-fx-padding: 0.35em;
-fx-background-color: transparent;
-fx-background-radius: 3px;
-fx-background-color: #0001;
}
.filter-comp .input-line {

View file

@ -1,6 +0,0 @@
.hyperlink {
-fx-text-fill: #4FA64F;
-fx-underline: true;
-fx-border-color: transparent;
-fx-padding: 0;
}

View file

@ -1,7 +1,3 @@
.lazy-text-field-comp {
-fx-text-fill: -xp-text-base;
}
.lazy-text-field-comp:disabled {
-fx-opacity: 1.0;
}

View file

@ -1,6 +1,6 @@
.multi-step-comp > .top .line {
-fx-max-height: 3px;
-fx-background-color: -xp-border;
-fx-background-color: -color-accent-fg;
}
.multi-step-comp .entry {
@ -9,25 +9,25 @@
}
.multi-step-comp > .top {
-fx-border-color: -xp-border;
-fx-border-color: -color-accent-fg;
-fx-border-width: 0 0 0.1em 0;
-fx-background-color: -xp-base-accent;
-fx-background-color: -color-accent-subtle;
-fx-effect: dropshadow(three-pass-box, #333, 6, 0, 0, 2);
}
.multi-step-comp > .top .name {
-fx-text-fill: -xp-text-accent-base;
-fx-text-fill: -color-accent-fg;
}
.multi-step-comp .entry:next .name {
-fx-text-fill: -xp-text-accent-light;
-fx-text-fill: -color-accent-fg;
}
.multi-step-comp .buttons {
-fx-border-color: -xp-border;
-fx-border-color: -color-accent-fg;
-fx-border-width: 0.1em 0 0 0;
-fx-padding: 1em;
-fx-background-color: -xp-base-accent;
-fx-background-color: -color-accent-subtle;
-fx-effect: dropshadow(three-pass-box, #333, 6, 0, 0, -1);
}
@ -38,7 +38,7 @@
-fx-background-radius: 4px;
-fx-background-color: #073B4C;
-fx-border-width: 1px;
-fx-border-color: -xp-text-accent-light;
-fx-border-color:-color-accent-fg;
-fx-border-radius: 4px;
}
@ -67,11 +67,11 @@
}
.multi-step-comp > .top .entry .number {
-fx-text-fill: -xp-text-accent-base;
-fx-text-fill: white;
}
.multi-step-comp > .top .entry:next .number {
-fx-text-fill: -xp-text-accent-light;
-fx-text-fill: white;
}
.multi-step-comp > .top {

View file

@ -1,46 +0,0 @@
.toggle-group-comp .toggle-button {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-background-color: -xp-base;
-fx-border-radius: 2px;
-fx-padding: 0.3em 1em 0.3em 1em;
}
.toggle-group-comp .toggle-button.first {
-fx-border-width: 1px 0 1px 1px;
-fx-border-radius: 2px 0 0 2px;
-fx-background-radius: 2px 0 0 2px;
}
.toggle-group-comp .toggle-button.center {
-fx-border-width: 1px 0 1px 0;
-fx-border-radius: 0;
-fx-background-radius: 0;
}
.toggle-group-comp .toggle-button.last {
-fx-border-width: 1px 1px 1px 0;
-fx-border-radius: 0px 2px 2px 0;
-fx-background-radius: 0px 2px 2px 0;
}
.toggle-group-comp .toggle-button.first.last {
-fx-border-width: 1px 1px 1px 1px;
-fx-border-radius: 2px 2px 2px 2px;
-fx-background-radius: 2px 2px 2px 2;
}
.toggle-group-comp .toggle-button:hover {
-fx-background-color: -xp-base-highlight;
-fx-border-color: -xp-border-highlight;
}
.toggle-group-comp .toggle-button:pressed {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}
.toggle-group-comp .toggle-button:selected {
-fx-background-color: -xp-base-pressed;
-fx-border-color: -xp-border-pressed;
}

View file

@ -1,8 +1,3 @@
.fancy-tooltip {
-fx-background-color: -xp-base-highlight;
-fx-text-fill: -xp-text-base;
-fx-border-width: 1px;
-fx-border-color: -xp-border-highlight;
-fx-border-radius: 4px;
-fx-font-size: 10pt;
-fx-opacity: 1;
}

View file

@ -1,8 +0,0 @@
.dialog-pane:no-header .graphic-container {
-fx-padding: 0;
}
.dialog-pane:no-header > *.button-bar > *.container {
-fx-border-width: 1px 0 0 0;
-fx-border-color: -xp-border;
}

View file

@ -20,14 +20,14 @@
-fx-spacing: 0.3em;
}
.error-report .attachments .attachment-list {
-fx-padding: 0.5em;
.error-report .attachments .attachment-list .content {
-fx-padding: 0.5em 1em;
}
.error-report .buttons {
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-border-width: 0.1em 0 0 0;
-fx-padding: 1.0em 1.5em 1em 1.5em;
-fx-background-color: -xp-base-accent;
-fx-background-color: -color-accent-subtle;
-fx-effect: dropshadow(three-pass-box, #333, 6, 0, 0, -1);
}

View file

@ -1,6 +1,5 @@
.intro .label {
-fx-line-spacing: 5px;
-fx-text-fill: -xp-text-base;
-fx-graphic-text-gap: 8px;
}
@ -14,7 +13,6 @@
.intro .label .ikonli-font-icon {
-fx-line-spacing: 5px;
-fx-icon-color: -xp-text-base;
}
.intro-add-collection-button {

View file

@ -1,6 +1,6 @@
.named-store-choice,.named-source-choice {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-background-color: transparent;
-fx-border-radius: 4px;
-fx-padding: 2px;

View file

@ -1,8 +1,8 @@
.sidebar-comp {
-fx-pref-width: 7em;
-fx-background-color: linear-gradient(to right,#EEEEEE, #DDD);
-fx-border-width: 0;
-fx-border-color: #DDD;
-fx-background-color: -color-accent-subtle;
-fx-border-width: 0 0 0 0.05em;
-fx-border-color: -color-accent-emphasis;
-fx-padding: 0;
}
@ -11,8 +11,7 @@
}
.sidebar-comp .big-icon-button-comp:selected {
-fx-background-insets: 0, 0 0 0 0.2em;
-fx-background-color: -xp-base-accent, #CCC;
-fx-background-color: -color-accent-muted;
}
.sidebar-comp .big-icon-button-comp .icon {
@ -20,8 +19,8 @@
}
.sidebar-comp .big-icon-button-comp * {
-fx-text-fill: -xp-text-base;
-fx-icon-color: -xp-text-base;
-fx-text-fill: -color-fg-default;
-fx-icon-color: -color-fg-default;
}
.sidebar-comp .big-icon-button-comp {

View file

@ -1,5 +1,21 @@
.dialog-pane .button {
-fx-font-size: 0.8em;
-fx-border-width: 1px;
-fx-border-radius: 2px;
-fx-background-radius: 2px;
}
.dialog-pane:no-header .graphic-container {
-fx-padding: 0;
}
.dialog-pane:no-header > *.button-bar > *.container {
-fx-border-width: 1px 0 0 0;
-fx-border-color:-color-accent-fg;
}
.dialog-pane:header .header-panel {
-fx-background-color: -xp-base-accent;
-fx-background-color: -color-accent-subtle;
}
.dialog-pane:header .header-panel .graphic-container {
@ -8,24 +24,24 @@
.dialog-pane:header > .content {
-fx-border-width: 2px 0 0 0;
-fx-border-color: -xp-text-accent-light;
-fx-background-color: -xp-base-accent;
-fx-border-color:-color-accent-fg;
-fx-background-color: -color-accent-subtle;
-fx-border-insets: 0 1.333em 1em 1em;
-fx-padding: 1.333em 0 0 0;
}
.content-text {
-fx-text-fill: white;
-fx-text-fill: -color-accent-fg;
}
.dialog-pane:header .content.label {
-fx-text-fill: white;
-fx-text-fill: -color-accent-fg;
}
.dialog-pane:header .header-panel .label {
-fx-font-size: 1.0em;
-fx-wrap-text: true;
-fx-text-fill: white;
-fx-text-fill: -color-accent-fg;
}
.dialog-pane:header {
@ -34,7 +50,7 @@
.dialog-pane:header > *.button-bar > *.container {
-fx-border-width: 1px 0 0 0;
-fx-border-color: -xp-border-accent;
-fx-border-color: -color-accent-fg;
}
.dialog-pane:header > *.label.content{

View file

@ -1,17 +1,3 @@
.data-source-type {
-fx-padding: 0.15em 0 0.15em 0.05em;
}
.data-source-type:hover {
-fx-background-color: -xp-base-highlight;
}
.data-source-type .list-cell .label {
-fx-text-fill: -xp-text-base;
}
.data-source-type .combo-box-popup .list-view .list-cell {
-fx-padding: 0.5em;
-fx-text-fill: blue;
-fx-background-color: white;
}

View file

@ -1,27 +1,27 @@
.bar {
-fx-padding: 0.8em 1.0em 0.8em 1.0em;
-fx-background-color: -xp-base-accent;
-fx-text-fill: -xp-text-accent-base;
-fx-border-color: -xp-border-accent;
-fx-background-color: -color-accent-subtle;
-fx-border-color: -color-accent-emphasis;
}
.store-header-bar {
-fx-background-radius: 0 0 3px 0;
-fx-border-radius: 0 0 3px 0;
-fx-border-width: 0 2px 2px 0;
-fx-background-radius: 0 0 2px 0;
-fx-border-radius: 0 0 2px 0;
-fx-border-width: 0 0.05em 0.05em 0;
-fx-spacing: 0.8em;
}
.store-creation-bar {
-fx-background-radius: 0 3px 3px 0;
-fx-border-radius: 0 3px 3px 0;
-fx-border-width: 0 2px 2px 0;
-fx-background-radius: 0 2px 2px 0;
-fx-border-radius: 0 2px 2px 0;
-fx-border-width: 0.05em 0.05em 0.05em 0;
-fx-spacing: 0.2em;
}
.filler-bar {
-fx-background-radius: 0 3px 0 0;
-fx-border-radius: 0 3px 0 0;
-fx-border-width: 0 2px 0 0;
-fx-background-radius: 0 2px 0 0;
-fx-border-radius: 0 2px 0 0;
-fx-border-width: 0.05em 0.05em 0 0;
}
.sidebar {
@ -30,25 +30,24 @@
.bar .button-comp {
-fx-border-width: 0;
-fx-border-color: -xp-border;
-fx-border-color: -color-accent-emphasis;
-fx-background-color: transparent;
-fx-border-radius: 2px;
-fx-background-radius: 2px;
-fx-text-fill: -xp-text-accent-light;
-fx-padding: 0.2em 0em 0.2em 0em;
}
.collections-bar {
-fx-background-radius: 0 0 3px 0;
-fx-border-radius: 0 0 3px 0;
-fx-background-radius: 0 0 2px 0;
-fx-border-radius: 0 0 2px 0;
-fx-border-width: 0 2px 2px 0;
}
.entry-bar {
-fx-background-radius: 0 0 3px 3px;
-fx-border-radius: 0 0 3px 3px;
-fx-background-radius: 0 0 2px 2px;
-fx-border-radius: 0 0 2px 2px;
-fx-border-width: 0 2px 2px 2px;
-fx-background-color: -xp-base-accent;
-fx-background-color: -color-accent-subtle;
}
.entry-bar .horizontal-comp {
@ -56,38 +55,28 @@
}
.bar .icon-button-comp {
-fx-text-fill: -xp-text-accent-base;
-fx-text-fill: -color-fg-default;
}
.bar .name {
-fx-text-fill: -xp-text-accent-base;
-fx-text-fill: -color-fg-default;
}
.bar .count-comp {
-fx-padding: 0.0em 0em 0.0em 0.4em;
-fx-text-fill: -xp-text-accent-light;
}
.bar .filter-bar {
-fx-padding: 0.8em 0 0.0em 0;
}
.bar .filter-bar .text-field {
-fx-padding: 0.35em;
-fx-background-color: transparent;
-fx-text-fill: -color-fg-default;
}
.bar .filter-bar {
-fx-background-radius: 0.5em;
-fx-background-color: #0004;
-fx-text-fill: -xp-text-accent-base;
-fx-background-color: -color-bg-default;
-fx-border-width: 0.05em;
-fx-border-radius: 0.5em;
-fx-border-color: -color-accent-emphasis;
}
.bar .filter-bar .background {
-fx-text-fill: -xp-text-accent-light;
}
.bar .filter-bar .background .ikonli-font-icon {
-fx-icon-color: -xp-text-accent-light;
}
.filter-bar .input-line {
-fx-opacity: 0.2;
}

View file

@ -1,6 +1,6 @@
.store-entry-grid .date, .store-entry-grid .summary {
-fx-text-fill: -xp-text-light;
-fx-text-fill: -color-fg-muted;
}
.store-entry-grid:failed .jfx-text-field {

View file

@ -1,21 +1,13 @@
* {
-fx-text-fill: -xp-text-base;
}
.window-content {
-fx-padding: 1.2em;
}
.radio-button
{
-fx-text-fill: -xp-text-accent-base;
}
.message-comp {
-fx-padding: 0.6em;
-fx-background-color: #FF9999AA;
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-border-radius: 2px;
}

View file

@ -1,11 +1,6 @@
.jfx-tab-pane .tab-header-area .jfx-rippler {
-jfx-rippler-fill: -xp-base-pressed;
}
.jfx-tab-pane .tab-header-background { -fx-background-color: transparent; }
.jfx-tab-pane .tab-header-area .tab-selected-line {
-fx-background-color: -xp-base-accent;
-fx-pref-height: 1px;
}

View file

@ -14,7 +14,7 @@
.table-mapping-confirmation-comp .grid-container {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-background-color: transparent;
-fx-border-radius: 4px;
-fx-padding: 2px;

View file

@ -1,8 +0,0 @@
.tag-comp {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-background-color: -xp-base;
-fx-border-radius: 4px;
-fx-background-radius: 4px;
-fx-padding: 0.15em;
}

View file

@ -1,2 +0,0 @@
.managed-tag {
}

View file

@ -5,38 +5,6 @@
.third-party-dependency-list-comp .titled-pane {
-fx-background-color: transparent;
}
.third-party-dependency-list-comp .titled-pane .text-area {
/* -fx-font-family: Monospace; */
}
.titled-pane > .title > .arrow-button .arrow {
-fx-background-color: -xp-base;
-fx-focus-color: transparent;
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-border-radius: 4px;
-fx-background-radius: 4px;
}
.titled-pane:hover > .title > .arrow-button .arrow {
-fx-background-color: -xp-base-highlight;
-fx-focus-color: transparent;
-fx-border-color: -xp-border-highlight;
}
.titled-pane:pressed > .title > .arrow-button .arrow {
-fx-background-color: -xp-base-pressed;
-fx-focus-color: transparent;
-fx-border-color: -xp-border-pressed;
}
.titled-pane > .title {
-fx-background-color: transparent;
-fx-background-insets: 0;
}
.titled-pane:hover > .title {
-fx-background-color: #0001;
-fx-background-insets: 0;
}
.titled-pane .content {
-fx-padding: 0em ;
}

View file

@ -1,20 +0,0 @@
* {
-xp-base: #111111;
-xp-base-highlight: #219AC250;
-xp-base-pressed: #419AC290;
-xp-border: #073B4C43;
-xp-border-highlight: #053B4C93;
-xp-border-pressed: #033B4C43;
-xp-text-base: #333;
-xp-text-light: #666;
-xp-text-base-inverted: #333;
-xp-text-light-inverted: grey;
-xp-base-accent: #4764C2FF;
-xp-border-accent: #19254DFF;
-xp-text-accent-base: white;
-xp-text-accent-light: #CCF;
}

View file

@ -1,20 +0,0 @@
* {
-xp-base: #DDDF;
-xp-base-highlight: #B9E5F3FF;
-xp-base-pressed: #73CAE7FF;
-xp-border: #0F498877;
-xp-border-highlight: #0C626C77;
-xp-border-pressed: #087B4F77;
-xp-text-base: #333;
-xp-text-light: #555;
-xp-text-base-inverted: #333;
-xp-text-light-inverted: grey;
-xp-base-accent: #252a30DD;
-xp-border-accent: #555a6099;
-xp-text-accent-base: white;
-xp-text-accent-light: #CCF;
}

View file

@ -41,7 +41,7 @@ public class IconButtonComp extends Comp<CompStructure<JFXButton>> {
button.fontProperty().addListener((c, o, n) -> {
fi.setIconSize((int) new Size(n.getSize(), SizeUnits.PT).pixels());
});
fi.iconColorProperty().bind(button.textFillProperty());
//fi.iconColorProperty().bind(button.textFillProperty());
button.setGraphic(fi);
button.setOnAction(e -> {
e.consume();

View file

@ -24,8 +24,6 @@ public class PrettyListView<T> extends ListView<T> {
getChildren().addAll(vBar, hBar);
});
getStyleClass().add("jfx-list-view");
vBar.setManaged(false);
vBar.setOrientation(Orientation.VERTICAL);
vBar.getStyleClass().add("pretty-scroll-bar");

View file

@ -1,14 +1,14 @@
.code-snippet {
-fx-padding: 0.3em 0.5em 0.3em 0.5em;
-fx-border-width: 0;
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-spacing: 0;
-fx-font-family: Monospace;
}
.code-snippet-container {
-fx-border-width: 1px;
-fx-border-color: -xp-border;
-fx-border-color:-color-accent-fg;
-fx-background-color: transparent;
-fx-border-radius: 4px;
-fx-background-radius: 4px;
@ -32,5 +32,5 @@
.code-snippet-container .spacer {
-fx-pref-width: 1px;
-fx-background-color: -xp-border;
-fx-background-color:-color-accent-fg;
}