org.projectforge.web.mobile.MenuMobilePage.java Source code

Java tutorial

Introduction

Here is the source code for org.projectforge.web.mobile.MenuMobilePage.java

Source

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2013 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.mobile;

import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.user.PFUserContext;
import org.projectforge.web.LoginPage;
import org.projectforge.web.Menu;
import org.projectforge.web.MenuBuilder;
import org.projectforge.web.MenuEntry;
import org.projectforge.web.UserFilter;
import org.projectforge.web.calendar.CalendarPage;
import org.projectforge.web.wicket.MySession;
import org.projectforge.web.wicket.WicketUtils;

public class MenuMobilePage extends AbstractSecuredMobilePage {
    private static final long serialVersionUID = 6709192621718648771L;

    // Indicates that the menu mobile page should be shown directly instead of restoring last page after stay-logged-in.
    private static final String PARAM_HOME_KEY = "home";

    @SpringBean(name = "menuBuilder")
    private MenuBuilder menuBuilder;

    /**
     * Returns a link to this the menu mobile page. It should be shown directly instead of restoring last page after stay-logged-in .
     */
    public static JQueryButtonPanel getHomeLink(final Component parent, final String id) {
        final PageParameters params = new PageParameters();
        params.add(PARAM_HOME_KEY, true);
        return new JQueryButtonPanel(id, JQueryButtonType.HOME, MenuMobilePage.class, params,
                parent.getString("mobile.home")).setNoText();
    }

    public MenuMobilePage() {
        this(new PageParameters());
    }

    @SuppressWarnings("serial")
    public MenuMobilePage(final PageParameters parameters) {
        super(parameters);
        if (getUser().getAttribute(UserFilter.USER_ATTR_STAY_LOGGED_IN) != null) {
            getUser().removeAttribute(UserFilter.USER_ATTR_STAY_LOGGED_IN);
            if (WicketUtils.contains(parameters, PARAM_HOME_KEY) == false) {
                final RecentMobilePageInfo pageInfo = (RecentMobilePageInfo) userXmlPreferencesCache
                        .getEntry(getUserId(), AbstractSecuredMobilePage.USER_PREF_RECENT_PAGE);
                if (pageInfo != null && pageInfo.getPageClass() != null) {
                    throw new RestartResponseException((Class<? extends Page>) pageInfo.getPageClass(),
                            pageInfo.restorePageParameters());
                }
            }
        }
        setNoBackButton();
        final ListViewPanel listViewPanel = new ListViewPanel("menu");
        pageContainer.add(listViewPanel);
        listViewPanel.add(
                new ListViewItemPanel(listViewPanel.newChildId(), getString("menu.main.title")).setListDivider());
        final Menu menu = menuBuilder.getMobileMenu(PFUserContext.getUser());
        if (menu.getMenuEntries() != null) {
            for (final MenuEntry menuEntry : menu.getMenuEntries()) {
                if (menuEntry.isVisible() == true) {
                    listViewPanel.add(new ListViewItemPanel(listViewPanel.newChildId(),
                            menuEntry.getMobilePageClass(), getString(menuEntry.getI18nKey())));
                }
            }
        }
        listViewPanel.add(new ListViewItemPanel(listViewPanel.newChildId(),
                new BookmarkablePageLink<String>(ListViewItemPanel.LINK_ID, CalendarPage.class),
                getString("menu.mobile.fullWebVersion")).setAsExternalLink());

        listViewPanel
                .add(new ListViewItemPanel(listViewPanel.newChildId(), new Link<String>(ListViewItemPanel.LINK_ID) {
                    @Override
                    public void onClick() {
                        LoginPage.logout((MySession) getSession(), (WebRequest) getRequest(),
                                (WebResponse) getResponse(), userXmlPreferencesCache, menuBuilder);
                        setResponsePage(LoginMobilePage.class);
                    }

                }, getString("menu.logout")) {
                });
        if (getMySession().isIOSDevice() == true) {
            pageContainer.add(new Label("iOSHint", getString("mobile.iOS.startScreenInfo")));
        } else {
            pageContainer.add(new Label("iOSHint", getString("mobile.others.startScreenInfo")));
        }
    }

    @Override
    protected String getTitle() {
        return getString("menu.main.title");
    }
}