Class DefaultSearchBuilder<T>

java.lang.Object
org.jline.prompt.impl.DefaultSearchBuilder<T>
All Implemented Interfaces:
BaseBuilder<SearchBuilder<T>>, SearchBuilder<T>

public class DefaultSearchBuilder<T> extends Object implements SearchBuilder<T>
Default implementation of SearchBuilder.
  • Constructor Details

    • DefaultSearchBuilder

      public DefaultSearchBuilder(PromptBuilder parent)
  • Method Details

    • name

      public SearchBuilder<T> name(String name)
      Description copied from interface: BaseBuilder
      Set the unique identifier for this prompt.

      The name serves as the key in the result map returned by Prompter.prompt(java.util.List<org.jline.utils.AttributedString>, java.util.List<? extends org.jline.prompt.Prompt>). It must be unique within a single prompt session to avoid conflicts.

      Naming Guidelines:

      • Use descriptive, lowercase names with underscores: "user_name", "file_path"
      • Avoid spaces and special characters
      • Keep names concise but meaningful
      • Use consistent naming conventions across your application

      Example:

      
       builder.createInputPrompt()
           .name("email_address")  // Used as key in results map
           .message("Enter your email:")
           .addPrompt();
      
       // Later access the result
       InputResult emailResult = (InputResult) results.get("email_address");
       
      Specified by:
      name in interface BaseBuilder<T>
      Parameters:
      name - the unique identifier for this prompt (required, non-null, non-empty)
      Returns:
      this builder instance for method chaining
    • message

      public SearchBuilder<T> message(String message)
      Description copied from interface: BaseBuilder
      Set the message displayed to the user for this prompt.

      The message is the primary text that explains what the user should do. It should be clear, concise, and provide sufficient context for the user to understand what input is expected.

      Message Guidelines:

      • Use clear, actionable language: "Select your preferred option"
      • End with appropriate punctuation (colon for selections, question mark for questions)
      • Keep messages concise but informative
      • Consider the terminal width for longer messages

      Examples:

      • List prompt: "Choose your preferred IDE:"
      • Input prompt: "Enter your full name:"
      • Confirm prompt: "Do you want to continue?"
      • Checkbox prompt: "Select features to enable:"
      Specified by:
      message in interface BaseBuilder<T>
      Parameters:
      message - the message to display to the user (required, non-null, non-empty)
      Returns:
      this builder instance for method chaining
    • searchFunction

      public SearchBuilder<T> searchFunction(Function<String,List<T>> searchFunction)
      Description copied from interface: SearchBuilder
      Set the search function.
      Specified by:
      searchFunction in interface SearchBuilder<T>
      Parameters:
      searchFunction - the function to search items
      Returns:
      this builder
    • displayFunction

      public SearchBuilder<T> displayFunction(Function<T,String> displayFunction)
      Description copied from interface: SearchBuilder
      Set the display function.
      Specified by:
      displayFunction in interface SearchBuilder<T>
      Parameters:
      displayFunction - the function to convert items to display strings
      Returns:
      this builder
    • valueFunction

      public SearchBuilder<T> valueFunction(Function<T,String> valueFunction)
      Description copied from interface: SearchBuilder
      Set the value function.
      Specified by:
      valueFunction in interface SearchBuilder<T>
      Parameters:
      valueFunction - the function to convert items to values
      Returns:
      this builder
    • placeholder

      public SearchBuilder<T> placeholder(String placeholder)
      Description copied from interface: SearchBuilder
      Set the placeholder text.
      Specified by:
      placeholder in interface SearchBuilder<T>
      Parameters:
      placeholder - the placeholder text
      Returns:
      this builder
    • minSearchLength

      public SearchBuilder<T> minSearchLength(int minSearchLength)
      Description copied from interface: SearchBuilder
      Set the minimum search length.
      Specified by:
      minSearchLength in interface SearchBuilder<T>
      Parameters:
      minSearchLength - the minimum number of characters before searching
      Returns:
      this builder
    • maxResults

      public SearchBuilder<T> maxResults(int maxResults)
      Description copied from interface: SearchBuilder
      Set the maximum number of results.
      Specified by:
      maxResults in interface SearchBuilder<T>
      Parameters:
      maxResults - the maximum results to display
      Returns:
      this builder
    • transformer

      public SearchBuilder<T> transformer(Function<String,String> transformer)
      Description copied from interface: BaseBuilder
      Set a transformer function that modifies how the answer is displayed after submission. This does not change the actual returned value. For example, a password prompt might transform the answer to "***".
      Specified by:
      transformer in interface BaseBuilder<T>
      Parameters:
      transformer - the transformer function
      Returns:
      this builder instance for method chaining
    • filter

      public SearchBuilder<T> filter(Function<String,String> filter)
      Description copied from interface: BaseBuilder
      Set a filter function that modifies the actual returned value. This changes the value stored in the result map. For example, trimming whitespace or converting to lowercase.
      Specified by:
      filter in interface BaseBuilder<T>
      Parameters:
      filter - the filter function
      Returns:
      this builder instance for method chaining
    • addPrompt

      public PromptBuilder addPrompt()
      Description copied from interface: BaseBuilder
      Complete the configuration of this prompt and add it to the parent builder.

      This method finalizes the current prompt configuration, validates that all required fields are set, creates the prompt instance, and adds it to the parent PromptBuilder. After calling this method, you can continue adding more prompts or call PromptBuilder.build() to create the final list.

      Validation:

      This method typically validates that:

      • The prompt name is set and unique
      • The message is set and non-empty
      • Any prompt-specific requirements are met (e.g., list items are added)

      Example Usage:

      
       PromptBuilder builder = prompter.newBuilder();
      
       builder.createListPrompt()
           .name("color")
           .message("Choose a color:")
           .newItem("red").text("Red").add()
           .newItem("blue").text("Blue").add()
           .addPrompt()  // Completes this prompt and returns to builder
           .createConfirmPrompt()
           .name("confirm")
           .message("Are you sure?")
           .addPrompt(); // Completes second prompt
      
       List<Prompt> prompts = builder.build();
       
      Specified by:
      addPrompt in interface BaseBuilder<T>
      Returns:
      the parent PromptBuilder for continued prompt configuration
      See Also: