Состояние блокировки

Экземпляры блоков обладают рядом свойств, которые определяют их поведение для пользователя. Хотя эти свойства можно задать в определении блока, чаще всего они используются для ограничения блоков в рабочей области с целью отражения определённых свойств предметной области (например, наличие только одного события «старт») или для фокусировки усилий пользователя (например, руководство).

Удаляемое состояние

block.setDeletable(false);

Если установлено значение false , пользователь не сможет удалить блок. В редактируемом рабочем пространстве блоки по умолчанию можно удалять.

Любой блок (даже неудаляемый) можно удалить программно:

block.dispose();

Редактируемое состояние

block.setEditable(false);

Если установлено значение false , пользователь не сможет изменять поля блока (например, раскрывающиеся списки и текстовые поля). Блоки по умолчанию доступны для редактирования в редактируемой рабочей области.

Подвижное состояние

block.setMovable(false);

Если установлено значение false , пользователь не сможет перемещать блок напрямую. Неподвижный блок, являющийся дочерним блоком другого блока, невозможно отсоединить от него, хотя он будет перемещаться вместе со своим родителем при перемещении последнего. В редактируемой рабочей области блоки по умолчанию являются перемещаемыми.

Любой блок (даже неподвижный) можно перемещать программно, как только он оказывается на рабочем пространстве.

block.moveBy(dx, dy)

Начальная позиция блока в рабочей области по умолчанию — (0, 0) .

Блок данных

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

Данные — это необязательная и произвольная строка, прикрепляемая к блоку. При сериализации блока строка данных сериализуется вместе с ним. Это также относится к случаям дублирования или копирования/вставки блока.

Часто это используется для связи блока с внешним ресурсом.

При сериализации в JSON данные сохраняются как свойство верхнего уровня в блоке:

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

При сериализации в XML (старая система сериализации icebox) строка данных сохраняется в теге <data></data> внутри блока:

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