class PerspectivesExplorer implements IsElement {

    public void show() {
        view.clear();
        view.setTitle(i18n.capitalizeFirst(i18n.getPerspectivesResourceName()));
        view.setNewMenuName(i18n.getContentExplorerNew());
        view.setNewMenuVisible(pluginController.canCreatePerspectives());
        view.setPerspectiveName(i18n.capitalizeFirst(i18n.getPerspectiveResourceName()));

        perspectivePluginManager.getPerspectivePlugins(perspectivePlugins -> {

            List<Plugin> filteredPlugins = perspectivePlugins.stream()
                    .filter(pluginController::canRead)
                    .sorted((p1, p2) -> p1.getName().compareToIgnoreCase(p2.getName()))
                    .collect(Collectors.toList());


            if (filteredPlugins.isEmpty()) {
                view.showEmpty(i18n.getNoPerspectives());
            } else {
                filteredPlugins.forEach(p -> view.addPerspective(p.getName(), () -> onPerspectiveClick(p)));
            }
        });

        this.expand();
    }

    @Inject public  PerspectivesExplorer(View view,
                                PerspectivePluginManager perspectivePluginManager,
                                PluginController pluginController,
                                NewPluginPopUp newPluginPopUp,
                                PlaceManager placeManager,
                                ContentManagerI18n i18n);

}