ApplicationMenuItemFactoryImpl.java

  1. /*
  2.  * Copyright 2010-2025 James Pether Sörling
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *   http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  *  $Id$
  11.  *  $HeadURL$
  12.  */
  13. package com.hack23.cia.web.impl.ui.application.views.common.menufactory.impl;

  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;

  16. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.ApplicationMenuItemFactory;
  17. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.CommitteeRankingMenuItemFactory;
  18. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.CountryMenuItemFactory;
  19. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.GovernmentBodyRankingMenuItemFactory;
  20. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.MinistryRankingMenuItemFactory;
  21. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.ParliamentMenuItemFactory;
  22. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.PartyRankingMenuItemFactory;
  23. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.PoliticianRankingMenuItemFactory;
  24. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.pagecommands.PageCommandMainViewConstants;
  25. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.pagecommands.PageCommandPartyRankingConstants;
  26. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.pagecommands.PageCommandPoliticianRankingConstants;
  27. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.pagecommands.PageCommandUserConstants;
  28. import com.hack23.cia.web.impl.ui.application.views.common.rows.RowUtil;
  29. import com.jarektoro.responsivelayout.ResponsiveRow;
  30. import com.vaadin.icons.VaadinIcons;
  31. import com.vaadin.ui.MenuBar;
  32. import com.vaadin.ui.MenuBar.MenuItem;
  33. import com.vaadin.ui.VerticalLayout;

  34. /**
  35.  * The Class ApplicationMenuItemFactoryImpl.
  36.  */
  37. @Service
  38. public final class ApplicationMenuItemFactoryImpl extends AbstractMenuItemFactoryImpl
  39.         implements ApplicationMenuItemFactory {

  40.     /** The committee ranking menu item factory. */
  41.     @Autowired
  42.     private CommitteeRankingMenuItemFactory committeeRankingMenuItemFactory;

  43.     /** The country menu item factory. */
  44.     @Autowired
  45.     private CountryMenuItemFactory countryMenuItemFactory;

  46.     /** The government body ranking menu item factory. */
  47.     @Autowired
  48.     private GovernmentBodyRankingMenuItemFactory governmentBodyRankingMenuItemFactory;

  49.     /** The ministry ranking menu item factory. */
  50.     @Autowired
  51.     private MinistryRankingMenuItemFactory ministryRankingMenuItemFactory;

  52.     /** The parliament menu item factory. */
  53.     @Autowired
  54.     private ParliamentMenuItemFactory parliamentMenuItemFactory;

  55.     /** The party ranking menu item factory. */
  56.     @Autowired
  57.     private PartyRankingMenuItemFactory partyRankingMenuItemFactory;

  58.     /** The politician ranking menu item factory. */
  59.     @Autowired
  60.     private PoliticianRankingMenuItemFactory politicianRankingMenuItemFactory;

  61.     /**
  62.      * Instantiates a new application menu item factory impl.
  63.      */
  64.     public ApplicationMenuItemFactoryImpl() {
  65.         super();
  66.     }

  67.     /**
  68.      * Adds the ranking menu.
  69.      *
  70.      * @param menuBar the menu bar
  71.      */
  72.     @Override
  73.     public void addRankingMenu(final MenuBar menuBar) {
  74.         final MenuItem rankingsMenuItem = menuBar.addItem(RANKING_TEXT, VaadinIcons.LINE_CHART, null);

  75.         final MenuItem swedenMenuItem = rankingsMenuItem.addItem(SWEDEN_DASHBOARD, VaadinIcons.FLAG,
  76.                 COMMAND_DASHBOARDVIEW_OVERVIEW);
  77.         countryMenuItemFactory.createCountryTopicMenu(swedenMenuItem);

  78.         rankingsMenuItem.addItem(MINISTRIES_LEADER_SCOREBOARD, VaadinIcons.TROPHY,
  79.                 PageCommandUserConstants.COMMAND_CHARTS_CURRENT_MINISTRIES_LEADER_SCOREBOARD);
  80.         rankingsMenuItem.addItem(PART_LEADERS_SCOREBOARD, VaadinIcons.TROPHY, COMMAND_PARTY_LEADER_SCOREBOARD);

  81.         final MenuItem countryMenuItem = rankingsMenuItem.addItem(COUNTRY_RANKING_LINK_TEXT, VaadinIcons.FLAG,
  82.                 COMMAND_COUNTRY_RANKING_OVERVIEW);
  83.         countryMenuItemFactory.createCountryTopicMenu(countryMenuItem);

  84.         final MenuItem ministryMenuItem = rankingsMenuItem.addItem(MINISTRY_RANKING_LINK_TEXT, VaadinIcons.OFFICE,
  85.                 COMMAND_MINISTRY_RANKING_OVERVIEW);
  86.         ministryRankingMenuItemFactory.createMinistryRankingTopics(ministryMenuItem);

  87.         final MenuItem govbodyMenuItem = rankingsMenuItem.addItem(GOVERNMENT_BODY_RANKING, VaadinIcons.BUILDING_O,
  88.                 COMMAND_GOVERNMENT_BODY_RANKING_OVERVIEW);
  89.         governmentBodyRankingMenuItemFactory.createGovernmentBodyRankingTopics(govbodyMenuItem);

  90.         final MenuItem parliamentMenuItem = rankingsMenuItem.addItem(PARLIAMENT_RANKING_LINK_TEXT,
  91.                 VaadinIcons.INSTITUTION, COMMAND_PARLIAMENT_RANKING_OVERVIEW);
  92.         parliamentMenuItemFactory.createParliamentTopicMenu(parliamentMenuItem);

  93.         final MenuItem committeeMenuItem = rankingsMenuItem.addItem(COMMITTEE_RANKING_LINK_TEXT, VaadinIcons.GROUP,
  94.                 COMMAND_COMMITTEE_RANKING_OVERVIEW);
  95.         committeeRankingMenuItemFactory.createCommitteeRankingTopics(committeeMenuItem);

  96.         final MenuItem partynMenuItem = rankingsMenuItem.addItem(PARTY_RANKING_LINK_TEXT, VaadinIcons.USERS,
  97.                 COMMAND_PARTY_RANKING_OVERVIEW);
  98.         partyRankingMenuItemFactory.createPartyRankingTopics(partynMenuItem);

  99.         final MenuItem politicianMenuItem = rankingsMenuItem.addItem(POLITICIAN_RANKING_LINK_TEXT, VaadinIcons.USER,
  100.                 POLITICIAN_RANKING_COMMAND_OVERVIEW);
  101.         politicianRankingMenuItemFactory.createPoliticianRankingTopics(politicianMenuItem);

  102.         final MenuItem documentsMenuItem = rankingsMenuItem.addItem(DOCUMENTS, VaadinIcons.FILE_TABLE, null);
  103.         documentsMenuItem.addItem("List all", VaadinIcons.FILE_TABLE, COMMAND_DOCUMENTS_OVERVIEW);
  104.         documentsMenuItem.addItem(SEARCH_DOCUMENTS, VaadinIcons.SEARCH, COMMAND_SEARCH_DOCUMENT);
  105.     }

  106.     /**
  107.      * Creates the main page menu bar.
  108.      *
  109.      * @param menuBar the menu bar
  110.      * @return the menu bar
  111.      */
  112.     @Override
  113.     public MenuBar createMainPageMenuBar(final MenuBar menuBar) {
  114.         initApplicationMenuBar(menuBar);
  115.         addRankingMenu(menuBar);
  116.         return menuBar;
  117.     }

  118.     /**
  119.      * Creates the overview page.
  120.      *
  121.      * @param panelContent the panel content
  122.      */
  123.     @Override
  124.     public void createOverviewPage(final VerticalLayout panelContent) {
  125.         final ResponsiveRow grid = RowUtil.createGridLayout(panelContent);
  126.         createButtonLink(grid, SWEDEN_DASHBOARD, VaadinIcons.FLAG, COMMAND_DASHBOARDVIEW_OVERVIEW,
  127.                 "Visualize political activity in Sweden, present key performance indicators and metadata");
  128.         createButtonLink(grid, MINISTRIES_LEADER_SCOREBOARD, VaadinIcons.TROPHY,
  129.                 COMMAND_CHARTS_CURRENT_MINISTRIES_LEADER_SCOREBOARD, MINISTRIES_LEADER_SCOREBOARD_DESCRIPTION);
  130.         createButtonLink(grid, PART_LEADERS_SCOREBOARD, VaadinIcons.TROPHY, COMMAND_PARTY_LEADER_SCOREBOARD,
  131.                 DESC_LEADERS_SCOREBOARD);
  132.         createButtonLink(grid, COUNTRY_RANKING_LINK_TEXT, VaadinIcons.FLAG, COMMAND_COUNTRY_RANKING_OVERVIEW,
  133.                 COUNTRY_RANKING_DESCRIPTION);
  134.         createButtonLink(grid, MINISTRY_RANKING_LINK_TEXT, VaadinIcons.OFFICE, COMMAND_MINISTRY_RANKING_OVERVIEW,
  135.                 MINISTRY_RANKING_DESCRIPTION);
  136.         createButtonLink(grid, MINISTRIES_LINK_TEXT, VaadinIcons.OFFICE, COMMAND_MINISTRY_RANKING_DATAGRID,
  137.                 MINISTRIES_DESCRIPTION);
  138.         createButtonLink(grid, GOVERNMENT_BODY_RANKING, VaadinIcons.BUILDING_O,
  139.                 COMMAND_GOVERNMENT_BODY_RANKING_OVERVIEW, GOVERNMENT_BODY_RANKING_DESCRIPTION);
  140.         createButtonLink(grid, GOVERNMENT_BODIES, VaadinIcons.BUILDING_O, COMMAND_GOVERNMENT_BODY_RANKING_DATAGRID,
  141.                 GOVERNMENT_BODIES_DESCRIPTION);
  142.         createButtonLink(grid, PARLIAMENT_RANKING_LINK_TEXT, VaadinIcons.INSTITUTION,
  143.                 COMMAND_PARLIAMENT_RANKING_OVERVIEW, PARLIAMENT_RANKING_DESCRIPTION);
  144.         createButtonLink(grid, COMMITTEE_RANKING_LINK_TEXT, VaadinIcons.GROUP, COMMAND_COMMITTEE_RANKING_OVERVIEW,
  145.                 COMMITTEE_RANKING_DESCRIPTION);
  146.         createButtonLink(grid, COMMITTEES_LINK_TEXT, VaadinIcons.GROUP, COMMAND_COMMITTEE_RANKING_DATAGRID,
  147.                 COMMITTEES_DESCRIPTION);
  148.         createButtonLink(grid, PARTY_RANKING_LINK_TEXT, VaadinIcons.USERS, COMMAND_PARTY_RANKING_OVERVIEW,
  149.                 PARTY_RANKING_DESCRIPTION);
  150.         createButtonLink(grid, PARTIES_LINK_TEXT, VaadinIcons.USERS,
  151.                 PageCommandPartyRankingConstants.COMMAND_PARTY_RANKING_DATAGRID, PARTIES_DESCRIPTION);
  152.         createButtonLink(grid, POLITICIAN_RANKING_LINK_TEXT, VaadinIcons.USER, POLITICIAN_RANKING_COMMAND_DATAGRID,
  153.                 POLITICIAN_RANKING_DESCRIPTION);
  154.         createButtonLink(grid, POLITICIANS_LINK_TEXT, VaadinIcons.USER,
  155.                 PageCommandPoliticianRankingConstants.COMMAND_POLITICIAN_RANKING_DATAGRID, POLITICIANS_DESCRIPTION);
  156.         createButtonLink(grid, SEARCH_DOCUMENTS, VaadinIcons.SEARCH,
  157.                 PageCommandMainViewConstants.COMMAND_SEARCH_DOCUMENT, SEARCH_DOCUMENTS_DESCRIPTION);
  158.         createButtonLink(grid, DOCUMENTS, VaadinIcons.FILE_TABLE, COMMAND_DOCUMENTS_OVERVIEW, DOCUMENTS_DESCRIPTION);
  159.     }
  160. }