diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java index bd60f92..6d5049c 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java @@ -378,5 +378,8 @@ public interface Icons extends ClientBundle { @Source("icons/pencil16.png") ImageResource pencil(); + + @Source("icons/edit16.png") + ImageResource edit(); } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java index 2253829..3de1a50 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java @@ -299,6 +299,11 @@ public class Resources { return AbstractImagePrototype.create(ICONS.pencil()); } + public static AbstractImagePrototype getIconEdit(){ + + return AbstractImagePrototype.create(ICONS.edit()); + } + public static AbstractImagePrototype getIconHistory(){ return AbstractImagePrototype.create(ICONS.history()); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/edit16.png b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/edit16.png new file mode 100644 index 0000000..13be83b Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/edit16.png differ diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogEditProperties.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogEditProperties.java index ff4a5a7..f2fef3c 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogEditProperties.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogEditProperties.java @@ -53,7 +53,7 @@ public class DialogEditProperties extends Dialog{ layout.setDefaultWidth(300); setLayout(layout); - setHeading("Set Properties: "+item.getName()); + setHeading("Edit Properties: "+item.getName()); setButtonAlign(HorizontalAlignment.RIGHT); setModal(true); // setBodyBorder(true); @@ -111,7 +111,7 @@ public class DialogEditProperties extends Dialog{ public void onSuccess(Void result) { commad.execute(); if(closeOnSuccess) - DialogEditProperties.this.hide(); + DialogEditProperties.this.hide(); } }); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetInfo.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetInfo.java index e315227..43a4846 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetInfo.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetInfo.java @@ -18,6 +18,7 @@ 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.LayoutContainer; import com.extjs.gxt.ui.client.widget.form.TextArea; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.layout.FormLayout; @@ -110,10 +111,16 @@ public class DialogGetInfo extends Dialog { hpGcubeProperties.add(labelProperties); loadGcubeItemProperties(fileModel.getIdentifier()); htmlPropertiesWidget.setHeight(heightTextArea); - htmlPropertiesWidget.setWidth("270px"); + htmlPropertiesWidget.setWidth("275px"); - Image imgProperties = Resources.getIconPencil().createImage(); //EDIT PROPERTIES - hpGcubeProperties.add(imgProperties); + LayoutContainer lc = new LayoutContainer(); + lc.addStyleName("editPermissions"); + + Image imgProperties = Resources.getIconEdit().createImage(); //EDIT PROPERTIES + imgProperties.setTitle("Edit Properties"); + lc.add(imgProperties); + + hpGcubeProperties.add(lc); final Command cmdReloadProperties = new Command() { @@ -325,8 +332,7 @@ public class DialogGetInfo extends Dialog { htmlPropertiesWidget.unmask(); GWT.log("an error occured in load properties by Id "+itemId + " "+caught.getMessage()); setVisibleGcubeProperties(true); - htmlPropertiesWidget.setHtml("Error on recovering properties"); - + htmlPropertiesWidget.setHtml("Error on recovering properties"); } @Override diff --git a/src/main/java/org/gcube/portlets/user/workspace/public/workspacetree.css b/src/main/java/org/gcube/portlets/user/workspace/public/workspacetree.css index f49ba88..63aaf9c 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/public/workspacetree.css +++ b/src/main/java/org/gcube/portlets/user/workspace/public/workspacetree.css @@ -163,4 +163,8 @@ table.userssuggest th { height: 30px; border-collapse: collapse; border-spacing: 0px; +} + +.editPermissions :hover{ + cursor: pointer; } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java index 5c8321f..9a5fa0b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java @@ -2604,7 +2604,7 @@ public class GWTWorkspaceBuilder { for (String key : properties.keySet()) { String value = properties.get(key); - + logger.trace("Getting property: ["+key+","+properties.get(key)+"]"); html+=""+key+": "; html+=""; html+=value; @@ -2630,12 +2630,18 @@ public class GWTWorkspaceBuilder { if(item instanceof GCubeItem){ GCubeItem gItem = (GCubeItem) item; try { - return gItem.getProperties().getProperties(); + if(gItem.getProperties()!=null){ + Map map = gItem.getProperties().getProperties(); + HashMap properties = new HashMap(map.size()); //TO PREVENT GWT SERIALIZATION ERROR + for (String key : map.keySet()) + properties.put(key, map.get(key)); + + return properties; + } } catch (InternalErrorException e) { logger.error("Error in server getItemProperties: ", e); return null; } - } return null; } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java index 0b35181..247cee9 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java @@ -3827,9 +3827,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(itemId); if(item instanceof GCubeItem){ + workspaceLogger.info("Adding "+properties.size()+" properties to GCubeItem: "+itemId); GCubeItem gItem = (GCubeItem) item; - for (String key : properties.keySet()) //ADD PROPERTIES - gItem.getProperties().addProperty(key, properties.get(key)); + for (String key : properties.keySet()) {//ADD PROPERTIES + workspaceLogger.trace("Adding property: ["+key+","+properties.get(key)+"]"); + gItem.getProperties().addProperty(key, properties.get(key)); + } }else throw new NoGcubeItemTypeException("The item is not a Gcube Item");