Project

General

Profile

1
package eu.dnetlib.client.monitor;
2

    
3
import com.github.gwtbootstrap.client.ui.*;
4
import com.github.gwtbootstrap.client.ui.Button;
5
import com.github.gwtbootstrap.client.ui.ListBox;
6
import com.github.gwtbootstrap.client.ui.constants.AlertType;
7
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
8
import com.github.gwtbootstrap.client.ui.constants.FormType;
9
import com.google.gwt.core.client.GWT;
10
import com.google.gwt.dom.client.Document;
11
import com.google.gwt.dom.client.Style;
12
import com.google.gwt.event.dom.client.ChangeEvent;
13
import com.google.gwt.event.dom.client.ChangeHandler;
14
import com.google.gwt.event.dom.client.ClickEvent;
15
import com.google.gwt.event.dom.client.ClickHandler;
16
import com.google.gwt.i18n.client.DateTimeFormat;
17
import com.google.gwt.user.client.Window;
18
import com.google.gwt.user.client.rpc.AsyncCallback;
19
import com.google.gwt.user.client.ui.*;
20
import com.google.gwt.user.client.ui.Label;
21
import com.google.gwt.user.client.ui.TextArea;
22
import eu.dnetlib.client.*;
23
import eu.dnetlib.client.widgets.CKEditor;
24
import eu.dnetlib.client.widgets.FormFieldSet;
25
import eu.dnetlib.goldoa.domain.Help;
26

    
27
/**
28
 * Created by stefania on 4/17/15.
29
 */
30
public class MonitorHelpTextsWidget implements MyWidget {
31

    
32
    private String token = "";
33

    
34
    private FlowPanel monitorHelpTextsPagePanel = new FlowPanel();
35
    private Label monitorHelpTextsTitleLabel = new Label();
36
    private Label monitorHelpTextsInfoLabel = new Label();
37

    
38
    private Alert successLabel = new Alert();
39
    private Alert errorLabel = new Alert();
40
    private Alert warningLabel = new Alert();
41

    
42
    private FlowPanel helpTextsPanel = new FlowPanel();
43

    
44
    private Form helpTextsForm = new Form();
45
    private ListBox helpTextsSelection = new ListBox();
46
    private TextArea textArea = new TextArea();
47
    private CKEditor editor;
48

    
49
    private Button submitChanges = new Button();
50
    private Button preview = new Button();
51

    
52
    private SidebarPanel helpPanel = new SidebarPanel("Help");
53
    private SidebarPanel previewPanel = new SidebarPanel("Preview");
54

    
55
    private DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy/MM/dd");
56
    private DataServiceAsync dataService = GWT.create(DataService.class);
57

    
58
    private GoldOAConstants goldOAConstants = GWT.create(GoldOAConstants.class);
59

    
60
    public MonitorHelpTextsWidget() {
61

    
62
        monitorHelpTextsPagePanel.addStyleName("content");
63

    
64
        monitorHelpTextsTitleLabel.setText("Monitor Help Texts");
65
        monitorHelpTextsTitleLabel.addStyleName("contentTitleLabel");
66

    
67
        monitorHelpTextsInfoLabel.setText("Monitor and change the help texts that appear on the sidebar of each page");
68
        monitorHelpTextsInfoLabel.addStyleName("contentInfoLabel");
69

    
70
        errorLabel.addStyleName("alertLabel");
71
        errorLabel.setType(AlertType.ERROR);
72
        errorLabel.setClose(false);
73
        errorLabel.setVisible(false);
74

    
75
        warningLabel.addStyleName("alertLabel");
76
        warningLabel.setType(AlertType.WARNING);
77
        warningLabel.setClose(false);
78
        warningLabel.setVisible(false);
79

    
80
        successLabel.addStyleName("alertLabel");
81
        successLabel.setType(AlertType.SUCCESS);
82
        successLabel.setClose(false);
83
        successLabel.setVisible(false);
84

    
85
        monitorHelpTextsPagePanel.add(monitorHelpTextsTitleLabel);
86
        monitorHelpTextsPagePanel.add(monitorHelpTextsInfoLabel);
87
        monitorHelpTextsPagePanel.add(successLabel);
88
        monitorHelpTextsPagePanel.add(errorLabel);
89
        monitorHelpTextsPagePanel.add(warningLabel);
90
        monitorHelpTextsPagePanel.add(helpTextsPanel);
91

    
92
        helpTextsForm.setType(FormType.HORIZONTAL);
93

    
94
        helpTextsSelection.addItem("None selected", "none");
95
        helpTextsSelection.addItem("User Registration", "register");
96
        helpTextsSelection.addItem("My Account", "myAccount");
97
        helpTextsSelection.addItem("Edit Account Info", "editAccountInfo");
98
        helpTextsSelection.addItem("Support", "support");
99
        helpTextsSelection.addItem("Statistics", "statistics");
100
        helpTextsSelection.addItem("Eligible Projects", "eligibleProjects");
101
        helpTextsSelection.addItem("Requests", "requests");
102
        helpTextsSelection.addItem("New Funding Request - Researcher", "newFundingRequest_researcher");
103
        helpTextsSelection.addItem("New Funding Request - Project", "newFundingRequest_project");
104
        helpTextsSelection.addItem("New Funding Request - Publication", "newFundingRequest_publication");
105
        helpTextsSelection.addItem("New Funding Request - Accounting", "newFundingRequest_accounting");
106
        helpTextsSelection.addItem("New Funding Request - Summary", "newFundingRequest_summary");
107
        helpTextsSelection.addItem("New Budget Request", "newBudgetRequest");
108
        helpTextsSelection.addItem("Existing Funding Request", "existingFundingRequests");
109
        helpTextsSelection.addItem("Existing Budget Request", "existingBudgetRequests");
110
        helpTextsSelection.addItem("Monitor", "monitor");
111
        helpTextsSelection.addItem("Monitor Funding Requests", "monitorFundingRequests");
112
        helpTextsSelection.addItem("Monitor Budgets", "monitorBudgets");
113
        helpTextsSelection.addItem("Monitor Users", "monitorUsers");
114
        helpTextsSelection.addItem("Monitor User Roles", "monitorUserRoles");
115
        helpTextsSelection.addItem("Monitor Help Texts", "monitorHelpTexts");
116
        helpTextsSelection.addItem("Accounting Monitor", "accountingMonitor");
117
        helpTextsSelection.addItem("Accounting Monitor Funding Requests", "accountingMonitorFundingRequests");
118
        helpTextsSelection.addItem("Accounting Monitor Budgets", "accountingMonitorBudgets");
119

    
120
        helpTextsSelection.addChangeHandler(new ChangeHandler() {
121
            @Override
122
            public void onChange(ChangeEvent changeEvent) {
123

    
124
                successLabel.setVisible(false);
125
                errorLabel.setVisible(false);
126
                warningLabel.setVisible(false);
127

    
128
                if(!helpTextsSelection.getValue().equals("none")) {
129
                    dataService.getHelpById(helpTextsSelection.getValue(), new AsyncCallback<Help>() {
130

    
131
                        @Override
132
                        public void onFailure(Throwable throwable) {
133

    
134
                            errorLabel.setText(goldOAConstants.errorRetrievingHelpText());
135
                            errorLabel.setVisible(true);
136
                        }
137

    
138
                        @Override
139
                        public void onSuccess(Help help) {
140

    
141
                            if (help != null)
142
                                editor.setValue(help.getText());
143
                            else
144
                                editor.setValue("");
145

    
146
                        }
147
                    });
148
                } else {
149
                    editor.setValue("");
150
                }
151
            }
152
        });
153
        helpTextsForm.add(new FormFieldSet("Select help item", helpTextsSelection));
154

    
155
        textArea.getElement().setId("editor");
156
        helpTextsForm.add(new FormFieldSet("Edit help text", textArea));
157

    
158
        preview.setText("Preview");
159
        preview.setType(ButtonType.DEFAULT);
160
        preview.addStyleName("inlineBlock");
161
        preview.addClickHandler(new ClickHandler() {
162

    
163
            @Override
164
            public void onClick(ClickEvent clickEvent) {
165

    
166
                if(editor!=null) {
167

    
168
                    HTML html = new HTML();
169
                    html.setHTML(editor.getValue());
170

    
171
                    previewPanel.clearContent();
172
                    previewPanel.addContent(html);
173
                }
174
            }
175
        });
176

    
177
        submitChanges.setText("Submit Changes");
178
        submitChanges.setType(ButtonType.PRIMARY);
179
        submitChanges.addStyleName("inlineBlock");
180
        submitChanges.addClickHandler(new ClickHandler() {
181

    
182
            @Override
183
            public void onClick(ClickEvent clickEvent) {
184

    
185
                errorLabel.setVisible(false);
186
                warningLabel.setVisible(false);
187
                successLabel.setVisible(false);
188

    
189
                if(!helpTextsSelection.getValue().equals("none")) {
190

    
191
                    Help help = new Help();
192
                    help.setId(helpTextsSelection.getValue());
193
                    help.setText(editor.getValue());
194

    
195
                    dataService.saveHelp(help, new AsyncCallback<Help>() {
196

    
197
                        @Override
198
                        public void onFailure(Throwable throwable) {
199
                            errorLabel.setText(goldOAConstants.errorSavingHelpText());
200
                            errorLabel.setVisible(true);
201
                        }
202

    
203
                        @Override
204
                        public void onSuccess(Help help) {
205
                            successLabel.setText(goldOAConstants.successfullySavingHelpText());
206
                            successLabel.setVisible(true);
207
                            if(help.getId().equals("monitorHelpTexts"))
208
                                MyWidgetHelper.loadHelp(helpPanel, token.split("\\.")[0]);
209
                        }
210
                    });
211
                } else {
212
                    warningLabel.setText(goldOAConstants.warningNoHelpItemSelected());
213
                    warningLabel.setVisible(true);
214
                }
215
            }
216
        });
217

    
218
        helpTextsForm.add(new FormFieldSet(null, preview, submitChanges));
219

    
220
        helpTextsPanel.add(helpTextsForm);
221
    }
222

    
223
    @Override
224
    public void clear() {
225

    
226
        errorLabel.setVisible(false);
227
        warningLabel.setVisible(false);
228
        successLabel.setVisible(false);
229

    
230
        helpPanel.clearContent();
231
        previewPanel.clearContent();
232

    
233
        if(editor!=null) {
234
            editor.destroy();
235
            editor = null;
236
        }
237

    
238
        textArea.setValue("");
239
        helpTextsSelection.setSelectedValue("none");
240
    }
241

    
242
    @Override
243
    public void reload() {
244

    
245
        MyWidgetHelper.showSidebar();
246

    
247
        MyWidgetHelper.loadHelp(helpPanel, token.split("\\.")[0]);
248

    
249
        RootPanel.get("sidebar").add(previewPanel.asWidget());
250
    }
251

    
252
    @Override
253
    public void setToken(String token) {
254
        this.token = token;
255
    }
256

    
257
    @Override
258
    public void afterAdditionToRootPanel() {
259
        loadHelpTexts();
260
    }
261

    
262
    @Override
263
    public Widget asWidget() {
264
        return monitorHelpTextsPagePanel;
265
    }
266

    
267
    private void loadHelpTexts() {
268

    
269
        if(editor==null) {
270
            editor = new CKEditor(textArea.getElement().getId());
271
            editor.setUIColor("#dfd9d2");
272
        }
273
    }
274
}
(4-4/8)