diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java index 52a2da7..e597cb3 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java @@ -472,25 +472,55 @@ public class AppController implements SubscriberInterface { if(isSelected){ - ArrayList listParents = appContrExplorer.getListParentsByIdentifier(target.getIdentifier()); + FileModel lastParent = this.wsPortlet.getToolBarPath().getLastParent(); + + boolean parentChanged = lastParent.getIdentifier().compareTo(target.getParentFileModel().getIdentifier())==0?false:true; + + //RELOAD breadcrumb only if last parent id is changed + if(parentChanged) + loadBreadcrumbById(target.getIdentifier()); - setPathInView(listParents); //Set file path in tab panel on current item selected +// if(!(lastParent.getIdentifier().compareTo(target.getIdentifier())==0)) +// loadBreadcrumbById(target.getIdentifier()); + +// List listParents = appContrExplorer.getListParentsByIdentifierFromTree(target.getIdentifier()); - if(isSearchActive){ //COMMENTED 30-01-12 - syncronization only if search is active - - wsPortlet.getSearchAndFilterContainer().setSearchActive(true); - - appContrExplorer.searching(true); - - appContrExplorer.findItemAndSelectItemInTree(target.getIdentifier()); - } +// if(isSearchActive){ //COMMENTED 30-01-12 - syncronization only if search is active +// +// wsPortlet.getSearchAndFilterContainer().setSearchActive(true); +// +// appContrExplorer.searching(true); +// +// appContrExplorer.findItemAndSelectItemInTree(target.getIdentifier()); +// } } } + + private void loadBreadcrumbById(String itemIdentifier){ + + System.out.println("Reload Breadcrumb..."); + + AppControllerExplorer.rpcWorkspaceService.getListParentsByItemIdentifier(itemIdentifier, new AsyncCallback>() { - private void setPathInView(ArrayList parents){ + @Override + public void onFailure(Throwable caught) { + GWT.log("failure get list parents by item identifier "+caught); + + } + + @Override + public void onSuccess(List result) { + setPathInView(result); //Set file path in tab panel on current item selected + + } + }); + + } + + private void setPathInView(List parents){ //this.wsPortlet.getBasicTabContainer().setLabelPath(path); //Set path in tab view panel @@ -649,7 +679,7 @@ public class AppController implements SubscriberInterface { } @Override - public void selectedItem(FileModel item, ArrayList parents) { + public void selectedItem(FileModel item, List parents) { FileModel currentFolder = wsPortlet.getGridGroupContainer().getCurrentFolderView(); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtPathPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtPathPanel.java index ffca941..e2bb518 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtPathPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtPathPanel.java @@ -2,6 +2,7 @@ package org.gcube.portlets.user.workspace.client.view.toolbars; import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import org.gcube.portlets.user.workspace.client.AppController; import org.gcube.portlets.user.workspace.client.event.PathElementSelectedEvent; @@ -27,10 +28,12 @@ public class GxtPathPanel { private HorizontalPanel toolBar = new HorizontalPanel(); private Text txtPath = new Text("PATH "); - private LinkedHashMap hashFileModel; // Ordered-HashMap + private LinkedHashMap hashFileModel = new LinkedHashMap();// Ordered-HashMap boolean rootAdded = false; WidgetComponent hardDiskIcon = new WidgetComponent(new Image (Resources.getImageHardDisk())); + private FileModel lastParent; + public GxtPathPanel() { toolBar = new HorizontalPanel(); toolBar.setHeight("25px"); @@ -41,7 +44,7 @@ public class GxtPathPanel { return toolBar; } - public void setPath(ArrayList parents) { + public void setPath(List parents) { initToolbarWithoutFakeRoot(); @@ -90,11 +93,26 @@ public class GxtPathPanel { toolBar.add(new WidgetComponent(new Image(Resources.getImagePathSeparator()))); } + + lastParent = parents.get(parents.size()-1); toolBar.add(listButtons.get(size - 1)); // Add last element toolBar.layout(true); } } + + public boolean breadcrumbIsEmpty(){ + + if(hashFileModel.size() == 0) + return true; + + return false; + + } + + public FileModel getLastParent(){ + return lastParent; + } private void initToolbar() { toolBar.removeAll();