updated Edit Permissions
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@111517 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
f56452a3dc
commit
b26fda50b0
|
@ -19,4 +19,6 @@ public interface ConstantsSharing {
|
||||||
public static int HEIGHT_DIALOG = 430;
|
public static int HEIGHT_DIALOG = 430;
|
||||||
|
|
||||||
public static final String PATH_SEPARATOR = "/";
|
public static final String PATH_SEPARATOR = "/";
|
||||||
|
|
||||||
|
public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,11 @@ package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* @Sep 22, 2014
|
* @Sep 22, 2014
|
||||||
*
|
*
|
||||||
* Defines customizable labels used by Simple MultiDrag Contant Dialog
|
* Defines customizable labels used by MultiDrag Dialog
|
||||||
*
|
*
|
||||||
* Sets following parameters to display custom labels into Dialog
|
* Sets following parameters to display custom labels into Dialog
|
||||||
*/
|
*/
|
||||||
public abstract class SimpleMultiDragConstants {
|
public abstract class MultiDragConstants {
|
||||||
|
|
||||||
public static String HEADING_DIALOG = "Group dragging contacts";
|
public static String HEADING_DIALOG = "Group dragging contacts";
|
||||||
public static String ALL_CONTACTS_LEFT_LIST = "All Contacts";
|
public static String ALL_CONTACTS_LEFT_LIST = "All Contacts";
|
|
@ -3,10 +3,13 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.MessageBoxAlert;
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.MessageBoxAlert;
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.PanelTogglePermission;
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.PanelTogglePermission;
|
||||||
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingServiceAsync;
|
||||||
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.UserStore;
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact;
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact;
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.MultiDragContact;
|
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.MultiDragContact;
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
|
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
|
||||||
|
@ -19,6 +22,7 @@ import com.extjs.gxt.ui.client.event.Listener;
|
||||||
import com.extjs.gxt.ui.client.widget.Dialog;
|
import com.extjs.gxt.ui.client.widget.Dialog;
|
||||||
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
||||||
import com.extjs.gxt.ui.client.widget.Html;
|
import com.extjs.gxt.ui.client.widget.Html;
|
||||||
|
import com.extjs.gxt.ui.client.widget.MessageBox;
|
||||||
import com.google.gwt.core.shared.GWT;
|
import com.google.gwt.core.shared.GWT;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
@ -31,30 +35,38 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
* @Jan 27, 2015
|
* @Jan 27, 2015
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class MultiDragContactsEditPermissions extends SimpleMultiDragWorkspaceContact{
|
public class MultiDragContactsEditPermissions {
|
||||||
|
|
||||||
private PanelTogglePermission permission;
|
private PanelTogglePermission permission;
|
||||||
private HorizontalPanel hpPermission = new HorizontalPanel();
|
private HorizontalPanel hpPermission = new HorizontalPanel();
|
||||||
private DialogMultiDragContact dialog;
|
|
||||||
private Html htmlCurrentPermissions = new Html();
|
private Html htmlCurrentPermissions = new Html();
|
||||||
|
|
||||||
|
private UserStore userStore = new UserStore();
|
||||||
|
private ConstantsSharing.LOAD_CONTACTS_AS loadContactAs;
|
||||||
|
private DialogMultiDragContact dialogMultiDragContact = new DialogMultiDragContact(MultiDragConstants.HEADING_DIALOG, MultiDragConstants.ALL_CONTACTS_LEFT_LIST, MultiDragConstants.SHARE_WITH_RIGHT_LIST,false, false);
|
||||||
|
private List<InfoContactModel> sources = new ArrayList<InfoContactModel>();
|
||||||
|
private boolean hiddenMySelf;
|
||||||
|
private String workspaceItemId;
|
||||||
|
private String myLogin;
|
||||||
|
private InfoContactModel myContact;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
* @param load
|
* @param load
|
||||||
* @param workspaceItemId
|
* @param workspaceItemId
|
||||||
* @param readGroupsFromHL
|
|
||||||
* @param readGroupsFromPortal
|
|
||||||
* @param hiddenMySelf
|
* @param hiddenMySelf
|
||||||
*/
|
*/
|
||||||
public MultiDragContactsEditPermissions(LOAD_CONTACTS_AS load, final String workspaceItemId, boolean readGroupsFromHL, boolean readGroupsFromPortal, boolean hiddenMySelf) {
|
public MultiDragContactsEditPermissions(ConstantsSharing.LOAD_CONTACTS_AS load, final String workspaceItemId, boolean hiddenMySelf) {
|
||||||
super(load, workspaceItemId, readGroupsFromHL, readGroupsFromPortal,hiddenMySelf);
|
initMultiDrag(load, workspaceItemId, hiddenMySelf);
|
||||||
|
|
||||||
dialog = super.getDialogMultiDragContact();
|
// dialog = super.getDialogMultiDragContact();
|
||||||
dialog.setScrollMode(Scroll.AUTOY);
|
dialogMultiDragContact.setScrollMode(Scroll.AUTOY);
|
||||||
|
|
||||||
// htmlCurrentPermissions.setReadOnly(true);
|
// htmlCurrentPermissions.setReadOnly(true);
|
||||||
htmlCurrentPermissions.setWidth(MultiDragContact.WIDTH_CP);
|
htmlCurrentPermissions.setWidth(MultiDragContact.WIDTH_CP);
|
||||||
htmlCurrentPermissions.setStyleAttribute("padding", MultiDragContact.PADDING+"px");
|
htmlCurrentPermissions.setStyleAttribute("padding", MultiDragContact.PADDING+"px");
|
||||||
|
|
||||||
dialog.getLcTop().add(htmlCurrentPermissions);
|
dialogMultiDragContact.getLcTop().add(htmlCurrentPermissions);
|
||||||
// dialog.setHeight(dialog.getHeight()+100);
|
// dialog.setHeight(dialog.getHeight()+100);
|
||||||
|
|
||||||
WorkspaceSharingController.rpcWorkspaceSharingService.getACLsDescriptionForSharedFolderId(workspaceItemId, new AsyncCallback<String>() {
|
WorkspaceSharingController.rpcWorkspaceSharingService.getACLsDescriptionForSharedFolderId(workspaceItemId, new AsyncCallback<String>() {
|
||||||
|
@ -102,31 +114,23 @@ public class MultiDragContactsEditPermissions extends SimpleMultiDragWorkspaceCo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.add(hpPermission);
|
dialogMultiDragContact.getLcBottom().add(hpPermission);
|
||||||
|
|
||||||
dialog.addListener(Events.Render, new Listener<BaseEvent>() {
|
dialogMultiDragContact.addListener(Events.Render, new Listener<BaseEvent>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(BaseEvent be) {
|
public void handleEvent(BaseEvent be) {
|
||||||
dialog.setHeight(dialog.getHeight()+100);
|
dialogMultiDragContact.setHeight(dialogMultiDragContact.getHeight()+100);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enableSubmit(boolean bool){
|
public void enableSubmit(boolean bool){
|
||||||
dialog.getButtonById(Dialog.OK).setEnabled(bool);
|
dialogMultiDragContact.getButtonById(Dialog.OK).setEnabled(bool);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogMultiDragContact getDialog() {
|
public DialogMultiDragContact getDialog() {
|
||||||
return dialog;
|
return dialogMultiDragContact;
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact#show()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void show() {
|
|
||||||
dialog.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -175,12 +179,144 @@ public class MultiDragContactsEditPermissions extends SimpleMultiDragWorkspaceCo
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load administrators or shared users to workspace item id
|
||||||
|
* @param load
|
||||||
|
* if LOAD_CONTACTS_AS.SHARED_USER loads source users from Shared Users
|
||||||
|
* if LOAD_CONTACTS_AS.ADMINISTRATOR loads source users from Administrators
|
||||||
|
*
|
||||||
|
* @param workspaceItemId
|
||||||
|
* @param hiddenMySelf if true the login read from ASL is hidden (so it's not removable to target users), the login returned anyway among the target users
|
||||||
|
*/
|
||||||
|
private void initMultiDrag(ConstantsSharing.LOAD_CONTACTS_AS load, String workspaceItemId, final boolean hiddenMySelf) {
|
||||||
|
this.loadContactAs = load;
|
||||||
|
this.hiddenMySelf = hiddenMySelf;
|
||||||
|
this.workspaceItemId = workspaceItemId;
|
||||||
|
|
||||||
|
if(hiddenMySelf)
|
||||||
|
loadMyLogin(true);
|
||||||
|
else
|
||||||
|
loadSharedContacts();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void loadMyLogin(final boolean loadContacts){
|
||||||
|
|
||||||
|
WorkspaceSharingServiceAsync.Util.getInstance().getMyLogin(new AsyncCallback<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log("Error on loading my login is empty");
|
||||||
|
myLogin = "";
|
||||||
|
loadSharedContacts();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String result) {
|
||||||
|
GWT.log("My login is: "+result);
|
||||||
|
myLogin = result;
|
||||||
|
|
||||||
|
if(loadContacts)
|
||||||
|
loadSharedContacts();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the target contacts
|
||||||
|
*/
|
||||||
|
private void loadSharedContacts(){
|
||||||
|
|
||||||
|
switch (loadContactAs) {
|
||||||
|
|
||||||
|
case ADMINISTRATOR:
|
||||||
|
|
||||||
|
//LOADING LIST OF ALREADY SHARED USER
|
||||||
|
userStore.getAdministratorsByFolderId(workspaceItemId, new AsyncCallback<List<InfoContactModel>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log("Error on loading admnistrators");
|
||||||
|
MessageBox.alert("Error on loading admnistrators", caught.getMessage(), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(List<InfoContactModel> result) {
|
||||||
|
GWT.log("Returned "+result.size()+" admin/s");
|
||||||
|
fillMultiDrag(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHARED_USER:
|
||||||
|
|
||||||
|
//LOADING LIST OF ALREADY SHARED USER
|
||||||
|
userStore.getListSharedUserByFolderId(workspaceItemId, new AsyncCallback<List<InfoContactModel>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(List<InfoContactModel> result) {
|
||||||
|
GWT.log("Returned "+result.size()+" contact/s");
|
||||||
|
fillMultiDrag(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log("Error on loading shared contacts");
|
||||||
|
MessageBox.alert("Error on shared contacts", caught.getMessage(), null);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTargetContact(List<InfoContactModel> listContacts){
|
||||||
|
if(listContacts!=null){
|
||||||
|
for (InfoContactModel infoContactModel : listContacts) {
|
||||||
|
dialogMultiDragContact.getMultiDrag().addTargetContact(infoContactModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param result
|
||||||
|
*/
|
||||||
|
private void fillMultiDrag(List<InfoContactModel> result){
|
||||||
|
|
||||||
|
GWT.log("Filling multi-drag..");
|
||||||
|
GWT.log("Hidden my self: "+hiddenMySelf);
|
||||||
|
|
||||||
|
for (InfoContactModel infoContactModel : result) {
|
||||||
|
if(infoContactModel.getLogin()!=null){
|
||||||
|
if(hiddenMySelf && (infoContactModel.getLogin().compareTo(myLogin)==0)){
|
||||||
|
myContact = infoContactModel;
|
||||||
|
GWT.log("Skipping myLogin as: "+myContact);
|
||||||
|
}else{
|
||||||
|
dialogMultiDragContact.getMultiDrag().addSourceContact(infoContactModel);
|
||||||
|
sources.add(infoContactModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void show(){
|
||||||
|
dialogMultiDragContact.show();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<InfoContactModel> getTargetContacts() {
|
public List<InfoContactModel> getTargetContacts() {
|
||||||
return super.getTargetContacts();
|
return dialogMultiDragContact.getMultiDrag().getTargetListContact();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -188,7 +324,14 @@ public class MultiDragContactsEditPermissions extends SimpleMultiDragWorkspaceCo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<InfoContactModel> getTargetContactsWithMyLogin() {
|
public List<InfoContactModel> getTargetContactsWithMyLogin() {
|
||||||
return super.getTargetContactsWithMyLogin();
|
List<InfoContactModel> contacts = getTargetContacts();
|
||||||
|
|
||||||
|
if(myContact == null){
|
||||||
|
GWT.log("TargetContactsWithMyLogin my Contact is null, skipping!");
|
||||||
|
}else
|
||||||
|
contacts.add(myContact);
|
||||||
|
|
||||||
|
return contacts;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,8 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
public class SimpleMultiDragWorkspaceContact {
|
public class SimpleMultiDragWorkspaceContact {
|
||||||
|
|
||||||
private UserStore userStore = new UserStore();
|
private UserStore userStore = new UserStore();
|
||||||
private LOAD_CONTACTS_AS loadContactAs;
|
private ConstantsSharing.LOAD_CONTACTS_AS loadContactAs;
|
||||||
public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR}
|
private DialogMultiDragContact dialogMultiDragContact = new DialogMultiDragContact(MultiDragConstants.HEADING_DIALOG, MultiDragConstants.ALL_CONTACTS_LEFT_LIST, MultiDragConstants.SHARE_WITH_RIGHT_LIST,false, false);
|
||||||
private DialogMultiDragContact dialogMultiDragContact = new DialogMultiDragContact(SimpleMultiDragConstants.HEADING_DIALOG, SimpleMultiDragConstants.ALL_CONTACTS_LEFT_LIST, SimpleMultiDragConstants.SHARE_WITH_RIGHT_LIST,false, false);
|
|
||||||
private List<InfoContactModel> targets = new ArrayList<InfoContactModel>();
|
private List<InfoContactModel> targets = new ArrayList<InfoContactModel>();
|
||||||
private boolean readGroupsFromPortal;
|
private boolean readGroupsFromPortal;
|
||||||
private boolean readGroupsFromHL;
|
private boolean readGroupsFromHL;
|
||||||
|
@ -46,7 +45,7 @@ public class SimpleMultiDragWorkspaceContact {
|
||||||
* @param readGroupsFromPortal
|
* @param readGroupsFromPortal
|
||||||
* @param hiddenMySelf if true the login read from ASL is hidden (so it's not removable to target users), the login returned anyway among the target users
|
* @param hiddenMySelf if true the login read from ASL is hidden (so it's not removable to target users), the login returned anyway among the target users
|
||||||
*/
|
*/
|
||||||
public SimpleMultiDragWorkspaceContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal, final boolean hiddenMySelf) {
|
public SimpleMultiDragWorkspaceContact(ConstantsSharing.LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal, final boolean hiddenMySelf) {
|
||||||
this.loadContactAs = load;
|
this.loadContactAs = load;
|
||||||
this.readGroupsFromHL = readGroupsFromHL;
|
this.readGroupsFromHL = readGroupsFromHL;
|
||||||
this.readGroupsFromPortal = readGroupsFromPortal;
|
this.readGroupsFromPortal = readGroupsFromPortal;
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact.LOAD_CONTACTS_AS;
|
|
||||||
|
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
|
@ -92,7 +90,7 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint {
|
||||||
|
|
||||||
private void showSimpleMultiDrag(){
|
private void showSimpleMultiDrag(){
|
||||||
|
|
||||||
final SimpleMultiDragWorkspaceContact multiDragContact = new SimpleMultiDragWorkspaceContact(LOAD_CONTACTS_AS.SHARED_USER, ITEMID, true, false, true);
|
final SimpleMultiDragWorkspaceContact multiDragContact = new SimpleMultiDragWorkspaceContact(ConstantsSharing.LOAD_CONTACTS_AS.SHARED_USER, ITEMID, true, false, true);
|
||||||
|
|
||||||
Button openSharingWindow = new Button("Show Simple Multi Drag",
|
Button openSharingWindow = new Button("Show Simple Multi Drag",
|
||||||
new ClickHandler() {
|
new ClickHandler() {
|
||||||
|
|
|
@ -516,6 +516,14 @@ public class MultiDragContact extends ContentPanel {
|
||||||
storeTarget.add(listContact);
|
storeTarget.add(listContact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param infoContactModel
|
||||||
|
*/
|
||||||
|
public void addSourceContact(InfoContactModel contact) {
|
||||||
|
if (contact != null)
|
||||||
|
storeSource.add(contact);
|
||||||
|
}
|
||||||
|
|
||||||
public void addTargetContact(InfoContactModel contact) {
|
public void addTargetContact(InfoContactModel contact) {
|
||||||
if (contact != null)
|
if (contact != null)
|
||||||
storeTarget.add(contact);
|
storeTarget.add(contact);
|
||||||
|
|
Loading…
Reference in New Issue