Subversion Repository Public Repository

litesoft

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package org.litesoft.sandbox.csapp.client.widgets;

import com.google.gwt.event.dom.client.*;
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 REMOVE_REGULAR_IMAGE_URL = "common/Remove.gif";
    private static final String REMOVE_DISABLED_IMAGE_URL = "common/RemoveDisabled.gif";
    private static final String REMOVE_HOVER_IMAGE_URL = "common/RemoveHover.gif";
    private static final String REMOVE_PRESSED_IMAGE_URL = "common/RemovePressed.gif";

    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 final UploadWidget uploader;
    private final HTML resultsDisplay = new HTML( " " );
    private final ScrollPanel resultsContainer = new ScrollPanel();

    public CertUploadWidget() {
        PushButton illusionaryButton = new PushButton( new Image( UP_IMAGE_URL ) );
        illusionaryButton.getUpDisabledFace().setImage( new Image( UP_DISABLED_IMAGE_URL ) );

        PushButton removeButton = new PushButton( new Image( REMOVE_REGULAR_IMAGE_URL ) );
        removeButton.getUpDisabledFace().setImage( new Image( REMOVE_DISABLED_IMAGE_URL ) );
        removeButton.getUpHoveringFace().setImage( new Image( REMOVE_HOVER_IMAGE_URL ) );
        removeButton.getDownFace().setImage( new Image( REMOVE_PRESSED_IMAGE_URL ) );
        removeButton.getDownHoveringFace().setImage( new Image( REMOVE_PRESSED_IMAGE_URL ) );
        removeButton.addClickHandler( new ClickHandler() {
            @Override
            public void onClick( ClickEvent event ) {
                resultsDisplay.setHTML( " " );
                // todo: Clear the actual Base64 file contents
            }
        } );

        uploader = new UploadWidget( illusionaryButton, removeButton, SECONDS_TO_WAIT, this );
        resultsContainer.setWidget( resultsDisplay );
        resultsContainer.addStyleName( "CertUploadResults" );
        VerticalPanel panel = new VerticalPanel();
        panel.addStyleName( "CertUpload" );
        panel.add( uploader );
        panel.add( createSpacer( "CertUploadResultsRemoveSpacer" ) );
        panel.add( createResultsRemoveWidget( resultsContainer, removeButton ) );
        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();
    }

    private Widget createResultsRemoveWidget( ScrollPanel resultsContainer, ButtonBase removeButton ) {
        HorizontalPanel panel = new HorizontalPanel();
        panel.addStyleName( "CertUploadResultsRemove" );
        panel.add( resultsContainer );
        panel.add( createSpacer( "CertUploadResultsRemoveSpacer" ) );
        panel.add( removeButton );
        return panel;
    }

    private Widget createSpacer( String className ) {
        HTML div = new HTML( " " );
        div.addStyleName( className );
        return div;
    }

    @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 requestingUpload( String filename ) {
        resultsDisplay.setHTML( "Uploading '" + filename + "' ..." );
    }

    @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 ) );
    }
}

Commits for litesoft/trunk/GWT_Sandbox/Upload/src/org/litesoft/sandbox/csapp/client/widgets/CertUploadWidget.java

Diff revisions: vs.
Revision Author Commited Message
948 Diff Diff GeorgeS picture GeorgeS Sat 07 Jun, 2014 23:42:39 +0000

Jusefuls Formatter Updated to New Code Format

537 Diff Diff GeorgeS picture GeorgeS Sun 02 Oct, 2011 17:58:21 +0000
535 Diff Diff GeorgeS picture GeorgeS Fri 30 Sep, 2011 18:34:03 +0000

!

534 Diff Diff GeorgeS picture GeorgeS Fri 30 Sep, 2011 17:55:53 +0000
533 Diff Diff GeorgeS picture GeorgeS Fri 30 Sep, 2011 17:25:49 +0000
532 GeorgeS picture GeorgeS Thu 29 Sep, 2011 20:59:09 +0000