Tipos de Widget

Mientras Widget es bastante sencillo en lo que respecta a la interfaz, hay varias implementaciones intermedias para facilitar definir el widget.

Clase

Descripción

AbstractWidget

Implementos getProperties(), getSources(), y titleProperty()

SingleTypeWidget <T>

Agrega propiedades para widgets que solo admiten un único tipo de datos

AnnotatedWidget

Agrega implementaciones predeterminadas para getName() y getDataTypes() para widgets con una anotación @Description

SingleSourceWidget

Para widgets con una sola fuente (de forma predeterminada, los widgets admiten múltiples fuentes)

SimpleAnnotatedWidget<T>

Combina SingleTypeWidget<T>, AnnotatedWidget, y SingleSourceWidget

También hay dos anotaciones para ayudar a definir los widgets:

Nombre

Descripción

@ParametrizedController

Permite que los widgets sean controladores FXML para vistas JavaFX definidas a través de FXML

@Description

Permite definir el nombre y los tipos de datos admitidos en una sola línea.

AbstractWidget

Esta clase implementa getProperties(), getSources(), addSource(), y titleProperty(). También define un método exportProperties(Property<?>...) para que las subclases puedan añadir fácilmente propiedades personalizadas al widget, o propiedades para los componentes JavaFX en el widget. La mayoría de los widgets en la base plugin usan esto.

SingleTypeWidget

Un tipo de widget que solo admite un tipo de datos. Esta interfaz está parametrizada y tiene métodos para configurar u obtener los datos, así como un método para obtener el tipo de datos (único) del widget.

AnnotatedWidget

Esta interfaz implementa getDataTypes() y getName() al ver la anotación @Description en la clase de implementación. Esto requiere que la anotación esté presente, o el widget no podrá cargarse ni utilizarse.

// No @Description annotation!
public class WrongImplementation implements AnnotatedWidget {
  // ...
}
@Description(name = ..., dataTypes = ...)
public class CorrectImplementation implements AnnotatedWidget {
  // ...
}

SingleSourceWidget

Un tipo de widget que solo utiliza una fuente.

SimpleAnnotatedWidget

Una combinación de `` SingleTypeWidget <T>``, `` AnnotatedWidget “” y `` SingleSourceWidget “”. La mayoría de los widgets del complemento base se extienden desde esta clase. Esto también tiene un campo protegido'' llamado ``dataOrDefault que permite que las subclases usen un valor de datos predeterminado si el widget no tiene una fuente, o si la fuente proporciona nulo.

@ParametrizedController

Esta anotación se puede colocar en una clase de widget para que permita a shuffleboard saber que es un controlador FXML para una vista JavaFX definida a través de FXML. La anotación toma un único parámetro que define dónde se encuentra el archivo FXML en relación con la clase en la que se coloca. Por ejemplo, un widget en el directorio src/main/java/com/acme que es un controlador FXML para un archivo FXML en src/main/resources/com/acme puede usar la anotación como

@ParametrizedController("MyWidget.fxml")

o como

@ParametrizedController("/com/acme/MyWidget.fxml")

@Description

Esto permite que los widgets tengan su nombre y los tipos de datos admitidos definidos por una sola anotación, cuando se utilizan junto con AnnotatedWidget.