package kornell.gui.client.presentation.terms.generic; import com.github.gwtbootstrap.client.ui.Image; import com.github.gwtbootstrap.client.ui.Paragraph; import com.github.gwtbootstrap.client.ui.constants.IconType; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.place.shared.PlaceChangeEvent; import com.google.gwt.place.shared.PlaceController; 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.Widget; import com.google.web.bindery.event.shared.EventBus; import kornell.api.client.Callback; import kornell.api.client.KornellSession; import kornell.core.to.UserInfoTO; import kornell.gui.client.ClientFactory; import kornell.gui.client.KornellConstants; import kornell.gui.client.event.LogoutEvent; import kornell.gui.client.presentation.profile.ProfilePlace; import kornell.gui.client.presentation.terms.TermsPlace; import kornell.gui.client.presentation.terms.TermsView; public class GenericTermsView extends Composite implements TermsView { interface MyUiBinder extends UiBinder<Widget, GenericTermsView> { } private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); private static KornellConstants constants = GWT.create(KornellConstants.class); @UiField Paragraph titleUser; @UiField Paragraph txtTerms; @UiField Button btnAgree; @UiField Button btnDontAgree; @UiField Image institutionLogo; private ClientFactory clientFactory; private KornellSession session; private PlaceController placeCtrl; private EventBus bus; public GenericTermsView(ClientFactory clientFactory) { this.bus = clientFactory.getEventBus(); this.session = clientFactory.getKornellSession(); this.placeCtrl = clientFactory.getPlaceController(); this.clientFactory = clientFactory; initWidget(uiBinder.createAndBindUi(this)); initData(); bus.addHandler(PlaceChangeEvent.TYPE, new PlaceChangeEvent.Handler() { @Override public void onPlaceChange(PlaceChangeEvent event) { if(event.getNewPlace() instanceof TermsPlace){ initData(); } }}); btnAgree.setText(constants.agreeTerms().toUpperCase()); btnDontAgree.setText(constants.refuseTerms().toUpperCase()); } private void initData() { if(session.getCurrentUser().getPerson().getTermsAcceptedOn() == null) paint(); else goStudy(); } private void paint() { clientFactory.getViewFactory().getMenuBarView().initPlaceBar(IconType.LEGAL, constants.termsTitle(), constants.termsDescription()); titleUser.setText(session.getCurrentUser().getPerson().getFullName()); if (session.getInstitution() != null) { txtTerms.getElement().setInnerHTML(session.getInstitution().getTerms()); String skin = session.getInstitution().getSkin(); boolean isLightSkin = skin == null || !skin.contains("_light"); String barLogoFileName = "/logo300x80" + (isLightSkin ? "_light" : "") + ".png?1"; institutionLogo.setUrl(session.getAssetsURL() + barLogoFileName); } } @UiHandler("btnAgree") void handleClickAll(ClickEvent e) { session.user().acceptTerms( new Callback<UserInfoTO>() { @Override public void ok(UserInfoTO userInfo) { session.setCurrentUser(userInfo); goStudy(); } }); } @UiHandler("btnDontAgree") void handleClickInProgress(ClickEvent e) { bus.fireEvent(new LogoutEvent()); } @Override public void setPresenter(Presenter presenter) { } private void goStudy() { if(session.getInstitution().isDemandsPersonContactDetails()){ placeCtrl.goTo(new ProfilePlace(session.getCurrentUser().getPerson().getUUID(), true)); } else { placeCtrl.goTo(clientFactory.getDefaultPlace()); } } }