Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.
  • Форумы
  •  » Разработка
  •  » Не получается добавить двойной клик на элементе дерева, как сделать?

№111-12-2011 18:18:44

xterro
Участник
 
Группа: Members
Зарегистрирован: 02-11-2011
Сообщений: 24
UA: Firefox 4.0

Не получается добавить двойной клик на элементе дерева, как сделать?

Доброго времени суток, на форм лежит tree, нужно по двойному нажатию по ветке выполнять своё действие. Обработчик на событие вешаю динамически:

Выделить код

Код:

function makeTreeItem(text, group) {
    group = group || false;
    
    var treeitem = document.createElement("treeitem");
    var treerow = document.createElement("treerow");
    var treecell = document.createElement("treecell");
        
    treecell.setAttribute("label", text);
    treecell.setAttribute("src", "images/user.png");
    if(group) {
        treecell.setAttribute("properties", "group");
        treecell.setAttribute("src", "images/group.png");
        treeitem.setAttribute("container", "true");        
    } else {
        treeitem.addEventListener("dblclick", onTreeItemDoubleClick, false);  // доб. обработчик двойного нажатия
    }
    treeitem.appendChild(treerow);
    treerow.appendChild(treecell);
    
    return treeitem;
}

Это функция добавления элемента в дерево, но почему-то когда я кликаю по ветке, ничего не происходит :(

<tree id="treeUserList" flex="1" treelines="true">         
        <treecols>         
            <treecol id="treecolUserName" label="Users" primary="true" flex="1"/>         
        </treecols>         
    <!-- остальные элементы здесь добавляются динамически,
     поэтому тут пусто,  а так наверно можно было бы тут повешать событие
  -->
    </tree>

Сама функция формирования дерева:

Выделить код

Код:

function loadTree() {
    var tree = document.getElementById("treeUserList");
    var treechildren = document.createElement("treechildren");
        
    tree.appendChild(treechildren);
    
    var groups = [];
    var currentGroup = null;
    
    for(var i in someData) {  // данные для дерева
        var user = someData[i];
        
        for(var j in groups) {
            if(user.group == groups[i]) {
                currentGroup = groups[i];
                break;
            }
        }
        if(currentGroup) {
            // group exists, adding user
            var group = findGroup(tree, user.group);
            if(group) {
                var item = makeTreeItem(user.name);
                group.appendChild(item);
            }
        } else {
            groups = groups.concat([user.group]);
            // creating a new group 
            var group = makeTreeItem(user.group, true);
            treechildren.appendChild(group);
            // add user to group
            var child = document.createElement("treechildren");
            group.appendChild(child);
            var item = makeTreeItem(user.name);
            child.appendChild(item);
        }
        currentGroup = null;
    }
}

Отсутствует

 

№211-12-2011 19:15:58

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 9.0

Re: Не получается добавить двойной клик на элементе дерева, как сделать?

Обработчики пользовательских событий обычно вешают на treechildren.

Отсутствует

 

№311-12-2011 20:28:58

xterro
Участник
 
Группа: Members
Зарегистрирован: 02-11-2011
Сообщений: 24
UA: Firefox 4.0

Re: Не получается добавить двойной клик на элементе дерева, как сделать?

hydrolizer пишет

Обработчики пользовательских событий обычно вешают на treechildren.

На самый верхний в дереве? А как мне определять по какой веке я кликаю, т.е как мне отличать что я кликнул по ветке а не по группе(у группу установлен атрибут: container=true)?

Отсутствует

 

№412-12-2011 03:44:06

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 9.0

Re: Не получается добавить двойной клик на элементе дерева, как сделать?

xterro пишет

А как мне определять по какой веке я кликаю, т.е как мне отличать что я кликнул по ветке а не по группе

Через tree selection (nsITreeSelection), и далее обращением к нужным методам модели дерева. У вас дерево контентное, однако для него часть интерфейса модели реализуется автоматически. И, тем не менее, я все-таки советую изучить, как делаются деревья на основе своей реализации nsITreeView (здесь, здесь, здесь) - контентные деревья мало используемы из-за проблем с производительностью при достаточно большом количестве элементов, и из-за того, что своя реализация nsITreeView дает намного большую гибкость в управлении деревом и данными дерева.

Отсутствует

 

№512-12-2011 07:56:04

xterro
Участник
 
Группа: Members
Зарегистрирован: 02-11-2011
Сообщений: 24
UA: Firefox 8.0

Re: Не получается добавить двойной клик на элементе дерева, как сделать?

hydrolizer
Благодарю )

Отсутствует

 
  • Форумы
  •  » Разработка
  •  » Не получается добавить двойной клик на элементе дерева, как сделать?

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]