package org.eparapher.rcp.actions; import java.io.File; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eparapher.core.EParapherManager; import org.eparapher.core.signature.DefaultSignatureParameters; import org.eparapher.core.signature.GenericSigner; import org.eparapher.core.signature.XMLSignatureParameters; import org.eparapher.core.signature.XMLSigner; import org.eparapher.rcp.tools.GUIIcons; import org.eparapher.rcp.wizards.XMLSigningWizard; public class XMLSignDocumentAction extends GenericSignatureAction { private static Logger log = Logger.getLogger(ToPDFAndSignDocumentAction.class); public XMLSignDocumentAction() { super(null, true, "XML DSig signing"); } public XMLSignDocumentAction(TreeViewer mviewer, boolean museWizard) { super(mviewer, museWizard, "XML DSig signing"); } public XMLSignDocumentAction(IWorkbenchWindow mwindow) { super(mwindow, "XML Dsig signing"); } public XMLSignDocumentAction(String[] files, boolean museWizard) { super(null, museWizard, "XML Dsig signing"); filesForAction = files; } @Override void buildAction() { this.setId("XMLSignDocumentAction"); this.setImageDescriptor(GUIIcons.XML_ICON); if (!usewizard) { this.setText("XML DSig Signature"); this.setToolTipText("Digitally sign XML file(s) with default parameters"); this.setAccelerator(SWT.CTRL | 'J'); } else { this.setText("XML DSig Signature (wizard)"); this.setToolTipText("Digitally sign XML file(s) using a wizard"); this.setAccelerator(SWT.CTRL | 'K'); } } protected DefaultSignatureParameters getParameters() { XMLSignatureParameters xmlsignparams = new XMLSignatureParameters(); xmlsignparams.setXMLSignatureParamsFromPreferences(); if (viewer != null) xmlsignparams.setFileSelection(getFileSelectionFromView()); if (filesForAction != null) xmlsignparams.setFileSelection(getFileSelectionFromParameters()); if (usewizard) { //Launch Wizard to get PDF Signature Parameters XMLSigningWizard xmlWizard = new XMLSigningWizard(xmlsignparams); if (window==null) window=PlatformUI.getWorkbench().getActiveWorkbenchWindow(); WizardDialog dialog = new WizardDialog(window.getShell(), xmlWizard ); if ( dialog.open() != Window.OK ) { log.info("XML DSig signature options wizard cancelled"); return null; } //recover params from wizard xmlsignparams = xmlWizard.getXMLSignatureParams(); } return xmlsignparams; } @Override GenericSigner getSigner() { return new XMLSigner(); } @Override boolean isFileWithCorrectFormat(File file2verify) { for (String xmlExtention : XMLSignatureParameters.XMLExtentions) { if (file2verify.getName().toLowerCase().endsWith(xmlExtention)) return true; break; } //TODO : improve XML Detection : read file Header to detect "