Операция «перетащил и бросил» в дереве

Расширения интерфейса dijit.tree.model, обсуждавшиеся в предыдущем разделе, реализованы так объемно, чтобы сделать операции «перетащил и бросил» для диджита Tree более простыми и непротиворечивыми. Вообще говоря, операции «перетащил и бросил» нельзя отнести к разряду универсальных операций, поэтому готовьтесь к тому, что вам придется засучить рукава, если вы хотите в конечном итоге получить надежную реализацию любого сложного виджета, способного участвовать в операциях перетаскивания мышью. Особенно важно уделить достаточное время, чтобы сформулировать ответы на следующие общие вопросы:
• Что должно произойти в момент начала перетаскивания?
• Что должно произойти в момент сброса?
• Что должно произойти в случае отмены операции сброса?

Текущая архитектура дерева, на основе которой необходимо реализовать механизм «перетащил и бросил», влечет за собой необходимость реализации обширного набора функций, определяемых модулем dojo.dnd (представленном в главе 7), и передачу их в диджит Tree посредством атрибута dndController. Поскольку начинать такую реализацию на пустом месте достаточно сложно, версия 1.1 включает в себя модуль dijit._tree, содержащий шаблонную реализацию, из которой вы можете использовать все, что сочтете нужным.


Вы можете создать подкласс и переопределить в нем требуемые части, вы можете подмешивать в него другие классы или использовать имеющуюся реализацию в качестве примера для создания своей реализации с самого начала. Поскольку в результате ваших усилий должен получиться класс, напоминающий класс dojo.dnd.Source и способный соответствующим образом взаимодействовать с реализацией dijit.tree.model, лежащей в основе диджита Tree, то вы должны быть в хорошей спортивной форме.

Чрезвычайно важно понять, что в операцию перетаскивания вовлечены узлы DOM, а не диджиты _TreeNode. Однако чаще всего вам будут требоваться именно _TreeNode, потому что только они содержат информацию об интересующих вас данных, а узлы DOM такой информации не имеют.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
ColorPalette
Dialog
Editor
InlineEditBox
Menu

Вернуться в раздел: Dojo / Виджеты приложения