Revision 0634d911

b/src/gr/grnet/pithos/web/client/FeedbackDialog.java
34 34
 */
35 35
package gr.grnet.pithos.web.client;
36 36

  
37
import gr.grnet.pithos.web.client.rest.PostRequest;
38

  
39
import com.google.gwt.core.client.GWT;
40 37
import com.google.gwt.core.client.Scheduler;
41 38
import com.google.gwt.dom.client.NativeEvent;
42 39
import com.google.gwt.event.dom.client.ClickEvent;
......
45 42
import com.google.gwt.http.client.Response;
46 43
import com.google.gwt.i18n.client.Dictionary;
47 44
import com.google.gwt.user.client.Event.NativePreviewEvent;
48
import com.google.gwt.user.client.ui.Anchor;
49
import com.google.gwt.user.client.ui.Button;
50
import com.google.gwt.user.client.ui.DialogBox;
51
import com.google.gwt.user.client.ui.FlexTable;
52
import com.google.gwt.user.client.ui.HTML;
53
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
54
import com.google.gwt.user.client.ui.TextArea;
55
import com.google.gwt.user.client.ui.VerticalPanel;
45
import com.google.gwt.user.client.ui.*;
46
import gr.grnet.pithos.web.client.rest.PostRequest;
56 47

  
57 48

  
58 49
/**
......
60 51
 */
61 52
public class FeedbackDialog extends DialogBox {
62 53

  
63
	Dictionary otherProperties = Dictionary.getDictionary("otherProperties");
64
	
65
	Pithos app;
66
	
67
	String appData;
68
	
69
	TextArea msg;
70
	
71
	/**
72
	 * The widget constructor.
73
	 */
74
	public FeedbackDialog(final Pithos _app, final String _appData) {
75
		app = _app;
76
		appData = _appData;
77
		
78
		// Set the dialog's caption.
79
		Anchor close = new Anchor("close");
80
		close.addStyleName("close");
81
		close.addClickHandler(new ClickHandler() {
82
			
83
			@Override
84
			public void onClick(ClickEvent event) {
85
				hide();
86
			}
87
		});
88
		setText("Send feedback");
89
		setGlassEnabled(true);
90
		
91
		setStyleName("pithos-DialogBox");
92

  
93
		VerticalPanel outer = new VerticalPanel();
94
		outer.add(close);
95
		
96
		VerticalPanel inner = new VerticalPanel();
97
		inner.addStyleName("inner");
98
		// Create the text and set a style name so we can style it with CSS.
99
		HTML text = new HTML("Pithos+ is currently in alpha test and we would appreciate any<br>" + "kind of feedback. We welcome any suggestions, questions and<br>" + " bug reports you may have.");
100
		text.setStyleName("pithos-credentialsText");
101
		inner.add(text);
102
		FlexTable table = new FlexTable();
103
		table.setText(0, 0, "Please describe your problem here, provide as many details as possible");
104
		msg = new TextArea();
105
		msg.setWidth("100%");
106
		msg.setHeight("100px");
107
		table.setWidget(1, 0, msg);
108

  
109
		table.getFlexCellFormatter().setStyleName(0, 0, "props-labels");
110
		table.getFlexCellFormatter().setStyleName(0, 1, "props-values");
111
		inner.add(table);
112

  
113
		// Create the 'OK' button, along with a listener that hides the dialog
114
		// when the button is clicked.
115
		Button confirm = new Button("Submit feedback", new ClickHandler() {
116
			@Override
117
			public void onClick(ClickEvent event) {
118
				sendFeedback();
119
				hide();
120
			}
121
		});
122
		confirm.addStyleName("button");
123
		inner.add(confirm);
124
		outer.add(inner);
125
		outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
126
		setWidget(outer);
127
	}
128

  
129
	@Override
130
	protected void onPreviewNativeEvent(NativePreviewEvent preview) {
131
		super.onPreviewNativeEvent(preview);
132
		NativeEvent evt = preview.getNativeEvent();
133
		if (evt.getType().equals("keydown")) {
134
			// Use the popup's key preview hooks to close the dialog when
135
			// either enter or escape is pressed.
136
			switch (evt.getKeyCode()) {
137
				case KeyCodes.KEY_ENTER:
138
					sendFeedback();
139
					hide();
140
					break;
141
				case KeyCodes.KEY_ESCAPE:
142
					hide();
143
					break;
144
			}
145
		}
146
	}
147

  
148
	/**
149
	 */
150
	void sendFeedback() {
151
		PostRequest sendFeedback = new PostRequest("", "", otherProperties.get("feedbackUrl"), "feedback_msg=" + msg.getText() + "&feedback_data=" + appData + "&auth=" + app.getUserToken()) {
152
			
153
			@Override
154
			protected void onUnauthorized(Response response) {
155
				app.sessionExpired();
156
			}
157
			
158
			@Override
159
			public void onSuccess(Resource result) {
160
				app.displayInformation("Feedback sent");
161
			}
162
			
163
			@Override
164
			public void onError(Throwable t) {
165
				GWT.log("", t);
166
			}
167
		};
168
		Scheduler.get().scheduleDeferred(sendFeedback);
169
	}
54
    Dictionary otherProperties = Dictionary.getDictionary("otherProperties");
55

  
56
    Pithos app;
57

  
58
    String appData;
59

  
60
    TextArea msg;
61

  
62
    /**
63
     * The widget constructor.
64
     */
65
    public FeedbackDialog(final Pithos _app, final String _appData) {
66
        app = _app;
67
        appData = _appData;
68

  
69
        // Set the dialog's caption.
70
        Anchor close = new Anchor("close");
71
        close.addStyleName("close");
72
        close.addClickHandler(new ClickHandler() {
73

  
74
            @Override
75
            public void onClick(ClickEvent event) {
76
                hide();
77
            }
78
        });
79
        setText("Send feedback");
80
        setGlassEnabled(true);
81

  
82
        setStyleName("pithos-DialogBox");
83

  
84
        VerticalPanel outer = new VerticalPanel();
85
        outer.add(close);
86

  
87
        VerticalPanel inner = new VerticalPanel();
88
        inner.addStyleName("inner");
89
        // Create the text and set a style name so we can style it with CSS.
90
        HTML text = new HTML("Pithos+ is currently in alpha test and we would appreciate any<br>" + "kind of feedback. We welcome any suggestions, questions and<br>" + " bug reports you may have.");
91
        text.setStyleName("pithos-credentialsText");
92
        inner.add(text);
93
        FlexTable table = new FlexTable();
94
        table.setText(0, 0, "Please describe your problem here, provide as many details as possible");
95
        msg = new TextArea();
96
        msg.setWidth("100%");
97
        msg.setHeight("100px");
98
        table.setWidget(1, 0, msg);
99

  
100
        table.getFlexCellFormatter().setStyleName(0, 0, "props-labels");
101
        table.getFlexCellFormatter().setStyleName(0, 1, "props-values");
102
        inner.add(table);
103

  
104
        // Create the 'OK' button, along with a listener that hides the dialog
105
        // when the button is clicked.
106
        Button confirm = new Button("Submit feedback", new ClickHandler() {
107
            @Override
108
            public void onClick(ClickEvent event) {
109
                sendFeedback();
110
                hide();
111
            }
112
        });
113
        confirm.addStyleName("button");
114
        inner.add(confirm);
115
        outer.add(inner);
116
        outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
117
        setWidget(outer);
118
    }
119

  
120
    @Override
121
    protected void onPreviewNativeEvent(NativePreviewEvent preview) {
122
        super.onPreviewNativeEvent(preview);
123
        NativeEvent evt = preview.getNativeEvent();
124
        if(evt.getType().equals("keydown")) {
125
            // Use the popup's key preview hooks to close the dialog when
126
            // either enter or escape is pressed.
127
            switch(evt.getKeyCode()) {
128
                case KeyCodes.KEY_ENTER:
129
                    sendFeedback();
130
                    hide();
131
                    break;
132
                case KeyCodes.KEY_ESCAPE:
133
                    hide();
134
                    break;
135
            }
136
        }
137
    }
138

  
139
    /**
140
     */
141
    void sendFeedback() {
142
        final String feedbackURL = otherProperties.get("feedbackUrl");
143
        PostRequest sendFeedback = new PostRequest("", "", feedbackURL, "feedback_msg=" + msg.getText() + "&feedback_data=" + appData + "&auth=" + app.getUserToken()) {
144

  
145
            @Override
146
            protected void onUnauthorized(Response response) {
147
                app.sessionExpired();
148
            }
149

  
150
            @Override
151
            public void onSuccess(Resource result) {
152
                app.displayInformation("Feedback sent");
153
            }
154

  
155
            @Override
156
            public void onError(Throwable t) {
157
                app.displayError("Could not send feedback");
158
            }
159
        };
160
        sendFeedback.setHeader("X-Auth-Token", app.getUserToken());
161
        Scheduler.get().scheduleDeferred(sendFeedback);
162
    }
170 163
}

Also available in: Unified diff