Estado de bloqueo

Las instancias de bloques tienen varias propiedades que configuran su comportamiento para el usuario. Si bien se pueden establecer en la definición del bloque, se usan con mayor frecuencia para restringir los bloques en el espacio de trabajo y reflejar ciertas propiedades del dominio (p.ej., hay exactamente un evento "start") o enfocar el esfuerzo del usuario (p.ej., un instructivo).

Estado borrable

block.setDeletable(false);

Cuando se establece en false, el usuario no podrá borrar el bloqueo. Los bloques se pueden borrar de forma predeterminada en un espacio de trabajo editable.

Cualquier bloque (incluso los que no se pueden borrar) se puede borrar de forma programática:

block.dispose();

Estado editable

block.setEditable(false);

Cuando se establece en false, el usuario no podrá cambiar los campos del bloque (p.ej., menús desplegables y entradas de texto). Los bloques se establecen de forma predeterminada como editables en un espacio de trabajo editable.

Estado de movimiento

block.setMovable(false);

Cuando se establece en false, el usuario no podrá mover el bloque directamente. Un bloque fijo que es hijo de otro bloque no se puede desconectar de ese bloque, aunque se moverá con su bloque principal si este se mueve. Los bloques se pueden mover de forma predeterminada en un espacio de trabajo editable.

Cualquier bloque (incluso los que no se pueden mover) se puede mover de forma programática una vez que está en un espacio de trabajo.

block.moveBy(dx, dy)

La posición inicial de un bloque en un espacio de trabajo se establece de forma predeterminada en (0, 0).

Bloquear datos

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

Los datos son una cadena opcional y arbitraria que se adjunta al bloque. Cuando se serializa el bloque, la cadena de datos se serializa con él. Esto incluye cuando se duplica o se copia y pega el bloque.

A menudo, se usa para asociar un bloque con un recurso externo.

Cuando se serializan en JSON, los datos se almacenan como una propiedad de nivel superior en el bloque:

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

Cuando se serializa en XML (el antiguo sistema de serialización en Icebox), la cadena de datos se almacena en una etiqueta <data></data> dentro del bloque:

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