package de.tud.kom.socom.web.client.administration;
import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
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.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.InlineHyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.Widget;
import de.tud.kom.socom.web.client.sharedmodels.Report;
public class ReportReviewView extends Composite {
private static UserPropertiesViewUiBinder uiBinder = GWT.create(UserPropertiesViewUiBinder.class);
interface UserPropertiesViewUiBinder extends UiBinder<Widget, ReportReviewView> {
}
@UiField Label id, date, statusText, reviewInfo;
@UiField InlineHyperlink informant, reference;
@UiField TextArea reportArea, reviewArea;
@UiField Button saveButton;
@UiField Button closeButton;
private AdministrationPresenter presenter;
private Report report;
public ReportReviewView(AdministrationPresenter presenter, Report report) {
initWidget(uiBinder.createAndBindUi(this));
this.presenter = presenter;
this.report = report;
init();
}
private void init() {
id.setText(String.valueOf(report.getId()));
date.setText(ReportAdministrationView.DTF.format(new Date(report.getDate())));
informant.setText(report.getInformantName() + " (" + report.getInformant() + ")");
informant.setTargetHistoryToken("./profiles/" + report.getInformant());
reference.setText(createReferenceString());
reference.setTargetHistoryToken(createReferenceTargetHistoryToken());
reportArea.setText(report.getReport());
if(report.isReviewed()){
reviewArea.setText(report.getReview());
reviewInfo.setText("Admin #" + report.getReviewedby() + " on " + ReportAdministrationView.DTF.format(new Date(report.getReviewedon())));
}
}
private String createReferenceTargetHistoryToken() {
if(report.getTypeName().equals("influenceanswer"))
return "./influence/" + report.getReference2();
else if(report.getTypeName().equals("user"))
return "./profiles/" + report.getReference();
else if(report.getTypeName().equals("content"))
return "./content/" + report.getReference(); //FIXME change suitable to corresponding history token format when implemented
else if(report.getTypeName().equals("comment"))
return "./content/" + report.getReference2(); //FIXME
else
return "./admin/report"; //fallback
}
private String createReferenceString() {
if(report.getTypeName().equals("influenceanswer"))
return "Influence " + report.getReference2();
else if(report.getTypeName().equals("user"))
return "Profil " + report.getReference();
else if(report.getTypeName().equals("content"))
return "Inhalt " + report.getReference();
else if(report.getTypeName().equals("comment"))
return "Kommentar " + report.getReference() + " bei Inhalt " + report.getReference2();
else
return String.valueOf(report.getReference()); //fallback
}
@UiHandler("saveButton")
void onSaveButtonClick(ClickEvent event) {
presenter.onSaveReportReviewClicked(report, reviewArea.getText());
}
@UiHandler("closeButton")
void onCloseButtonClick(ClickEvent event) {
presenter.hideDialog();
}
public void showUnsuccess() {
statusText.setText("Fehler beim Speichern!");
Timer timer = new Timer() {
@Override
public void run() {
statusText.setText("");
}
};
timer.schedule(2000);
}
}