Skip to content

Commit

Permalink
Integrated CustomizeExternalFileTypesDialog into Preferences (#8341)
Browse files Browse the repository at this point in the history
* Integrated CustomizeExternalFileTypesDialog into prefs dialog

* CHANGELOG.md

* Fixed merge conflict after 5.4
  • Loading branch information
calixtus authored Dec 20, 2021
1 parent fa10ac0 commit c45d948
Show file tree
Hide file tree
Showing 11 changed files with 76 additions and 99 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve

### Changed

- We integrated the external file types dialog directly inside the preferences. [#8341](https://github.com/JabRef/jabref/pull/8341)

### Fixed

### Removed
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.jabref.gui.preferences.entryeditor.EntryEditorTab;
import org.jabref.gui.preferences.entryeditortabs.CustomEditorFieldsTab;
import org.jabref.gui.preferences.external.ExternalTab;
import org.jabref.gui.preferences.externalfiletypes.ExternalFileTypesTab;
import org.jabref.gui.preferences.file.FileTab;
import org.jabref.gui.preferences.general.GeneralTab;
import org.jabref.gui.preferences.groups.GroupsTab;
Expand Down Expand Up @@ -72,6 +73,7 @@ public PreferencesDialogViewModel(DialogService dialogService, PreferencesServic
new PreviewTab(),
new ProtectedTermsTab(),
new ExternalTab(frame.getPushToApplicationsManager()),
new ExternalFileTypesTab(),
new JournalAbbreviationsTab(),
new GroupsTab(),
new EntryEditorTab(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="4.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="16.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<Label text="%Application to push entries to"/>
<ComboBox fx:id="pushToApplicationCombo"
Expand All @@ -54,9 +52,6 @@
<Label text="%Cite command" GridPane.rowIndex="2"/>
<TextField fx:id="citeCommand"
prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2"/>

<Button onAction="#manageExternalFileTypes" text="%Manage external file types"
prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4"/>
</GridPane>
</HBox>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,6 @@ void pushToApplicationSettings() {
viewModel.pushToApplicationSettings();
}

@FXML
void manageExternalFileTypes() {
viewModel.manageExternalFileTypes();
}

@FXML
void useTerminalCommandBrowse() {
viewModel.customTerminalBrowse();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import javafx.scene.control.DialogPane;

import org.jabref.gui.DialogService;
import org.jabref.gui.externalfiletype.EditExternalFileTypesAction;
import org.jabref.gui.preferences.PreferenceTabViewModel;
import org.jabref.gui.push.PushToApplication;
import org.jabref.gui.push.PushToApplicationSettings;
Expand Down Expand Up @@ -160,10 +159,6 @@ public void pushToApplicationSettings() {
);
}

public void manageExternalFileTypes() {
new EditExternalFileTypesAction().execute();
}

public void customTerminalBrowse() {
dialogService.showFileOpenDialog(fileDialogConfiguration)
.ifPresent(file -> customTerminalCommandProperty.setValue(file.toAbsolutePath().toString()));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import org.jabref.gui.icon.JabRefIconView?>
<fx:root spacing="10.0" type="VBox"
xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"
fx:controller="org.jabref.gui.preferences.externalfiletypes.ExternalFileTypesTab">
<Label styleClass="titleHeader" text="%External file types"/>
<TableView fx:id="fileTypesTable" VBox.vgrow="ALWAYS">
<columns>
<TableColumn fx:id="fileTypesTableIconColumn" minWidth="40.0" maxWidth="40.0"/>
<TableColumn fx:id="fileTypesTableNameColumn" text="%Name"/>
<TableColumn fx:id="fileTypesTableExtensionColumn" text="%Extension" prefWidth="120"/>
<TableColumn fx:id="fileTypesTableTypeColumn" text="%MIME type" prefWidth="150"/>
<TableColumn fx:id="fileTypesTableApplicationColumn" text="%Application" prefWidth="100"/>
<TableColumn fx:id="fileTypesTableEditColumn" minWidth="40.0" maxWidth="40.0"/>
<TableColumn fx:id="fileTypesTableDeleteColumn" minWidth="40.0" maxWidth="40.0"/>
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
<HBox alignment="BASELINE_RIGHT" spacing="10.0">
<Button text="%Add new file type" onAction="#addNewType">
<graphic>
<JabRefIconView glyph="ADD_NOBOX"/>
</graphic>
</Button>
<Button text="%Reset to default" onAction="#resetToDefault">
<graphic>
<JabRefIconView glyph="REFRESH"/>
</graphic>
</Button>
</HBox>
</fx:root>
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package org.jabref.gui.externalfiletype;
package org.jabref.gui.preferences.externalfiletypes;

import javafx.fxml.FXML;
import javafx.scene.control.ButtonType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;

import org.jabref.gui.externalfiletype.ExternalFileType;
import org.jabref.gui.externalfiletype.ExternalFileTypes;
import org.jabref.gui.icon.IconTheme;
import org.jabref.gui.icon.JabRefIcon;
import org.jabref.gui.util.BaseDialog;
import org.jabref.gui.preferences.AbstractPreferenceTabView;
import org.jabref.gui.preferences.PreferencesTab;
import org.jabref.gui.util.BindingsHelper;
import org.jabref.gui.util.ValueTableCellFactory;
import org.jabref.logic.l10n.Localization;
Expand All @@ -17,7 +19,7 @@
/**
* Editor for external file types.
*/
public class CustomizeExternalFileTypesDialog extends BaseDialog<Void> {
public class ExternalFileTypesTab extends AbstractPreferenceTabView<ExternalFileTypesTabViewModel> implements PreferencesTab {

@FXML private TableColumn<ExternalFileType, JabRefIcon> fileTypesTableIconColumn;
@FXML private TableColumn<ExternalFileType, String> fileTypesTableNameColumn;
Expand All @@ -28,26 +30,20 @@ public class CustomizeExternalFileTypesDialog extends BaseDialog<Void> {
@FXML private TableColumn<ExternalFileType, Boolean> fileTypesTableDeleteColumn;
@FXML private TableView<ExternalFileType> fileTypesTable;

private CustomizeExternalFileTypesViewModel viewModel;

public CustomizeExternalFileTypesDialog() {
this.setTitle(Localization.lang("Manage external file types"));

public ExternalFileTypesTab() {
ViewLoader.view(this)
.load()
.setAsDialogPane(this);
.root(this)
.load();
}

this.setResultConverter(button -> {
if (button == ButtonType.OK) {
viewModel.storeSettings();
}
return null;
});
@Override
public String getTabName() {
return Localization.lang("External file types");
}

@FXML
public void initialize() {
viewModel = new CustomizeExternalFileTypesViewModel();
viewModel = new ExternalFileTypesTabViewModel(ExternalFileTypes.getInstance());

fileTypesTable.setItems(viewModel.getFileTypes());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,39 @@
package org.jabref.gui.externalfiletype;
package org.jabref.gui.preferences.externalfiletypes;

import java.util.Comparator;
import java.util.List;
import java.util.Set;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import org.jabref.gui.DialogService;
import org.jabref.gui.externalfiletype.CustomExternalFileType;
import org.jabref.gui.externalfiletype.EditExternalFileTypeEntryDialog;
import org.jabref.gui.externalfiletype.ExternalFileType;
import org.jabref.gui.externalfiletype.ExternalFileTypes;
import org.jabref.gui.icon.IconTheme;
import org.jabref.gui.preferences.PreferenceTabViewModel;
import org.jabref.logic.l10n.Localization;

import com.airhacks.afterburner.injection.Injector;

public class CustomizeExternalFileTypesViewModel {
public class ExternalFileTypesTabViewModel implements PreferenceTabViewModel {

private final ObservableList<ExternalFileType> fileTypes;
private final ExternalFileTypes externalFileTypes;
private final ObservableList<ExternalFileType> fileTypes = FXCollections.observableArrayList();

public CustomizeExternalFileTypesViewModel() {
Set<ExternalFileType> types = ExternalFileTypes.getInstance().getExternalFileTypeSelection();
fileTypes = FXCollections.observableArrayList(types);
public ExternalFileTypesTabViewModel(ExternalFileTypes externalFileTypes) {
this.externalFileTypes = externalFileTypes;
}

@Override
public void setValues() {
fileTypes.setAll(externalFileTypes.getExternalFileTypeSelection());
fileTypes.sort(Comparator.comparing(ExternalFileType::getName));
}

/**
* Stores the list of external entry types in the preferences.
*/
public void storeSettings() {
ExternalFileTypes.getInstance().setExternalFileTypes(fileTypes);
externalFileTypes.setExternalFileTypes(fileTypes);
}

public void resetToDefaults() {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/l10n/JabRef_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ Main\ file\ directory=Main file directory
Manage\ custom\ exports=Manage custom exports

Manage\ custom\ imports=Manage custom imports
Manage\ external\ file\ types=Manage external file types
External\ file\ types=External file types

Mark\ new\ entries\ with\ owner\ name=Mark new entries with owner name

Expand Down

0 comments on commit c45d948

Please sign in to comment.