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 |
---|---|
|
Implemente |
|
Ajoute des propriétés pour les widgets qui ne prennent en charge qu’un seul type de données |
|
Ajoute des implémentations par défaut pour |
|
Pour les widgets avec une seule source (par défaut, les widgets prennent en charge plusieurs sources) |
|
Combine |
Il existe également deux annotations pour aider à définir les widgets:
Nom |
Description |
---|---|
|
Permet aux widgets d’être des contrôleurs FXML pour les vues JavaFX définies via FXML |
|
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.