État du bloc

Les instances de bloc possèdent un certain nombre de propriétés qui configurent leur comportement vis-à-vis de l'utilisateur. Bien qu'ils puissent être définis dans la définition du bloc, ils sont plus couramment utilisés pour contraindre les blocs dans l'espace de travail afin de refléter certaines propriétés du domaine (par exemple, il n'y a qu'un seul événement de début) ou pour concentrer les efforts de l'utilisateur (par exemple, un tutoriel).

État supprimable

block.setDeletable(false);

Si ce paramètre est défini sur false, l'utilisateur ne pourra pas supprimer le bloc. Par défaut, les blocs peuvent être supprimés dans un espace de travail modifiable.

Tout bloc (même ceux qui ne peuvent pas être supprimés) peut être supprimé de manière programmatique :

block.dispose();

État modifiable

block.setEditable(false);

Si la valeur est définie sur false, l'utilisateur ne pourra pas modifier les champs du bloc (par exemple, les menus déroulants et les champs de saisie de texte). Les blocs sont modifiables par défaut dans un espace de travail modifiable.

État "Movable"

block.setMovable(false);

Si la valeur est définie sur false, l'utilisateur ne pourra pas déplacer le bloc directement. Un bloc immobile enfant d'un autre bloc ne peut pas être dissocié de ce bloc, mais il se déplacera avec son parent si celui-ci est déplacé. Par défaut, les blocs sont déplaçables dans un espace de travail modifiable.

Tout bloc (même ceux qui ne peuvent pas être déplacés) peut être déplacé par programmation une fois qu'il se trouve dans un espace de travail.

block.moveBy(dx, dy)

La position de départ d'un bloc dans un espace de travail est définie par défaut sur (0, 0).

Bloquer des données

block.data = '16dcb3a4-bd39-11e4-8dfc-aa07a5b093db';

Les données sont une chaîne facultative et arbitraire associée au bloc. Lorsque le bloc est sérialisé, la chaîne de données l'est également. Cela inclut les cas où le bloc est dupliqué ou copié/collé.

Cette option est souvent utilisée pour associer un bloc à une ressource externe.

Lorsqu'elles sont sérialisées au format JSON, les données sont stockées en tant que propriété de premier niveau dans le bloc :

{
  "type": "my_block",
  "data": "16dcb3a4-bd39-11e4-8dfc-aa07a5b093db",
  // etc..
}

Lorsqu'elle est sérialisée au format XML (l'ancien système de sérialisation iceboxed), la chaîne de données est stockée dans une balise <data></data> au sein du bloc :

<block type="my_block">
  <data>16dcb3a4-bd39-11e4-8dfc-aa07a5b093db</data>
  <!-- etc... -->
</block>