package kornell.gui.client.presentation.admin.institution.generic;
import java.util.ArrayList;
import java.util.List;
import com.github.gwtbootstrap.client.ui.Form;
import com.github.gwtbootstrap.client.ui.ListBox;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
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.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import kornell.api.client.Callback;
import kornell.api.client.KornellSession;
import kornell.core.entity.Institution;
import kornell.core.to.InstitutionHostNamesTO;
import kornell.core.to.TOFactory;
import kornell.gui.client.util.forms.formfield.SimpleMultipleSelect;
import kornell.gui.client.util.view.KornellNotification;
import kornell.gui.client.util.view.LoadingPopup;
public class GenericInstitutionHostnamesView extends Composite {
interface MyUiBinder extends UiBinder<Widget, GenericInstitutionHostnamesView> {
}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
public static final TOFactory toFactory = GWT.create(TOFactory.class);
private KornellSession session;
boolean isCurrentUser, showContactDetails, isRegisteredWithCPF;
SimpleMultipleSelect simpleMultipleSelect;
@UiField
Form form;
@UiField
FlowPanel adminsFields;
@UiField
Button btnOK;
@UiField
Button btnCancel;
private Institution institution;
public GenericInstitutionHostnamesView(final KornellSession session,
kornell.gui.client.presentation.admin.institution.AdminInstitutionView.Presenter presenter, Institution institution) {
this.session = session;
this.institution = institution;
initWidget(uiBinder.createAndBindUi(this));
// i18n
btnOK.setText("Salvar Alterações");
btnCancel.setText("Cancelar Alterações");
initData();
}
public void initData() {
adminsFields.clear();
FlowPanel fieldPanelWrapper = new FlowPanel();
fieldPanelWrapper.addStyleName("fieldPanelWrapper");
FlowPanel labelPanel = new FlowPanel();
labelPanel.addStyleName("labelPanel");
Label lblLabel = new Label("Domínios da Instituição");
lblLabel.addStyleName("lblLabel");
labelPanel.add(lblLabel);
fieldPanelWrapper.add(labelPanel);
LoadingPopup.show();
session.institution(institution.getUUID()).getHostnames(new Callback<InstitutionHostNamesTO>() {
@Override
public void ok(InstitutionHostNamesTO to) {
for (String institutionHostName : to.getInstitutionHostNames()) {
simpleMultipleSelect.addItem(institutionHostName, institutionHostName);
}
LoadingPopup.hide();
}
});
simpleMultipleSelect = new SimpleMultipleSelect();
fieldPanelWrapper.add(simpleMultipleSelect.asWidget());
adminsFields.add(fieldPanelWrapper);
}
@UiHandler("btnOK")
void doOK(ClickEvent e) {
if(session.isInstitutionAdmin()){
InstitutionHostNamesTO institutionHostNamesTO = toFactory.newInstitutionHostNamesTO().as();
List<String> institutionHostNames = new ArrayList<String>();
ListBox multipleSelect = simpleMultipleSelect.getMultipleSelect();
for (int i = 0; i < multipleSelect.getItemCount(); i++) {
institutionHostNames.add(multipleSelect.getValue(i));
}
institutionHostNamesTO.setInstitutionHostNames(institutionHostNames);
session.institution(institution.getUUID()).updateHostnames(institutionHostNamesTO, new Callback<InstitutionHostNamesTO>() {
@Override
public void ok(InstitutionHostNamesTO to) {
KornellNotification.show("Os domínios da instituição foram atualizados com sucesso.", AlertType.SUCCESS);
}
});
}
}
@UiHandler("btnCancel")
void doCancel(ClickEvent e) {
initData();
}
}