protected void onRangeChanged()

in client/src/main/java/org/apache/hupa/client/ui/ContactsListView.java [141:191]


        protected void onRangeChanged(HasData<LabelNode> display) {

            final int start = display.getVisibleRange().getStart();

            rf.fetchFoldersRequest().fetch(null, Boolean.TRUE).fire(new Receiver<List<ImapFolder>>() {

                private String INTENTS = "&nbsp;&nbsp;&nbsp;&nbsp;";

                @Override
                public void onSuccess(List<ImapFolder> response) {
                    folderNodes.clear();
                    if (response == null || response.size() == 0) {
                        updateRowCount(-1, true);
                    } else {
                        for (ImapFolder folder : response) {
                            fillCellList(folderNodes, folder, LabelNode.ROOT, "");
                        }
                        updateRowData(start, folderNodes);
                    }
                }

                private void fillCellList(List<LabelNode> folderNodes, ImapFolder curFolder, LabelNode parent,
                        String intents) {
                    LabelNode labelNode = new LabelNode();
                    labelNode.setFolder(curFolder);
                    labelNode.setName(curFolder.getName());
                    labelNode.setNameForDisplay(intents + curFolder.getName());
                    labelNode.setParent(parent);
                    labelNode.setPath(curFolder.getFullName());
                    folderNodes.add(labelNode);
                    if("inbox".equalsIgnoreCase(curFolder.getName())){
                        if(selectionModel.getSelectedObject() == null){
                            selectionModel.setSelected(labelNode, true);
                        }
                    }
                    if (curFolder.getHasChildren()) {
                        for (ImapFolder subFolder : curFolder.getChildren()) {
                            fillCellList(folderNodes, subFolder, labelNode, intents + INTENTS);
                        }
                    }
                }

                @Override
                public void onFailure(ServerFailure error) {
                    if (error.isFatal()) {
                        throw new RuntimeException(error.getMessage());
                    }
                }

            });
        }