package org.jabref.gui.journals;
import java.util.List;
import org.jabref.Globals;
import org.jabref.gui.BasePanel;
import org.jabref.gui.undo.NamedCompound;
import org.jabref.gui.worker.AbstractWorker;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.InternalBibtexFields;
/**
* Converts journal abbreviations back to full name for all selected entries.
*/
public class UnabbreviateAction extends AbstractWorker {
private final BasePanel panel;
private String message = "";
public UnabbreviateAction(BasePanel panel) {
this.panel = panel;
}
@Override
public void init() {
panel.output(Localization.lang("Unabbreviating..."));
}
@Override
public void run() {
List<BibEntry> entries = panel.getSelectedEntries();
if (entries == null) {
return;
}
UndoableUnabbreviator undoableAbbreviator = new UndoableUnabbreviator(Globals.journalAbbreviationLoader
.getRepository(Globals.prefs.getJournalAbbreviationPreferences()));
NamedCompound ce = new NamedCompound(Localization.lang("Unabbreviate journal names"));
int count = 0;
for (BibEntry entry : entries) {
for (String journalField : InternalBibtexFields.getJournalNameFields()) {
if (undoableAbbreviator.unabbreviate(panel.getDatabase(), entry, journalField, ce)) {
count++;
}
}
}
if (count > 0) {
ce.end();
panel.getUndoManager().addEdit(ce);
panel.markBaseChanged();
message = Localization.lang("Unabbreviated %0 journal names.", String.valueOf(count));
} else {
message = Localization.lang("No journal names could be unabbreviated.");
}
}
@Override
public void update() {
panel.output(message);
}
}