diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java index f05bcf6..19dff8e 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java @@ -52,7 +52,6 @@ import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.NumberFormat; -import com.google.gwt.user.client.Window; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java index 40dc794..df98300 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java @@ -3,7 +3,6 @@ package org.gcube.portlets.user.workspace.client.view.panels; import java.util.List; import org.gcube.portlets.user.workspace.client.AppController; -import org.gcube.portlets.user.workspace.client.ConstantsExplorer; import org.gcube.portlets.user.workspace.client.ConstantsPortlet; import org.gcube.portlets.user.workspace.client.event.SaveSmartFolderEvent; import org.gcube.portlets.user.workspace.client.event.ScopeChangeEvent; @@ -11,7 +10,6 @@ import org.gcube.portlets.user.workspace.client.event.SearchTextEvent; import org.gcube.portlets.user.workspace.client.model.ScopeModel; import org.gcube.portlets.user.workspace.client.view.GxtComboBox; import org.gcube.portlets.user.workspace.client.view.toolbars.GxtBreadcrumbPathPanel; -import org.gcube.portlets.user.workspace.client.view.toolbars.GxtToolBarItemFunctionality; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.VerticalAlignment; diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/TrashInfoContainer.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/TrashInfoContainer.java index 0e12c31..9cbbd7b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/TrashInfoContainer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/TrashInfoContainer.java @@ -17,6 +17,7 @@ import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation; import com.extjs.gxt.ui.client.Style.ButtonScale; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.IconAlign; +import com.extjs.gxt.ui.client.Style.Scroll; import com.extjs.gxt.ui.client.data.BaseModelData; import com.extjs.gxt.ui.client.dnd.GridDropTarget; import com.extjs.gxt.ui.client.event.ButtonEvent; @@ -157,6 +158,7 @@ public class TrashInfoContainer extends LayoutContainer { cp.setBodyBorder(true); cp.setLayout(new FitLayout()); cp.setButtonAlign(HorizontalAlignment.CENTER); + cp.setScrollMode(Scroll.AUTOY); add(cp); } @@ -476,4 +478,12 @@ public class TrashInfoContainer extends LayoutContainer { return store.getCount(); } + protected GroupingStore getStore() { + return store; + } + + public ContentPanel getCp() { + return cp; + } + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/WindowTrash.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/WindowTrash.java index 812a033..3981209 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/WindowTrash.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/trash/WindowTrash.java @@ -10,11 +10,18 @@ import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.store.Store; +import com.extjs.gxt.ui.client.store.StoreEvent; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; import com.extjs.gxt.ui.client.widget.Html; +import com.extjs.gxt.ui.client.widget.Label; import com.extjs.gxt.ui.client.widget.Window; import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; /** * @@ -27,7 +34,9 @@ public class WindowTrash extends Window { private List trashedFiles; private TrashInfoContainer trashContainers; + private HorizontalPanel hpItemsNumber; private static WindowTrash INSTANCE = null; + private Label labelItemsNumber = new Label(); private WindowTrash() { @@ -47,6 +56,9 @@ public class WindowTrash extends Window { return INSTANCE; } + /** + * This method is called only once + */ private void initAccounting() { setLayout(new FitLayout()); setSize(770, 400); @@ -54,6 +66,63 @@ public class WindowTrash extends Window { setMaximizable(true); this.trashContainers = new TrashInfoContainer(); add(trashContainers); + + ToolBar toolBar = new ToolBar(); + hpItemsNumber = new HorizontalPanel(); + hpItemsNumber.setStyleAttribute("margin-left", "10px"); + hpItemsNumber.setHorizontalAlign(HorizontalAlignment.CENTER); + hpItemsNumber.add(labelItemsNumber); + toolBar.add(hpItemsNumber); + + setBottomComponent(toolBar); + + addStoreListeners(); + } + + + /** + * + */ + private void addStoreListeners() { + + trashContainers.getStore().addListener(Store.Add, new Listener>(){ + + @Override + public void handleEvent(StoreEvent be) { + updateItemsNumber(storeSize()); + } + }); + + trashContainers.getStore().addListener(Store.Remove, new Listener>(){ + + @Override + public void handleEvent(StoreEvent be) { + updateItemsNumber(storeSize()); + } + }); + + trashContainers.getStore().addListener(Store.Clear, new Listener>(){ + + @Override + public void handleEvent(StoreEvent be) { + updateItemsNumber(storeSize()); + } + }); + + } + + /** + * @param size + */ + public void updateItemsNumber(int size) { + if(size<=0) + labelItemsNumber.setText("No Items"); + else if(size==1) + labelItemsNumber.setText("1 Item"); + else if(size>1) + labelItemsNumber.setText(size +" Items"); + + hpItemsNumber.layout(); } public void setWindowTitle(String title) { @@ -61,6 +130,20 @@ public class WindowTrash extends Window { } + /** + * + * @return -1 if store is null. The size otherwise + */ + private int storeSize(){ + + if(trashContainers.getStore()!=null && trashContainers.getStore().getModels()!=null){ + return trashContainers.getStore().getModels().size(); + } + + return -1; + + } + /** *