package com.constellio.app.modules.es.navigation;
import static com.constellio.app.ui.framework.components.ComponentState.visibleIf;
import java.io.Serializable;
import java.util.List;
import com.constellio.app.entities.navigation.NavigationConfig;
import com.constellio.app.entities.navigation.NavigationItem;
import com.constellio.app.entities.navigation.PageItem.RecordTree;
import com.constellio.app.modules.es.ui.pages.ConnectorReportViewImpl;
import com.constellio.app.modules.es.ui.pages.DisplayConnectorInstanceViewImpl;
import com.constellio.app.modules.es.ui.pages.EditConnectorInstanceViewImpl;
import com.constellio.app.modules.es.ui.pages.ListConnectorInstancesViewImpl;
import com.constellio.app.modules.es.ui.pages.WizardConnectorInstanceViewImpl;
import com.constellio.app.modules.es.ui.pages.mapping.AddEditMappingViewImpl;
import com.constellio.app.modules.es.ui.pages.mapping.DisplayConnectorMappingsViewImpl;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.services.migrations.CoreNavigationConfiguration;
import com.constellio.app.ui.application.Navigation;
import com.constellio.app.ui.application.NavigatorConfigurationService;
import com.constellio.app.ui.framework.components.ComponentState;
import com.constellio.app.ui.framework.components.contextmenu.BaseContextMenu;
import com.constellio.app.ui.framework.data.RecordLazyTreeDataProvider;
import com.constellio.app.ui.pages.base.SessionContext;
import com.constellio.app.ui.pages.home.HomeView;
import com.constellio.app.ui.pages.home.TaxonomyTabSheet;
import com.constellio.app.ui.pages.management.AdminView;
import com.constellio.model.entities.CorePermissions;
import com.constellio.model.entities.records.wrappers.User;
public class ESNavigationConfiguration implements Serializable {
public static final String CONNECTORS = "connectors";
public static final String CONNECTORS_ICON = "images/icons/config/connector.png";
public static final String SEARCH_ENGINE = "searchEngine";
public static final String SEARCH_ENGINE_ICON = "images/icons/config/configuration-search.png";
public static final String CONNECTOR_REPORT = "connectorReport";
public static final String DISPLAY_CONNECTOR_INSTANCE = "displayConnectorInstance";
public static final String ADD_CONNECTOR_MAPPING = "addConnectorMapping";
public static final String EDIT_CONNECTOR_MAPPING = "editConnectorMapping";
public static final String DISPLAY_CONNECTOR_MAPPINGS = "displayConnectorMappings";
public static final String EDIT_CONNECTOR_INSTANCE = "editConnectorInstance";
public static final String LIST_CONNECTOR_INSTANCES = "connectorInstances";
public static final String WIZARD_CONNECTOR_INSTANCE = "wizardConnectorInstance";
public static void configureNavigation(NavigationConfig config) {
configureCollectionAdmin(config);
configureHomeFragments(config);
}
public static void configureNavigation(NavigatorConfigurationService service) {
service.register(CONNECTOR_REPORT, ConnectorReportViewImpl.class);
service.register(DISPLAY_CONNECTOR_INSTANCE, DisplayConnectorInstanceViewImpl.class);
service.register(ADD_CONNECTOR_MAPPING, AddEditMappingViewImpl.class);
service.register(EDIT_CONNECTOR_MAPPING, AddEditMappingViewImpl.class);
service.register(DISPLAY_CONNECTOR_MAPPINGS, DisplayConnectorMappingsViewImpl.class);
service.register(EDIT_CONNECTOR_INSTANCE, EditConnectorInstanceViewImpl.class);
service.register(LIST_CONNECTOR_INSTANCES, ListConnectorInstancesViewImpl.class);
service.register(WIZARD_CONNECTOR_INSTANCE, WizardConnectorInstanceViewImpl.class);
}
private static void configureCollectionAdmin(NavigationConfig config) {
config.add(AdminView.COLLECTION_SECTION, new NavigationItem.Active(CONNECTORS, CONNECTORS_ICON) {
@Override
public void activate(Navigation navigate) {
navigate.to(ESViews.class).listConnectorInstances();
}
@Override
public ComponentState getStateFor(User user, AppLayerFactory appLayerFactory) {
return visibleIf(user.has(CorePermissions.MANAGE_CONNECTORS).globally());
}
});
config.add(AdminView.COLLECTION_SECTION, new NavigationItem.Inactive(SEARCH_ENGINE, SEARCH_ENGINE_ICON));
}
private static void configureHomeFragments(NavigationConfig config) {
if (!config.hasNavigationItem(HomeView.TABS, CoreNavigationConfiguration.TAXONOMIES)) {
config.add(HomeView.TABS, new RecordTree(CoreNavigationConfiguration.TAXONOMIES) {
@Override
public List<RecordLazyTreeDataProvider> getDataProviders(AppLayerFactory appLayerFactory,
SessionContext sessionContext) {
TaxonomyTabSheet tabSheet = new TaxonomyTabSheet(appLayerFactory.getModelLayerFactory(), sessionContext);
if (getDefaultDataProvider() == -1) {
int defaultTab = tabSheet.getDefaultTab();
setDefaultDataProvider(defaultTab);
}
return tabSheet.getDataProviders();
}
@Override
public BaseContextMenu getContextMenu() {
return new BaseContextMenu();
}
});
}
}
}