package org.jabref.gui.fieldeditors.contextmenu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.TextArea;
import org.jabref.Globals;
import org.jabref.JabRefGUI;
import org.jabref.gui.protectedterms.NewProtectedTermsFileDialog;
import org.jabref.logic.formatter.casechanger.ProtectTermsFormatter;
import org.jabref.logic.l10n.Localization;
import org.jabref.logic.protectedterms.ProtectedTermsList;
class ProtectedTermsMenu extends Menu {
private static final ProtectTermsFormatter formatter = new ProtectTermsFormatter(Globals.protectedTermsLoader);
private final Menu externalFiles;
private final TextArea opener;
public ProtectedTermsMenu(TextArea opener) {
super(Localization.lang("Protect terms"));
this.opener = opener;
MenuItem protectItem = new MenuItem(Localization.lang("Add {} around selected text"));
protectItem.setOnAction(event -> {
String selectedText = opener.getSelectedText();
if ((selectedText != null) && !selectedText.isEmpty()) {
opener.replaceSelection("{" + selectedText + "}");
}
});
MenuItem formatItem = new MenuItem(Localization.lang("Format field"));
formatItem.setOnAction(event -> opener.setText(formatter.format(opener.getText())));
externalFiles = new Menu(Localization.lang("Add selected text to list"));
updateFiles();
this.getItems().add(protectItem);
this.getItems().add(externalFiles);
this.getItems().add(new SeparatorMenuItem());
this.getItems().add(formatItem);
}
private void updateFiles() {
externalFiles.getItems().clear();
for (ProtectedTermsList list : Globals.protectedTermsLoader.getProtectedTermsLists()) {
if (!list.isInternalList()) {
MenuItem fileItem = new MenuItem(list.getDescription());
fileItem.setOnAction(event -> {
String selectedText = opener.getSelectedText();
if ((selectedText != null) && !selectedText.isEmpty()) {
list.addProtectedTerm(selectedText);
}
});
externalFiles.getItems().add(fileItem);
}
}
externalFiles.getItems().add(new SeparatorMenuItem());
MenuItem addToNewFileItem = new MenuItem(Localization.lang("New") + "...");
addToNewFileItem.setOnAction(event -> {
NewProtectedTermsFileDialog dialog = new NewProtectedTermsFileDialog(JabRefGUI.getMainFrame(),
Globals.protectedTermsLoader);
dialog.setVisible(true);
if (dialog.isOKPressed()) {
// Update preferences with new list
Globals.prefs.setProtectedTermsPreferences(Globals.protectedTermsLoader);
}
});
externalFiles.getItems().add(addToNewFileItem);
}
}