Example usage for com.vaadin.shared.ui.ui Transport LONG_POLLING

List of usage examples for com.vaadin.shared.ui.ui Transport LONG_POLLING

Introduction

In this page you can find the example usage for com.vaadin.shared.ui.ui Transport LONG_POLLING.

Prototype

Transport LONG_POLLING

To view the source code for com.vaadin.shared.ui.ui Transport LONG_POLLING.

Click Source Link

Document

HTTP long polling.

Usage

From source file:com.haulmont.cuba.web.sys.CubaUIProvider.java

License:Apache License

@Override
public Transport getPushTransport(UICreateEvent event) {
    WebConfig webConfig = configuration.getConfig(WebConfig.class);

    if (webConfig.getUsePushLongPolling()) {
        return Transport.LONG_POLLING;
    }/*from   w  w  w .ja  v a2 s  .c  o  m*/

    return super.getPushTransport(event);
}

From source file:fr.univlorraine.mondossierweb.MainUI.java

License:Apache License

/**
 * @see com.vaadin.ui.UI#init(com.vaadin.server.VaadinRequest)
 *//*from w  ww. j  a  v a  2 s  .  c  o  m*/
@Override
protected void init(VaadinRequest request) {

    LOG.debug("init(); mainUI");

    if (PropertyUtils.isPushEnabled() && !PropertyUtils.isWebSocketPushEnabled()) {
        getPushConfiguration().setTransport(Transport.LONG_POLLING);
    }

    //Gestion des erreurs
    VaadinSession.getCurrent().setErrorHandler(e -> {
        Throwable cause = e.getThrowable();
        while (cause instanceof Throwable) {
            /* Gre les accs non autoriss */
            if (cause instanceof AccessDeniedException) {
                Notification.show(cause.getMessage(), Type.ERROR_MESSAGE);
                displayViewFullScreen(AccesRefuseView.NAME);
                return;
            }
            if (cause != null && cause.getClass() != null) {
                String simpleName = cause.getClass().getSimpleName();
                if (PropertyUtils.getListeErreursAIgnorer().contains(simpleName)) {
                    Notification.show(cause.getMessage(), Type.ERROR_MESSAGE);
                    displayViewFullScreen(ErreurView.NAME);
                    return;
                }
            }
            cause = cause.getCause();
        }
        // Traite les autres erreurs normalement 
        LOG.error(e.getThrowable().toString(), e.getThrowable());
        // Affiche de la vue d'erreur
        displayViewFullScreen(ErreurView.NAME);
        //DefaultErrorHandler.doDefault(e);
    });

    // Affiche le nom de l'application dans l'onglet du navigateur 
    getPage().setTitle(environment.getRequiredProperty("app.name"));

    //Gestion de l'acces a un dossier prcis via url deepLinking (ne peut pas tre fait dans navigator 
    //car le fragment ne correspond pas  une vue existante)
    getPage().addUriFragmentChangedListener(new UriFragmentChangedListener() {
        public void uriFragmentChanged(UriFragmentChangedEvent source) {

            //Si l'application est en maintenance on bloque l'accs
            if (!applicationActive() && !source.getUriFragment().contains(AccesBloqueView.NAME)
                    && !(source.getUriFragment().contains(AdminView.NAME) && userController.isAdmin())) {

                displayViewFullScreen(AccesBloqueView.NAME);
            } else {

                if (source.getUriFragment().contains("accesDossierEtudiant") && userController.isEnseignant()) {
                    rechercheController.accessToDossierEtudiantDeepLinking(source.getUriFragment());

                } /*else{
                    if(source.getUriFragment().contains("accesNotesEtudiant") 
                  && userController.isEnseignant()){
                       rechercheController.accessToDossierEtudiantDeepLinking(source.getUriFragment());
                       navigator.navigateTo(NotesView.NAME);
                    }
                  }*/

            }
        }
    });

    //Paramtrage du comportement en cas de perte de connexion
    configReconnectDialog();

    /* Construit le gestionnaire de vues utilis par la barre d'adresse et pour naviguer dans le dossier d'un tudiant */
    navigator.addProvider(viewProvider);
    navigator.setErrorProvider(new ViewProvider() {
        @Override
        public String getViewName(final String viewAndParameters) {
            return ErreurView.NAME;
        }

        @Override
        public View getView(final String viewName) {
            return viewProvider.getView(ErreurView.NAME);
        }
    });

    navigator.addViewChangeListener(new ViewChangeListener() {
        private static final long serialVersionUID = 7905379446201794289L;

        private static final String SELECTED_ITEM = "selected";

        @Override
        public boolean beforeViewChange(ViewChangeEvent event) {

            //Avant de se rendre sur une vue, on supprime le style "selected" des objets du menu
            viewButtons.values().forEach(button -> button.removeStyleName(SELECTED_ITEM));

            //Si on tente d'accder  la vue admin et que l'utilisateur est admin
            if (event.getViewName().equals(AdminView.NAME) && userController.userCanAccessAdminView()) {
                //Afficher la vue admin
                setContent(adminView);
                return true;
            }

            //Si l'application est en maintenance on bloque l'accs
            if (!applicationActive() && !event.getViewName().equals(AccesBloqueView.NAME)) {
                displayViewFullScreen(AccesBloqueView.NAME);
                return false;
            }

            //On bloque l'accs aux vues mobile
            if (!Utils.isViewDesktop(event.getViewName())) {
                return false;
            }
            //On bloque l'accs aux vues enseignants
            if (Utils.isViewEnseignant(event.getViewName())) {
                //Si utilisateur n'est pas enseignant
                if (!userController.isEnseignant()) {
                    //acces bloque
                    return false;
                } else {
                    //Affichage de la vue enseignant demande
                    if (event.getViewName().equals(FavorisView.NAME)) {
                        navigateToFavoris();
                        return true;
                    }
                    if (event.getViewName().equals(ListeInscritsView.NAME)) {
                        navigateToListeInscrits(null);
                        return true;
                    }
                    if (event.getViewName().equals(RechercheRapideView.NAME)) {
                        navigateToRechercheRapide();
                        return true;
                    }
                    if (event.getViewName().equals(RechercheArborescenteView.NAME)) {
                        navigateToRechercheArborescente(null);
                        return true;
                    }

                    return false; //la vue enseignant demande n'est pas gr (ex :vue mobile appele depuis la version desktop)
                }
            }

            return true;
        }

        @Override
        public void afterViewChange(ViewChangeEvent event) {

            //On rcupre l'lment du menu concern par la vue  afficher
            Button button = viewButtons.get(event.getViewName());

            if (button instanceof Button) {
                //on applique le style "selected" sur l'objet du menu concern par la vue affiche
                button.addStyleName(SELECTED_ITEM);
            }
        }
    });

    //init du tracker
    initAnalyticsTracker();

    //mainVerticalLayout est le contenu principal de la page
    setContent(mainVerticalLayout);

    //Si utilisateur enseignant ou tudiant
    if (userController.isEnseignant() || userController.isEtudiant()) {

        if (!applicationActive()) {
            displayViewFullScreen(AccesBloqueView.NAME);
        } else {
            //On rcupre l'IP du client
            GenericUI.getCurrent().getIpClient();
            /* Parametre le layoutDossierEtudiant */
            menuLayout.setPrimaryStyleName(ValoTheme.MENU_ROOT);
            //Le contentLayout est scrollable si besoin
            contentLayout.addStyleName("v-scrollable");
            //contentLayout prend toute la place possible
            contentLayout.setSizeFull();
            //le contentLayout prend toute la place disponible dans le layoutDossierEtudiant
            layoutDossierEtudiant.setExpandRatio(contentLayout, 1);
            //layoutDossierEtudiant prend toute la place possible
            layoutDossierEtudiant.setSizeFull();

            //Si user enseignant
            if (userController.isEnseignant()) {
                //On consultera les notes en vue enseignant
                vueEnseignantNotesEtResultats = true;

                //Construit le menu horizontal pour les enseignants
                tabSheetGlobal.setSizeFull();
                tabSheetGlobal.addStyleName(ValoTheme.TABSHEET_FRAMED);

                rangTabRecherche = 0;
                rangTabDossierEtudiant = 1;

                //ajout de l'onglet principal 'recherche'
                layoutOngletRecherche = new VerticalLayout();
                ajoutOngletRecherche();
                layoutOngletRecherche.setSizeFull();
                tabSheetGlobal.addTab(layoutOngletRecherche,
                        applicationContext.getMessage("mainUI.recherche.title", null, getLocale()),
                        FontAwesome.SEARCH);

                //ajout de l'onglet principal 'assistance'
                tabSheetGlobal.addTab(assistanceView,
                        applicationContext.getMessage(assistanceView.NAME + ".title", null, getLocale()),
                        FontAwesome.SUPPORT);

                //ajout de l'onglet dossier tudiant
                addTabDossierEtudiant();

                //Ce tabSheet sera align  droite
                tabSheetGlobal.addStyleName("right-aligned-tabs");

                //Le menu horizontal pour les enseignants est dfinit comme tant le contenu de la page
                mainVerticalLayout.addComponent(tabSheetGlobal);
                mainVerticalLayout.setSizeFull();
                mainVerticalLayout.setExpandRatio(tabSheetGlobal, 1);
            } else {
                //On consultera les notes en vue etudiant
                vueEnseignantNotesEtResultats = false;

                //User Etudiant
                //Le Dossier est dfinit comme tant le contenu de la page
                mainVerticalLayout.addComponent(layoutDossierEtudiant);
                mainVerticalLayout.setSizeFull();
                mainVerticalLayout.setExpandRatio(layoutDossierEtudiant, 1);

                //On renseigne l'tudiant dont on consulte le dossier
                //Rcupration du cod_etu
                etudiant = new Etudiant(
                        daoCodeLoginEtudiant.getCodEtuFromLogin(userController.getCurrentUserName()));
                LOG.debug("MainUI etudiant : " + MainUI.getCurrent().getEtudiant().getCod_etu());
                //Rcupration de l'tat-civil (et les adresses)
                etudiantController.recupererEtatCivil();
                //On construit le menu affich  l'tudiant
                buildMainMenuEtudiant();
            }

            /* Enregistre l'UI pour la rception de notifications */
            uiController.registerUI(this);

            boolean navigationComplete = false;
            String fragment = Page.getCurrent().getUriFragment();
            if (fragment != null && !fragment.isEmpty()) {
                //Cas de l'appel initial de l'application via l'url vers la vue admin (sinon le cas est grer dans le listener du navigator
                if (fragment.contains("adminView") && userController.userCanAccessAdminView()) {
                    //Afficher la vue admin
                    navigator.navigateTo(AdminView.NAME);
                    navigationComplete = true;
                }
                if (fragment.contains("accesDossierEtudiant") && userController.isEnseignant()) {
                    rechercheController.accessToDossierEtudiantDeepLinking(fragment);
                    navigationComplete = true;
                }
                /*if(fragment.contains("accesNotesEtudiant") && userController.isEnseignant()){
                   rechercheController.accessToDossierEtudiantDeepLinking(fragment);
                   navigator.navigateTo(NotesView.NAME);
                   navigationComplete=true;
                }*/
            }

            if (!navigationComplete) {
                //PROBLEME DU F5 : on passe ici (init()) que quand on reinitialise l'UI ou en cas d'erreur. 
                //On ne peut donc pas rediriger vers des vues qui utilisent des variables non initialises (ex : Main.getCurrent.getEtudiant)
                if (!applicationActive()) {
                    displayViewFullScreen(AccesBloqueView.NAME);
                } else {
                    //Si utilisateur enseignant
                    if (userController.isEnseignant()) {
                        //Rcupration des favoris pour l'utilisateur
                        List<Favoris> lfav = favorisController.getFavoris();
                        if (lfav != null && lfav.size() > 0) {
                            //On affiche la vue des favoris
                            navigator.navigateTo(FavorisView.NAME);
                        } else {
                            //On affiche la vue de recherche rapide
                            navigator.navigateTo(RechercheRapideView.NAME);
                        }
                        //Affichage du message d'intro si besoin
                        afficherMessageIntroEnseignants(false, true);
                    } else {
                        //Si utilisateur tudiant
                        if (userController.isEtudiant()) {
                            //On affiche la vue de l'tat-civil
                            navigator.navigateTo(EtatCivilView.NAME);
                            //Affichage du message d'intro si besoin
                            afficherMessageIntroEtudiants();
                        } else {
                            //On affiche la vue d'erreur
                            displayViewFullScreen(ErreurView.NAME);
                        }
                    }
                }
            }
        }
    } else {
        //Si utilisateur n'est ni enseignant, ni tudiant
        //On affiche la vue accs refus
        displayViewFullScreen(AccesRefuseView.NAME);
    }
}