Example usage for com.vaadin.server VaadinSession getCurrent

List of usage examples for com.vaadin.server VaadinSession getCurrent

Introduction

In this page you can find the example usage for com.vaadin.server VaadinSession getCurrent.

Prototype

public static VaadinSession getCurrent() 

Source Link

Document

Gets the currently used session.

Usage

From source file:edu.kit.dama.ui.admin.utils.UIHelper.java

License:Apache License

public static UserData getSessionUser() {
    String userId = (String) VaadinSession.getCurrent().getAttribute("userId");
    UserData result = null;/*from www . j  a v a 2  s . com*/
    if (userId != null) {
        IMetaDataManager mdm = MetaDataManagement.getMetaDataManagement().getMetaDataManager();
        mdm.setAuthorizationContext(AuthorizationContext.factorySystemContext());
        try {
            result = mdm.findSingleResult("SELECT u FROM UserData u WHERE u.distinguishedName=?1",
                    new Object[] { userId }, UserData.class);
        } catch (UnauthorizedAccessAttemptException ex) {
            //no user found
        } finally {
            mdm.close();
        }
    }

    return (result == null) ? UserData.WORLD_USER : result;
}

From source file:edu.kit.dama.ui.admin.utils.UIHelper.java

License:Apache License

public static GroupId getSessionGroupId() {
    String userId = (String) VaadinSession.getCurrent().getAttribute("userId");
    String groupId = (String) VaadinSession.getCurrent().getAttribute("groupId");
    //set userId to WORLD if no user is logged in
    userId = (userId != null) ? userId : Constants.WORLD_USER_ID;
    //set groupId to WORLD if no user is logged in, otherwise set it to USERS by default or to the actual value if one is set
    groupId = (groupId != null) ? groupId
            : (Constants.WORLD_USER_ID.equals(userId) ? Constants.WORLD_GROUP_ID : Constants.USERS_GROUP_ID);
    return new GroupId(groupId);
}

From source file:edu.kit.dama.ui.admin.utils.UIHelper.java

License:Apache License

public static IAuthorizationContext getSessionContext(GroupId groupId) {
    String userId = (String) VaadinSession.getCurrent().getAttribute("userId");
    //set userId to WORLD if no user is logged in
    userId = (userId != null) ? userId : Constants.WORLD_USER_ID;

    try {/*from www  .  jav a  2  s  . co  m*/
        return AuthorizationUtil.getAuthorizationContext(new UserId(userId), groupId);
    } catch (AuthorizationException ex) {
        //failed, return world context
        return new AuthorizationContext(new UserId(Constants.WORLD_USER_ID),
                new GroupId(Constants.WORLD_GROUP_ID), Role.GUEST);
    }
}

From source file:es.mdef.clientmanager.ui.GestionClientesUI.java

License:Apache License

@Override
protected void init(VaadinRequest vaadinRequest) {
    VaadinSession.getCurrent().setConverterFactory(new ConverterFactory());
    setContent(root);// w  w w. j a  v a2  s.com
    root.setSizeFull();
    root.addMenu(buildMenu());
    buildNavigator();
}

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

License:Apache License

/**
 * @see com.vaadin.ui.UI#init(com.vaadin.server.VaadinRequest)
 *///from w  w w.  ja va2s .  c  om
@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);
    }
}

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

License:Apache License

@Override
protected void init(VaadinRequest request) {

    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);
                afficherMessageAccesRefuse();
                return;
            }// www .ja  v  a  2 s .  c o m
            if (cause != null && cause.getClass() != null) {
                String simpleName = cause.getClass().getSimpleName();
                if (PropertyUtils.getListeErreursAIgnorer().contains(simpleName)) {
                    Notification.show(cause.getMessage(), Type.ERROR_MESSAGE);
                    navigator.navigateTo(ErreurView.NAME);
                    return;
                }
            }
            cause = cause.getCause();
        }
        /* Traite les autres erreurs normalement */
        LOG.error(e.getThrowable().toString(), e.getThrowable());
        // Affiche de la vue d'erreur
        navigator.navigateTo(ErreurView.NAME);
    });

    //Le contenu principal n'est pas scrollable. Par contre les lment  l'intrieur pourront l'tre
    setStyleName("v-noscrollableelement");

    //Le contentLayout prend toute la place disponible
    contentLayout.setSizeFull();

    /* 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) {

            //On bloque l'accs aux vues desktop
            /*   if(!Utils.isViewMobile(source.getUriFragment())){
               afficherMessageAccesRefuse();
            }*/

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

    /* Ex de Device Detection */
    Device currentDevice = DeviceUtils.getCurrentDevice((HttpServletRequest) request);
    if (currentDevice.isMobile())
        LOG.debug("device : mobile");
    if (currentDevice.isTablet())
        LOG.debug("device : tablet");
    if (currentDevice.isNormal())
        LOG.debug("device : normal");

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

    /* Construit le gestionnaire de vues */
    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 = 9183991275107545154L;

        @Override
        public boolean beforeViewChange(ViewChangeEvent event) {

            //On bloque l'accs aux vues desktop
            if (!Utils.isViewMobile(event.getViewName())) {
                return false;
            }

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

            return true;
        }

        @Override
        public void afterViewChange(ViewChangeEvent event) {
            // TODO Auto-generated method stub

        }

    });

    //init du tracker
    initAnalyticsTracker();

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

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

        if (!applicationActive()) {
            afficherMessageMaintenance();
        } else {

            //On rcupre l'IP du client
            GenericUI.getCurrent().getIpClient();

            // Si l'utilisateur est enseignant
            if (userController.isEnseignant()) {

                //On consultera les notes en vue enseignant
                vueEnseignantNotesEtResultats = true;
                //On se rend par dfaut  la vue des favoris
                navigator.navigateTo(FavorisMobileView.NAME);
                //On affiche le message d'intro
                afficherMessageIntroEnseignants();

            } else {
                // Si l'utilisateur est tudiant
                //On consultera les notes en vue etudiant
                vueEnseignantNotesEtResultats = false;
                //On rcupre le codetu de l'tudiant
                String codetu = daoCodeLoginEtudiant.getCodEtuFromLogin(userController.getCurrentUserName());
                etudiant = new Etudiant(codetu);
                try {
                    //On rcupre l'tat-civil et les adresses de l'tudiant
                    etudiantController.recupererEtatCivil();
                    //Si on a eu une erreur  la rcupration de l'tat-civil
                    if (GenericUI.getCurrent().getEtudiant() == null) {
                        navigator.navigateTo(ErreurView.NAME);
                    } else {
                        //On rcupre le calendrier de l'tudiant
                        etudiantController.recupererCalendrierExamens();
                        //On rcupre les notes de l'tudiant
                        etudiantController.recupererNotesEtResultats(etudiant);
                        //On affiche le dossier
                        navigateToDossierEtudiant();
                    }
                } catch (WebBaseException ex) {
                    LOG.error(
                            "Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : "
                                    + codetu,
                            ex);
                    navigator.navigateTo(ErreurView.NAME);
                } catch (Exception ex) {
                    LOG.error("Probleme lors de la recherche de l'tat-civil pour etudiant dont codetu est : "
                            + codetu, ex);
                    navigator.navigateTo(ErreurView.NAME);
                }

            }
        }
    } else {
        //Utilisateur ni enseignant, ni tudiant, on le redirige vers la vue accs refus
        afficherMessageAccesRefuse();
    }

}

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

License:Apache License

@Override
public UI createInstance(UICreateEvent event) {
    //Nom de la classe UI  utiliser
    String uiBeanNameObj = "";
    //Rcupration du userAgent
    String userAgent = event.getRequest().getHeader("user-agent").toLowerCase();
    // on teste que l'utilisateur est sous WP ou accde via un navigateur compatible webkit
    if (userAgent.contains("webkit") || userAgent.contains("windows phone 8")
            || userAgent.contains("windows phone 9")) {
        //On va vers la version mobile
        LOG.debug("-uiBeanNameObj = mdwTouchkitUI");
        uiBeanNameObj = "mdwTouchkitUI";
    } else {/*from   w  w w. j  a  va  2  s .c om*/
        //On affiche la page proposant une redirection vers la version Desktop
        LOG.debug("-uiBeanNameObj = mdwFallbackUI");
        uiBeanNameObj = "mdwFallbackUI";
    }

    //Stored in VaadinSession to use it in
    // the ApplicationScope later to initialize vaadin application scope beans
    final Integer uiId = event.getUiId();
    VaadinSession.getCurrent().setAttribute("applicationScope.UiId", uiId);

    //On retourne l'UI dcide plus haut (desktop ou mobile)
    if (uiBeanNameObj instanceof String) {
        String uiBeanName = uiBeanNameObj.toString();
        return (UI) this.getWebApplicationContext().getBean(uiBeanName);
    }
    return super.createInstance(event);
}

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

License:Apache License

@Override
public UI createInstance(UICreateEvent event) {
    //Nom de la classe UI  utiliser
    String uiBeanNameObj = "";
    //Rcupration du userAgent
    String userAgent = event.getRequest().getHeader("user-agent").toLowerCase();

    /* Device Detection */
    Device currentDevice = DeviceUtils.getCurrentDevice((HttpServletRequest) event.getRequest());
    // on teste que l'utilisateur est sur smartphone et avec un navigateur compatible webkit ou sous WP
    if (currentDevice.isMobile() && (userAgent.contains("webkit") || userAgent.contains("windows phone 8")
            || userAgent.contains("windows phone 9"))) {
        //On affiche la page proposant une redirection vers la version Mobile
        LOG.debug("-FallbackTouchkit UI provided (" + userAgent + ")");
        uiBeanNameObj = "mdwFallbackTouchkitUI";
    } else {/*from w ww.j  a v a2 s . c o  m*/
        //On va vers la version desktop
        LOG.debug("-uiBeanNameObj = mainUI");
        uiBeanNameObj = "mainUI";
    }

    //Stored in VaadinSession to use it in
    // the ApplicationScope later to initialize vaadin application scope beans
    final Integer uiId = event.getUiId();
    VaadinSession.getCurrent().setAttribute("applicationScope.UiId", uiId);

    //On retourne l'UI dcide plus haut (desktop ou mobile)
    if (uiBeanNameObj instanceof String) {
        String uiBeanName = uiBeanNameObj.toString();
        return (UI) this.getWebApplicationContext().getBean(uiBeanName);
    }
    return super.createInstance(event);
}

From source file:io.github.jikuja.vaadin_yamapa.ui.views.PoiMap.java

License:Creative Commons License

private void setupMap() {
    // sane default zoom
    VaadinSession session = VaadinSession.getCurrent();
    if (session.getAttribute("lat") != null) {
        map.setCenter(new Point((Double) session.getAttribute("lat"), (Double) session.getAttribute("lon")),
                14.0);/*  w  ww. j av  a  2s.com*/
    } else {
        map.setCenter(new Point(60.440963, 22.25122), 14.0);
    }

    // single click / tapping is used to add POIs
    // using context meny would be even nicer thing to have. Maybe later
    map.setDoubleClickZoomEnabled(false);
    setupClickHandlers();
}

From source file:io.github.jikuja.vaadin_yamapa.ui.views.PoiMap.java

License:Creative Commons License

private void setupClickHandlers() {
    map.addClickListener(event -> {//from w ww. j  av  a  2 s . c om
        if (event.getSource() == map && VaadinSession.getCurrent().getAttribute("userid") != null) {
            Object iid = items.addItem();
            PoiForm form = new PoiForm("New POI", items, iid, event.getPoint().getLat(),
                    event.getPoint().getLon());
            UI.getCurrent().addWindow(form);
        }
    });
}