140 lines
4.0 KiB
Java
140 lines
4.0 KiB
Java
package org.gcube.portlets.user.socialprofile.client.ui;
|
|
|
|
import org.gcube.portlets.user.socialprofile.client.SocialService;
|
|
import org.gcube.portlets.user.socialprofile.client.SocialServiceAsync;
|
|
|
|
import com.github.gwtbootstrap.client.ui.AlertBlock;
|
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.safehtml.shared.SafeHtml;
|
|
import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
import com.google.gwt.uibinder.client.UiHandler;
|
|
import com.google.gwt.user.client.Timer;
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
import com.google.gwt.user.client.ui.Button;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.HTML;
|
|
import com.google.gwt.user.client.ui.TextArea;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
public class DisplaySummary extends Composite {
|
|
|
|
private static DisplaySummaryUiBinder uiBinder = GWT
|
|
.create(DisplaySummaryUiBinder.class);
|
|
|
|
private final SocialServiceAsync socialService = GWT.create(SocialService.class);
|
|
|
|
interface DisplaySummaryUiBinder extends UiBinder<Widget, DisplaySummary> {
|
|
}
|
|
|
|
@UiField HTML summary;
|
|
@UiField TextArea summaryEditingArea;
|
|
@UiField Button saveSummary;
|
|
@UiField Button cancelEditSummary;
|
|
@UiField AlertBlock alertBlock;
|
|
|
|
public DisplaySummary() {
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
saveSummary.getElement().getStyle().setMarginRight(5, Unit.PX);
|
|
}
|
|
|
|
/**
|
|
* Set the summary text
|
|
* @param summaryText
|
|
*/
|
|
public void setSummary(String summaryText){
|
|
summary.setHTML(summaryText);
|
|
summaryEditingArea.setText(summaryText);
|
|
}
|
|
|
|
/**
|
|
* Hide the summary field and show the summaryEditingArea one
|
|
*/
|
|
public void enableEditing(){
|
|
summary.setVisible(false);
|
|
summaryEditingArea.setVisible(true);
|
|
saveSummary.setVisible(true);
|
|
cancelEditSummary.setVisible(true);
|
|
}
|
|
|
|
@UiHandler("saveSummary")
|
|
void onSaveClick(ClickEvent e){
|
|
|
|
// show alert block
|
|
alertBlock.setText("Changing backgroud summary information please wait...");
|
|
alertBlock.setType(AlertType.INFO);
|
|
|
|
// disable save button
|
|
saveSummary.setEnabled(false);
|
|
|
|
// sanitize html ...
|
|
final SafeHtml sanitizedHtml = SimpleHtmlSanitizer.sanitizeHtml(summaryEditingArea.getText());
|
|
|
|
socialService.saveProfessionalBackground(sanitizedHtml.asString(), new AsyncCallback<Boolean>() {
|
|
|
|
@Override
|
|
public void onSuccess(Boolean result) {
|
|
|
|
// save the new sanitizedHtml html as summary
|
|
if(result){
|
|
summary.setHTML(sanitizedHtml.asString());
|
|
summaryEditingArea.setText(sanitizedHtml.asString());
|
|
summary.setVisible(true);
|
|
summaryEditingArea.setVisible(false);
|
|
saveSummary.setVisible(false);
|
|
cancelEditSummary.setVisible(false);
|
|
alertBlock.setText("Background Summary successfully updated");
|
|
alertBlock.setType(AlertType.SUCCESS);
|
|
}else{
|
|
alertBlock.setText("Background Summary not updated sorry");
|
|
alertBlock.setType(AlertType.ERROR);
|
|
}
|
|
|
|
alertBlock.setVisible(true);
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
|
|
summary.setVisible(true);
|
|
summaryEditingArea.setVisible(false);
|
|
saveSummary.setVisible(false);
|
|
alertBlock.setText("Background Summary not updated sorry");
|
|
alertBlock.setType(AlertType.ERROR);
|
|
alertBlock.setVisible(true);
|
|
cancelEditSummary.setVisible(false);
|
|
|
|
}
|
|
});
|
|
|
|
// hide alert after a while
|
|
Timer t = new Timer() {
|
|
|
|
@Override
|
|
public void run() {
|
|
alertBlock.setVisible(false);
|
|
}
|
|
};
|
|
t.schedule(2000);
|
|
|
|
// enable save button
|
|
saveSummary.setEnabled(true);
|
|
}
|
|
|
|
@UiHandler("cancelEditSummary")
|
|
void onCancelClick(ClickEvent e){
|
|
|
|
// reset changes and exit
|
|
summaryEditingArea.setText(summary.getText());
|
|
summary.setVisible(true);
|
|
summaryEditingArea.setVisible(false);
|
|
saveSummary.setVisible(false);
|
|
cancelEditSummary.setVisible(false);
|
|
}
|
|
}
|