Search in sources :

Example 1 with MenuItem

use of com.gitblit.models.Menu.MenuItem in project gitblit by gitblit.

the class ProjectPage method getProjectsMenu.

protected List<MenuItem> getProjectsMenu() {
    List<MenuItem> menu = new ArrayList<MenuItem>();
    List<ProjectModel> projects = new ArrayList<ProjectModel>();
    for (ProjectModel model : getProjectModels()) {
        if (!model.isUserProject()) {
            projects.add(model);
        }
    }
    int maxProjects = 15;
    boolean showAllProjects = projects.size() > maxProjects;
    if (showAllProjects) {
        // sort by last changed
        Collections.sort(projects, new Comparator<ProjectModel>() {

            @Override
            public int compare(ProjectModel o1, ProjectModel o2) {
                return o2.lastChange.compareTo(o1.lastChange);
            }
        });
        // take most recent subset
        projects = projects.subList(0, maxProjects);
        // sort those by name
        Collections.sort(projects);
    }
    for (ProjectModel project : projects) {
        menu.add(new ParameterMenuItem(project.getDisplayName(), "p", project.name));
    }
    if (showAllProjects) {
        menu.add(new MenuDivider());
        menu.add(new ParameterMenuItem("all projects"));
    }
    return menu;
}
Also used : MenuDivider(com.gitblit.models.Menu.MenuDivider) ArrayList(java.util.ArrayList) MenuItem(com.gitblit.models.Menu.MenuItem) ParameterMenuItem(com.gitblit.models.Menu.ParameterMenuItem) ProjectModel(com.gitblit.models.ProjectModel) ParameterMenuItem(com.gitblit.models.Menu.ParameterMenuItem)

Example 2 with MenuItem

use of com.gitblit.models.Menu.MenuItem in project gitblit by gitblit.

the class RootPage method getTimeFilterItems.

protected List<MenuItem> getTimeFilterItems(PageParameters params) {
    // days back choices - additive parameters
    int daysBack = app().settings().getInteger(Keys.web.activityDuration, 7);
    int maxDaysBack = app().settings().getInteger(Keys.web.activityDurationMaximum, 30);
    if (daysBack < 1) {
        daysBack = 7;
    }
    if (daysBack > maxDaysBack) {
        daysBack = maxDaysBack;
    }
    PageParameters clonedParams;
    if (params == null) {
        clonedParams = new PageParameters();
    } else {
        clonedParams = new PageParameters(params);
    }
    if (!clonedParams.containsKey("db")) {
        clonedParams.put("db", daysBack);
    }
    List<MenuItem> items = new ArrayList<MenuItem>();
    Set<Integer> choicesSet = new TreeSet<Integer>(app().settings().getIntegers(Keys.web.activityDurationChoices));
    if (choicesSet.isEmpty()) {
        choicesSet.addAll(Arrays.asList(1, 3, 7, 14, 21, 28));
    }
    List<Integer> choices = new ArrayList<Integer>(choicesSet);
    Collections.sort(choices);
    String lastDaysPattern = getString("gb.lastNDays");
    for (Integer db : choices) {
        if (db == 1) {
            items.add(new ParameterMenuItem(getString("gb.time.today"), "db", db.toString(), clonedParams));
        } else {
            String txt = MessageFormat.format(lastDaysPattern, db);
            items.add(new ParameterMenuItem(txt, "db", db.toString(), clonedParams));
        }
    }
    items.add(new MenuDivider());
    return items;
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MenuDivider(com.gitblit.models.Menu.MenuDivider) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) PageLinkMenuItem(com.gitblit.models.Menu.PageLinkMenuItem) ParameterMenuItem(com.gitblit.models.Menu.ParameterMenuItem) ExternalLinkMenuItem(com.gitblit.models.Menu.ExternalLinkMenuItem) MenuItem(com.gitblit.models.Menu.MenuItem) ToggleMenuItem(com.gitblit.models.Menu.ToggleMenuItem) PageParameters(org.apache.wicket.PageParameters) ParameterMenuItem(com.gitblit.models.Menu.ParameterMenuItem)

Example 3 with MenuItem

use of com.gitblit.models.Menu.MenuItem in project gitblit by gitblit.

the class RootPage method getRepositoryFilterItems.

protected List<com.gitblit.models.Menu.MenuItem> getRepositoryFilterItems(PageParameters params) {
    final UserModel user = GitBlitWebSession.get().getUser();
    Set<MenuItem> filters = new LinkedHashSet<MenuItem>();
    List<RepositoryModel> repositories = getRepositoryModels();
    // accessible repositories by federation set
    Map<String, AtomicInteger> setMap = new HashMap<String, AtomicInteger>();
    for (RepositoryModel repository : repositories) {
        for (String set : repository.federationSets) {
            String key = set.toLowerCase();
            if (setMap.containsKey(key)) {
                setMap.get(key).incrementAndGet();
            } else {
                setMap.put(key, new AtomicInteger(1));
            }
        }
    }
    if (setMap.size() > 0) {
        List<String> sets = new ArrayList<String>(setMap.keySet());
        Collections.sort(sets);
        for (String set : sets) {
            filters.add(new ToggleMenuItem(MessageFormat.format("{0} ({1})", set, setMap.get(set).get()), "set", set, params));
        }
        // divider
        filters.add(new MenuDivider());
    }
    // user's team memberships
    if (user != null && user.teams.size() > 0) {
        List<TeamModel> teams = new ArrayList<TeamModel>(user.teams);
        Collections.sort(teams);
        for (TeamModel team : teams) {
            filters.add(new ToggleMenuItem(MessageFormat.format("{0} ({1})", team.name, team.repositories.size()), "team", team.name, params));
        }
        // divider
        filters.add(new MenuDivider());
    }
    // custom filters
    String customFilters = app().settings().getString(Keys.web.customFilters, null);
    if (!StringUtils.isEmpty(customFilters)) {
        boolean addedExpression = false;
        List<String> expressions = StringUtils.getStringsFromValue(customFilters, "!!!");
        for (String expression : expressions) {
            if (!StringUtils.isEmpty(expression)) {
                addedExpression = true;
                filters.add(new ToggleMenuItem(null, "x", expression, params));
            }
        }
        // if we added any custom expressions, add a divider
        if (addedExpression) {
            filters.add(new MenuDivider());
        }
    }
    return new ArrayList<MenuItem>(filters);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) ToggleMenuItem(com.gitblit.models.Menu.ToggleMenuItem) MenuDivider(com.gitblit.models.Menu.MenuDivider) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) PageLinkMenuItem(com.gitblit.models.Menu.PageLinkMenuItem) ParameterMenuItem(com.gitblit.models.Menu.ParameterMenuItem) ExternalLinkMenuItem(com.gitblit.models.Menu.ExternalLinkMenuItem) MenuItem(com.gitblit.models.Menu.MenuItem) ToggleMenuItem(com.gitblit.models.Menu.ToggleMenuItem) RepositoryModel(com.gitblit.models.RepositoryModel) UserModel(com.gitblit.models.UserModel) TeamModel(com.gitblit.models.TeamModel) AtomicInteger(java.util.concurrent.atomic.AtomicInteger)

Aggregations

MenuDivider (com.gitblit.models.Menu.MenuDivider)3 MenuItem (com.gitblit.models.Menu.MenuItem)3 ParameterMenuItem (com.gitblit.models.Menu.ParameterMenuItem)3 ArrayList (java.util.ArrayList)3 ExternalLinkMenuItem (com.gitblit.models.Menu.ExternalLinkMenuItem)2 PageLinkMenuItem (com.gitblit.models.Menu.PageLinkMenuItem)2 ToggleMenuItem (com.gitblit.models.Menu.ToggleMenuItem)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 ProjectModel (com.gitblit.models.ProjectModel)1 RepositoryModel (com.gitblit.models.RepositoryModel)1 TeamModel (com.gitblit.models.TeamModel)1 UserModel (com.gitblit.models.UserModel)1 HashMap (java.util.HashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 TreeSet (java.util.TreeSet)1 PageParameters (org.apache.wicket.PageParameters)1