Skip to content

Commit

Permalink
Merge pull request #6402 from JabRef/fixactionHelperEmptyLib
Browse files Browse the repository at this point in the history
Fix action helper when no library is open
  • Loading branch information
Siedlerchr authored May 9, 2020
2 parents b44d0e4 + a3eff0c commit 9251931
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 18 deletions.
39 changes: 22 additions & 17 deletions src/main/java/org/jabref/gui/actions/ActionHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.LinkedFile;
import org.jabref.model.entry.field.Field;
import org.jabref.model.entry.field.StandardField;
import org.jabref.model.util.FileHelper;
import org.jabref.preferences.PreferencesService;

import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
import org.fxmisc.easybind.monadic.MonadicObservableValue;

public class ActionHelper {

public static BooleanExpression needsDatabase(StateManager stateManager) {
return stateManager.activeDatabaseProperty().isPresent();
}
Expand All @@ -30,9 +31,8 @@ public static BooleanExpression needsEntriesSelected(StateManager stateManager)
}

public static BooleanExpression needsEntriesSelected(int numberOfEntries, StateManager stateManager) {
return Bindings.createBooleanBinding(
() -> stateManager.getSelectedEntries().size() == numberOfEntries,
stateManager.getSelectedEntries());
return Bindings.createBooleanBinding(() -> stateManager.getSelectedEntries().size() == numberOfEntries,
stateManager.getSelectedEntries());
}

public static BooleanExpression isFieldSetForSelectedEntry(Field field, StateManager stateManager) {
Expand All @@ -50,18 +50,23 @@ public static BooleanExpression isAnyFieldSetForSelectedEntry(List<Field> fields
}

public static BooleanExpression isFilePresentForSelectedEntry(StateManager stateManager, PreferencesService preferencesService) {
return Bindings.createBooleanBinding(() -> {
List<LinkedFile> files = stateManager.getSelectedEntries().get(0).getFiles();
if ((files.size() > 0) && stateManager.getActiveDatabase().isPresent()) {
Optional<Path> filename = FileHelper.find(
stateManager.getActiveDatabase().get(),
files.get(0).getLink(),
preferencesService.getFilePreferences());
return filename.isPresent();
} else {
return false;
}
}, stateManager.getSelectedEntries(),
stateManager.getSelectedEntries().get(0).getFieldBinding(StandardField.FILE));

ObservableList<BibEntry> selectedEntries = stateManager.getSelectedEntries();
MonadicObservableValue<Boolean> fileIsPresent = EasyBind.monadic(Bindings.valueAt(selectedEntries, 0)).map(entry -> {
List<LinkedFile> files = entry.getFiles();

if ((entry.getFiles().size() > 0) && stateManager.getActiveDatabase().isPresent()) {
Optional<Path> filename = FileHelper.find(
stateManager.getActiveDatabase().get(),
files.get(0).getLink(),
preferencesService.getFilePreferences());
return filename.isPresent();
} else {
return false;
}

}).orElse(false);

return BooleanExpression.booleanExpression(fileIsPresent);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import org.jabref.gui.actions.SimpleCommand;
import org.jabref.preferences.PreferencesService;

import static org.jabref.gui.actions.ActionHelper.needsEntriesSelected;

public class ShowDocumentViewerAction extends SimpleCommand {

public ShowDocumentViewerAction(StateManager stateManager, PreferencesService preferences) {
this.executable.bind(ActionHelper.isFilePresentForSelectedEntry(stateManager, preferences));
this.executable.bind(needsEntriesSelected(stateManager).and(ActionHelper.isFilePresentForSelectedEntry(stateManager, preferences)));
}

@Override
Expand Down

0 comments on commit 9251931

Please sign in to comment.