package org.eparapher.rcp.wizards; import org.apache.log4j.Logger; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; import org.eparapher.core.signature.XMLSignatureParameters; import org.eparapher.rcp.tools.GUIIcons; import org.eparapher.rcp.tools.eParapherTools; public class XMLSigningWizardPageThree extends WizardPage implements IWizardPage, Listener { private static Logger log = Logger.getLogger(XMLSigningWizardPageThree.class); private Button insertCRLs; private Button insertTS; private Button overwriteoriginal; private Button dtdValidation; private Combo format; private Combo canonical; private Combo transform; private Combo sigAlg; private Combo sigDigest; private Text objectID; private Composite container; private XMLSignatureParameters xmlsignatureparams; public XMLSigningWizardPageThree(XMLSignatureParameters xmlsignparams) { super("XML DSig Signing"); setTitle("XML DSig Wizard 3/3"); setDescription("Please select your XML DSig signature settings."); setImageDescriptor( GUIIcons.WIZARD_SIGN_IMG ); xmlsignatureparams = xmlsignparams; } public void createControl(Composite parent) { container = new Composite(parent, SWT.FILL); container.setLayout(new GridLayout(2,true)); //parent.setLayout(new GridLayout(2,true)); Label labelFormat = new Label(container, SWT.NULL); labelFormat.setText("Signature Format : "); labelFormat.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); format = new Combo(container, SWT.READ_ONLY |SWT.BORDER); format.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); format.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigFormatFamilies)); format.select(xmlsignatureparams.getFormatAsInt()); format.addListener(SWT.Selection, this); Label labelTransform = new Label(container, SWT.NULL); labelTransform.setText("XML Doc Transform : "); labelTransform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); transform = new Combo(container, SWT.READ_ONLY |SWT.BORDER); transform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); transform.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLTransformFamilies)); transform.select(xmlsignatureparams.getTransformAsInt()); Label labelCanonical = new Label(container, SWT.NULL); labelCanonical.setText("XML Doc Canonical : "); labelCanonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); canonical = new Combo(container, SWT.READ_ONLY |SWT.BORDER); canonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); canonical.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLCanonicalFamilies)); canonical.select(xmlsignatureparams.getCanonicalAsInt()); Label labelDigest = new Label(container, SWT.NULL); labelDigest.setText("Digest algorithm : "); labelDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); sigDigest = new Combo(container, SWT.READ_ONLY |SWT.BORDER); sigDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); sigDigest.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLHashAlgFamilies)); sigDigest.select(xmlsignatureparams.getDigestAlgAsInt()); Label labelSigAlg = new Label(container, SWT.NULL); labelSigAlg.setText("Signature algorithm : "); labelSigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); sigAlg = new Combo(container, SWT.READ_ONLY |SWT.BORDER); sigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); sigAlg.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigAlgFamilies)); sigAlg.select(xmlsignatureparams.getSignatureAlgAsInt()); Label labelOverwrite = new Label(container, SWT.NULL); labelOverwrite.setText("Overwrite xml source file."); labelOverwrite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); overwriteoriginal = new Button(container, SWT.CHECK); overwriteoriginal.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); overwriteoriginal.setToolTipText("Overwrite xml file "); overwriteoriginal.setSelection(xmlsignatureparams.isOverwritesignedfile()); Label labelDTDValidation = new Label(container, SWT.NULL); labelDTDValidation.setText("Enable DTD Validation."); labelDTDValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); labelDTDValidation.setEnabled(true); dtdValidation = new Button(container, SWT.CHECK); dtdValidation.setToolTipText("Enable DTD download for XML Document syntax verification"); dtdValidation.setSelection (xmlsignatureparams.isDTDValidation()); dtdValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); dtdValidation.setEnabled(true); Label labelInsertCRL = new Label(container, SWT.NULL); labelInsertCRL.setText("Insert CRL in signature."); labelInsertCRL.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); labelInsertCRL.setEnabled(false); insertCRLs = new Button(container, SWT.CHECK); insertCRLs.setToolTipText("Insert CRL to improve signature quality"); insertCRLs.setSelection (xmlsignatureparams.isInsertCRLs()); insertCRLs.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); insertCRLs.setEnabled(false); Label labelInsertTimestamp = new Label(container, SWT.NULL); labelInsertTimestamp.setText("Insert Timestamp in signature."); labelInsertTimestamp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); labelInsertTimestamp.setEnabled(false); insertTS = new Button(container, SWT.CHECK); insertTS.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); insertTS.setToolTipText("Insert Timestamp to improve signature quality"); insertTS.setSelection(xmlsignatureparams.isInsertTimestamp()); insertTS.setEnabled(false); Label labelLocation = new Label(container, SWT.NULL); labelLocation.setText("ObjectID : "); labelLocation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); labelLocation.setEnabled(false); objectID = new Text(container, SWT.BORDER | SWT.SINGLE); objectID.setText(xmlsignatureparams.getObjectIds()); //objectID.addKeyListener( new KeyListenerValidator() ); objectID.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); objectID.setEnabled(false); // Required to avoid an error in the system setControl(container); setPageComplete(true); } /** * @see Listener#handleEvent(Event) */ public void handleEvent(Event event) { if ((event.widget == format)) { log.debug("Signature format selected : " + XMLSignatureParameters.XMLSigFormatFamilies[format.getSelectionIndex()][1]); if ( format.getSelectionIndex() == 2 ) { objectID.setEnabled(true); } else { objectID.setEnabled(false); } if (format.getSelectionIndex() == 1) { transform.setEnabled(true); } else { transform.setEnabled(false); } if (format.getSelectionIndex() == 0) { overwriteoriginal.setEnabled(true); } else { overwriteoriginal.setEnabled(false); } } setPageComplete(isPageComplete()); } public int getSignatureFormat() { return format.getSelectionIndex(); } public String getXMLTransform() { return xmlsignatureparams.XMLTransformFamilies[transform.getSelectionIndex()][1]; } public String getXMLCanonical() { return xmlsignatureparams.XMLCanonicalFamilies[canonical.getSelectionIndex()][1]; } public String getDigestAlg() { return xmlsignatureparams.XMLHashAlgFamilies[sigDigest.getSelectionIndex()][1]; } public String getSignatureAlg() { return xmlsignatureparams.XMLSigAlgFamilies[sigAlg.getSelectionIndex()][1]; } public boolean isCRLsInSignature() { return insertCRLs.getSelection(); } public boolean isTSInSignature() { return insertTS.getSelection(); } public boolean isOverwriteOriginalFile() { return overwriteoriginal.getSelection(); } public boolean isDTDValidation() { return dtdValidation.getSelection(); } public String getObjectID() { return objectID.getText(); } }