All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openqa.selenium.htmlunit.w3.Action Maven / Gradle / Ivy

// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

package org.openqa.selenium.htmlunit.w3;

import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.HtmlUnitAction;
import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.KeyDownHtmlUnitAction;
import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.KeyUpHtmlUnitAction;
import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.PointerDownHtmlUnitAction;
import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.PointerMoveHtmlUnitAction;
import org.openqa.selenium.htmlunit.HtmlUnitInputProcessor.PointerUpHtmlUnitAction;

import com.gargoylesoftware.htmlunit.html.DomElement;

/**
 * An action object constructed with arguments id, type, and subtype is an
 * object with property id set to id, type set to type and subtype set to
 * subtype. Specific action objects have further properties added by other
 * algorithms in this specification.
 *
 * @see action object
 *
 * @author Ronald Brill
 */
public class Action {
    private final String id_;
    private final String type_;
    private final String subtype_;

    private Integer duration_;
    private String value_;

    private String pointerType_;
    private Integer button_;

    private DomElement domElement_;

    /**
     * Ctor.
     *
     * @param id unique id
     * @param type the type
     * @param subtype the subtype
     */
    public Action(final String id, final String type, final String subtype) {
        id_ = id;
        type_ = type;
        subtype_ = subtype;
    }

    public Integer getDuration() {
        return duration_;
    }

    public void setDuration(final int duration) {
        duration_ = duration;
    }

    public String getValue() {
        return value_;
    }

    public void setValue(final String value) {
        value_ = value;
    }

    public String getPointerType() {
        return pointerType_;
    }

    public void setPointerType(final String pointerType) {
        pointerType_ = pointerType;
    }

    public Integer getButton() {
        return button_;
    }

    public void setButton(final int button) {
        button_ = button;
    }

    public DomElement getDomElement() {
        return domElement_;
    }

    public void setDomElement(final DomElement domElement) {
        domElement_ = domElement;
    }

    public HtmlUnitAction buildHtmlUnitAction() {

        if ("none".equals(type_)) {
            return null;
        }

        if ("pointer".equals(type_)) {
            if ("pause".equals(subtype_)) {
                return null;
            }

            if ("pointerMove".equals(subtype_)) {
                return new PointerMoveHtmlUnitAction(domElement_);
            }

            if ("pointerUp".equals(subtype_)) {
                return new PointerUpHtmlUnitAction(domElement_, getButton());
            }

            if ("pointerDown".equals(subtype_)) {
                return new PointerDownHtmlUnitAction(domElement_, getButton());
            }
        }

        if ("key".equals(type_)) {
            if ("pause".equals(subtype_)) {
                return null;
            }

            if ("keyUp".equals(subtype_)) {
                return new KeyUpHtmlUnitAction(value_);
            }

            if ("keyDown".equals(subtype_)) {
                return new KeyDownHtmlUnitAction(value_);
            }
        }

        throw new RuntimeException("ups");
    }

    @Override
    public String toString() {
        String toString = "Action: id=" + id_ + " type=" + type_ + " subtype=" + subtype_;

        if (duration_ != null) {
            toString += " duration=" + duration_;
        }
        if (value_ != null) {
            toString += " value=" + value_;
        }
        if (pointerType_ != null) {
            toString += " pointerType=" + pointerType_;
        }
        if (button_ != null) {
            toString += " button=" + button_;
        }
        return toString;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy