From 2348899ed8863b4668023b439f2454b629227653 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Wed, 2 Dec 2015 17:36:58 +0000 Subject: [PATCH] 1657: StatMan AIgorithms Importer - Create a widget to sopport Project Explorer Task-Url: https://support.d4science.org/issues/1657 Added new class WorkspaceFolderExplorerSelectPanel Updated pom version at 1.1.0 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@120573 82a268e6-3cf1-43bd-a215-b396298e98cf --- .project | 11 + .settings/com.google.gdt.eclipse.core.prefs | 5 + .settings/com.google.gwt.eclipse.core.prefs | 2 + pom.xml | 3 +- .../wsexplorer/client/WorkspaceExplorer.java | 16 - .../client/WorkspaceExplorerController.java | 10 +- .../client/WorkspaceExplorerEntryPoint.java | 32 ++ .../client/WorkspaceExplorerPanel.java | 1 + .../WorkspaceFolderExplorerSelectPanel.java | 301 ++++++++++++++++++ .../client/view/WorkspaceExplorer.java | 91 ++++-- .../view/grid/AbstractItemsCellTable.java | 2 +- .../client/view/grid/ItemsTable.java | 143 +++++---- .../widgets/wsexplorer/shared/Item.java | 29 +- 13 files changed, 532 insertions(+), 114 deletions(-) create mode 100644 .settings/com.google.gdt.eclipse.core.prefs create mode 100644 .settings/com.google.gwt.eclipse.core.prefs delete mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorer.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceFolderExplorerSelectPanel.java diff --git a/.project b/.project index 7c03797..420627c 100644 --- a/.project +++ b/.project @@ -30,6 +30,16 @@ + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + org.eclipse.jem.workbench.JavaEMFNature @@ -38,5 +48,6 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature org.eclipse.wst.jsdt.core.jsNature + com.google.gwt.eclipse.core.gwtNature diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..022104b --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= +lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/workspace-explorer/target +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..b69cc21 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +entryPointModules=org.gcube.portlets.widgets.wsexplorer.WorkspaceExplorer diff --git a/pom.xml b/pom.xml index 42af76a..5784459 100644 --- a/pom.xml +++ b/pom.xml @@ -10,8 +10,7 @@ 4.0.0 org.gcube.portlets.widgets workspace-explorer - jar - 1.0.0-SNAPSHOT + 1.1.0-SNAPSHOT gCube Workspace Explorer gCube Workspace Explorer widget allows to navigate (gcube) user workspace diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorer.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorer.java deleted file mode 100644 index 6663f5e..0000000 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorer.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.gcube.portlets.widgets.wsexplorer.client; - - -import com.google.gwt.core.client.EntryPoint; - -/** - * Entry point classes define onModuleLoad(). - */ -public class WorkspaceExplorer implements EntryPoint { - - /** - * This is the entry point method. - */ - public void onModuleLoad() { - } -} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java index e461806..5e5c7e2 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java @@ -97,9 +97,13 @@ public class WorkspaceExplorerController implements EventHandler { public void onLoadFolder(LoadFolderEvent loadFolderEvent) { if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){ - wsExplorer.loadFolder(loadFolderEvent.getTargetItem()); - loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true); - clearMoreInfo(); + try { + wsExplorer.loadFolder(loadFolderEvent.getTargetItem()); + loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true); + clearMoreInfo(); + } catch (Exception e) { + GWT.log(e.getMessage()); + } } } }); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java new file mode 100644 index 0000000..b262086 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java @@ -0,0 +1,32 @@ +package org.gcube.portlets.widgets.wsexplorer.client; + +import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer; +import org.gcube.portlets.widgets.wsexplorer.shared.Item; +import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.user.client.ui.RootPanel; + +/** + * Entry point classes define onModuleLoad(). + */ +public class WorkspaceExplorerEntryPoint implements EntryPoint { + + /** + * This is the entry point method. + */ + public void onModuleLoad() { + + WorkspaceExplorer wsExplorer = new WorkspaceExplorer(ItemType.values(), ItemType.values()); + + Item item = new Item("9d031962-4678-4e6b-a687-2be532b8e974", "D&D", true); + + RootPanel.get("workspace_explorer").add(wsExplorer.getPanel()); + try { + wsExplorer.loadFolder(item); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java index f8e1780..9c5cd29 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java @@ -36,6 +36,7 @@ public class WorkspaceExplorerPanel extends DockPanel{ ensureDebugId("WorkspaceNavigatorPanel"); add(breadcrumbs, DockPanel.NORTH); + southPanel.ensureDebugId("SouthPanelWEP"); add(southPanel, DockPanel.SOUTH); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceFolderExplorerSelectPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceFolderExplorerSelectPanel.java new file mode 100644 index 0000000..7ef80d7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceFolderExplorerSelectPanel.java @@ -0,0 +1,301 @@ +/** + * + */ +package org.gcube.portlets.widgets.wsexplorer.client.select; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.widgets.wsexplorer.client.Util; +import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants; +import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; +import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent; +import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEventHandler; +import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener; +import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener; +import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer; +import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD; +import org.gcube.portlets.widgets.wsexplorer.shared.Item; +import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; + +import com.github.gwtbootstrap.client.ui.Alert; +import com.github.gwtbootstrap.client.ui.Button; +import com.github.gwtbootstrap.client.ui.constants.AlertType; +import com.github.gwtbootstrap.client.ui.constants.ButtonType; +import com.google.gwt.core.shared.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.ScrollPanel; +import com.google.gwt.user.client.ui.VerticalPanel; + + + +/** + * The Class WorkspaceExplorerSelectPanel. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jul 28, 2015 + */ +public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{ + + private WorkspaceFolderExplorerSelectPanel INSTANCE = this; + private boolean isSelect = false; + private String captionTxt; + private Alert alertConfirm; +// private WorkspaceExplorerController controller; + private List listeners = new ArrayList(); + private VerticalPanel mainVP = new VerticalPanel(); + private HorizontalPanel footerHP = new HorizontalPanel(); + private WorkspaceExplorer wsExplorer; + + + /** + * Instantiates a new workspace folder explorer select panel. + * + * @param folderId the folder id + * @throws Exception + */ + public WorkspaceFolderExplorerSelectPanel(String folderId, String folderName) throws Exception { + initExplorer(folderId, folderName, ItemType.values(), ItemType.values()); + } + + private void initExplorer(String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{ + bindEvents(); + wsExplorer = new WorkspaceExplorer(showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME}); + Item item = new Item(folderId, folderName, true); + wsExplorer.loadFolder(item); + initPanel(""); + + } + + /** + * Instantiates a new workspace explorer select panel. + * + * @param captionTxt the caption txt + * @param showOnlyFolders the show only folders + * @throws Exception + */ + public WorkspaceFolderExplorerSelectPanel(String folderId, boolean showOnlyFolders) throws Exception { + + if(showOnlyFolders){ + ItemType[] itemsType = new ItemType[1]; + itemsType[0] = ItemType.FOLDER; + initExplorer(folderId, "", itemsType, itemsType); + }else{ + initExplorer(folderId, "", ItemType.values(), ItemType.values()); + } + } + + + /** + * Bind events. + */ + private void bindEvents(){ + WorkspaceExplorerController.eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() { + + @Override + public void onClick(final ClickItemEvent clickItemEvent) { + isSelect = false; + Item item = wsExplorer.getItemSelected(); + + //Return if item is not selectable + if(!itemIsSelectable(item)){ + notifyNotValidSelection(); + return; + } + + notifySelectedItem(wsExplorer.getItemSelected()); + isSelect = true; + } + }); + } + + @Override + public void onResize() { + super.onResize(); + GWT.log("on Resize..."); + adjustSize(); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.Widget#onLoad() + */ + @Override + protected void onLoad() { + super.onLoad(); + GWT.log("on Load..."); +// adjustSize(); + adjustSize(); + } + + private void adjustSize(){ + if(this.getParent()!=null && this.getParent().getElement()!=null) + Util.adjustSize(this.getParent().getElement(), wsExplorer.getPanel(), 85); + } + + + /** + * Inits the panel. + * + * @param captionTxt the caption txt is the tool-tip + */ + private void initPanel(String captionTxt) { + this.captionTxt = captionTxt; + if(this.captionTxt!=null && !this.captionTxt.isEmpty()) + setTitle(this.captionTxt); + + setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px"); + setAlertConfirm("", false, null); + mainVP.add(wsExplorer.getPanel()); + mainVP.add(footerHP); + add(mainVP); + } + + + /** + * Sets the alert confirm. + * + * @param html the html + * @param show the show + * @param item the item + */ + private void setAlertConfirm(String html, boolean show, final Item item){ + try{ + footerHP.remove(alertConfirm); + }catch(Exception e){ + //silent + } + + alertConfirm = new Alert(); + alertConfirm.setText(html); + alertConfirm.setVisible(show); + alertConfirm.setClose(true); + alertConfirm.setType(AlertType.INFO); + + Button yes = new Button("Yes"); + yes.setType(ButtonType.LINK); + yes.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + if(item!=null){ + isSelect = true; + notifySelectedItem(item); + } + } + }); + + Button no = new Button("No"); + no.setType(ButtonType.LINK); + no.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + alertConfirm.close(); + } + }); + alertConfirm.add(yes); + alertConfirm.add(no); + footerHP.insert(alertConfirm,0); + } + /** + * Notify selected item. + * + * @param selected the selected + */ + private void notifySelectedItem(Item selected){ + + for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) { + worskpaceExplorerNotificationListener.onSelectedItem(selected); + } + } + + /** + * Notify aborted. + */ + private void notifyAborted(){ + + for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) { + worskpaceExplorerNotificationListener.onAborted(); + } + } + + + /** + * Notify not valid selection. + */ + private void notifyNotValidSelection(){ + + for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) { + worskpaceExplorerNotificationListener.onNotValidSelection(); + } + } + + /** + * Notify failed. + * + * @param t the t + */ + @SuppressWarnings("unused") + private void notifyFailed(Throwable t){ + + for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) { + worskpaceExplorerNotificationListener.onFailed(t); + } + } + + /** + * Gets the caption txt. + * + * @return the captionTxt + */ + public String getCaptionTxt() { + return captionTxt; + } + + /** + * Checks if is valid hide. + * + * @return the isValidHide + */ + public boolean isValidHide() { + return isSelect; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener) + */ + @Override + public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) { + if(handler!=null) + listeners.add(handler); + } + + /* (non-Javadoc) + * @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener) + */ + @Override + public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) { + if(handler!=null){ + if(listeners.contains(handler)) + listeners.remove(handler); + } + } + + /** + * Item is selectable. + * + * @param item the item + * @return true, if successful + */ + public boolean itemIsSelectable(Item item){ + GWT.log("Selectable type: "+wsExplorer.getSelectableTypes()); + GWT.log("item: "+item); + if (item!=null){ + boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType()); + return (selectable)?true:false; + } + return false; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java index bfba557..77338e7 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java @@ -8,6 +8,7 @@ import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import org.gcube.portlets.widgets.wsexplorer.client.event.RootLoadedEvent; import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources; import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable; +import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD; import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; @@ -48,13 +49,11 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ protected Alert alert = new Alert(); protected List selectableTypes = new ArrayList(); protected List showableTypes = new ArrayList(); -// protected List allowedMimeTypes = new ArrayList(); -// protected List allowedFileExtensions = new ArrayList(); -// protected Map requiredProperties = new HashMap(); protected FilterCriteria filterCriteria = null; protected boolean showEmptyFolders = true; protected ScrollPanel explorerPanel; private ItemsTable itTables; + private DISPLAY_FIELD[] displayFields; /** * Instantiates a new workspace explorer. @@ -62,11 +61,11 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ * @param showableTypes the showable types * @param selectableTypes the selectable types */ - public WorkspaceExplorer(ItemType[] showableTypes, ItemType[] selectableTypes) { + public WorkspaceExplorer(ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) { setShowableTypes(showableTypes); setSelectableTypes(selectableTypes); + itTables = new ItemsTable(true, fields); explorerPanel = new ScrollPanel(); - } @@ -77,8 +76,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ * @param showableTypes the showable types * @param selectableTypes the selectable types */ - public WorkspaceExplorer(FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes) { - this(showableTypes, selectableTypes); + public WorkspaceExplorer(FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) { + this(showableTypes, selectableTypes, fields); this.filterCriteria = filterCriteria; } @@ -141,43 +140,51 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ } /** - * Load the Workspace Tree. + * Load folder. * * @param item the item + * @throws Exception the exception */ - public void loadFolder(Item item) { + public void loadFolder(final Item item) throws Exception { GWT.log("loading folder data"); setLoading(); - if(item.isFolder()){ - // we make a copy of showable types - List showableTypesParam = new ArrayList(showableTypes); + if(!item.isFolder()) + throw new Exception("Item is not a folder"); + + if(item.getId()==null || item.getId().isEmpty()) + throw new Exception("Item id is null or empty"); + + // we make a copy of showable types + List showableTypesParam = new ArrayList(showableTypes); - // we get sure that folders are displayed - for (ItemType folder : Util.FOLDERS) { - if (!showableTypesParam.contains(folder)) - showableTypesParam.add(folder); - } + // we get sure that folders are displayed + for (ItemType folder : Util.FOLDERS) { + if (!showableTypesParam.contains(folder)) + showableTypesParam.add(folder); + } - boolean purgeEmpyFolders = !showEmptyFolders; + boolean purgeEmpyFolders = !showEmptyFolders; // FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties, allowedFileExtensions); - GWT.log("loading workspace tree from server"); - WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback() { + GWT.log("loading workspace folder by item id from server: "+item.getId()); + WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - Window.alert(caught.getMessage()); - setAlert(caught.getMessage(), AlertType.ERROR); - GWT.log("Error loading workspace folder from server",caught); - } + @Override + public void onFailure(Throwable caught) { + Window.alert(caught.getMessage()); + setAlert(caught.getMessage(), AlertType.ERROR); + GWT.log("Error loading workspace folder from server",caught); + } - @Override - public void onSuccess(Item result) { - updateExplorer(result.getChildren()); - } - }); - } + @Override + public void onSuccess(Item result) { + if(item.getName()==null || item.getName().isEmpty()) + item.setName(result.getName()); + + updateExplorer(result.getChildren()); + } + }); } /** @@ -225,7 +232,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ private void updateExplorer(ArrayList items){ GWT.log("workspace explorer updating.."); explorerPanel.clear(); - itTables = new ItemsTable(true); +// itTables = new ItemsTable(true, displayFields); itTables.addItems(items); explorerPanel.add(itTables.getCellTable()); GWT.log("workspace explorer updated"); @@ -240,6 +247,24 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ return explorerPanel; } + + /** + * @return the displayFields + */ + public DISPLAY_FIELD[] getDisplayFields() { + return displayFields; + } + + + /** + * @param displayFields the displayFields to set + */ + public void setDisplayFields(DISPLAY_FIELD[] displayFields) { + this.displayFields = displayFields; + itTables.setDisplayFields(displayFields); + } + + /** * Gets the it tables. * diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java index 5bec912..4105a8a 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java @@ -67,7 +67,7 @@ public abstract class AbstractItemsCellTable { cellTable.setCondensed(true); cellTable.setWidth("100%", true); dataProvider.addDataDisplay(cellTable); - initTable(cellTable, null, null); +// initTable(cellTable, null, null); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); ssm = new SingleSelectionModel(); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java index dea150a..cf9f672 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java @@ -3,6 +3,7 @@ */ package org.gcube.portlets.widgets.wsexplorer.client.view.grid; +import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.List; @@ -40,12 +41,16 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{ private TextColumn name; private TextColumn owner; private Item selectedItem = null; + public static enum DISPLAY_FIELD{ICON, NAME, OWNER}; + private List displayFields; /** * Instantiates a new items table. */ - public ItemsTable(boolean showMoreInfo) { + public ItemsTable(boolean showMoreInfo, DISPLAY_FIELD[] fields) { super(showMoreInfo); + setDisplayFields(fields); + initTable(cellTable, null, null); } /* (non-Javadoc) @@ -88,65 +93,77 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{ } }; - icon = new Column(iconResourceCell) { - @Override - public ImageResource getValue(Item dataObj) { - return Util.getImage(dataObj); - } - /* (non-Javadoc) - * @see com.google.gwt.user.cellview.client.Column#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder) - */ - @Override - public void render(Context context, Item object, SafeHtmlBuilder sb) { - super.render(context, object, sb); - - } - }; -// icon.setCellStyleNames("img-centered-clickable"); - icon.setSortable(false); - packageTable.addColumn(icon, ""); - packageTable.setColumnWidth(icon, 10.0, Unit.PCT); + if(this.displayFields.contains(DISPLAY_FIELD.ICON)){ + icon = new Column(iconResourceCell) { + @Override + public ImageResource getValue(Item dataObj) { + return Util.getImage(dataObj); + } + /* (non-Javadoc) + * @see com.google.gwt.user.cellview.client.Column#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder) + */ + @Override + public void render(Context context, Item object, SafeHtmlBuilder sb) { + super.render(context, object, sb); + + } + }; + icon.setSortable(false); + packageTable.addColumn(icon, ""); + packageTable.setColumnWidth(icon, 10.0, Unit.PCT); + } - //ARTIFACT ID - name = new TextColumn() { - @Override - public String getValue(Item object) { - return object.getName(); - } - }; - name.setSortable(true); - packageTable.addColumn(name, "Name"); - packageTable.setColumnWidth(name, 50.0, Unit.PCT); + if(this.displayFields.contains(DISPLAY_FIELD.NAME)){ + //ARTIFACT ID + name = new TextColumn() { + @Override + public String getValue(Item object) { + return object.getName(); + } + }; + name.setSortable(true); + + packageTable.addColumn(name, "Name"); + + double width = displayFields.size()>1?50:90; + packageTable.setColumnWidth(name, width, Unit.PCT); + + ListHandler nameColumnHandler = new ListHandler(dataProvider.getList()); + nameColumnHandler.setComparator(name, new Comparator() { + @Override + public int compare(Item o1, Item o2) { + return o1.getName().compareTo(o2.getName()); + } + }); + + packageTable.addColumnSortHandler(nameColumnHandler); - ListHandler nameColumnHandler = new ListHandler(dataProvider.getList()); - nameColumnHandler.setComparator(name, new Comparator() { - @Override - public int compare(Item o1, Item o2) { - return o1.getName().compareTo(o2.getName()); - } - }); + } - packageTable.addColumnSortHandler(nameColumnHandler); + if(this.displayFields.contains(DISPLAY_FIELD.OWNER)){ + + owner = new TextColumn() { + @Override + public String getValue(Item object) { + return object.getOwner() != null ? object.getOwner() : ""; + } + }; + + owner.setSortable(true); + packageTable.addColumn(owner, "Owner"); + double width = (displayFields.size()==2) ?90:40; + packageTable.setColumnWidth(owner, width, Unit.PCT); + + ListHandler ownerColumnHandler = new ListHandler(dataProvider.getList()); + ownerColumnHandler.setComparator(owner, new Comparator() { + @Override + public int compare(Item o1, Item o2) { + return o1.getOwner().compareTo(o2.getOwner()); + } + }); + packageTable.addColumnSortHandler(ownerColumnHandler); - owner = new TextColumn() { - @Override - public String getValue(Item object) { - return object.getOwner() != null ? object.getOwner() : ""; - } - }; - - owner.setSortable(true); - packageTable.addColumn(owner, "Owner"); - packageTable.setColumnWidth(owner, 40.0, Unit.PCT); - - ListHandler ownerColumnHandler = new ListHandler(dataProvider.getList()); - nameColumnHandler.setComparator(owner, new Comparator() { - @Override - public int compare(Item o1, Item o2) { - return o1.getOwner().compareTo(o2.getOwner()); - } - }); - packageTable.addColumnSortHandler(ownerColumnHandler); + } /*final SingleSelectionModel selectionModel = new SingleSelectionModel(); selectionModel.addSelectionChangeHandler(new Handler() { @@ -156,6 +173,20 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{ });*/ } + /** + * @param displayFields the dispalyFields to set + */ + public void setDisplayFields(DISPLAY_FIELD[] fields) { + this.displayFields = (fields!=null && fields.length>0)?Arrays.asList(fields):Arrays.asList(DISPLAY_FIELD.values()); + } + + /** + * @return the displayFields + */ + public List getDisplayFields() { + return displayFields; + } + public class ButtonImageCell extends ButtonCell{ @Override diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java index 8337313..883138a 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java @@ -7,15 +7,18 @@ import java.util.ArrayList; import com.google.gwt.user.client.rpc.IsSerializable; + /** * The Class Item. * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 25, 2015 + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Dec 2, 2015 */ public class Item implements IsSerializable { protected Item parent; protected String id; + protected String name; protected ItemType type; protected String path; @@ -31,6 +34,17 @@ public class Item implements IsSerializable { */ public Item() { } + /** + * Instantiates a new item. + * + * @param id the id + * @param name the name + * @param isFolder the is folder + */ + public Item(String id, String name, boolean isFolder) { + this.id = id; + this.isFolder = isFolder; + } /** @@ -46,17 +60,24 @@ public class Item implements IsSerializable { * @param isRoot the is root */ public Item(Item parent, String id, String name, ItemType type, String path, String owner, boolean isFolder, boolean isRoot) { + this(id, name, isFolder); this.parent = parent; - this.id = id; this.name = name; this.type = type; this.path = path; this.children = new ArrayList(); this.owner = owner; - this.isFolder = isFolder; this.isRoot = isRoot; } + /** + * Sets the id. + * + * @param id the id to set + */ + public void setId(String id) { + this.id = id; + } /** * Checks if is root. @@ -238,6 +259,8 @@ public class Item implements IsSerializable { } /** + * Gets the path. + * * @return the path */ public String getPath() {