Skip to content

Commit

Permalink
Ajout d'un paramètre pour choisir le triage par défault des bouteilles (
Browse files Browse the repository at this point in the history
resolve #18)

Appuyer sur entrée lors de la saisie d'un champ avec une suggestion valide la saisie sans remplacer par la première suggestion (resolve #17)
  • Loading branch information
AntoninRuan committed Dec 1, 2020
1 parent fa6bfe6 commit 82736f7
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,7 @@ public class PreferencesManager {
private static int doubleClickDelay;
private static boolean neverConnectToGitHub;
private static boolean checkUpdateAtStart;
private static BottleFilter.SearchCriteria defaultSort;

private static String saveFilePath;
private static String bottleFilePath;
Expand Down Expand Up @@ -707,11 +708,20 @@ public static void setBottleFilePath(String bottleFilePath) {
PreferencesManager.bottleFilePath = bottleFilePath;
}

public static BottleFilter.SearchCriteria getDefaultSort() {
return defaultSort;
}

public static void setDefaultSort(BottleFilter.SearchCriteria defaultSort) {
PreferencesManager.defaultSort = defaultSort;
}

public static void loadPreferences(JsonObject object) {
checkUpdateAtStart = object.has("check_update") ? JsonUtils.getAsBoolean(object.get("check_update")) : true;
setLang(object.has("lang") ? Locale.forLanguageTag(JsonUtils.getAsString(object.get("lang"))) : Locale.forLanguageTag(Locale.getDefault().getLanguage()));
doubleClickDelay = object.has("double_click_delay") ? JsonUtils.getAsInt(object.get("double_click_delay")): 500;
neverConnectToGitHub = object.has("never_connect_to_github") && JsonUtils.getAsBoolean(object.get("never_connect_to_github"));
defaultSort = object.has("default_sort") ? BottleFilter.SearchCriteria.fromId(JsonUtils.getAsString(object.get("default_sort"))) : BottleFilter.SearchCriteria.NAME;

saveFilePath = object.has("save_file") ? JsonUtils.getAsString(object.get("save_file")) : null;
bottleFilePath = object.has("bottle_file") ? JsonUtils.getAsString(object.get("bottle_file")) : null;
Expand All @@ -725,6 +735,7 @@ public static void savePreferences(File file) {
object.addProperty("lang", lang.toLanguageTag());
object.addProperty("double_click_delay", doubleClickDelay);
object.addProperty("never_connect_to_github", neverConnectToGitHub);
object.addProperty("default_sort", defaultSort.getId());
object.addProperty("save_file", saveFilePath);
object.addProperty("bottle_file", bottleFilePath);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,10 @@ public static void addSuggestionMenu(final TextField textField, final List<Strin
final MaxSizedContextMenu nameSuggestion = new MaxSizedContextMenu();
nameSuggestion.setMaxHeight(145);
nameSuggestion.setPrefWidth(textField.getPrefWidth());
nameSuggestion.getItems().add(new MenuItem(""));
nameSuggestion.show(MainApp.getPrimaryStage());
nameSuggestion.hide();
nameSuggestion.getItems().clear();
textField.textProperty().addListener((observable, oldValue, newValue) -> {

ObservableList <MenuItem> result = FXCollections.observableArrayList();
Expand All @@ -676,14 +680,18 @@ public static void addSuggestionMenu(final TextField textField, final List<Strin
}
}

if(result.isEmpty())
if(result.isEmpty()) {
nameSuggestion.getItems().clear();
nameSuggestion.hide();
return;
}

if(!nameSuggestion.isShowing()) {
nameSuggestion.getItems().clear();
nameSuggestion.getItems().add(result.get(0));
nameSuggestion.show(textField, Side.BOTTOM, 0, 0);
nameSuggestion.getItems().addAll(result.stream().skip(1).collect(Collectors.toList()));
textField.requestFocus();
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -725,6 +725,8 @@ private void initialize() {
if(event.getButton() == MouseButton.SECONDARY) {
Bottle bottle = tableView.getSelectionModel().getSelectedItem();

if (bottle == null) return;

contextMenu.getItems().clear();

MenuItem modify = new MenuItem(PreferencesManager.getLangBundle().getString("modify"));
Expand Down Expand Up @@ -768,6 +770,30 @@ private void initialize() {

});
tableView.setPlaceholder(new Label(PreferencesManager.getLangBundle().getString("no_result_found")));
switch (PreferencesManager.getDefaultSort()) {
case NAME:
tableView.getSortOrder().add(nameColumn);
break;
case TYPE:
tableView.getSortOrder().add(typeColumn);
break;
case YEAR:
tableView.getSortOrder().add(yearColumn);
break;
case APOGEE:
tableView.getSortOrder().add(consumeYearColumn);
break;
case DOMAIN:
tableView.getSortOrder().add(domainColumn);
break;
case REGION:
tableView.getSortOrder().add(regionColumn);
break;
case EDITION:
tableView.getSortOrder().add(editionColumn);
break;
}
tableView.sort();

criteriaChoiceBox.getItems().setAll(BottleFilter.SearchCriteria.values());
criteriaChoiceBox.setValue(BottleFilter.SearchCriteria.NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -627,14 +627,18 @@

package fr.antoninruan.cellarmanager.view;

import fr.antoninruan.cellarmanager.utils.BottleFilter;
import fr.antoninruan.cellarmanager.utils.PreferencesManager;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;
import javafx.util.StringConverter;

import java.awt.*;
import java.util.Locale;

public class PreferencesController {
Expand Down Expand Up @@ -662,6 +666,9 @@ public class PreferencesController {
@FXML
private Slider doubleClickDelay;

@FXML
private ChoiceBox<BottleFilter.SearchCriteria> defaultSort;

@FXML
private Button applyButton;

Expand Down Expand Up @@ -714,6 +721,24 @@ public Locale fromString(String s) {
noChange.setValue(false);
});

defaultSort.getItems().setAll(BottleFilter.SearchCriteria.values());
defaultSort.setValue(PreferencesManager.getDefaultSort());
defaultSort.setConverter(new StringConverter <BottleFilter.SearchCriteria>() {
@Override
public String toString(BottleFilter.SearchCriteria object) {
return PreferencesManager.getLangBundle().getString(object.getId());
}

@Override
public BottleFilter.SearchCriteria fromString(String string) {
return BottleFilter.SearchCriteria.fromId(string);
}
});
defaultSort.valueProperty().addListener((observableValue, oldValue, newValue) -> {
if(newValue != PreferencesManager.getDefaultSort() && noChange.getValue())
noChange.setValue(false);
});

applyButton.disableProperty().bind(noChange);
}

Expand All @@ -737,6 +762,8 @@ public void handleApply() {
PreferencesManager.setDoubleClickDelay((int) doubleClickDelay.getValue() * 50);
PreferencesManager.setLang(lang.getValue());
PreferencesManager.setNeverConnectToGitHub(neverConnectOnGitHub.isSelected());
PreferencesManager.setDefaultSort(defaultSort.getValue());

noChange.set(true);
}

Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/fxml/PreferencesLayout.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
<RowConstraints fillHeight="false" minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
<RowConstraints fillHeight="false" minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
<RowConstraints fillHeight="false" minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
<RowConstraints fillHeight="false" minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
</rowConstraints>
<children>
<Label fx:id="settingLanguage" text="%setting_language">
Expand All @@ -73,6 +74,12 @@
<CheckBox fx:id="checkUpdateAtStart" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<CheckBox fx:id="neverConnectOnGitHub" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Slider fx:id="doubleClickDelay" blockIncrement="1.0" majorTickUnit="1.0" max="16.0" min="4.0" minorTickCount="1" value="10.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="%setting_default_sort" GridPane.rowIndex="4">
<font>
<Font size="18.0" />
</font>
</Label>
<ChoiceBox fx:id="defaultSort" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="4" />
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="20.0" top="5.0" />
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/lang.properties
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,7 @@ setting_language = Langue
setting_check_update_at_start = V\u00e9rifier les mises \u00e0 jour au lancement
setting_never_connect_to_github = Ne jamais se connecter a GitHub
setting_double_click_delay = D\u00e9lai du double clic
setting_default_sort = Tri par d\u00e9fault

#Texte pour toutes les popup
show_details = Afficher les d\u00e9tails
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/lang_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,7 @@ setting_language = Language
setting_check_update_at_start = Check update at launch
setting_never_connect_to_github = Never connect to GitHub
setting_double_click_delay = Double click delay
setting_default_sort = Default sort


#Texte pour toutes les popup
Expand Down

0 comments on commit 82736f7

Please sign in to comment.