package jp.vmi.selenium.selenese.subcommand; import java.util.Collections; import java.util.HashMap; import java.util.Map; import jp.vmi.selenium.selenese.subcommand.MouseEventHandler.MouseEventType; import static jp.vmi.selenium.selenese.command.ArgumentType.*; /** * Replacement of WebDriverCommandProcessor for extention. */ public class SubCommandMap { private final Map<String, ISubCommand<?>> subCommands = new HashMap<>(); /** * Constructor. */ public SubCommandMap() { register(new GetAlert()); register(new GetAllButtons()); register(new GetAllFields()); register(new GetAllLinks()); register(new GetAllWindowNames()); register(new GetAllWindowTitles()); register(new GetAttribute()); register(new GetAttributeFromAllWindows()); register(new GetBodyText()); register(new GetConfirmation()); register(new GetCookie()); register(new GetCookieByName()); register(new GetCssCount()); register(new GetCursorPosition()); register(new GetElementHeight()); register(new GetElementIndex()); register(new GetElementPositionLeft()); register(new GetElementPositionTop()); register(new GetElementWidth()); register(new GetEval()); register(new GetExpression()); register(new GetHtmlSource()); register(new GetLocation()); register(new GetPrompt()); register(new GetSelectOptions()); register(new GetSpeed()); register(new GetTable()); register(new GetText()); register(new GetTitle()); register(new GetValue()); register(new GetXpathCount()); register(new IsAlertPresent()); register(new IsChecked()); register(new IsConfirmationPresent()); register(new IsCookiePresent()); register(new IsEditable()); register(new IsElementPresent()); register(new IsOrdered()); register(new IsPromptPresent()); register(new IsSomethingSelected()); register(new IsTextPresent()); register(new IsVisible()); for (MouseEventType type : MouseEventType.values()) register(new MouseEventHandler(type)); register(new GetSelected(GetSelected.Type.LABEL, false)); register(new GetSelected(GetSelected.Type.LABEL, true)); register(new GetSelected(GetSelected.Type.VALUE, false)); register(new GetSelected(GetSelected.Type.VALUE, true)); register(new GetSelected(GetSelected.Type.INDEX, false)); register(new GetSelected(GetSelected.Type.INDEX, true)); register(new GetSelected(GetSelected.Type.ID, false)); register(new GetSelected(GetSelected.Type.ID, true)); register(new NoOp("setBrowserLogLevel", VALUE)); register(new NoOp("waitForFrameToLoad", VALUE, VALUE)); } /** * Register sub-command. * * @param subCommand ISubCommand object. */ public void register(ISubCommand<?> subCommand) { register(subCommand, subCommand.getName()); } /** * Register sub-command. * * @param subCommand ISubCommand object. * @param name command name. */ public void register(ISubCommand<?> subCommand, String name) { subCommands.put(name, subCommand); } /** * Get sub-command. * * @param commandName sub-command name. * @return sub-command, or null if sub-command does not exist. */ public ISubCommand<?> get(String commandName) { return subCommands.get(commandName); } /** * Get read-only sub-command map. * @return map. */ public Map<String, ISubCommand<?>> getMap() { return Collections.unmodifiableMap(subCommands); } }