FilePickerControl

class FilePickerControl<T : Any>(label: String?, val mode: FilePickerMode, required: Boolean? = false, dependencies: Map<String, ControlDependency<*>>? = null, actions: List<ControlAction<T>>? = null) : Control<T>

A control for picking a file through the system dialog or drag and drop.

The generic parameter T depends on the chosen FilePickerMode:

  • String for PATH_STRING

  • ByteArray for CONTENT_BYTES

Constructors

Link copied to clipboard
constructor(label: String?, mode: FilePickerMode, required: Boolean? = false, dependencies: Map<String, ControlDependency<*>>? = null, actions: List<ControlAction<T>>? = null)

Properties

Link copied to clipboard
private val actions: List<ControlAction<T>>?
Link copied to clipboard
Link copied to clipboard
protected lateinit var errorManager: ErrorManager
Link copied to clipboard
protected lateinit var formActionTrigger: FormActionTrigger
Link copied to clipboard
protected lateinit var formSchema: FormSchema
Link copied to clipboard
protected lateinit var formState: FormState
Link copied to clipboard
protected val hasStandardLayout: Boolean
Link copied to clipboard
internal val label: String?
Link copied to clipboard
private val mode: FilePickerMode
Link copied to clipboard
internal val required: Boolean?
Link copied to clipboard
Link copied to clipboard
protected open val validator: ControlValidator<T>

Validator responsible for validating this control. Every control type provides its own implementation (e.g. StringValidator). Empty implementation by default

Functions

Link copied to clipboard
protected open override fun acceptsValue(value: Any): Boolean

Whether this control can hold value, i.e. whether it is a value of type T (and for a choice from fixed options - one of them). Checked for initial values and in updateControl. Controls without a value of their own accept nothing: a section, a button, and a repeatable list, which manages its rows itself. Containers check the shape of their initial data in setInitValue.

Link copied to clipboard
internal open fun childContexts(controlContext: ControlContext): List<Pair<ControlContext, Control<*>>>

Children of this control in the current form state, each with a context in which this control is the parent: a section has one set, a repeatable - one per row. The engine walks down the tree through them when initializing, validating and collecting data.

Link copied to clipboard
protected open fun convertToResult(controlContext: ControlContext, state: ControlState<*>): ControlResultData

Converts the control's internal state (ControlState) into a result to save (ControlResultData). Can be overridden for custom conversions (e.g. in RepeatableControl).

Link copied to clipboard
internal open fun copyInitToValue(value: T): T

Makes a deep copy of the initial value for the current value. Matters for mutable types (e.g. List), so that changes to value do not affect initValue.

Link copied to clipboard
@Composable
protected open override fun Display(controlContext: ControlContext, controlState: ControlState<T>, isRequired: Boolean)

Renders the control's own UI. Every concrete control type (e.g. StringControl) implements it.

Link copied to clipboard
@Composable
protected fun DisplayFieldErrors(controlContext: ControlContext)

Renders this control's validation errors.

Link copied to clipboard
protected fun executeActions(controlContext: ControlContext, newValue: T?, scope: CoroutineScope, payload: Any? = null)

Runs the actions defined for this control, usually after a value change.

Link copied to clipboard
internal fun executeInitActions(controlContext: ControlContext, currentValue: T?, scope: CoroutineScope)
Link copied to clipboard
internal fun getResult(controlContext: ControlContext, state: ControlState<*>): ControlResultData

Returns the control's result (current and initial value) for further processing. If the control is invisible, its currentValue is set to null.

Link copied to clipboard
internal open fun initializeControlLifecycle(formState: FormState, formSchema: FormSchema, errorManager: ErrorManager, formActionTrigger: FormActionTrigger)

Sets the references to the form components. This is the second stage of a control's initialization, called by FormHandler. Gives access to the global state, the schema and the error manager. Also lets particular controls run additional initialization steps they need

Link copied to clipboard
protected fun mismatch(value: Any): String

Describes value as not fitting this control, for exception messages.

Link copied to clipboard
internal open fun registerChildrenInGlobalMap(controlContext: ControlContext): Map<String, Control<*>>

Registers the children in the global map Holds references to the controls defined inside a control that has its own

Link copied to clipboard
internal fun rejectionOf(value: Any): String?

Why the control does not accept value, or null when it does.

Link copied to clipboard
@Composable
internal fun Render(controlContext: ControlContext, controlState: ControlState<*>)

Renders the control in the user interface. This is the entry point for FormView. Handles visibility.

Link copied to clipboard
internal open fun setInitValue(controlContext: ControlContext, value: Any?): ControlState<T>

Sets the control's initial value and creates its state (ControlState).

Link copied to clipboard
internal fun validateControl(controlContext: ControlContext, state: ControlState<*>)

Runs this control's validation with its validator.