public void build(
      final List<FolderItem> segments,
      final FolderItem file,
      final ParameterizedCommand<FolderItem> onPathClick,
      final Dropdown... headers) {

    build(headers);

    if (segments != null) {
      for (final FolderItem activeItem : segments) {
        breadcrumbs.add(
            new NavLink(activeItem.getFileName()) {
              {
                setStyleName(NavigatorResources.INSTANCE.css().directory());
                addClickHandler(
                    new ClickHandler() {
                      @Override
                      public void onClick(ClickEvent event) {
                        onPathClick.execute(activeItem);
                      }
                    });
              }
            });
      }
      if (file != null) {
        breadcrumbs.add(
            new ListItem(new InlineLabel(file.getFileName())) {
              {
                setStyleName(NavigatorResources.INSTANCE.css().directory());
              }
            });
      }
    }
  }
 private void setResourceToLoad(final FolderItem folderItem) {
   if (folderItem.getType().equals(FolderItemType.FILE) && folderItem.getItem() instanceof Path) {
     if (((Path) folderItem.getItem()).getFileName().indexOf(CURRENT_RESOURCE) > -1) {
       _item = folderItem.getItem();
     }
   }
 }
 @Override
 public void itemSelected(final FolderItem folderItem) {
   final Object _item = folderItem.getItem();
   if (_item == null) {
     return;
   }
   if (folderItem.getType().equals(FolderItemType.FILE) && _item instanceof Path) {
     placeManager.goTo((Path) _item);
   } else {
     activeFolderItemSelected(folderItem);
   }
 }
  @Override
  public void setItems(final FolderListing folderListing) {
    itemsContainer.clear();
    sortedFolderItems.clear();
    for (final FolderItem content : folderListing.getContent()) {
      if (!content.getType().equals(FolderItemType.FOLDER)) {
        sortedFolderItems.add(content);
      }
    }

    if (!sortedFolderItems.isEmpty()) {
      final Map<ClientResourceType, Collection<FolderItem>> resourceTypeGroups =
          classifier.group(sortedFolderItems);
      final TreeMap<ClientResourceType, Collection<FolderItem>> sortedResourceTypeGroups =
          new TreeMap<ClientResourceType, Collection<FolderItem>>(
              Sorters.RESOURCE_TYPE_GROUP_SORTER);
      sortedResourceTypeGroups.putAll(resourceTypeGroups);

      final Iterator<Map.Entry<ClientResourceType, Collection<FolderItem>>> itr =
          sortedResourceTypeGroups.entrySet().iterator();
      while (itr.hasNext()) {
        final Map.Entry<ClientResourceType, Collection<FolderItem>> e = itr.next();

        final CollapseTrigger collapseTrigger = makeTriggerWidget(e.getKey());

        final Collapse collapse = new Collapse();
        collapse.setExistTrigger(true);
        collapse.setId(getCollapseId(e.getKey()));
        final NavList itemsNavList = new NavList();
        collapse.add(itemsNavList);
        for (FolderItem folderItem : e.getValue()) {
          if (folderItem.getItem() != null) {
            setResourceToLoad(folderItem);
          }
        }
        collapse.setDefaultOpen(false);

        itemsContainer.add(collapseTrigger);
        itemsContainer.add(collapse);
        if (itr.hasNext()) {
          itemsContainer.add(new Divider());
        }
      }
      loadResourceSelected();

    } else {
      itemsContainer.add(new Label(ProjectExplorerConstants.INSTANCE.noItemsExist()));
    }
  }
  void fireContextChangeEvent() {
    if (activeFolderItem == null) {
      contextChangedEvent.fire(
          new ProjectContextChangeEvent(activeOrganizationalUnit, activeRepository, activeProject));
      return;
    }

    if (activeFolderItem.getItem() instanceof Package) {
      setActivePackage((Package) activeFolderItem.getItem());
      contextChangedEvent.fire(
          new ProjectContextChangeEvent(
              activeOrganizationalUnit, activeRepository, activeProject, activePackage));
    } else if (activeFolderItem.getType().equals(FolderItemType.FOLDER)) {
      explorerService.call(getResolvePackageRemoteCallback()).resolvePackage(activeFolderItem);
    }
  }
  boolean setupActiveFolderAndPackage(final ProjectExplorerContent content) {
    if (Utils.hasFolderItemChanged(content.getFolderListing().getItem(), activeFolderItem)) {
      setActiveFolderItem(content.getFolderListing().getItem());
      if (activeFolderItem != null
          && activeFolderItem.getItem() != null
          && activeFolderItem.getItem() instanceof Package) {
        setActivePackage((Package) activeFolderItem.getItem());
      } else if (activeFolderItem == null || activeFolderItem.getItem() == null) {
        setActivePackage(null);
      }

      return true;
    } else {
      return false;
    }
  }
  private void fireContextChangeEvent() {
    if (activeFolderItem == null) {
      contextChangedEvent.fire(
          new ProjectContextChangeEvent(activeOrganizationalUnit, activeRepository, activeProject));
      return;
    }

    if (activeFolderItem.getItem() instanceof Package) {
      activePackage = (Package) activeFolderItem.getItem();
      contextChangedEvent.fire(
          new ProjectContextChangeEvent(
              activeOrganizationalUnit, activeRepository, activeProject, activePackage));
    } else if (activeFolderItem.getType().equals(FolderItemType.FOLDER)) {
      explorerService
          .call(
              new RemoteCallback<Package>() {
                @Override
                public void callback(final Package pkg) {
                  if (Utils.hasPackageChanged(pkg, activePackage)) {
                    activePackage = pkg;
                    contextChangedEvent.fire(
                        new ProjectContextChangeEvent(
                            activeOrganizationalUnit,
                            activeRepository,
                            activeProject,
                            activePackage));
                  } else {
                    contextChangedEvent.fire(
                        new ProjectContextChangeEvent(
                            activeOrganizationalUnit, activeRepository, activeProject));
                  }
                }
              })
          .resolvePackage(activeFolderItem);
    }
  }
  private IsWidget makeItemNavLink(
      final ClientResourceType resourceType, final FolderItem folderItem) {
    String fileName = folderItem.getFileName();
    if (!(resourceType instanceof AnyResourceType)) {
      fileName = Utils.getBaseFileName(fileName);
    }
    fileName = fileName.replaceAll(" ", "\u00a0");
    final NavLink navLink = new NavLink(fileName);
    navLink.addClickHandler(
        new ClickHandler() {

          @Override
          public void onClick(ClickEvent event) {
            Window.alert("click en el boton del resurso");
            presenter.itemSelected(folderItem);
          }
        });
    return navLink;
  }