// Path: src/main/java/net/nextpulse/jadmin/ColumnType.java
// public enum ColumnType {
//   string,
//   text,
//   integer,
//   bool,
//   datetime;
// 
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/helpers/Tuple2.java
// public class Tuple2<L, R> {
//   private final L left;
//   private final R right;
// 
//   public Tuple2(L left, R right) {
//     this.left = left;
//     this.right = right;
//   }
// 
//   public L getLeft() {
//     return left;
//   }
// 
//   public R getRight() {
//     return right;
//   }
// }


import net.nextpulse.jadmin.ColumnType;
import net.nextpulse.jadmin.helpers.Tuple2;
import java.util.List;
import java.util.function.Supplier;
package net.nextpulse.jadmin.elements;



/**
 * Element that will be rendered as a select tag in the template. Contains a supplier that will be called to
 * retrieve the list of values to show as option tags.
 *
 * @author yholkamp
 */
public class FormSelect extends FormInput {
  private final Supplier<List<Tuple2<String, String>>> optionProducer;

  /**
   * @param name           internal name of this column
   * @param columnType     type of this column
   * @param optionSupplier method that provides a list of tuples of (value, name) that will be used as selectable options.
   */
// Path: src/main/java/net/nextpulse/jadmin/ColumnType.java
// public enum ColumnType {
//   string,
//   text,
//   integer,
//   bool,
//   datetime;
// 
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/helpers/Tuple2.java
// public class Tuple2<L, R> {
//   private final L left;
//   private final R right;
// 
//   public Tuple2(L left, R right) {
//     this.left = left;
//     this.right = right;
//   }
// 
//   public L getLeft() {
//     return left;
//   }
// 
//   public R getRight() {
//     return right;
//   }
// }


// Path: src/main/java/net/nextpulse/jadmin/elements/FormSelect.java
import net.nextpulse.jadmin.ColumnType;
import net.nextpulse.jadmin.helpers.Tuple2;
import java.util.List;
import java.util.function.Supplier;

package net.nextpulse.jadmin.elements;



/**
 * Element that will be rendered as a select tag in the template. Contains a supplier that will be called to
 * retrieve the list of values to show as option tags.
 *
 * @author yholkamp
 */
public class FormSelect extends FormInput {
  private final Supplier<List<Tuple2<String, String>>> optionProducer;

  /**
   * @param name           internal name of this column
   * @param columnType     type of this column
   * @param optionSupplier method that provides a list of tuples of (value, name) that will be used as selectable options.
   */
  public FormSelect(String name, ColumnType columnType, Supplier<List<Tuple2<String, String>>> optionSupplier) {