package org.ovirt.engine.ui.webadmin.uicommon; import java.util.ArrayList; import org.ovirt.engine.core.common.console.ConsoleOptions.WanDisableEffects; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.searchbackend.ISyntaxChecker; import org.ovirt.engine.core.searchbackend.SyntaxCheckerFactory; import org.ovirt.engine.ui.common.uicommon.ClientAgentType; import org.ovirt.engine.ui.common.uicommon.ContextSensitiveHelpManager; import org.ovirt.engine.ui.uicommonweb.Configurator; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleClient; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventDefinition; import org.ovirt.engine.ui.uicompat.IEventListener; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; public class WebAdminConfigurator extends Configurator implements IEventListener<Configurator.FileFetchEventArgs> { public static final String APPLICATION_NAME = "webadmin"; //$NON-NLS-1$ public EventDefinition spiceVersionFileFetchedEvent_Definition = new EventDefinition("spiceVersionFileFetched", WebAdminConfigurator.class); //$NON-NLS-1$ public Event<FileFetchEventArgs> spiceVersionFileFetchedEvent = new Event<>(spiceVersionFileFetchedEvent_Definition); public EventDefinition documentationFileFetchedEvent_Definition = new EventDefinition("documentationFileFetched", WebAdminConfigurator.class); //$NON-NLS-1$ public Event<FileFetchEventArgs> documentationFileFetchedEvent = new Event<>(documentationFileFetchedEvent_Definition); private final ClientAgentType clientAgentType; @Inject public WebAdminConfigurator(EventBus eventBus, ClientAgentType clientAgentType) { super(); this.clientAgentType = clientAgentType; prepareContextSensitiveHelp(); // This means that this is WebAdmin application. setIsAdmin(true); setSpiceAdminConsole(true); // Add event listeners spiceVersionFileFetchedEvent.addListener(this); documentationFileFetchedEvent.addListener(this); // Update Spice version if needed updateSpiceVersion(); } protected void prepareContextSensitiveHelp() { fetchFile(getCshMappingUrl(APPLICATION_NAME), documentationFileFetchedEvent); // async callback calls ContextSensitiveHelpManager.init } @Override public void eventRaised(Event<? extends FileFetchEventArgs> ev, Object sender, FileFetchEventArgs args) { if (ev.matchesDefinition(spiceVersionFileFetchedEvent_Definition)) { Version spiceVersion = parseVersion(args.getFileContent()); setSpiceVersion(spiceVersion); } else if (ev.matchesDefinition(documentationFileFetchedEvent_Definition)) { String cshMapping = args.getFileContent(); ContextSensitiveHelpManager.init(cshMapping); } } @Override public void configure(ConsoleClient spice) { super.configure(spice); spice.getOptions().setWanDisableEffects(new ArrayList<WanDisableEffects>()); spice.getOptions().setWanOptionsEnabled(false); } @Override protected Event<FileFetchEventArgs> getSpiceVersionFileFetchedEvent() { return spiceVersionFileFetchedEvent; } @Override protected String clientBrowserType() { return clientAgentType.browser; } @Override protected String clientOsType() { return clientAgentType.os; } @Override protected String clientPlatformType() { return clientAgentType.getPlatform(); } @Override public Float clientBrowserVersion() { return clientAgentType.version; } @Override public ISyntaxChecker getSyntaxChecker() { return SyntaxCheckerFactory.createUISyntaxChecker("LDAP"); //$NON-NLS-1$ } @Override protected ConfigurationValues spiceFullScreenConfigKey() { return ConfigurationValues.FullScreenWebadminDefault; } }