package kornell.gui.client.presentation.admin.courseversion.courseversion.wizard.edit; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.github.gwtbootstrap.client.ui.FileUpload; import com.github.gwtbootstrap.client.ui.Form; import com.github.gwtbootstrap.client.ui.Icon; import com.github.gwtbootstrap.client.ui.ListBox; import com.github.gwtbootstrap.client.ui.TextArea; import com.github.gwtbootstrap.client.ui.TextBox; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.google.gwt.core.client.GWT; import com.google.gwt.dev.util.Name; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; 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.Timer; import com.google.gwt.user.client.Window; 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.ScrollPanel; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.autobean.shared.AutoBeanCodex; import com.google.web.bindery.autobean.shared.AutoBeanUtils; import com.google.web.bindery.event.shared.EventBus; import kornell.api.client.Callback; import kornell.api.client.KornellSession; import kornell.core.entity.ContentSpec; import kornell.core.entity.CourseVersion; import kornell.core.entity.Entity; import kornell.core.entity.InstitutionType; import kornell.gui.client.event.NavigationAuthorizationEvent; import kornell.gui.client.presentation.admin.courseversion.courseversion.AdminCourseVersionContentView; import kornell.gui.client.presentation.admin.courseversion.courseversion.AdminCourseVersionContentView.Presenter; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.Wizard; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardElement; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardSlide; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardSlideItem; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardSlideItemImage; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardSlideItemType; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardSlideItemVideoLink; import kornell.gui.client.presentation.admin.courseversion.courseversion.autobean.wizard.WizardTopic; import kornell.gui.client.presentation.admin.courseversion.courseversion.wizard.WizardUtils; import kornell.gui.client.util.forms.FormHelper; import kornell.gui.client.util.forms.formfield.KornellFormFieldWrapper; import kornell.gui.client.util.forms.formfield.ListBoxFormField; import kornell.gui.client.util.view.KornellNotification; import kornell.gui.client.util.view.LoadingPopup; public class WizardSlideItemImageView extends Composite implements IWizardView { interface MyUiBinder extends UiBinder<Widget, WizardSlideItemImageView> { } private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); boolean isCurrentUser, showContactDetails, isRegisteredWithCPF; private FormHelper formHelper = GWT.create(FormHelper.class); private String urlLabel; private KornellFormFieldWrapper url; private List<KornellFormFieldWrapper> fields; @UiField FlowPanel slideItemWrapper; @UiField FlowPanel slideItemFields; private String changedString = "(*) "; private WizardSlideItemView wizardSlideItemView; private WizardSlideItem wizardSlideItem; private WizardSlideItemImage wizardSlideItemImage; private KeyUpHandler refreshFormKeyUpHandler; private Presenter presenter; public WizardSlideItemImageView(WizardSlideItem wizardSlideItem, WizardSlideItemView wizardSlideItemView, Presenter presenter) { this.presenter = presenter; this.wizardSlideItem = wizardSlideItem; this.wizardSlideItemView = wizardSlideItemView; String extra = wizardSlideItem.getExtra(); extra = extra == null ? "{}" : extra; this.wizardSlideItemImage = AutoBeanCodex.decode(WizardUtils.WIZARD_FACTORY, WizardSlideItemImage.class, extra).as(); initWidget(uiBinder.createAndBindUi(this)); init(); } public void init() { fields = new ArrayList<KornellFormFieldWrapper>(); slideItemFields.clear(); refreshFormKeyUpHandler = new KeyUpHandler() { @Override public void onKeyUp(KeyUpEvent event) { wizardSlideItemView.refreshForm(); } }; urlLabel = "URL da imagem"; url = new KornellFormFieldWrapper(urlLabel, formHelper.createTextBoxFormField(wizardSlideItemImage.getURL()), true); ((TextBox)url.getFieldWidget()).addKeyUpHandler(refreshFormKeyUpHandler); fields.add(url); slideItemFields.add(url); } @Override public void resetFormToOriginalValues(){ ((TextBox)url.getFieldWidget()).setText(wizardSlideItemImage.getURL()); presenter.valueChanged(wizardSlideItem, false); refreshForm(); } @Override public boolean refreshForm(){ boolean valueHasChanged = refreshFormElementLabel(url, urlLabel, wizardSlideItemImage.getURL()); presenter.valueChanged(wizardSlideItem, valueHasChanged); validateFields(); return valueHasChanged; } private boolean refreshFormElementLabel(KornellFormFieldWrapper kornellFormFieldWrapper, String label, String originalValue){ boolean valueHasChanged = !kornellFormFieldWrapper.getFieldPersistText().equals(originalValue); kornellFormFieldWrapper.setFieldLabelText((valueHasChanged ? changedString : "") + label); return valueHasChanged; } @Override public boolean validateFields() { formHelper.clearErrors(fields); if (!formHelper.isLengthValid(url.getFieldPersistText(), 2, 100)) { url.setError("Insira a URL"); } return !formHelper.checkErrors(fields); } @Override public void updateWizard() { wizardSlideItemImage.setURL(url.getFieldPersistText()); wizardSlideItem.setExtra(AutoBeanCodex.encode(AutoBeanUtils.getAutoBean(wizardSlideItemImage)).getPayload().toString()); presenter.valueChanged(wizardSlideItemImage, false); refreshForm(); } public WizardSlideItem getWizardSlideItem() { return wizardSlideItem; } public String getUrl() { return url.getFieldPersistText(); } }