>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Свой tooltip в tree http://forum.mozilla-russia.org/viewtopic.php?id=39380 |
formatC'vt > 03-09-2009 11:31:49 |
Очень хочется сделать свои tooltip'ы для каждой строки дерева (treerow или treecell, не важно) вместо стандартного поведения (значения label если все на экране не уместилось) |
Infocatcher > 03-09-2009 20:09:49 |
Можно посмотреть, как сделан список элементов страницы в Adblock Plus. |
formatC'vt > 04-09-2009 15:08:27 |
Infocatcher пишет
Спасибо, разобрался. Ниже пример, единственное "но" - периодически возникает ошибка "tree1.boxObject.getCellAt is not a function", но это не критично. Выделить код Код:<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <tooltip id="treeTooltip" noautohide="true" onpopupshowing="return showTreeTooltip(event)"/> <tree id="tree1" flex="1" hidecolumnpicker="true" seltype="single" > <treecols> <treecol id="name1" flex="1" label="Name" /> <treecol id="sex1" flex="1" label="Sex" /> <treecol id="color1" flex="1" label="Color" /> <treecol id="attr1" flex="1" label="Attribute" /> </treecols> <treechildren tooltip="treeTooltip"> <treeitem> <treerow mytooltip="Pear row tooltip"> <treecell label="Pearl" /> <treecell label="Female" /> <treecell label="Gray" /> <treecell label="Frumpy" /> </treerow> </treeitem> <treeitem> <treerow mytooltip="Aramis row tooltip"> <treecell label="Aramis" /> <treecell label="Male" /> <treecell label="Black" /> <treecell label="Cute" /> </treerow> </treeitem> <treeitem> <treerow mytooltip="Yakima row tooltip"> <treecell label="Yakima" /> <treecell label="Male" /> <treecell label="Holstein" /> <treecell label="Handsome" /> </treerow> </treeitem> </treechildren> </tree> <script type="text/javascript"> <![CDATA[ function showTreeTooltip(event) { try { let col = {}; let row = {}; let childElement = {}; var tree1 = document.getElementById('tree1'); var treeTooltip = document.getElementById('treeTooltip'); tree1.boxObject.getCellAt(event.clientX, event.clientY, row, col, childElement); if (row.value>-1) { var treecell1 = tree1.view.getItemAtIndex(row.value).firstChild; treeTooltip.setAttribute('label',treecell1.getAttribute('mytooltip')+'\nX: '+event.clientX+'\nY: '+event.clientY+'\nrow: '+row.value+'\ncol: '+col.value.id); return true; } else { return false; } } catch (e) { //alert(e.message); return false; } } ]]> </script> </window> |
Infocatcher > 04-09-2009 16:56:37 |
А если делать 04-09-2009 17:01:08 |
formatC'vt > 04-09-2009 17:16:04 |
В случае с treeBoxObject вроде лучше. По крайней мере эта ошибка не появляется и функциональность сохранилась. Спасибо. |