org.ednovo.gooru.client.mvp.image.upload.ImageUploadView.java Source code

Java tutorial

Introduction

Here is the source code for org.ednovo.gooru.client.mvp.image.upload.ImageUploadView.java

Source

/*******************************************************************************
 * Copyright 2013 Ednovo d/b/a Gooru. All rights reserved.
 * 
 *  http://www.goorulearning.org/
 * 
 *  Permission is hereby granted, free of charge, to any person obtaining
 *  a copy of this software and associated documentation files (the
 *  "Software"), to deal in the Software without restriction, including
 *  without limitation the rights to use, copy, modify, merge, publish,
 *  distribute, sublicense, and/or sell copies of the Software, and to
 *  permit persons to whom the Software is furnished to do so, subject to
 *  the following conditions:
 * 
 *  The above copyright notice and this permission notice shall be
 *  included in all copies or substantial portions of the Software.
 * 
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 ******************************************************************************/
package org.ednovo.gooru.client.mvp.image.upload;

import org.ednovo.gooru.client.GooruCBundle;
import org.ednovo.gooru.client.gin.AppClientFactory;
import org.ednovo.gooru.client.mvp.search.event.SetHeaderZIndexEvent;
import org.ednovo.gooru.client.uc.AlertContentUc;
import org.ednovo.gooru.client.uc.AlertForImageUpload;
import org.ednovo.gooru.client.uc.AppPopUp;
import org.ednovo.gooru.client.uc.BlueButtonUc;
import org.ednovo.gooru.client.uc.BrowserAgent;
import org.ednovo.gooru.client.uc.ErrorLabelUc;
import org.ednovo.gooru.client.uc.GlassPanelWithLoadingUc;
import org.ednovo.gooru.shared.model.user.MediaUploadDo;
import org.ednovo.gooru.shared.util.MessageProperties;
import org.ednovo.gooru.shared.util.StringUtil;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Display;
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.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.regexp.shared.RegExp;
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.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormHandler;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormSubmitEvent;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.PopupViewWithUiHandlers;

/**
 * @author Search Team
 *
 */
public class ImageUploadView extends PopupViewWithUiHandlers<ImageUploadUiHandlers>
        implements IsImageUploadView, MessageProperties {

    private static ImageUploadViewUiBinder uiBinder = GWT.create(ImageUploadViewUiBinder.class);

    interface ImageUploadViewUiBinder extends UiBinder<Widget, ImageUploadView> {
    }

    private boolean isUserUnder13 = false;
    private boolean isUploadProfileWidget = false;
    private int selectedWidgetIndex = -1;
    private float aspectRatio = 1.34f;
    private boolean isEdit = false;
    public AppPopUp appPopUp;
    protected AppPopUp imageCropPopup;

    @UiField
    FileUpload fileUpload;

    @UiField
    Anchor imageUploadOnWebLbl, uploadGooruImages;

    @UiField
    Anchor imageUploadOnComputerLbl, readThisLbl;

    @UiField
    FlowPanel imageUploadOnUrlFloPanel, gooruProfileDefaultImagesContainer;
    @UiField
    Button okButtonOnUploadGooruImages;
    @UiField
    Label cancelButtonOnUploadGooruImages;

    @UiField
    FlowPanel imageUploadOnWebFloPanel;

    @UiField
    BlueButtonUc onWebCancelBtn;

    @UiField
    BlueButtonUc onSystemCancelBtn;

    @UiField
    TextBox imageWebUploadUrlTxtBox;

    @UiField
    BlueButtonUc uploadImageButtonOnWeb;

    @UiField
    FormPanel fileuploadForm;

    @UiField
    FlowPanel imagUploadFloPanel, uploadGooruImagesContainer;

    @UiField
    FlowPanel imageCropFloPanel;

    @UiField
    GlassPanelWithLoadingUc glassPanelWithLoadingUc;

    @UiField
    ErrorLabelUc urlValidation;
    @UiField
    HTMLPanel notWorkingPanel;

    @UiField
    Label chooseText, uploadFromComputer, uploadLimitText, notWorkingLblText, uploadFromWebText, imageURLLbl,
            typeImageurlText, infoUrlUploadText, chooseFromText;

    private static final String IMAGE_UPLOAD_URL = "/media?sessionToken={0}&uploadFileName={1}&resize=true&width=600&height=450";

    private static final String IMAGE_UPLOAD_URL_PATTERN = "(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\\.(?:jpg|gif|jpeg|png))(?:\\?([^#]*))?(?:#(.*))?";

    private static final String IMAGE_UPLOAD_FILE_PATTERN = "([^\\s]+([^?#]*\\.(?:jpg|gif|jpeg|png))$)";

    /**
     * See for more details  {@link PopupViewWithUiHandlers} for details.
     * 
     * @param eventBus instance of {@link EventBus}
     */
    @Inject
    public ImageUploadView(EventBus eventBus) {
        super(eventBus);
        GooruCBundle.INSTANCE.css().ensureInjected();
        appPopUp = new AppPopUp(GL1424);
        appPopUp.setContent(uiBinder.createAndBindUi(this));
        appPopUp.setStyleName(GooruCBundle.INSTANCE.css().imageUploadPopup());
        imageCropPopup = new AppPopUp(GL1424);
        imageCropPopup.setStyleName(GooruCBundle.INSTANCE.css().imageUploadPopup());
        chooseText.setText(GL1215 + GL_SPL_SEMICOLON);
        imageUploadOnWebLbl.setText(GL1216);
        imageUploadOnComputerLbl.setText(GL1217);
        uploadGooruImages.setText(GL1218);
        uploadFromComputer.setText(GL1219);
        uploadLimitText.setText(GL1220);
        notWorkingLblText.setText(GL1221 + " " + GL_SPL_QUESTION);
        readThisLbl.setText(GL1222 + GL_SPL_EXCLAMATION);
        onSystemCancelBtn.setText(GL0142);
        uploadFromWebText.setText(GL1223);
        imageURLLbl.setText(GL1224);
        uploadImageButtonOnWeb.setText(GL1225);
        typeImageurlText.setText(GL1226);
        infoUrlUploadText.setText(GL1227);
        onWebCancelBtn.setText(GL0142);
        chooseFromText.setText(GL1228 + GL_SPL_SEMICOLON);
        okButtonOnUploadGooruImages.setText(GL0190);
        cancelButtonOnUploadGooruImages.setText(GL0142);
        fileUpload.getElement().setAttribute("size", "25");
        fileUpload.getElement().setId("fileUpload");
        onWebCancelBtn.getElement().setId("btnCancel");
        onSystemCancelBtn.getElement().setId("btnCancel");
        fileUpload.getElement().setId("fileUpload");
        imageUploadOnWebLbl.getElement().setId("lnkOnWeb");
        imageUploadOnComputerLbl.getElement().setId("lnkOnComputer");
        uploadGooruImages.getElement().setId("lnkGooruImages");
        imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
        uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        uploadGooruImages.getElement().getStyle().setDisplay(Display.NONE);
        imageWebUploadUrlTxtBox.getElement().setId("tbImageWebUploadUrl");
        uploadImageButtonOnWeb.getElement().setId("btnUpload");
        urlValidation.setVisible(false);
        imageWebUploadUrlTxtBox.addFocusHandler(new OnTextFocus());
        urlValidation.setStyleName(GooruCBundle.INSTANCE.css().imageUrlError());
        handelFormEvent();
        appPopUp.setModal(true);
        notWorkingPanel.setVisible(false);
        readThisLbl.setHref(GL1265);
        //      Window.enableScrolling(false);
        //      AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, false));
        addClickEventToDefaultImages();
        fileuploadForm.addSubmitHandler(new FormPanel.SubmitHandler() {
            public void onSubmit(final SubmitEvent event) {
                String browesr = BrowserAgent.getWebBrowserClient();
                if (browesr.contains("ie")) {
                    Timer timer = new Timer() {
                        @Override
                        public void run() {
                            glasspanelLoadingImage(false);
                            fileuploadForm.reset();
                            event.cancel();
                            notWorkingPanel.setVisible(true);
                        }
                    };
                    timer.schedule(10000);
                }
                if (!"".equalsIgnoreCase(fileUpload.getFilename())) {
                    String size = getFileNameSize();

                    double sizeOfImage = Double.parseDouble(size);
                    if (sizeOfImage > 5) {
                        new AlertForImageUpload(GL0061, GL1229);
                        glasspanelLoadingImage(false);
                        fileuploadForm.reset();
                        event.cancel();
                        //      Window.enableScrolling(true);
                        //      AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));

                    }

                } else {
                    event.cancel(); // cancel the event
                    //   Window.enableScrolling(true);
                    //   AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
                }

            }
        });

    }

    @Override
    public Widget asWidget() {
        return appPopUp;
    }

    @Override
    public void reset() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUnload() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onLoad() {
        // TODO Auto-generated method stub

    }

    public void addClickEventToDefaultImages() {
        int widgetsCount = gooruProfileDefaultImagesContainer.getWidgetCount();
        for (int widgetIndex = 0; widgetsCount > widgetIndex; widgetIndex++) {
            final int selectedWidget = widgetIndex;
            GooruImagesView gooruImagesView = (GooruImagesView) gooruProfileDefaultImagesContainer
                    .getWidget(widgetIndex);
            gooruImagesView.addClickHandler(new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    highlightSelectedImage(selectedWidget);
                }
            });
        }
    }

    private void highlightSelectedImage(int widgetIndex) {
        GooruImagesView gooruImagesView = (GooruImagesView) gooruProfileDefaultImagesContainer
                .getWidget(widgetIndex);
        gooruImagesView.profileGooruDefaultImage.setStyleName(GooruCBundle.INSTANCE.css().profileImageActive());
        if (selectedWidgetIndex != -1) {
            GooruImagesView gooruImagesView1 = (GooruImagesView) gooruProfileDefaultImagesContainer
                    .getWidget(selectedWidgetIndex);
            gooruImagesView1.profileGooruDefaultImage
                    .setStyleName(GooruCBundle.INSTANCE.css().profileImageContainer());
        }
        this.selectedWidgetIndex = widgetIndex;
    }

    private void resetProfileImageSelected() {
        this.selectedWidgetIndex = -1;
        int widgetsCount = gooruProfileDefaultImagesContainer.getWidgetCount();
        for (int widgetIndex = 0; widgetsCount > widgetIndex; widgetIndex++) {
            GooruImagesView gooruImagesView = (GooruImagesView) gooruProfileDefaultImagesContainer
                    .getWidget(widgetIndex);
            gooruImagesView.profileGooruDefaultImage
                    .setStyleName(GooruCBundle.INSTANCE.css().profileImageContainer());
        }
    }

    private class OnTextFocus implements FocusHandler {
        @Override
        public void onFocus(FocusEvent event) {
            imageWebUploadUrlTxtBox.removeStyleName(GooruCBundle.INSTANCE.css().textboxUrlError());
            urlValidation.setVisible(false);
        }
    }

    public void showUploadTypeWidgets(boolean isUserUnder13) {
        this.isUserUnder13 = isUserUnder13;
        if (isUserUnder13) {
            uploadGooruImages.getElement().getStyle().setDisplay(Display.BLOCK);
            imageUploadOnComputerLbl.getElement().getStyle().setDisplay(Display.NONE);
            imageUploadOnWebLbl.getElement().getStyle().setDisplay(Display.NONE);
            uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
            imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            uploadGooruImagesContainer.getElement().getStyle().setDisplay(Display.BLOCK);
            imageUploadOnUrlFloPanel.getElement().getStyle().setDisplay(Display.NONE);
            imageUploadOnWebFloPanel.getElement().getStyle().setDisplay(Display.NONE);
        } else {
            uploadGooruImages.getElement().getStyle().setDisplay(Display.BLOCK);
        }
    }

    /**
     * Upload image from local machine to enable or disable tab.
     * @param clickEvent instance of {@link ClickEvent}
     */
    @UiHandler("imageUploadOnComputerLbl")
    public void imageUploadOnComputer(ClickEvent clickEvent) {
        imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
        uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        imageUploadOnUrlFloPanel.getElement().getStyle().setDisplay(Display.NONE);
        uploadGooruImagesContainer.getElement().getStyle().setDisplay(Display.NONE);
        imageUploadOnWebFloPanel.getElement().getStyle().setDisplay(Display.BLOCK);
    }

    /**
     * Upload image from web to enable or disable tab.
     * @param clickEvent instance of {@link ClickEvent}
     */
    @UiHandler("imageUploadOnWebLbl")
    public void imageUploadOnWeb(ClickEvent clickEvent) {
        if (isUserUnder13) {
            uploadGooruImages.getElement().getStyle().setDisplay(Display.BLOCK);
            imageUploadOnComputerLbl.getElement().getStyle().setDisplay(Display.NONE);
            imageUploadOnWebLbl.getElement().getStyle().setDisplay(Display.NONE);
            uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
            imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            uploadGooruImagesContainer.getElement().getStyle().setDisplay(Display.BLOCK);
            imageUploadOnUrlFloPanel.getElement().getStyle().setDisplay(Display.NONE);
            imageUploadOnWebFloPanel.getElement().getStyle().setDisplay(Display.NONE);
        } else {
            imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
            uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
            imageUploadOnUrlFloPanel.getElement().getStyle().setDisplay(Display.BLOCK);
            imageUploadOnWebFloPanel.getElement().getStyle().setDisplay(Display.NONE);
            uploadGooruImagesContainer.getElement().getStyle().setDisplay(Display.NONE);
        }
    }

    @UiHandler("uploadGooruImages")
    public void uploadImagesFromGooru(ClickEvent clickEvent) {
        uploadGooruImages.setStyleName(GooruCBundle.INSTANCE.css().uploadActive());
        imageUploadOnComputerLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        imageUploadOnWebLbl.setStyleName(GooruCBundle.INSTANCE.css().uploadClose());
        uploadGooruImagesContainer.getElement().getStyle().setDisplay(Display.BLOCK);
        imageUploadOnUrlFloPanel.getElement().getStyle().setDisplay(Display.NONE);
        imageUploadOnWebFloPanel.getElement().getStyle().setDisplay(Display.NONE);
    }

    /**
     * Hide {@link AppPopUp}
     * @param clickEvent instance of {@link ClickEvent}
     */
    @UiHandler("onSystemCancelBtn")
    public void onSystemCancelClick(ClickEvent clickEvent) {
        appPopUp.hide();
        resetImageUploadWidget();
        if (isEdit) {
            Window.enableScrolling(false);
        } else {
            Window.enableScrolling(true);
            AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
        }

    }

    @UiHandler("cancelButtonOnUploadGooruImages")
    public void cancelOnGooruImages(ClickEvent event) {
        appPopUp.hide();
        resetImageUploadWidget();
        if (isEdit) {
            Window.enableScrolling(false);
        } else {
            Window.enableScrolling(true);
            AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
        }
    }

    /**
     * Hide {@link AppPopUp}
     * @param clickEvent instance of {@link ClickEvent}
     */
    @UiHandler("onWebCancelBtn")
    public void onWebCancelClick(ClickEvent clickEvent) {
        appPopUp.hide();
        resetImageUploadWidget();
    }

    /**
     * @param clickEvent instance of {@link ClickEvent}
     */
    @UiHandler("uploadImageButtonOnWeb")
    public void uploadImageButtonOnWeb(ClickEvent clickEvent) {
        if (hasValidateData()) {
            glasspanelLoadingImage(true);
            getUiHandlers().imageWebUpload(imageWebUploadUrlTxtBox.getText());
        }
    }

    @UiHandler("okButtonOnUploadGooruImages")
    public void uploadGooruDefaultImage(ClickEvent clickEvent) {
        if (this.selectedWidgetIndex != -1) {
            glasspanelLoadingImage(true);
            GooruImagesView gooruImagesView = (GooruImagesView) gooruProfileDefaultImagesContainer
                    .getWidget(selectedWidgetIndex);
            String url = gooruImagesView.gooruDefaultImage.getUrl();
            getUiHandlers().uploadGooruDefaultImage(url);
            //getUiHandlers().uploadGooruDefaultImage("http://devrepo.goorulearning.org/qalive/f000/0237/5845/63daa896-aaa4-43f2-a6fb-c67e15514e00-280x215.png");
        }
    }

    /**
     * Validate web image url
     * @return true if upload image url is valid else false 
     */
    private boolean hasValidateData() {
        boolean isValid = true;
        String url = imageWebUploadUrlTxtBox.getText();
        try {
            RegExp reg = RegExp.compile(IMAGE_UPLOAD_URL_PATTERN, "gi");

            if (url == null || (url != null && url.isEmpty())) {
                urlValidation.setText(GL0080);
                imageWebUploadUrlTxtBox.addStyleName(GooruCBundle.INSTANCE.css().textboxUrlError());
                urlValidation.setVisible(true);
                return isValid = false;
            }
            if (url != null && !reg.test(url)) {
                new AlertContentUc(GL0060, GL0059);
                return isValid = false;
            }
        } catch (Exception e) {

        }
        return isValid;
    }

    /**
     * validate image which uploaded from local machine
     * @return true if upload image file is valid else false 
     */
    public boolean hasValidateImage() {
        boolean isValid = true;
        String uploadImageName = fileUpload.getFilename();
        try {
            RegExp reg = RegExp.compile(IMAGE_UPLOAD_FILE_PATTERN, "gi");
            if (uploadImageName != null && !reg.test(uploadImageName)) {
                new AlertContentUc(GL0060, GL0059);
                return isValid = false;
            }
        } catch (Exception e) {

        }
        return isValid;
    }

    @Override
    public void setImageUpload(final MediaUploadDo mediaUploadDo) {
        imageCropPopup.clear();
        imagUploadFloPanel.setVisible(false);
        appPopUp.hide();
        if (mediaUploadDo != null && mediaUploadDo.getStatusCode() == 200) {
            ImageCropView imageCropView = new ImageCropView() {
                @Override
                public void onCancelCrop() {
                    resetImageUploadWidget();
                    appPopUp.hide();
                    imageCropPopup.hide();
                    //               AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
                }

                @Override
                public void onBackToUpload() {
                    resetImageUploadWidget();
                    imageCropPopup.clear();
                    imageCropPopup.hide();
                    appPopUp.show();
                    //               AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
                }

                @Override
                public void onCrop() {
                    glasspanelLoadingImage(true);
                    getUiHandlers().cropImage(mediaUploadDo.getName(), getSelectionHeight(), getSelectionWidth(),
                            getSelectionXCoordinate(), getSelectionYCoordinate(), mediaUploadDo.getUrl());
                }

                @Override
                public void onLoad() {
                    super.onLoad();
                    imageCropPopup.center();
                }
            };
            imageCropView.cropImage(mediaUploadDo.getUrl(), aspectRatio);
            imageCropView.addCanvasLoadHandler(new LoadHandler() {
                @Override
                public void onLoad(LoadEvent event) {

                    imageCropPopup.center();
                }
            });
            //imageCropFloPanel.add(imageCropView);
            //         AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, false));
            imageCropPopup.clear();
            imageCropPopup.add(imageCropView);
            imageCropPopup.show();
            //         Window.enableScrolling(true);
        } else {
            appPopUp.hide();
            imageCropPopup.hide();
            resetImageUploadWidget();
            new AlertContentUc(GL1089,
                    mediaUploadDo != null && mediaUploadDo.getImageValidationMsg() != null
                            ? mediaUploadDo.getImageValidationMsg()
                            : GL1230);
        }
    }

    @Override
    public void handelFormEvent() {
        fileUpload.addChangeHandler(new ChangeHandler() {
            @Override
            public void onChange(ChangeEvent event) {

                if (hasValidateImage()) {
                    glasspanelLoadingImage(true);
                    fileuploadForm.setAction(AppClientFactory.getLoggedInUser().getSettings().getRestEndPoint()
                            + StringUtil.generateMessage(IMAGE_UPLOAD_URL,
                                    AppClientFactory.getLoggedInUser().getToken(), fileUpload.getFilename()));
                    fileuploadForm.submit();
                } else {
                    new AlertContentUc(GL0060, GL0059);
                }
            }
        });

        fileuploadForm.addFormHandler(new FormHandler() {
            public void onSubmitComplete(FormSubmitCompleteEvent event) {
                glasspanelLoadingImage(false);
                getUiHandlers().imageFileUpload(event.getResults());
            }

            @Override
            public void onSubmit(FormSubmitEvent event) {

            }
        });

    }

    @Override
    public void closeImageUploadWidget() {
        appPopUp.hide();
    }

    @Override
    public void glasspanelLoadingImage(boolean state) {
        glassPanelWithLoadingUc.setVisible(state);
    }

    @Override
    public void resetImageUploadWidget() {
        imageCropFloPanel.clear();
        imagUploadFloPanel.setVisible(true);
        imageUploadOnWeb(null);
        imageWebUploadUrlTxtBox.setText("");
        fileUpload.getElement().getPropertyString("");
        fileUpload.getElement().setPropertyString("value", "");
        glasspanelLoadingImage(false);
        resetProfileImageSelected();
        imageCropPopup.clear();
        imageCropPopup.hide();
        notWorkingPanel.setVisible(false);
        if (isEdit) {

        } else {
            AppClientFactory.fireEvent(new SetHeaderZIndexEvent(0, true));
        }
    }

    /**
     * To get the upload file size from client end
     * @return it will return the upload file size in mb
     */

    public final native String getFileNameSize() /*-{
                                                     
                                                 var fileSize;
                                                 if ($wnd.$.browser.msie) 
                                                 {
                                                     
                                                 var objFSO = new ActiveXObject("Scripting.FileSystemObject");
                                                 var sPath =   $wnd.$("#fileUpload")[0].value;
                                                 var objFile = objFSO.getFile(sPath);
                                                 var iSize = objFile.size;
                                                 fileSize = iSize/ 1048576;
                                                     
                                                 }
                                                     
                                                     
                                                     
                                                 else 
                                                 {
                                                     
                                                 fileSize =  $wnd.$("#fileUpload")[0].files[0].size ;//size in kb
                                                     
                                                 fileSize = fileSize / 1048576; //size in mb 
                                                     
                                                 }
                                                     
                                                     
                                                     
                                                     
                                                 return fileSize.toString();
                                                     
                                                     
                                                     
                                                 }-*/;

    public void setAspectRatio(float aspectRatio) {
        this.aspectRatio = aspectRatio;
    }

    @Override
    public void isFromEditQuestion(boolean isEdit) {
        this.isEdit = isEdit;
    }

}