Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Divide by zero exception if rows is zero in Entry Editor Tab #2873

Merged
merged 2 commits into from
May 28, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 22 additions & 17 deletions src/main/java/org/jabref/gui/entryeditor/EntryEditorTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,8 @@ class EntryEditorTab {
private BibEntry entry;
private boolean updating;


public EntryEditorTab(JabRefFrame frame, BasePanel basePanel, List<String> fields, EntryEditor parent,
boolean addKeyField, boolean compressed, String tabTitle, BibEntry entry) {
boolean addKeyField, boolean compressed, String tabTitle, BibEntry entry) {
this.entry = Objects.requireNonNull(entry);
if (fields == null) {
this.fields = new ArrayList<>();
Expand All @@ -84,8 +83,7 @@ public EntryEditorTab(JabRefFrame frame, BasePanel basePanel, List<String> field
root.setStyle(
"text-area-background: " + convertToHex(GUIGlobals.validFieldBackgroundColor) + ";"
+ "text-area-foreground: " + convertToHex(GUIGlobals.editorTextColor) + ";"
+ "text-area-highlight: " + convertToHex(GUIGlobals.activeBackgroundColor) + ";"
);
+ "text-area-highlight: " + convertToHex(GUIGlobals.activeBackgroundColor) + ";");
}

root.getStylesheets().add("org/jabref/gui/entryeditor/EntryEditor.css");
Expand All @@ -110,7 +108,7 @@ private String convertToHex(java.awt.Color color) {
}

private Region setupPanel(JabRefFrame frame, BasePanel bPanel, boolean addKeyField,
boolean compressed, String title) {
boolean compressed, String title) {

setupKeyBindings(panel.getInputMap(JComponent.WHEN_FOCUSED), panel.getActionMap());

Expand Down Expand Up @@ -140,9 +138,9 @@ private Region setupPanel(JabRefFrame frame, BasePanel bPanel, boolean addKeyFie
//parent.addSearchListener((TextArea) fieldEditor);
defaultHeight = fieldEditor.getPane().getPreferredSize().height;
}

Optional<JComponent> extra = parent.getExtra(fieldEditor);

// Add autocompleter listener, if required for this field:
/*
AutoCompleter<String> autoCompleter = bPanel.getAutoCompleters().get(field);
Expand All @@ -154,7 +152,9 @@ private Region setupPanel(JabRefFrame frame, BasePanel bPanel, boolean addKeyFie
fieldEditor.setAutoCompleteListener(autoCompleteListener);
*/

FieldEditorFX fieldEditor = FieldEditors.getForField(fieldName, Globals.taskExecutor, new FXDialogService(), Globals.journalAbbreviationLoader, Globals.prefs.getJournalAbbreviationPreferences(), Globals.prefs, bPanel.getBibDatabaseContext(), entry.getType());
FieldEditorFX fieldEditor = FieldEditors.getForField(fieldName, Globals.taskExecutor, new FXDialogService(),
Globals.journalAbbreviationLoader, Globals.prefs.getJournalAbbreviationPreferences(), Globals.prefs,
bPanel.getBibDatabaseContext(), entry.getType());
editors.put(fieldName, fieldEditor);
/*
// TODO: Reenable this
Expand Down Expand Up @@ -204,7 +204,8 @@ private Region setupPanel(JabRefFrame frame, BasePanel bPanel, boolean addKeyFie
addColumn(gridPane, 1, editors.values().stream().map(FieldEditorFX::getNode).limit(rows));
addColumn(gridPane, 4, editors.values().stream().map(FieldEditorFX::getNode).skip(rows));

gridPane.getColumnConstraints().addAll(columnDoNotContract, columnExpand, new ColumnConstraints(10), columnDoNotContract, columnExpand);
gridPane.getColumnConstraints().addAll(columnDoNotContract, columnExpand, new ColumnConstraints(10),
columnDoNotContract, columnExpand);
} else {
rows = fields.size();

Expand All @@ -216,7 +217,11 @@ private Region setupPanel(JabRefFrame frame, BasePanel bPanel, boolean addKeyFie

RowConstraints rowExpand = new RowConstraints();
rowExpand.setVgrow(Priority.ALWAYS);
rowExpand.setPercentHeight(100 / rows);
if (rows == 0) {
rowExpand.setPercentHeight(100);
} else {
rowExpand.setPercentHeight(100 / rows);
}
for (int i = 0; i < rows; i++) {
gridPane.getRowConstraints().add(rowExpand);
}
Expand All @@ -236,12 +241,12 @@ private String getPrompt(String field) {
}

switch (field) {
case FieldName.YEAR:
return "YYYY";
case FieldName.MONTH:
return "MM or #mmm#";
case FieldName.URL:
return "https://";
case FieldName.YEAR:
return "YYYY";
case FieldName.MONTH:
return "MM or #mmm#";
case FieldName.URL:
return "https://";
}

return "";
Expand Down Expand Up @@ -290,7 +295,7 @@ public boolean updateField(String field, String content) {
if (fieldEditor.getText().equals(content)) {
return true;
}

// trying to preserve current edit position (fixes SF bug #1285)
if (fieldEditor.getTextComponent() instanceof JTextComponent) {
int initialCaretPosition = ((JTextComponent) fieldEditor).getCaretPosition();
Expand Down