From 42fbe82dfcf941060491e7e6ed37e8ac4f3b7d9c Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Fri, 14 Feb 2014 14:28:35 +0000 Subject: [PATCH] enhancements on changing permission git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@91619 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/resources/icons/readonly.png | Bin 3388 -> 831 bytes .../client/resources/icons/writeall.png | Bin 3463 -> 989 bytes .../client/resources/icons/writeown.png | Bin 3103 -> 953 bytes .../client/rpc/GWTWorkspaceService.java | 2 + .../client/rpc/GWTWorkspaceServiceAsync.java | 3 + .../client/view/sharing/DialogPermission.java | 157 ------------------ .../view/sharing/DialogShareFolder.java | 62 +++++-- .../view/sharing/PanelTogglePermission.java | 26 +-- .../view/sharing/ToggleButtonPanel.java | 121 ++++++++++++++ .../server/GWTWorkspaceServiceImpl.java | 37 +++++ 10 files changed, 221 insertions(+), 187 deletions(-) delete mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogPermission.java create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/ToggleButtonPanel.java diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/readonly.png b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/readonly.png index eeb30c46486e2a3f8acdf4a27d3fd174159bc034..3ac25304e92938222e4d5cfa351adb479cee9f9c 100644 GIT binary patch literal 831 zcmV-F1Hk-=P)QzYS9#d1PwuuE~KCz5JV6yqK)+%Byv%029lypt-^wW225H66-gPW5teB}PUSR? zGxyH@IH&jAxuag2Xe3;8hj;Gbd_3oQpZ7WEV$M0*iie;rdZcP2S1{4|^deFuT4NeV zgkY4-8K_V!AAxoZI+;I+A!$r0p6Kgo`xw>LHDCrKnHRGym#&Se@vyo<8w@`rfZgwT zqkp+%4H1k3GaQ$pn6Awn-rIZtfOD(BW3T6qUcT|{KBYu181`?Vl|RH}nTEDSv`Pv= zU<`l>O{Ka>e!UcWdux1FZ%{16y>bR9i4Ku25M@4S0N7=mgcNGPN*2&KzhcHf-%bGj zYf(5_+qK#TV5kjo3q>osJ>Iym=88=?4%cY=a&Zuj|C8N3X*OiR8JDUh3D~V(Kmt@W zg}#D9k2(&U#1)#IG9|~u4f5uJg(X9Z^h1&9fMGejY}s7^xX<5k5^H#H@XpJ8Ya)uy zp6ISm3c*xUq^v|qs!*~Lw#|m2D+xob5FNleZJ5rjniDGdgPXp*X z02zmP0NwrTrksbq>)@((J*2$F^++MuLi!n_Y(Ij8jp*uEv+Tqj##J964bca2iuiWnrsbeoVS!%oe($)v zyJ}ByH^jr*=aDNXyLx-t(xt#P;AyXUj3bTO)BU@fGLZ5Pyw0LR234WJ8ZUjA&$&g@ z7HtGpL*H_xou3x+%`;zqc1Tjd1EyH&0jH8JbE#zWF|efc2dg<3hepHqo=lpp(yMUdvdb{A@JtLrGnas8{MN0U;`{w-;U;vO6IvP%yo&f*=002ov JPDHLkV1k%)f7k#3 literal 3388 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 LNkvXXu0mjfT93%_ literal 3463 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 bPk;dc1azD5kWJPK00000NkvXXu0mjf$DYRG literal 3103 zcmV+)4B+#LP)SdKyyGe!5Y(o9%@nfC?`jZ%F2A@D~ND>jIYov zrHP_o98EJu(Z*M#rfz~@D3S{ziV_R^_;#25Uib8WoOABo6|EUda)vwm|L(cxo_o&! z@%ul{S%i=Hh5MR;{Q~T32KEcEm%cNIzD$(;0Q2UF{z7y+QOAcVz>kRL6Pd(2Ghm#1 zey=gf_8UYqh_-wf0@M)gB&upUc$^tFW<1gb0ip?lfSc3~fbNE0gh5DmKGO>OfC4++*dvti1S zSRjfFYClLnid+#Jfd!VX>WU2HRQ@0oR)Q1tH)X3$`;+(KhL&d_qVJ4;2hxh$Y+X@6q!!-m zxV~JciHZg0cQ?_kL^rWj1`4o&8%KTr26BYq@5URepBE{Y6-q&%eFQO4k-fVsB8x@& zKB$PwBtThUXmMx9#;{a9fy`+!8sBML?yXjM`QD!;r(aJrW3LvNJntG)*?0h2d>atO z+KHXEnG5O=Mo>73O-)~vOGW5@Ypa=l=yPcrd3dCsS?KUZmgoo9$VR-XOd7=X?7KBj zJr2KEaH-e)LZT~~jZ9qwrmM5iG<}vyXX_}u$9X^&ch4OCDcW#);PB~lg-mG7A^;YD24K z3CF~UB)en;bP>vGS=ZJP>H|?Ee6W&eNm%)-JIv$vEaUIjxRLS+)LEySPoMi8#DqpbeKm#? z$9;%pa3PNIjp_pIq^7eghwC3H85$yI8#@fwLXjjCy@F|lOMy;1>uOJ zn>x5(+eF5z=H~O}n9jBx+`gE9mT?Fjcl0!K#+BE~fG8nA|FA|2hA5HL`HAxjNjoH9 z7cu?xb89hOlZ7yok#Ea|0+f2Y%`rz##@gDfXe88-Bmy|RVu0WjZ6y)dIp=17qQ&8w zIVTa!%DnVf_-8)R)r|*^g7X(I^-8J?D9DRg`2}8>|F~KSn4gA9ylq@TduUn5$Y%2b#O zm#^|jcBYH8azpP6;!|1+p$(nJTB)bI2U^ywH#Ln-l;P;>+Gpi=%W=Y#6-@~d^E*(T3>}_m(6oUP@r82JqL0$5+70e3w-X&O?dh$F|3)l3*zoEw+z zjjUmei+TZQ&h&tl{->AT4zE1+Ah%aTqMU9aI%?8qPKTrCoD-X$H4?^cb+|wfFpyw}sPV{0K-@L8u9->A%FppL>Nv)Iwo3wsJhSC?CCyYgRD z?`tWr{v?Lr*ct>rsqw&v7hC{c+uz{!k2#0ADdrPhUDrGkPMW_MT;lVWO;(~6drFZs zGxsrOIkNQSa**%sCD;@RQYD+PLV{BUGUOMPwY9c@^OGxNU8R5k?xof&f#-!G`q1Uy zp#6rNm0bXd9oam7$YksBl)t~M;@^He@m7>Y9F z&?zk^qq0DewM@PsWktHO(qt*wu`pf=UWOwVx{|^8wQXvq?~C}*MQ2jjE%4fWg1Ev7 z@I|7#X#za?hUJ1i^?vkbw3*Q_=5U+a@iz2!>^2oOHONjY^^XrPAlplaXRsx6xsa!% z){Rw^G_y^^te0ZE|F9biCyZ?A2tuX4J@}`~&T{ZLh3F9{z)YgYxN+j5rI4zs@zAkC z_|pP(`>seF7CN@JLZ-43QbZ8*;bD=CAY>M6#Ry6im5Q|895iaI9-Jk%mM%K^$YfdW z>u7`33%}`xOeK2W32+$b5g<;zGJe;35X1D<8VHY=r8D1{0>ziK@~1 zCpJA1-N9`nP`WbmA#2;3!He?#ZW)y&^Y8lj6+wu}@mZgdu4obPc0 zq(Ki)GhAtGM!nUQ;uyalc=bCZfPU*>Vy)flo`$!d4EVW6Kc*&5ja3lj*5%XfQ}pi|oKZ8h5c z`bI2v?&9%WiJmY}08R`mi9$%&c0fD%{GXob|2O|Xz-6o9W2LCcCp`2W0E t{da&(x_cAgBX{i=U|(PR1=!cuzW_gXj#P1mVt)Vt002ovPDHLkV1k6R|0Dna diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java index d2d796b..0fde68e 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java @@ -201,4 +201,6 @@ public interface GWTWorkspaceService extends RemoteService{ String getMyLogin(); + void setACLForVRE(String folderId, String aclType) throws Exception; + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java index 0ab0222..0c3b7b4 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java @@ -179,4 +179,7 @@ public interface GWTWorkspaceServiceAsync { void getMyLogin(AsyncCallback callback); + void setACLForVRE(String folderId, String aclType, + AsyncCallback callback); + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogPermission.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogPermission.java deleted file mode 100644 index 0a1f433..0000000 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogPermission.java +++ /dev/null @@ -1,157 +0,0 @@ -package org.gcube.portlets.user.workspace.client.view.sharing; - -import java.util.ArrayList; -import java.util.List; - -import org.gcube.portlets.user.workspace.client.AppControllerExplorer; -import org.gcube.portlets.user.workspace.client.model.FileModel; -import org.gcube.portlets.user.workspace.client.model.InfoContactModel; -import org.gcube.portlets.user.workspace.client.resources.Resources; -import org.gcube.portlets.user.workspace.client.view.sharing.multisuggest.MultiValuePanel; -import org.gcube.portlets.user.workspace.shared.WorkspaceACL; - -import com.extjs.gxt.ui.client.Style.HorizontalAlignment; -import com.extjs.gxt.ui.client.Style.Scroll; -import com.extjs.gxt.ui.client.event.ButtonEvent; -import com.extjs.gxt.ui.client.event.SelectionListener; -import com.extjs.gxt.ui.client.widget.Dialog; -import com.extjs.gxt.ui.client.widget.layout.FormLayout; -import com.google.gwt.event.shared.HandlerManager; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Label; - -/** - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * - */ -public class DialogPermission extends Dialog { - - private int widthDialog = 530; - private FileModel parentFolder = null; - private UserStore userStore = new UserStore(); - private MultiValuePanel suggestPanel = new MultiValuePanel(userStore); - private PanelPermission panelPermission; - private DialogPermission INSTANCE = this; - private List listAlreadyShared = new ArrayList(){ - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Compare Login - */ - @Override - public boolean contains(Object o) { - - if(o==null) - return false; - - InfoContactModel contact = (InfoContactModel) o; - - for (int i = 0; i < listAlreadyShared.size(); i++){ - if (contact.getName().compareTo(listAlreadyShared.get(i).getName())==0) - return true; - } - - return false; - - }; - - - }; - - - public FileModel getParentFolder() { - return parentFolder; - } - - public void initLayout(String folderParentName){ - FormLayout layout = new FormLayout(); - layout.setLabelWidth(90); - layout.setDefaultWidth(380); - setLayout(layout); - setModal(true); - setScrollMode(Scroll.AUTOY); - setBodyStyle("padding: 9px; background: none"); - setWidth(widthDialog); - setHeight(200); - setResizable(true); - setButtonAlign(HorizontalAlignment.CENTER); - setWidth(widthDialog); - setButtons(Dialog.OKCANCEL); - } - - /** - * Use to create a new shared folder - */ - public DialogPermission(String folderParentName, HandlerManager eventBus) { - - AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback>() { - - @Override - public void onSuccess(List result) { - panelPermission = new PanelPermission(result); - INSTANCE.layout(true); - } - - @Override - public void onFailure(Throwable caught) { - - INSTANCE.add(new Label("Error on recovering ACLs")); - } - }); - - initLayout(folderParentName); - this.setIcon(Resources.getIconSharedFolder()); - setHeading("Set permission to folder: "+folderParentName); - - setWidth(widthDialog); - setButtons(Dialog.OKCANCEL); - - add(panelPermission); - addListners(); - } - - public void addListners(){ - - this.getButtonById(Dialog.CANCEL).addSelectionListener(new SelectionListener() { - - @Override - public void componentSelected(ButtonEvent ce) { - hide(); - } - }); - - - this.getButtonById(Dialog.OK).addSelectionListener(new SelectionListener() { - - @Override - public void componentSelected(ButtonEvent ce) { - if(isValidForm(false)) - hide(); - } - }); - - } - - /** - * - * @param displayAlert - * @return - */ - public boolean isValidForm(boolean displayAlert){ - - /* - if(getSharedListUsers().size()==0){ - if(displayAlert) - new MessageBoxAlert("Attention", "You must pick at least one user with which share the folder", null); - suggestPanel.boxSetFocus(); - return false; - }*/ - - return true; - - } -} diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java index ff3bcab..9cad4bd 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java @@ -15,10 +15,13 @@ import org.gcube.portlets.user.workspace.shared.WorkspaceACL; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.VerticalPanel; 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; @@ -46,8 +49,9 @@ public class DialogShareFolder extends Dialog { private MultiValuePanel suggestPanel = new MultiValuePanel(userStore); private Button buttonMultiDrag = new Button("Choose Contacts"); private TextField txtOwner; - private PanelPermission permission; - + private PanelTogglePermission permission; + private HorizontalPanel vpPermission = null; + private List listAlreadyShared = new ArrayList(){ /** @@ -138,33 +142,44 @@ public class DialogShareFolder extends Dialog { flexTable.setWidget(2, 0, labelDescription); flexTable.setWidget(2, 1, textAreaDescription); - + if(!folder.isShared()){ //SETTABLE PERMISSION ONLY IF FOLDER IS NOT ALREADY SHARED + vpPermission = new HorizontalPanel(); + vpPermission.setVerticalAlign(VerticalAlignment.MIDDLE); Label labelProperty = new Label("Permissions"); -// final ToggleButton togglePermission = new ToggleButton("Set Permissions"); - flexTable.setWidget(3, 0, labelProperty); +// final ToggleButton togglePermission = new ToggleButton("Set Permissions"); +// flexTable.setWidget(3, 0, labelProperty); - flexTable.setWidget(3, 1, Resources.getIconLoading().createImage()); +// flexTable.setWidget(3, 1, Resources.getIconLoading().createImage()); + vpPermission.add(labelProperty); AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback>() { @Override public void onSuccess(List result) { - permission = new PanelPermission(result); - flexTable.setWidget(3, 1, permission); - lc.layout(); + permission = new PanelTogglePermission(result); +// flexTable.setWidget(3, 1, permission); +// lc.layout(); + vpPermission.add(permission); + vpPermission.layout(); + layout(); } @Override public void onFailure(Throwable caught) { - flexTable.setWidget(3, 1, new Label("Error on recovering ACLs")); +// flexTable.setWidget(3, 1, new Label("Error on recovering ACLs")); + + vpPermission.add(new Label("Error on recovering ACLs")); + vpPermission.layout(); + layout(); } }); } lc.add(flexTable); - + if(vpPermission!=null) + lc.add(vpPermission); lc.mask(); userStore.getListSharedUserByFolderId(folder.getIdentifier(), new AsyncCallback>() { @@ -301,34 +316,45 @@ public class DialogShareFolder extends Dialog { flexTable.setWidget(2, 1, textAreaDescription); + vpPermission = new HorizontalPanel(); + vpPermission.setVerticalAlign(VerticalAlignment.MIDDLE); Label labelProperty = new Label("Permissions"); // final ToggleButton togglePermission = new ToggleButton("Set Permissions"); - flexTable.setWidget(3, 0, labelProperty); +// flexTable.setWidget(3, 0, labelProperty); - flexTable.setWidget(3, 1, Resources.getIconLoading().createImage()); +// flexTable.setWidget(3, 1, Resources.getIconLoading().createImage()); + vpPermission.add(labelProperty); AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback>() { @Override public void onSuccess(List result) { - permission = new PanelPermission(result); - flexTable.setWidget(3, 1, permission); - lc.layout(); + permission = new PanelTogglePermission(result); +// flexTable.setWidget(3, 1, permission); +// lc.layout(); + vpPermission.add(permission); + vpPermission.layout(); + layout(); } @Override public void onFailure(Throwable caught) { - flexTable.setWidget(3, 1, new Label("Error on recovering ACLs")); +// flexTable.setWidget(3, 1, new Label("Error on recovering ACLs")); + + vpPermission.add(new Label("Error on recovering ACLs")); + vpPermission.layout(); + layout(); } }); lc.add(flexTable); - + setFocusWidget(txtName); add(txtName); add(lc); + addListners(); this.show(); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java index 5792444..9ce6748 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java @@ -1,5 +1,6 @@ package org.gcube.portlets.user.workspace.client.view.sharing; +import java.util.ArrayList; import java.util.List; import org.gcube.portlets.user.workspace.client.resources.Resources; @@ -8,6 +9,7 @@ import org.gcube.portlets.user.workspace.shared.WorkspaceACL.USER_TYPE; import com.extjs.gxt.ui.client.Style.ButtonScale; import com.extjs.gxt.ui.client.Style.IconAlign; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.HorizontalPanel; @@ -27,38 +29,38 @@ public class PanelTogglePermission extends LayoutContainer { public PanelTogglePermission(List acls) { - setStyleAttribute("margin-top", "10px"); - setStyleAttribute("margin-bottom", "10px"); - setSize(350, 30); +// setStyleAttribute("margin-top", "10px"); + setStyleAttribute("margin-bottom", "15px"); + setSize(350, 40); -// buttonGroup = new ButtonGroup(acls.size()); - -// buttonGroup.mask("Loading ACLs"); hp.mask("Loading ACLs"); - + hp.setVerticalAlign(VerticalAlignment.MIDDLE); + hp.setStyleAttribute("padding-left", "35px"); + for (WorkspaceACL acl : acls) { - if(acl.getUserType().equals(USER_TYPE.OTHER)){ ToggleButton toggle = createToggle(acl); toggle.setToggleGroup(WORKSPACEACLGROUP); - toggle.setStyleAttribute("margin-right", "5px"); + toggle.setStyleAttribute("margin-right", "10px"); // buttonGroup.add(toggle); +// listToogle.add(toggle); +// add(toggle); hp.add(toggle); } } hp.unmask(); -// buttonGroup.unmask(); add(hp); + layout(); } private ToggleButton createToggle(final WorkspaceACL acl) { final ToggleButton bToggle = new ToggleButton(acl.getLabel()); - bToggle.setScale(ButtonScale.LARGE); + bToggle.setScale(ButtonScale.MEDIUM); bToggle.setId(acl.getId()); bToggle.toggle(acl.getDefaultValue()); - bToggle.setIconAlign(IconAlign.BOTTOM); + bToggle.setIconAlign(IconAlign.TOP); bToggle.addSelectionListener(new SelectionListener() { @Override diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/ToggleButtonPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/ToggleButtonPanel.java new file mode 100644 index 0000000..727fdb6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/ToggleButtonPanel.java @@ -0,0 +1,121 @@ +package org.gcube.portlets.user.workspace.client.view.sharing; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HasWidgets; +import com.google.gwt.user.client.ui.Panel; +import com.google.gwt.user.client.ui.ToggleButton; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; + +/** + * + * @author francesco + * + */ +public class ToggleButtonPanel extends Composite implements HasWidgets, HasClickHandlers { + + private List handlers = new ArrayList(); + private final Panel panel; + + public ToggleButtonPanel() { + this(new VerticalPanel()); + } + + public ToggleButtonPanel(Panel panel) { + this.panel = panel; + initWidget(panel); + } + + @Override + public void add(Widget w) { + if (w instanceof ToggleButton) { + ToggleButton button = (ToggleButton) w; + button.addClickHandler(handler); + } + panel.add(w); + } + + @Override + public void clear() { + panel.clear(); + } + + @Override + public Iterator iterator() { + return panel.iterator(); + } + + @Override + public boolean remove(Widget w) { + return panel.remove(w); + } + + @Override + public void setWidth(String width) { + panel.setWidth(width); + }; + + @Override + public void setHeight(String height) { + panel.setHeight(height); + } + + + private ClickHandler handler = new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + Iterator itr = panel.iterator(); + while (itr.hasNext()) { + Widget w = itr.next(); + if (w instanceof ToggleButton) { + ToggleButton button = (ToggleButton) w; + button.setDown(false); + if (event.getSource().equals(button)) { + button.setDown(true); + } + } + } + + for (ClickHandler h : handlers) { + h.onClick(event); + } + } + }; + + + + @Override + public HandlerRegistration addClickHandler(final ClickHandler handler) { + handlers.add(handler); + return new HandlerRegistration() { + + @Override + public void removeHandler() { + handlers.remove(handler); + } + }; + } + + public ToggleButton getDown(){ + + Iterator it = iterator(); + while (it!=null && it.hasNext()) { + Widget w = (Widget) it.next(); + if (w instanceof ToggleButton) { + ToggleButton t = (ToggleButton) w; + if(t.isDown()) + return t; + } + } + 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 9f8c49f..ca28e50 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 @@ -2553,4 +2553,41 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT ASLSession asl = WsUtil.getAslSession(this.getThreadLocalRequest().getSession()); return asl.getUsername(); } + + /** + * + * @param folderId + * @param listUserIds + * @param aclType + * @throws Exception + */ + @Override + public void setACLForVRE(String folderId, String aclType) throws Exception{ + try { + + if(folderId == null) + throw new Exception("Folder id is null"); + + List listLogins = new ArrayList(); + listLogins.add(getMyLogin()); + + workspaceLogger.trace("Setting ACL for VRE FOLDER id: "+folderId); + workspaceLogger.trace("ACL type is: "+aclType); + + Workspace workspace = getWorkspace(); + WorkspaceItem wsItem = workspace.getItem(folderId); + + if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){ + WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath()); + ite.setACL(listLogins, ACLType.valueOf(aclType)); + }else + throw new Exception("Source item is not shared or shared folder"); + + workspaceLogger.trace("Setting ACL completed, retuning"); + } catch (Exception e) { + workspaceLogger.error("Error in set ACLs", e); + String error = ConstantsExplorer.SERVER_ERROR +" setting permissions. "+e.getMessage(); + throw new Exception(error); + } + } }