package org.jabref.gui.actions;
import java.awt.event.ActionEvent;
import java.util.Optional;
import javax.swing.AbstractAction;
import javafx.scene.control.TextArea;
import org.jabref.JabRefGUI;
import org.jabref.gui.ClipBoardManager;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.entry.identifier.DOI;
/**
* Copies the doi url to the clipboard
*/
public class CopyDoiUrlAction extends AbstractAction {
private TextArea component = null;
private String identifier;
public CopyDoiUrlAction(String identifier) {
super(Localization.menuTitle("Copy DOI url"));
this.identifier = identifier;
}
public CopyDoiUrlAction(TextArea component) {
this(component.getText());
this.component = component;
}
@Override
public void actionPerformed(ActionEvent e) {
identifier = component == null ? identifier : component.getText();
Optional<String> urlOptional = DOI.parse(identifier).map(DOI::getURIAsASCIIString);
if (urlOptional.isPresent()) {
ClipBoardManager clipBoard = new ClipBoardManager();
clipBoard.setClipboardContents(urlOptional.get());
JabRefGUI.getMainFrame().output(Localization.lang("The link has been copied to the clipboard."));
} else {
JabRefGUI.getMainFrame().output(Localization.lang("Invalid DOI: '%0'.", identifier));
}
}
}