Class SelectCommand

java.lang.Object
edu.wpi.first.wpilibj2.command.CommandBase
edu.wpi.first.wpilibj2.command.SelectCommand
All Implemented Interfaces:
Sendable, Command

public class SelectCommand
extends CommandBase
Runs one of a selection of commands, either using a selector and a key to command mapping, or a supplier that returns the command directly at runtime. Does not actually schedule the selected command - rather, the command is run through this command; this ensures that the command will behave as expected if used as part of a CommandGroup. Requires the requirements of all included commands, again to ensure proper functioning when used in a CommandGroup. If this is undesired, consider using ScheduleCommand.

As this command contains multiple component commands within it, it is technically a command group; the command instances that are passed to it cannot be added to any other groups, or scheduled individually.

As a rule, CommandGroups require the union of the requirements of their component commands.

  • Constructor Details

    • SelectCommand

      public SelectCommand​(Map<Object,​Command> commands, Supplier<Object> selector)
      Creates a new selectcommand.
      Parameters:
      commands - the map of commands to choose from
      selector - the selector to determine which command to run
    • SelectCommand

      public SelectCommand​(Supplier<Command> toRun)
      Creates a new selectcommand.
      Parameters:
      toRun - a supplier providing the command to run
  • Method Details

    • initialize

      public void initialize()
      Description copied from interface: Command
      The initial subroutine of a command. Called once when the command is initially scheduled.
    • execute

      public void execute()
      Description copied from interface: Command
      The main body of a command. Called repeatedly while the command is scheduled.
    • end

      public void end​(boolean interrupted)
      Description copied from interface: Command
      The action to take when the command ends. Called when either the command finishes normally, or when it interrupted/canceled.

      Do not schedule commands here that share requirements with this command. Use Command.andThen(Command...) instead.

      Parameters:
      interrupted - whether the command was interrupted/canceled
    • isFinished

      public boolean isFinished()
      Description copied from interface: Command
      Whether the command has finished. Once a command finishes, the scheduler will call its end() method and un-schedule it.
      Returns:
      whether the command has finished.
    • runsWhenDisabled

      public boolean runsWhenDisabled()
      Description copied from interface: Command
      Whether the given command should run when the robot is disabled. Override to return true if the command should run when disabled.
      Returns:
      whether the command should run when the robot is disabled