Package org.projectforge.web.mobile

Source Code of org.projectforge.web.mobile.MenuMobilePage

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 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.user.UserPreferencesHelper;
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) UserPreferencesHelper
            .getEntry(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,
        WicketUtils.getDefaultPage()), 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");
  }
}
TOP

Related Classes of org.projectforge.web.mobile.MenuMobilePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.