def fill(self):
        #
        # fill Hardware Objects tree
        #
        _instance = HardwareRepository()

        self.treeNodes = {}
        self.itemStates = {}

        self.hardwareObjectsTree.clear()
        self.root = QListViewItem(self.hardwareObjectsTree, 'Hardware Repository')

        if _instance is not None:
            filesgen = _instance.getHardwareRepositoryFiles()
            
            for name, file in filesgen:
                #
                # every name begins with '/'
                #
                dirnames = name.split('/')[1:]
                objectName = dirnames.pop()

                parent = self.root
                for dir in dirnames:
                    if dir in self.treeNodes:
                        parent = self.treeNodes[dir]
                    else:
                        newNode =  QListViewItem(parent, dir)
                        self.treeNodes[dir] = newNode
                        newNode.setPixmap(0, QPixmap(self.folderClosed))
                        parent = newNode

                newLeaf = QCheckListItem(parent, objectName, QCheckListItem.CheckBox)
                newLeaf.setText(2, name)
                    
                if _instance.hasHardwareObject(name):
                    newLeaf.setOn(True)
                    self.itemStates[name] = True

                    if _instance.isDevice(name):
                        newLeaf.setText(1, 'Device')
                    elif _instance.isEquipment(name):
                        newLeaf.setText(1, 'Equipment')
                    elif _instance.isProcedure(name):
                        newLeaf.setText(1, 'Procedure')
                else:
                    self.itemStates[name] = False
                        
            self.root.setOpen(True)
            self.hardwareObjectsTree.sort()
        else:
            logging.getLogger('HWR').error('Cannot get Hardware Repository files : not connected to server.')