public void setActionListener(
      Object deviceKey, Object actionKey, ViewInputActionHandler listener) {
    if (deviceKey == null) {
      String message = Logging.getMessage("nullValue.DeviceKeyIsNull");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }
    if (actionKey == null) {
      String message = Logging.getMessage("nullValue.ActionKeyIsNull");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }
    ActionAttributesMap deviceActionMap = this.getActionMap(deviceKey);
    if (deviceActionMap == null) {
      String message = Logging.getMessage("nullValue.DeviceNotDefined");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }
    ActionAttributes actions = deviceActionMap.getActionAttributes(actionKey);
    if (actions == null) {
      String message = Logging.getMessage("nullValue.DeviceActionNotDefined");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }

    if (actions.getMouseActions() != null) {
      actions.setMouseActionListener(listener);
    } else if (actions.getKeyActions() != null) {
      actions.setActionListener(listener);
    }
  }
  public ActionAttributes getActionAttributes(Object deviceKey, Object actionKey) {
    if (deviceKey == null) {
      String message = Logging.getMessage("nullValue.DeviceKeyIsNull");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }
    if (actionKey == null) {
      String message = Logging.getMessage("nullValue.ActionKeyIsNull");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }

    ActionAttributesMap map = this.getActionMap(deviceKey);
    if (map == null) return null;

    return map.getActionAttributes(actionKey);
  }