Types de widgets

Bien qu’un Widget soit assez simple pour ce qui concerne son interface, il existe cependant plusieurs implémentations intermédiaires pour faciliter la définition du widget.

Classe

Description

AbstractWidget

Implemente getProperties(), getSources(), et titleProperty()

SingleTypeWidget1

Ajoute des propriétés pour les widgets qui ne prennent en charge qu’un seul type de données

AnnotatedWidget

Ajoute des implémentations par défaut pour getName() et getDataTypes() pour les widgets avec une annotation @Description

SingleSourceWidget

Pour les widgets avec une seule source (par défaut, les widgets prennent en charge plusieurs sources)

SimpleAnnotatedWidget1<T>

Combine SingleTypeWidget1, AnnotatedWidget, et SingleSourceWidget

Il existe également deux annotations pour aider à définir les widgets:

Nom

Description

@ParametrizedController

Permet aux widgets d’être des contrôleurs FXML pour les vues JavaFX définies via FXML

@Description

Permet de définir le nom et les types de données pris en charge sur une seule ligne

AbstractWidget

Cette classe implémente getProperties(), getSources(), addSource(), et titleProperty(). Elle définit également une méthode exportProperties(Property<?>...) de telle sorte que les sous-classes peuvent facilement ajouter des propriétés widget personnalisé, ou des propriétés pour les composants JavaFX dans le widget. La plupart des widgets dans le plugin de base l’utilisent.

SingleTypeWidget

Un type de widget qui ne prend en charge qu’un seul type de données. Cette interface est paramétrée et possède des méthodes pour définir ou obtenir les données, ainsi qu’une méthode pour obtenir le type de données (unique) du widget.

AnnotatedWidget

This interface implements getDataTypes() and getName() by looking at the @Description annotation on the implementing class. This requires the annotation to be present, or the widget will not be able to be loaded and used.

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

SingleSourceWidget

Un type de widget qui n’utilise qu’une seule source.

SimpleAnnotatedWidget

Une combinaison de SingleTypeWidget<T>, AnnotatedWidget, et SingleSourceWidget. La plupart des widgets du plugin de base proviennent de cette classe. Cela a également un champ protected appelé dataOrDefault qui permet aux sous-classes d’utiliser une valeur de données par défaut si le widget n’a pas de source, ou si la source fournit null.

@ParametrizedController

Cette annotation peut être placée sur une classe de widget pour indiquer au shuffleboard qu’il s’agit d’un contrôleur FXML pour une vue JavaFX définie via FXML. L’annotation prend un seul paramètre qui définit où le fichier FXML par rapport à la classe sur laquelle il est placé. Par exemple, un widget dans le répertoire src/main/java/com/acme qui est un contrôleur FXML pour un fichier FXML dans src/main/resources/com/acme peut utiliser l’annotation comme

@ParametrizedController("MyWidget.fxml")

ou comme

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

@Description

Cela permet aux widgets d’avoir leur nom et les types de données pris en charge définis par une seule annotation, lorsqu’ils sont utilisés avec AnnotatedWidget.