From 2788eb29ec60840efc4490e5e8a2a9ad51a43a7c Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 26 Jun 2014 13:06:10 +0000 Subject: [PATCH] enhancements on sharing with groups git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@97857 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../WorkspaceSharingWidgetEntryPoint.java | 18 +++- .../client/resources/Icons.java | 12 +++ .../client/resources/Resources.java | 15 +++ .../client/resources/sharegroup.png | Bin 0 -> 854 bytes .../client/resources/shareuser.png | Bin 0 -> 760 bytes .../multisuggest/MultiDragContact.java | 92 ++++++++++++++---- .../server/GWTWorkspaceSharingBuilder.java | 4 + .../server/WorkspaceSharingServiceImpl.java | 47 +++++++-- .../client/resources/sharegroup.png | Bin 0 -> 854 bytes .../client/resources/shareuser.png | Bin 0 -> 760 bytes 10 files changed, 160 insertions(+), 28 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png create mode 100644 src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/shareuser.png create mode 100644 src/main/resources/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png create mode 100644 src/main/resources/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/shareuser.png diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java index 34d54eb..05ab5bc 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java @@ -1,5 +1,6 @@ package org.gcube.portlets.widgets.workspacesharingwidget.client; +import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare; import org.gcube.portlets.widgets.workspacesharingwidget.shared.ACL_TYPE; import com.extjs.gxt.ui.client.widget.Window; @@ -22,8 +23,9 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint { public void onModuleLoad() { try { + - WorkspaceSharingController controller = new WorkspaceSharingController(ITEMID, true, ACL_TYPE.READ_ONLY); + /*WorkspaceSharingController controller = new WorkspaceSharingController(ITEMID, true, ACL_TYPE.READ_ONLY); final Window sharingWindow = controller.getSharingDialog(); @@ -36,6 +38,20 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint { }); RootPanel.get("workpacesharingwidget").add(openSharingWindow); + + */ + + final SmartShare smartShare = new SmartShare(false, true); + + Button openSharingWindow = new Button("Show Smart Share Window", + new ClickHandler() { + public void onClick(ClickEvent event) { + + smartShare.show(); + } + }); + + RootPanel.get("workpacesharingwidget").add(openSharingWindow); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Icons.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Icons.java index 4ba896f..d2a1cea 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Icons.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Icons.java @@ -25,5 +25,17 @@ public interface Icons extends ClientBundle { @Source("share.png") ImageResource share(); + + /** + * @return + */ + @Source("shareuser.png") + ImageResource user(); + + /** + * @return + */ + @Source("sharegroup.png") + ImageResource group(); } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Resources.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Resources.java index c89c9d1..c77f1ba 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Resources.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/Resources.java @@ -45,5 +45,20 @@ public class Resources { public static AbstractImagePrototype getIconShare() { return AbstractImagePrototype.create(ICONS.share()); } + + /** + * @return + */ + public static AbstractImagePrototype getIconUser() { + return AbstractImagePrototype.create(ICONS.user()); + } + + /** + * @return + */ + public static AbstractImagePrototype getIconGroup() { + return AbstractImagePrototype.create(ICONS.group()); + } + } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4995d374fd39c0eab1cced0be88ab96e9be734 GIT binary patch literal 854 zcmV-c1F8IpP)H_TqR~w6a>{WgNlMmEAkI1e2gef zAyEi|oJJ1}#a2zLWt5earo$XcbJIOszuir;kPaNU=R4>3anJW13V$LF6qQHQT#3u+ zcundmk``Z2M6!V9^5ia;(*(Es7O9P%2IU*r9w1p%A03~-h(sa`{un^7(eQE7I-crj z`uPjnqT*%IAqyA5VzJ=kyDq!gG_Z@bnmhzThA;RgULXnZ3@hTo5EnKV+6Ubj8TzjE zV1dD*`5c-?pje2)t*cPhpvPc;zu7)v4Wnq9qsfpjF4?J4K$fV4EIt~r4nx=c5P2m! zc7@aGwW7!v8PZae5O5v%V$|bEX(L+neJ82xl(3;QxpK)$#d;uMIY2YOgc&fsLgz~Z zyPq;q4g{|zyUYh%lYsdH-n@8%^R)&OCG_K5yu5d%=5RqSjrmIn0iO_z!20<))R!Kx zGSw7shG5A$fKRq`+JMndD6gt@72SSY%8JNinC7S2!&%8|)&R^rbal4jQbRY!sCn!k zh~1+&wPO_$ltfeeDBAUUr019G9Co|PL$F)CzpOTEeHwB?hSAdT46QYd78k;x+l*tR(&*=0wb*BZ9nI+1RS`*`*0u9U*8ZO8jMZpiP*PA z0o&*hG}oKZG{C^VY#XM0?mL>!)_cAZNJ`jCiU_LNlMxZ5$x{*UVgdgJ-YX%lV8n=$ zTP>)0{B_v)by)4Y9}|T?K^JC)k00MD_lt@pss|EB_<`Pz?I%&b2fgnNxO&epS)uC_ z64W*G61@x@94go#y?FD?UNHhU9(u* z8x;iVnVo>~ub5NRd;mN@BulvH7_zf)QZR#dlat6kiC>phm9X0iXD8tDD~P3w~f{&0AnbAIQ4ITZd~A`(YvMtoQj z7Ln-}TnlzR$GUHm?M)J%(8JV<%P}IF=}t)7kh4ykfk>4yAet>!OpcG@`ikT?Qa84obrn`4o}lQU-b1X*gJ#4_(P-(7X%ADFco-Jwngh zX)M~ULnNbuP(YY05h zC#v^mBTkzGgvF5z)Z|A<|CZn~0}C^l85>61-_XQ*_>-Xx&#Nj)>TNq;A%-%Q zP!$9q2|6AZ;I;y`NmO6xbhke@?j-8#m19g4h-FXiTrAJh6>kMpX(2rzBezbV>*YHf zI@dkob300jY77MwNj4TejH+r>Wk@)5=9-~$jzIu#!1O@~i$sfxVGTxIG)(QMEv`>} z<;3dq0}`3c?H|-N%_>SL1kbU!u`3!D2a8jK<^bSIff_0qgQG9zLD39&uNUUlIt#1s z&!!*{wI~|8YlO;}rCJmsAM7j-ULXv9GM^U_3dD6)M0000 configs = new ArrayList(); - - ColumnConfig column = new ColumnConfig(); - column.setId(InfoContactModel.FULLNAME); - column.setHeader("Name"); - column.setWidth(200); - configs.add(column); - -// column = new ColumnConfig(); -// column.setId("symbol"); -// column.setHeader("Symbol"); -// column.setWidth(100); -// configs.add(column); - - return new ColumnModel(configs); + + ColumnConfig icon = new ColumnConfig("Icon", "", 25); + configs.add(icon); + + ColumnConfig columnConfigDisplayName = new ColumnConfig(InfoContactModel.FULLNAME, "Name", 150); + configs.add(columnConfigDisplayName); + + ColumnConfig type = new ColumnConfig(InfoContactModel.ISGROUP, "Type", 50); + configs.add(type); + + GridCellRenderer iconRender = new GridCellRenderer() { + @Override + public String render(InfoContactModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore store, Grid grid) { + Boolean isGroup = (Boolean) model.get(property); + if(isGroup){ + return Resources.getIconGroup().getHTML(); + }else{ + return Resources.getIconUser().getHTML(); + } + } + }; + + icon.setRenderer(iconRender); + + GridCellRenderer typeRender = new GridCellRenderer() { + @Override + public String render(InfoContactModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore store, Grid grid) { + Boolean isGroup = (Boolean) model.get(property); + String color = "#0F4FA8"; + String val = ""; + if(isGroup){ + val = "Group"; + color = "#05316D"; + return "" + val + ""; + }else{ + val = "User"; + return "" + val + ""; + } + } + }; + + type.setRenderer(typeRender); + return new ColumnModel(configs); } public void addSourceContacts(List listContact){ @@ -302,4 +340,24 @@ public class MultiDragContact extends Dialog { return storeTarget.getModels(); } + private void setGropUserStoreSorter(ListStore store){ + + // Sorting files + store.setStoreSorter(new StoreSorter() { + + @Override + public int compare(Store store, InfoContactModel m1, InfoContactModel m2, String property) { + boolean m1Group = m1.isGroup(); + boolean m2Group = m2.isGroup(); + + if (m1Group && !m2Group) { + return -1; + } else if (!m1Group && m2Group) { + return 1; + } + + return m1.getName().compareToIgnoreCase(m2.getName()); + } + }); + } } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java index 05ea681..7eb04f1 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java @@ -87,6 +87,10 @@ public class GWTWorkspaceSharingBuilder { hashTestUser.put("valentina.marioli", new InfoContactModel( "valentina.marioli", "valentina.marioli", "Valentina Marioli", false)); + + hashTestUser.put("devVRE", new InfoContactModel( + "devVRE", "devVRE", + "devVRE", true)); // hashTestUser.put(WsUtil.TEST_USER.toString(), // new InfoContactModel( diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java index debbabe..898d08c 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java @@ -33,6 +33,7 @@ import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel import org.gcube.portlets.widgets.workspacesharingwidget.shared.SessionExpiredException; import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL; import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VO; +import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VRE; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.UserManager; import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager; @@ -89,8 +90,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements GWTWorkspaceSharingBuilder builder = getGWTWorkspaceBuilder(); if(isTestMode()){ - logger.info("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS"); - logger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS"); + logger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS AND GROUPS"); List listContactsModel = new ArrayList(); // //TEST USERS listContactsModel.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri", false)); @@ -102,6 +102,10 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante", false)); listContactsModel.add(new InfoContactModel("valentina.marioli", "valentina.marioli", "Valentina Marioli", false)); listContactsModel.add(new InfoContactModel("leonardo.candela", "leonardo.candela", "Leonardo Candela", false)); + + listContactsModel.add(new InfoContactModel("devVRE", "devVRE", "devVRE", true)); + +// listContactsModel.addAll(getFakeGroups()); return listContactsModel; } @@ -135,7 +139,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements listContactsModel.addAll(builder.buildGXTListContactsModelFromVOs(lsVOs)); } - + logger.info("Get all contacts returning a list having size: "+listContactsModel.size()); return listContactsModel; } catch (Exception e) { @@ -453,20 +457,43 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements return listContacts; } + + + /** + * DEBUG + * @return + */ + private List getFakeGroups(){ + + List listContactsModel = new ArrayList(); + + PortalContext context = PortalContext.getConfiguration(); + System.out.println("context.getInfrastructureName(): "+context.getInfrastructureName()); +// System.out.println("context.getVOsAsString(): "+context.getVOsAsString()); + List vos = WsUtil.getVresFromInfrastructure(context.getInfrastructureName(), "devsec"); + + for (VO vo : vos) { + System.out.println("vo name "+vo.getName()); + + for (VRE vre : vo.getVres()) { + System.out.println("vre name "+vre.getName()); + listContactsModel.add(new InfoContactModel(vre.getName(), vre.getName(), vre.getName(), true)); + } + } + + return listContactsModel; + } public static void main(String[] args) { -// WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl(); + WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl(); try { - PortalContext context = PortalContext.getConfiguration(); - System.out.println("context.getInfrastructureName(): "+context.getInfrastructureName()); - System.out.println("context.getVOsAsString(): "+context.getVOsAsString()); - List vos = WsUtil.getVresFromInfrastructure(context.getInfrastructureName(), context.getVOsAsString()); + List groups = impl.getFakeGroups(); - for (VO vo : vos) { - System.out.println("vo name "+vo.getName()); + for (InfoContactModel infoContactModel : groups) { + System.out.println(infoContactModel); } } catch (Exception e) { diff --git a/src/main/resources/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png b/src/main/resources/org/gcube/portlets/widgets/workspacesharingwidget/client/resources/sharegroup.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4995d374fd39c0eab1cced0be88ab96e9be734 GIT binary patch literal 854 zcmV-c1F8IpP)H_TqR~w6a>{WgNlMmEAkI1e2gef zAyEi|oJJ1}#a2zLWt5earo$XcbJIOszuir;kPaNU=R4>3anJW13V$LF6qQHQT#3u+ zcundmk``Z2M6!V9^5ia;(*(Es7O9P%2IU*r9w1p%A03~-h(sa`{un^7(eQE7I-crj z`uPjnqT*%IAqyA5VzJ=kyDq!gG_Z@bnmhzThA;RgULXnZ3@hTo5EnKV+6Ubj8TzjE zV1dD*`5c-?pje2)t*cPhpvPc;zu7)v4Wnq9qsfpjF4?J4K$fV4EIt~r4nx=c5P2m! zc7@aGwW7!v8PZae5O5v%V$|bEX(L+neJ82xl(3;QxpK)$#d;uMIY2YOgc&fsLgz~Z zyPq;q4g{|zyUYh%lYsdH-n@8%^R)&OCG_K5yu5d%=5RqSjrmIn0iO_z!20<))R!Kx zGSw7shG5A$fKRq`+JMndD6gt@72SSY%8JNinC7S2!&%8|)&R^rbal4jQbRY!sCn!k zh~1+&wPO_$ltfeeDBAUUr019G9Co|PL$F)CzpOTEeHwB?hSAdT46QYd78k;x+l*tR(&*=0wb*BZ9nI+1RS`*`*0u9U*8ZO8jMZpiP*PA z0o&*hG}oKZG{C^VY#XM0?mL>!)_cAZNJ`jCiU_LNlMxZ5$x{*UVgdgJ-YX%lV8n=$ zTP>)0{B_v)by)4Y9}|T?K^JC)k00MD_lt@pss|EB_<`Pz?I%&b2fgnNxO&epS)uC_ z64W*G61@x@94go#y?FD?UNHhU9(u* z8x;iVnVo>~ub5NRd;mN@BulvH7_zf)QZR#dlat6kiC>phm9X0iXD8tDD~P3w~f{&0AnbAIQ4ITZd~A`(YvMtoQj z7Ln-}TnlzR$GUHm?M)J%(8JV<%P}IF=}t)7kh4ykfk>4yAet>!OpcG@`ikT?Qa84obrn`4o}lQU-b1X*gJ#4_(P-(7X%ADFco-Jwngh zX)M~ULnNbuP(YY05h zC#v^mBTkzGgvF5z)Z|A<|CZn~0}C^l85>61-_XQ*_>-Xx&#Nj)>TNq;A%-%Q zP!$9q2|6AZ;I;y`NmO6xbhke@?j-8#m19g4h-FXiTrAJh6>kMpX(2rzBezbV>*YHf zI@dkob300jY77MwNj4TejH+r>Wk@)5=9-~$jzIu#!1O@~i$sfxVGTxIG)(QMEv`>} z<;3dq0}`3c?H|-N%_>SL1kbU!u`3!D2a8jK<^bSIff_0qgQG9zLD39&uNUUlIt#1s z&!!*{wI~|8YlO;}rCJmsAM7j-ULXv9GM^U_3dD6)M0000