litesoft
@ 534
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
package org.litesoft.sandbox.csapp.client.widgets; import com.google.gwt.safehtml.shared.*; import com.google.gwt.user.client.*; import com.google.gwt.user.client.ui.*; public class CertUploadWidget extends Composite implements IsWidget, UploadWidget.Callback { private static final String UP_IMAGE_URL = "common/uploadCert.png"; private static final String UP_DISABLED_IMAGE_URL = "common/uploadCertDisabled.png"; private static final String BUSY_IMAGE_URL = "common/BigBusy.gif"; private static final int SECONDS_TO_WAIT = 30; private static final String WAIT_MESSAGE = "Checking Certificate Validity,\nthis can take a while...\n${seconds}\nseconds until timeout."; private UploadWidget uploader; private HTML resultsDisplay = new HTML( " " ); private ScrollPanel resultsContainer = new ScrollPanel(); public CertUploadWidget() { PushButton button = new PushButton( new Image( UP_IMAGE_URL ) ); button.getUpDisabledFace().setImage( new Image( UP_DISABLED_IMAGE_URL ) ); uploader = new UploadWidget( button, SECONDS_TO_WAIT, this ); resultsContainer.setWidget( resultsDisplay ); resultsContainer.addStyleName( "CertUploadResults" ); VerticalPanel panel = new VerticalPanel(); panel.add( uploader ); panel.add( resultsContainer ); initWidget( panel ); } public void setServletPath( String url ) { uploader.setServletPath( url ); } public void setEnabled( boolean enable ) { uploader.setEnabled( enable ); } public void setResultsWidth( String width ) { resultsContainer.setWidth( width ); } public void setResultsHeight( String height ) { resultsContainer.setHeight( height ); } protected void showBusy() { uploader.showBusy(); } @Override public Image createBusyImage() { return new Image( BUSY_IMAGE_URL ); } @Override public Widget createWaitingMessageWidget( Widget secondsRemaining ) { VerticalPanel panel = new VerticalPanel(); panel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_CENTER ); String message = WAIT_MESSAGE; int from = 0; for ( int at; -1 != (at = message.indexOf( '\n', from )); from = at + 1 ) { panel.add( createLabel( message.substring( from, at ), secondsRemaining ) ); } panel.add( createLabel( message.substring( from ), secondsRemaining ) ); return panel; } private Widget createLabel( String line, Widget secondsRemainingWidget ) { return line.equals( "${seconds}" ) ? secondsRemainingWidget : new Label( line ); } @Override public void timeout( String filename ) { if ( (filename == null) || (filename.length() == 0) ) { filename = "N/A"; } Window.alert( "The Cert processing for\n" + filename + "\nhas Timed Out.\n\nIt may yet arrive..." ); } @Override public void parseResponse( String fileName, String htmlResponse ) { // Truly Bad Url: // null // No Servlet: // <h2>HTTP ERROR: 404</h2><pre>NOT_FOUND</pre> // <p>RequestURI=/v2/TestSubmit</p><p><i><small><a href="http://jetty.mortbay.org/">Powered by Jetty://</a></small></i></p><br> // <br> // <br> // <br> // ... System.out.println( "parseResponse:\n" + htmlResponse ); resultsDisplay.setHTML( SafeHtmlUtils.htmlEscapeAllowEntities( "Got Response (" + htmlResponse.length() + " bytes)\nfor\n" + fileName ) ); } } |