Skip to content

Commit 138b815

Browse files
Adds #12269: user-specific file directory should show user name (#13642)
* Add: user-specific file directory should show user name #12269 * working on FXML binding * WIP: userSpecificFileDirectoryTooltip works as expected * WIP: adds laTexFileDirectoryTooltip * improves laTexFileDirectoryText * adds changelog entry * removes whitespace from l10n String * changelog * reformat * correct LaTeX * correcr l10n string * move to existing record * fix empty lines stuff and duplicate * add tooltips and also prefix * changelog * fix variable * move tooltips * latex file directory * Trigger workflow --------- Co-authored-by: Siedlerchr <[email protected]>
1 parent 934ba21 commit 138b815

File tree

5 files changed

+49
-18
lines changed

5 files changed

+49
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
1111

1212
### Added
1313

14+
- We added tooltips (on hover) for 'Library-specific file directory', 'User-specific file directory' and 'LaTeX file directory' fields of the library properties window. [#12269](https://github.com/JabRef/jabref/issues/12269)
1415
- A space is now added by default after citations inserted via the Libre/OpenOffice integration. [#13559](https://github.com/JabRef/jabref/issues/13559)
1516
- We added the option to configure 'Add space after citation' in Libre/OpenOffice panel settings. [#13559](https://github.com/JabRef/jabref/issues/13559)
1617
- We added automatic lookup of DOI at citation information. [#13561](https://github.com/JabRef/jabref/issues/13561)

jabgui/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class GeneralPropertiesView extends AbstractPropertiesTabView<GeneralProp
3131
@FXML private ComboBox<BibDatabaseMode> databaseMode;
3232
@FXML private TextField librarySpecificFileDirectory;
3333
@FXML private TextField userSpecificFileDirectory;
34-
@FXML private TextField laTexFileDirectory;
34+
@FXML private TextField latexFileDirectory;
3535
@FXML private Button libSpecificFileDirSwitchId;
3636
@FXML private Button userSpecificFileDirSwitchId;
3737
@FXML private Button laTexSpecificFileDirSwitchId;
@@ -41,10 +41,13 @@ public class GeneralPropertiesView extends AbstractPropertiesTabView<GeneralProp
4141
@FXML private Tooltip libSpecificFileDirSwitchTooltip;
4242
@FXML private Tooltip userSpecificFileDirSwitchTooltip;
4343
@FXML private Tooltip laTexSpecificFileDirSwitchTooltip;
44+
@FXML private Tooltip userSpecificFileDirectoryTooltip;
45+
@FXML private Tooltip latexFileDirectoryTooltip;
46+
@FXML private Tooltip librarySpecificFileDirectoryTooltip;
4447

4548
private final ControlsFxVisualizer librarySpecificFileDirectoryValidationVisualizer = new ControlsFxVisualizer();
4649
private final ControlsFxVisualizer userSpecificFileDirectoryValidationVisualizer = new ControlsFxVisualizer();
47-
private final ControlsFxVisualizer laTexFileDirectoryValidationVisualizer = new ControlsFxVisualizer();
50+
private final ControlsFxVisualizer latexFileDirectoryValidationVisualizer = new ControlsFxVisualizer();
4851
private final String switchToRelativeText = Localization.lang("Switch to relative path: converts the path to a relative path.");
4952
private final String switchToAbsoluteText = Localization.lang("Switch to absolute path: converts the path to an absolute path.");
5053

@@ -79,13 +82,18 @@ public void initialize() {
7982
databaseMode.itemsProperty().bind(viewModel.databaseModesProperty());
8083
databaseMode.valueProperty().bindBidirectional(viewModel.selectedDatabaseModeProperty());
8184

85+
librarySpecificFileDirectoryTooltip.setText(Localization.lang("Library-specific file directory"));
8286
librarySpecificFileDirectory.textProperty().bindBidirectional(viewModel.librarySpecificDirectoryProperty());
87+
8388
userSpecificFileDirectory.textProperty().bindBidirectional(viewModel.userSpecificFileDirectoryProperty());
84-
laTexFileDirectory.textProperty().bindBidirectional(viewModel.laTexFileDirectoryProperty());
89+
latexFileDirectory.textProperty().bindBidirectional(viewModel.laTexFileDirectoryProperty());
90+
91+
userSpecificFileDirectoryTooltip.setText(Localization.lang("User-specific file directory: %0", preferences.getFilePreferences().getUserAndHost()));
92+
userSpecificFileDirectory.setTooltip(userSpecificFileDirectoryTooltip);
8593

8694
librarySpecificFileDirectoryValidationVisualizer.setDecoration(new IconValidationDecorator());
8795
userSpecificFileDirectoryValidationVisualizer.setDecoration(new IconValidationDecorator());
88-
laTexFileDirectoryValidationVisualizer.setDecoration(new IconValidationDecorator());
96+
latexFileDirectoryValidationVisualizer.setDecoration(new IconValidationDecorator());
8997

9098
libSpecificFileDirSwitchId.setDisable(this.databaseContext.getDatabasePath().isEmpty());
9199
userSpecificFileDirSwitchId.setDisable(this.databaseContext.getDatabasePath().isEmpty());
@@ -95,23 +103,27 @@ public void initialize() {
95103
boolean isAbsolute = Path.of(newValue).isAbsolute();
96104
libSpecificFileDirSwitchIcon.setGlyph(isAbsolute ? RELATIVE_PATH : ABSOLUTE_PATH);
97105
libSpecificFileDirSwitchTooltip.setText(isAbsolute ? switchToRelativeText : switchToAbsoluteText);
106+
librarySpecificFileDirectoryTooltip.setText(newValue.trim().isEmpty() ?
107+
Localization.lang("Library-specific file directory") : Localization.lang("Library-specific file directory: %0", newValue));
98108
});
99109
userSpecificFileDirectory.textProperty().addListener((_, _, newValue) -> {
100110
boolean isAbsolute = Path.of(newValue).isAbsolute();
101111
userSpecificFileDirSwitchIcon.setGlyph(isAbsolute ? RELATIVE_PATH : ABSOLUTE_PATH);
102112
userSpecificFileDirSwitchTooltip.setText(isAbsolute ? switchToRelativeText : switchToAbsoluteText);
103113
});
104114

105-
laTexFileDirectory.textProperty().addListener((_, _, newValue) -> {
115+
latexFileDirectory.textProperty().addListener((_, _, newValue) -> {
106116
boolean isAbsolute = Path.of(newValue).isAbsolute();
107117
laTexSpecificFileDirSwitchIcon.setGlyph(isAbsolute ? RELATIVE_PATH : ABSOLUTE_PATH);
108118
laTexSpecificFileDirSwitchTooltip.setText(isAbsolute ? switchToRelativeText : switchToAbsoluteText);
119+
latexFileDirectoryTooltip.setText(newValue.trim().isEmpty()
120+
? Localization.lang("LaTeX file directory") : Localization.lang("LaTeX file directory: %0", newValue));
109121
});
110122

111123
Platform.runLater(() -> {
112124
librarySpecificFileDirectoryValidationVisualizer.initVisualization(viewModel.librarySpecificFileDirectoryStatus(), librarySpecificFileDirectory);
113125
userSpecificFileDirectoryValidationVisualizer.initVisualization(viewModel.userSpecificFileDirectoryStatus(), userSpecificFileDirectory);
114-
laTexFileDirectoryValidationVisualizer.initVisualization(viewModel.laTexFileDirectoryStatus(), laTexFileDirectory);
126+
latexFileDirectoryValidationVisualizer.initVisualization(viewModel.laTexFileDirectoryStatus(), latexFileDirectory);
115127

116128
librarySpecificFileDirectory.requestFocus();
117129
});

jabgui/src/main/resources/org/jabref/gui/libraryproperties/general/GeneralProperties.fxml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<?import javafx.scene.layout.RowConstraints?>
1111
<?import javafx.scene.layout.VBox?>
1212
<?import org.jabref.gui.icon.JabRefIconView?>
13-
<?import org.controlsfx.control.ToggleSwitch?>
1413
<fx:root spacing="10.0" type="VBox"
1514
xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"
1615
fx:controller="org.jabref.gui.libraryproperties.general.GeneralPropertiesView">
@@ -35,7 +34,11 @@
3534
<Label text="%Library-specific file directory"
3635
GridPane.columnIndex="0" GridPane.rowIndex="1"/>
3736
<TextField fx:id="librarySpecificFileDirectory"
38-
GridPane.columnIndex="1" GridPane.rowIndex="1"/>
37+
GridPane.columnIndex="1" GridPane.rowIndex="1">
38+
<tooltip>
39+
<Tooltip fx:id="librarySpecificFileDirectoryTooltip"/>
40+
</tooltip>
41+
</TextField>
3942
<Button fx:id="libSpecificFileDirSwitchId" onAction="#libSpecificFileDirPathSwitch"
4043
styleClass="icon-button,narrow" prefHeight="20.0" prefWidth="20.0"
4144
GridPane.columnIndex="2" GridPane.rowIndex="1">
@@ -45,6 +48,7 @@
4548
<tooltip>
4649
<Tooltip fx:id ="libSpecificFileDirSwitchTooltip" text="%Switch to absolute path: converts the path to an absolute path."/>
4750
</tooltip>
51+
4852
</Button>
4953
<Button onAction="#browseLibrarySpecificFileDirectory"
5054
styleClass="icon-button,narrow" prefHeight="20.0" prefWidth="20.0"
@@ -60,7 +64,12 @@
6064
<Label text="%User-specific file directory"
6165
GridPane.columnIndex="0" GridPane.rowIndex="2"/>
6266
<TextField fx:id="userSpecificFileDirectory"
63-
GridPane.columnIndex="1" GridPane.rowIndex="2"/>
67+
GridPane.columnIndex="1" GridPane.rowIndex="2">
68+
<tooltip>
69+
<Tooltip fx:id="userSpecificFileDirectoryTooltip"/>
70+
</tooltip>
71+
</TextField>
72+
6473
<Button fx:id="userSpecificFileDirSwitchId" onAction="#userSpecificFileDirPathSwitch"
6574
styleClass="icon-button,narrow" prefHeight="20.0" prefWidth="20.0"
6675
GridPane.columnIndex="2" GridPane.rowIndex="2">
@@ -84,8 +93,12 @@
8493

8594
<Label text="%LaTeX file directory"
8695
GridPane.columnIndex="0" GridPane.rowIndex="3"/>
87-
<TextField fx:id="laTexFileDirectory"
88-
GridPane.columnIndex="1" GridPane.rowIndex="3"/>
96+
<TextField fx:id="latexFileDirectory"
97+
GridPane.columnIndex="1" GridPane.rowIndex="3">
98+
<tooltip>
99+
<Tooltip fx:id="latexFileDirectoryTooltip"/>
100+
</tooltip>
101+
</TextField>
89102
<Button fx:id="laTexSpecificFileDirSwitchId" onAction="#laTexSpecificFileDirPathSwitch"
90103
styleClass="icon-button,narrow" prefHeight="20.0" prefWidth="20.0"
91104
GridPane.columnIndex="2" GridPane.rowIndex="3">

jablib/src/main/java/org/jabref/logic/preferences/JabRefCliPreferences.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
import org.jabref.model.entry.types.EntryTypeFactory;
110110
import org.jabref.model.metadata.SaveOrder;
111111
import org.jabref.model.metadata.SelfContainedSaveOrder;
112+
import org.jabref.model.metadata.UserHostInfo;
112113
import org.jabref.model.search.SearchDisplayMode;
113114
import org.jabref.model.search.SearchFlags;
114115
import org.jabref.model.strings.StringUtil;
@@ -443,7 +444,7 @@ public class JabRefCliPreferences implements CliPreferences {
443444
/**
444445
* Cache variables
445446
*/
446-
private String userAndHost;
447+
private UserHostInfo userAndHost;
447448

448449
private LibraryPreferences libraryPreferences;
449450
private DOIPreferences doiPreferences;
@@ -1598,7 +1599,7 @@ public InternalPreferences getInternalPreferences() {
15981599
Version.parse(get(VERSION_IGNORED_UPDATE)),
15991600
getBoolean(VERSION_CHECK_ENABLED),
16001601
getPath(PREFS_EXPORT_PATH, getDefaultPath()),
1601-
getUserAndHost(),
1602+
userAndHost.getUserHostString(),
16021603
getBoolean(MEMORY_STICK_MODE));
16031604

16041605
EasyBind.listen(internalPreferences.ignoredVersionProperty(),
@@ -1622,11 +1623,11 @@ public InternalPreferences getInternalPreferences() {
16221623
return internalPreferences;
16231624
}
16241625

1625-
private String getUserAndHost() {
1626-
if (StringUtil.isNotBlank(userAndHost)) {
1626+
private UserHostInfo getUserHostInfo() {
1627+
if (userAndHost != null) {
16271628
return userAndHost;
16281629
}
1629-
userAndHost = get(DEFAULT_OWNER) + '-' + OS.getHostName();
1630+
userAndHost = new UserHostInfo(get(DEFAULT_OWNER), OS.getHostName());
16301631
return userAndHost;
16311632
}
16321633

@@ -1676,7 +1677,7 @@ public FilePreferences getFilePreferences() {
16761677
}
16771678

16781679
filePreferences = new FilePreferences(
1679-
getInternalPreferences().getUserAndHost(),
1680+
getUserHostInfo().getUserHostString(),
16801681
getPath(MAIN_FILE_DIRECTORY, getDefaultPath()).toString(),
16811682
getBoolean(STORE_RELATIVE_TO_BIB),
16821683
get(IMPORT_FILENAMEPATTERN),

jablib/src/main/resources/l10n/JabRef_en.properties

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1086,8 +1086,12 @@ Waiting\ for\ background\ tasks\ to\ finish.\ Quit\ anyway?=Waiting for backgrou
10861086
Find\ and\ remove\ duplicate\ citation\ keys=Find and remove duplicate citation keys
10871087

10881088
Library-specific\ file\ directory=Library-specific file directory
1089-
User-specific\ file\ directory=User-specific file directory
1089+
Library-specific\ file\ directory\:\ %0=Library-specific file directory: %0
10901090
LaTeX\ file\ directory=LaTeX file directory
1091+
LaTeX\ file\ directory\:\ %0=LaTeX file directory: %0
1092+
User-specific\ file\ directory=User-specific file directory
1093+
User-specific\ file\ directory\:\ %0=User-specific file directory: %0
1094+
10911095
Path\ %0\ could\ not\ be\ resolved.\ Using\ working\ directory.=Path %0 could not be resolved. Using working directory.
10921096
Switch\ to\ absolute\ path\:\ converts\ the\ path\ to\ an\ absolute\ path.=Switch to absolute path: converts the path to an absolute path.
10931097
Switch\ to\ relative\ path\:\ converts\ the\ path\ to\ a\ relative\ path.=Switch to relative path: converts the path to a relative path.

0 commit comments

Comments
 (0)