2546: Endow Workspace Resources Explorer with filtering and display features

Task-Url: https://support.d4science.org/issues/2546

Added code to change properties and filters on-the-fly

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@128437 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-05-03 15:35:06 +00:00
parent 3a75f96768
commit 19c9117877
4 changed files with 157 additions and 81 deletions

View File

@ -59,6 +59,10 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
private ScrollPanel southPanel = new ScrollPanel();
private String folderId;
private String folderName;
private List<String> showProperties;
private FilterCriteria filterCriteria;
/**
* Instantiates a new workspace folder explorer select panel.
@ -123,6 +127,8 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
private void initExplorer(String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes, List<String> showProperties, FilterCriteria filter) throws Exception{
this.folderId = folderId;
this.folderName = folderName;
this.showProperties = showProperties;
this.filterCriteria = filter;
bindEvents();
wsExplorer = new WorkspaceExplorer(eventBus, filter, showableTypes, selectableTypes, showProperties, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME, DISPLAY_FIELD.CREATION_DATE});
Item item = new Item(folderId, folderName, true);
@ -399,4 +405,82 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
}
return false;
}
/**
* Gets the filter criteria.
*
* @return the filterCriteria
*/
public FilterCriteria getFilterCriteria() {
return filterCriteria;
}
/**
* Updates filter criteria.
*
* @param filterCriteria the filter criteria
*/
public void updatesFilterCriteria(FilterCriteria filterCriteria) {
this.filterCriteria = filterCriteria;
wsExplorer.setNewFilterCriteria(filterCriteria);
try {
wsExplorer.loadFolder(wsExplorer.getDisplayingFolderItem(), true);
}
catch (Exception e) {
wsExplorer.setAlert("Sorry, an error occurred during filter update", AlertType.ERROR);
}
}
/**
* Updates filter criteria.
*
* @param showProperties the show properties
*/
public void updatesShowProperties(List<String> showProperties) {
this.showProperties = showProperties;
wsExplorer.setNewShowProperties(showProperties);
try {
wsExplorer.loadFolder(wsExplorer.getDisplayingFolderItem(), true);
}
catch (Exception e) {
wsExplorer.setAlert("Sorry, an error occurred during show properties update", AlertType.ERROR);
}
}
/**
* Updates filters and properties.
*
* @param filterCriteria the filter criteria
* @param showProperties the show properties
*/
public void updatesFiltersAndProperties(FilterCriteria filterCriteria, List<String> showProperties) {
this.filterCriteria = filterCriteria;
this.showProperties = showProperties;
wsExplorer.setNewFilterCriteria(filterCriteria);
wsExplorer.setNewShowProperties(showProperties);
try {
wsExplorer.loadFolder(wsExplorer.getDisplayingFolderItem(), true);
}
catch (Exception e) {
wsExplorer.setAlert("Sorry, an error occurred during filters or properties update", AlertType.ERROR);
}
}
/**
* Gets the show properties.
*
* @return the showProperties
*/
public List<String> getShowProperties() {
return showProperties;
}
}

View File

@ -58,7 +58,15 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
private DISPLAY_FIELD[] displayFields;
private HandlerManager eventBus;
private Item displayingFolderItem;
/**
* Instantiates a new workspace explorer.
*
* @param eventBus the event bus
* @param showableTypes the showable types
* @param selectableTypes the selectable types
*/
private WorkspaceExplorer(HandlerManager eventBus, ItemType[] showableTypes, ItemType[] selectableTypes){
this.eventBus = eventBus;
setShowableTypes(showableTypes);
@ -162,15 +170,27 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
public void onSuccess(Item item) {
eventBus.fireEvent(new RootLoadedEvent(item));
updateExplorer(item.getChildren());
setDisplayingFolderItem(item);
}
});
}
/**
* Sets the displaying folder item.
*
* @param item the new displaying folder item
*/
private void setDisplayingFolderItem(Item item) {
this.displayingFolderItem = item;
}
/**
* Load folder.
*
* @param item the item
* @param loadGcubeProperties the load gcube properties
* @throws Exception the exception
*/
public void loadFolder(final Item item, boolean loadGcubeProperties) throws Exception {
@ -211,6 +231,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
item.setName(result.getName());
updateExplorer(result.getChildren());
setDisplayingFolderItem(result);
}
});
}
@ -246,8 +268,10 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
}
@Override
public void onSuccess(Item items) {
updateExplorer(items.getChildren());
public void onSuccess(Item item) {
updateExplorer(item.getChildren());
setDisplayingFolderItem(item);
}
});
}
@ -270,7 +294,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
/**
* Adds the item to explorer.
*
* @param items the items
* @param item the item
*/
public void addItemToExplorer(Item item){
GWT.log("workspace explorer add item.."+item);
@ -372,4 +396,35 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
this.showableTypes.clear();
if (showableTypes!=null) for (ItemType type:showableTypes) this.showableTypes.add(type);
}
/**
* Sets the new filter criteria.
*
* @param filterCriteria the new new filter criteria
*/
public void setNewFilterCriteria(FilterCriteria filterCriteria) {
this.filterCriteria = filterCriteria;
}
/**
* Gets the displaying folder item.
*
* @return the displayingFolderItem
*/
public Item getDisplayingFolderItem() {
return displayingFolderItem;
}
/**
* Sets the new show properties.
*
* @param displayProperties the new new show properties
*/
public void setNewShowProperties(List<String> displayProperties) {
this.itTables.setDisplayProperties(displayProperties);
itTables.reInitColumnsTable();
}
}

View File

@ -219,7 +219,7 @@ public class ItemsTable<T extends Item> extends AbstractItemsCellTable<T> implem
Item extensionItem;
String value = null;
if(object instanceof Item){
extensionItem = (Item) object;
extensionItem = object;
value = extensionItem.getGcubeProperties().get(column);
}
return value==null?"":value;
@ -241,8 +241,8 @@ public class ItemsTable<T extends Item> extends AbstractItemsCellTable<T> implem
return 1;
Item e1 = (Item) o1;
Item e2 = (Item) o2;
Item e1 = o1;
Item e2 = o2;
String v1 = e1.getGcubeProperties().get(column);
String v2 = e2.getGcubeProperties().get(column);
@ -286,6 +286,18 @@ public class ItemsTable<T extends Item> extends AbstractItemsCellTable<T> implem
this.displayProperties = properties;
}
/**
* Reset columns table.
*/
public void reInitColumnsTable(){
int count = cellTable.getColumnCount();
for(int i=0;i<count;i++){
cellTable.removeColumn(0);
}
initTable(null, null);
}
/**
* Gets the display fields.
*

View File

@ -1,75 +0,0 @@
///**
// *
// */
//package org.gcube.portlets.widgets.wsexplorer.shared;
//
//import java.io.Serializable;
//import java.util.HashMap;
//import java.util.Map;
//
//
///**
// * The Class ExtensionItem.
// *
// * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
// * Apr 28, 2016
// */
//public class ExtensionItem extends Item implements Serializable{
//
// /**
// *
// */
// private static final long serialVersionUID = -4697549410044199051L;
//
// private Map<String, String> gcubeProperties;
//
// /**
// * Instantiates a new extension item.
// *
// * @param id the id
// * @param name the name
// * @param isFolder the is folder
// * @param gcubeProperties the gcube properties
// */
// public ExtensionItem(String id, String name, boolean isFolder, Map<String, String> gcubeProperties) {
// super(id,name,isFolder);
// this.gcubeProperties = new HashMap<String, String>(1);
// this.gcubeProperties = gcubeProperties;
// }
//
//
// /**
// * Gets the gcube properties.
// *
// * @return the gcubeProperties
// */
// public Map<String, String> getGcubeProperties() {
//
// return gcubeProperties;
// }
//
//
// /**
// * Sets the gcube properties.
// *
// * @param gcubeProperties the gcubeProperties to set
// */
// public void setGcubeProperties(Map<String, String> gcubeProperties) {
//
// this.gcubeProperties = gcubeProperties;
// }
//
//
// /* (non-Javadoc)
// * @see java.lang.Object#toString()
// */
// @Override
// public String toString() {
//
// StringBuilder builder = new StringBuilder();
// builder.append("ExtensionItem [gcubeProperties=");
// builder.append(gcubeProperties);
// builder.append("]");
// return builder.toString();
// }
//}