use of com.gitblit.models.Menu.ToggleMenuItem 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);
}
Aggregations