Xpoint
   [напомнить пароль]

Групповые операции на дереве

Метки: [без меток]
2006-10-03 20:08:25 [обр] sndralex(2/2)[досье]

Здравствуйте,

У меня есть дерево построенное с помощью шаблона. Какой наилучший способ подсчитать сумму значений в одной колонке дерева? Желательно чтобы сумма считалась сама по мере изменения содержимого дерева, или после ...builder.rebuild() на дереве. Думал может какой обсервер может мне помочь, но не нашел какой.

Спасибо.

спустя 58 минут [обр] Владимир Палант(434/4445)[досье]
Считать все же придется самому. Вам поможет nsIRDFObserver.
спустя 5 часов [обр] sndralex(2/2)[досье]
Да я с радостью сам посчитаю, мне только нужно событие. И еще мне надо считать содержимое дерева, которое уже отфильтровано разными рулами, а nsIRDFObserver, насколько я понимаю - обзирает изменения в RDF. Вот можно ли как то отловить изменения в tree builder?
спустя 10 часов [обр] Владимир Палант(434/4445)[досье]

Ну что же, "мы выбираем трудный путь"...

TreeView вызывает методы invalidate...() в BoxObject, когда что-либо меняется. Вы можете создать собственный BoxObject, который будет перенаправлять все вызовы в изначальный BoxObject (tree.treeBoxObject). Присвойте его дереву и тогда перехватывайте вызовы, как вам захочется. Вот только вряд ли это будет просто...

спустя 21 минуту [обр] sndralex(2/2)[досье]
А какой тогда простой путь? По нажатию на кнопку [calculate] - пробежаться по дереву и подсчитать?
спустя 35 минут [обр] Владимир Палант(434/4445)[досье]
Простой путь — считать при изменениях в RDF и в тот же RDF и записывать.
спустя 3 часа 17 минут [обр] sndralex(2/2)[досье]

Так дело в том, что RDF у меня не меняется. Меняются критерии отбора данных из RDF в дерево.
Т.е. у меня на дереве несколко rule-ов, Т.е. мне тогда надо полностью продублировать эти критерии отбора в РДФ-обзервере, а не хочется.
Подскажите, как можно пройтись по списку записей дерева? Дерево построено с флагом dont-build-content.

Спасибо.

спустя 7 минут [обр] Владимир Палант(434/4445)[досье]
Пройтись можно только по видимым записям (dont-build-content все-таки). Узнаем tree.view.rowCount и проходимся по всем строчкам: tree.builderView.getResourceAtIndex(i). Если хочется не ссылку на RDF, а именно отображаемые данные, то tree.view.getCellText(i, col).
спустя 43 минуты [обр] sndralex(2/2)[досье]
Спасибо
Powered by POEM™ Engine Copyright © 2002-2005