View Javadoc

1   package org.eparapher.rcp.wizards;
2   
3   import org.apache.log4j.Logger;
4   import org.eclipse.jface.wizard.IWizardPage;
5   import org.eclipse.jface.wizard.WizardPage;
6   import org.eclipse.swt.SWT;
7   import org.eclipse.swt.layout.GridData;
8   import org.eclipse.swt.layout.GridLayout;
9   import org.eclipse.swt.widgets.Button;
10  import org.eclipse.swt.widgets.Combo;
11  import org.eclipse.swt.widgets.Composite;
12  import org.eclipse.swt.widgets.Event;
13  import org.eclipse.swt.widgets.Label;
14  import org.eclipse.swt.widgets.Listener;
15  import org.eclipse.swt.widgets.Text;
16  import org.eparapher.core.signature.XMLSignatureParameters;
17  import org.eparapher.rcp.tools.GUIIcons;
18  import org.eparapher.rcp.tools.eParapherTools;
19  
20  public class XMLSigningWizardPageThree extends WizardPage implements IWizardPage, Listener {
21  
22  	private static Logger log = Logger.getLogger(XMLSigningWizardPageThree.class);
23  	
24  		private Button insertCRLs;
25  		private Button insertTS;
26  		private Button overwriteoriginal;
27  		private Button dtdValidation;
28  
29  		private Combo format;
30  		private Combo canonical;
31  		private Combo transform;
32  		private Combo sigAlg;
33  		private Combo sigDigest;
34  
35  		private Text objectID;
36  		
37  		private Composite container;
38  		
39  		private XMLSignatureParameters xmlsignatureparams;
40  		
41  		public XMLSigningWizardPageThree(XMLSignatureParameters xmlsignparams) {
42  			super("XML DSig Signing");
43  			setTitle("XML DSig Wizard 3/3");
44  			setDescription("Please select your XML DSig signature settings.");
45  			setImageDescriptor( GUIIcons.WIZARD_SIGN_IMG );
46  			xmlsignatureparams = xmlsignparams;
47  		}
48  
49  		public void createControl(Composite parent) {
50  			container = new Composite(parent, SWT.FILL);
51  			container.setLayout(new GridLayout(2,true));
52  			
53  			//parent.setLayout(new GridLayout(2,true));
54  			
55  			Label labelFormat = new Label(container, SWT.NULL);
56  			labelFormat.setText("Signature Format : ");
57  			labelFormat.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
58  			format = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
59  			format.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
60  			format.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigFormatFamilies));
61  			format.select(xmlsignatureparams.getFormatAsInt());
62  			format.addListener(SWT.Selection, this);
63  
64  			Label labelTransform = new Label(container, SWT.NULL);
65  			labelTransform.setText("XML Doc Transform : ");
66  			labelTransform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
67  			transform = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
68  			transform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
69  			transform.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLTransformFamilies));
70  			transform.select(xmlsignatureparams.getTransformAsInt());
71  			
72  
73  			Label labelCanonical = new Label(container, SWT.NULL);
74  			labelCanonical.setText("XML Doc Canonical : ");
75  			labelCanonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
76  			canonical = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
77  			canonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
78  			canonical.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLCanonicalFamilies));
79  			canonical.select(xmlsignatureparams.getCanonicalAsInt());
80  
81  			Label labelDigest = new Label(container, SWT.NULL);
82  			labelDigest.setText("Digest algorithm : ");
83  			labelDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
84  			sigDigest = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
85  			sigDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
86  			sigDigest.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLHashAlgFamilies));
87  			sigDigest.select(xmlsignatureparams.getDigestAlgAsInt());
88  
89  			Label labelSigAlg = new Label(container, SWT.NULL);
90  			labelSigAlg.setText("Signature algorithm : ");
91  			labelSigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
92  			sigAlg = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
93  			sigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
94  			sigAlg.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigAlgFamilies));
95  			sigAlg.select(xmlsignatureparams.getSignatureAlgAsInt());
96  			
97  			Label labelOverwrite = new Label(container, SWT.NULL);
98  			labelOverwrite.setText("Overwrite xml source file.");
99  			labelOverwrite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
100 			overwriteoriginal = new Button(container, SWT.CHECK);
101 			overwriteoriginal.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
102 			overwriteoriginal.setToolTipText("Overwrite xml file ");
103 			overwriteoriginal.setSelection(xmlsignatureparams.isOverwritesignedfile());
104 			
105 			Label labelDTDValidation = new Label(container, SWT.NULL);
106 			labelDTDValidation.setText("Enable DTD Validation.");
107 			labelDTDValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
108 			labelDTDValidation.setEnabled(true);
109 			dtdValidation = new Button(container, SWT.CHECK);
110 			dtdValidation.setToolTipText("Enable DTD download for XML Document syntax verification");
111 			dtdValidation.setSelection (xmlsignatureparams.isDTDValidation());
112 			dtdValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
113 			dtdValidation.setEnabled(true);
114 			
115 			Label labelInsertCRL = new Label(container, SWT.NULL);
116 			labelInsertCRL.setText("Insert CRL in signature.");
117 			labelInsertCRL.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
118 			labelInsertCRL.setEnabled(false);
119 			insertCRLs = new Button(container, SWT.CHECK);
120 			insertCRLs.setToolTipText("Insert CRL to improve signature quality");
121 			insertCRLs.setSelection (xmlsignatureparams.isInsertCRLs());
122 			insertCRLs.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
123 			insertCRLs.setEnabled(false);
124 			
125 			Label labelInsertTimestamp = new Label(container, SWT.NULL);
126 			labelInsertTimestamp.setText("Insert Timestamp in signature.");
127 			labelInsertTimestamp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
128 			labelInsertTimestamp.setEnabled(false);
129 			insertTS = new Button(container, SWT.CHECK);
130 			insertTS.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
131 			insertTS.setToolTipText("Insert Timestamp to improve signature quality");
132 			insertTS.setSelection(xmlsignatureparams.isInsertTimestamp());
133 			insertTS.setEnabled(false);
134 			
135 			Label labelLocation = new Label(container, SWT.NULL);
136 			labelLocation.setText("ObjectID : ");
137 			labelLocation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
138 			labelLocation.setEnabled(false);
139 			objectID = new Text(container, SWT.BORDER | SWT.SINGLE);
140 			objectID.setText(xmlsignatureparams.getObjectIds());
141 			//objectID.addKeyListener( new KeyListenerValidator() );
142 			objectID.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
143 			objectID.setEnabled(false);
144 			
145 			// Required to avoid an error in the system
146 			setControl(container);
147 			setPageComplete(true);
148 		}
149 
150 		/**
151 		 * @see Listener#handleEvent(Event)
152 		 */
153 		public void handleEvent(Event event) {
154 		    
155 		    if ((event.widget == format)) {
156 	    		log.debug("Signature format selected : " + XMLSignatureParameters.XMLSigFormatFamilies[format.getSelectionIndex()][1]);
157 		    	if ( format.getSelectionIndex() == 2 ) {
158 		    		objectID.setEnabled(true);
159 		    	} else {
160 		    		objectID.setEnabled(false);
161 		    	}
162 		    	if (format.getSelectionIndex() == 1) {
163 		    		transform.setEnabled(true);
164 				} else {
165 					transform.setEnabled(false);
166 				}
167 		    	if (format.getSelectionIndex() == 0) {
168 		    		overwriteoriginal.setEnabled(true);
169 				} else {
170 					overwriteoriginal.setEnabled(false);
171 				}
172 		    }
173 
174 		    setPageComplete(isPageComplete());
175 		}
176 		public int getSignatureFormat() {
177 			return format.getSelectionIndex();
178 		}
179 
180 		public String getXMLTransform() {
181 			return xmlsignatureparams.XMLTransformFamilies[transform.getSelectionIndex()][1];
182 		}
183 
184 		public String getXMLCanonical() {
185 			return xmlsignatureparams.XMLCanonicalFamilies[canonical.getSelectionIndex()][1];
186 		}
187 
188 		public String getDigestAlg() {
189 			return xmlsignatureparams.XMLHashAlgFamilies[sigDigest.getSelectionIndex()][1];
190 		}
191 
192 		public String getSignatureAlg() {
193 			return xmlsignatureparams.XMLSigAlgFamilies[sigAlg.getSelectionIndex()][1];
194 		}
195 		
196 		public boolean isCRLsInSignature() {
197 			return insertCRLs.getSelection();
198 		}
199 
200 		public boolean isTSInSignature() {
201 			return insertTS.getSelection();
202 		}
203 
204 		public boolean isOverwriteOriginalFile() {
205 			return overwriteoriginal.getSelection();
206 		}
207 		
208 		public boolean isDTDValidation() {
209 			return dtdValidation.getSelection();
210 		}
211 		
212 		public String getObjectID() {
213 			return objectID.getText();
214 		}
215 }