Je souhaites rajouter un item "Générer et afficher le PDF" dans le menu contextuel des listes de devis, factures, etc...
J'ai vu que je pouvais le faire en passant par setupElement() et un PredicateRowAction puis un AbstractSheetXml mais je bloque justement sur ce dernier point, à savoir créer un AbstractSheetXml à partir d'un SQLRow que je récupère depuis l'ActionEvent:
Code : Tout sélectionner
public class ViewPDFAction extends PredicateRowAction {
protected static AbstractSheetXml createAbstractSheet(SQLRow row) {
...
// créer l'AbstractSheetXml à partir du SQLRow en fonction du type (devis, facture, etc...) et la renvoyer
...
return sheet;
}
public ViewPDFAction(final String foreignField) {
super(new AbstractAction("Générer et afficher le PDF", FontIcon.of(LineAwesomeSolid.FILE_PDF, 24)) {
@Override
public void actionPerformed(ActionEvent ev) {
System.out.println("Open PDF file...");
System.out.println(IListe.get(ev).fetchSelectedRow().mapToString());
final AbstractSheetXml sheet = createAbstractSheet(IListe.get(ev).fetchSelectedRow());
File file = sheet.getOrCreatePDFDocumentFile(true);
if(!Desktop.isDesktopSupported()){
System.out.println("Desktop is not supported");
return;
}
Desktop desktop = Desktop.getDesktop();
if(file.exists()) desktop.open(file);
}
}, true);
}
public ViewPDFAction() {
this(null);
}
}