enhancement on SimpleMultiDrag panel
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@100051 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
e4ddb99c70
commit
5d8962efec
|
@ -6,12 +6,14 @@ package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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.MultiDragContact;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
|
||||
|
||||
import com.extjs.gxt.ui.client.widget.MessageBox;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
/**
|
||||
|
@ -24,13 +26,64 @@ public class SimpleMultiDragContact {
|
|||
private UserStore userStore = new UserStore();
|
||||
private LOAD_CONTACTS_AS loadContactAs;
|
||||
public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR}
|
||||
private MultiDragContact multiDragContact = new MultiDragContact();
|
||||
private MultiDragContact multiDragContact = new MultiDragContact(false);
|
||||
private List<InfoContactModel> targets = new ArrayList<InfoContactModel>();
|
||||
private boolean readGroupsFromPortal;
|
||||
private boolean readGroupsFromHL;
|
||||
private boolean hiddenMySelf;
|
||||
private String workspaceItemId;
|
||||
private String myLogin;
|
||||
private InfoContactModel myContact;
|
||||
|
||||
/**
|
||||
* Load administrators or shared users as contacts
|
||||
* @param load
|
||||
* @param workspaceItemId
|
||||
* @param readGroupsFromHL
|
||||
* @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
|
||||
*/
|
||||
public SimpleMultiDragContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal) {
|
||||
public SimpleMultiDragContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal, final boolean hiddenMySelf) {
|
||||
this.loadContactAs = load;
|
||||
this.readGroupsFromHL = readGroupsFromHL;
|
||||
this.readGroupsFromPortal = readGroupsFromPortal;
|
||||
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:
|
||||
|
@ -41,18 +94,13 @@ public class SimpleMultiDragContact {
|
|||
@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");
|
||||
for (InfoContactModel infoContactModel : result) {
|
||||
if(infoContactModel.getName()!=null){
|
||||
multiDragContact.addTargetContact(infoContactModel);
|
||||
targets.add(infoContactModel);
|
||||
}
|
||||
}
|
||||
|
||||
fillMultiDrag(result);
|
||||
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
|
||||
|
||||
}
|
||||
|
@ -62,43 +110,52 @@ public class SimpleMultiDragContact {
|
|||
|
||||
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");
|
||||
for (InfoContactModel infoContactModel : result) {
|
||||
if(infoContactModel.getName()!=null){
|
||||
multiDragContact.addTargetContact(infoContactModel);
|
||||
targets.add(infoContactModel);
|
||||
}
|
||||
}
|
||||
|
||||
fillMultiDrag(result);
|
||||
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param result
|
||||
*/
|
||||
private void fillMultiDrag(List<InfoContactModel> result){
|
||||
|
||||
|
||||
// List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(suggestPanel.getSelectedUser());
|
||||
// multiDrag.addSourceContacts(exclusiveContacts);
|
||||
|
||||
for (InfoContactModel infoContactModel : result) {
|
||||
if(infoContactModel.getLogin()!=null){
|
||||
if(hiddenMySelf && (infoContactModel.getLogin().compareTo(myLogin)==0)){
|
||||
GWT.log("Skipping myself: "+myLogin);
|
||||
myContact = infoContactModel;
|
||||
}else{
|
||||
multiDragContact.addTargetContact(infoContactModel);
|
||||
targets.add(infoContactModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all contacts
|
||||
* @param readGroupsFromHL
|
||||
* @param readGroupsFromPortal
|
||||
*/
|
||||
private void loadAllContacts(boolean readGroupsFromHL, boolean readGroupsFromPortal){
|
||||
userStore.getListContact(addSourceContacts, false, readGroupsFromHL, readGroupsFromPortal);
|
||||
}
|
||||
|
@ -114,8 +171,13 @@ public class SimpleMultiDragContact {
|
|||
@Override
|
||||
public void onSuccess(List<InfoContactModel> result) {
|
||||
|
||||
List<InfoContactModel> contactTargets = new ArrayList<InfoContactModel>(targets.size()+1);
|
||||
contactTargets.addAll(targets);
|
||||
if(result!=null && result.size()>0){
|
||||
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(targets);
|
||||
if(hiddenMySelf)
|
||||
contactTargets.add(myContact);
|
||||
|
||||
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(contactTargets);
|
||||
multiDragContact.addSourceContacts(exclusiveContacts);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,7 @@
|
|||
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
||||
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragContact.LOAD_CONTACTS_AS;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
|
||||
|
||||
import com.extjs.gxt.ui.client.event.BaseEvent;
|
||||
import com.extjs.gxt.ui.client.event.Events;
|
||||
import com.extjs.gxt.ui.client.event.Listener;
|
||||
import com.extjs.gxt.ui.client.widget.Dialog;
|
||||
import com.extjs.gxt.ui.client.widget.Window;
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
|
@ -101,7 +92,7 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint {
|
|||
|
||||
private void showSimpleMultiDrag(){
|
||||
|
||||
final SimpleMultiDragContact multiDragContact = new SimpleMultiDragContact(LOAD_CONTACTS_AS.SHARED_USER, ITEMID, true, false);
|
||||
final SimpleMultiDragContact multiDragContact = new SimpleMultiDragContact(LOAD_CONTACTS_AS.SHARED_USER, ITEMID, true, false, true);
|
||||
|
||||
Button openSharingWindow = new Button("Show Simple Multi Drag",
|
||||
new ClickHandler() {
|
||||
|
|
|
@ -340,7 +340,7 @@ public class DialogShareWItem extends Dialog {
|
|||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
final MultiDragContact multiDrag = new MultiDragContact();
|
||||
final MultiDragContact multiDrag = new MultiDragContact(true);
|
||||
multiDrag.show();
|
||||
|
||||
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(suggestPanel.getSelectedUser());
|
||||
|
|
|
@ -295,7 +295,7 @@ public class SmartShare extends Dialog implements SmartDialogInterface{
|
|||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
final MultiDragContact multiDrag = new MultiDragContact();
|
||||
final MultiDragContact multiDrag = new MultiDragContact(true);
|
||||
multiDrag.show();
|
||||
|
||||
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(suggestPanel.getSelectedUser());
|
||||
|
|
|
@ -66,7 +66,7 @@ public class MultiDragContact extends Dialog {
|
|||
private Button buttonAllRight;
|
||||
private Button buttonAllLeft;
|
||||
|
||||
public MultiDragContact() {
|
||||
public MultiDragContact(boolean visibleAlreadyShared) {
|
||||
setStyleAttribute("margin", "10px");
|
||||
setSize(WIDTH_DIALOG, HEIGHT_DIALOG);
|
||||
setHeading("Group dragging contacts");
|
||||
|
@ -86,6 +86,10 @@ public class MultiDragContact extends Dialog {
|
|||
ContentPanel cpAlreadyShared = new ContentPanel();
|
||||
cpAlreadyShared.setSize(WIDTH_CP, 60);
|
||||
cpAlreadyShared.setHeaderVisible(false);
|
||||
cpAlreadyShared.setVisible(visibleAlreadyShared);
|
||||
|
||||
if(!visibleAlreadyShared)
|
||||
setHeight(HEIGHT_DIALOG-60);
|
||||
|
||||
cpAlreadyShared.setLayout(new FitLayout());
|
||||
|
||||
|
@ -265,13 +269,11 @@ public class MultiDragContact extends Dialog {
|
|||
|
||||
@Override
|
||||
public void componentSelected(ButtonEvent ce) {
|
||||
List<InfoContactModel> shareContacts = storeTarget
|
||||
.getModels();
|
||||
|
||||
/*
|
||||
List<InfoContactModel> shareContacts = storeTarget.getModels();
|
||||
if (shareContacts == null || shareContacts.isEmpty()) {
|
||||
|
||||
MessageBox mbc = MessageBox
|
||||
.confirm(
|
||||
MessageBox mbc = MessageBox.confirm(
|
||||
"Confirm exit?",
|
||||
"You have not selected any contact to share, confirm exit?",
|
||||
null);
|
||||
|
@ -280,14 +282,16 @@ public class MultiDragContact extends Dialog {
|
|||
|
||||
@Override
|
||||
public void handleEvent(MessageBoxEvent be) {
|
||||
String clickedButton = be
|
||||
.getButtonClicked().getItemId();
|
||||
String clickedButton = be.getButtonClicked().getItemId();
|
||||
if (clickedButton.equals(Dialog.YES)) {
|
||||
hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else
|
||||
hide();
|
||||
*/
|
||||
|
||||
hide();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
|
|||
import org.gcube.common.homelibrary.home.workspace.accessmanager.ACLType;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
|
||||
import org.gcube.common.homelibrary.home.workspace.usermanager.GCubeGroup;
|
||||
|
@ -203,7 +204,9 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
//System.out.println("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
|
||||
}
|
||||
return new ArrayList<InfoContactModel>();
|
||||
|
||||
}catch (ItemNotFoundException e){
|
||||
logger.error("Error in server during item retrieving, getListUserSharedByFolderSharedId", e);
|
||||
throw new Exception("The Item id "+folderSharedId+" not found in workspace or is not a shared folder");
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in getListUserSharedByItemId ", e);
|
||||
throw new Exception(e.getMessage());
|
||||
|
@ -297,6 +300,9 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
//BUILD ITEM
|
||||
return builder.buildGXTFileModelItem(wsItem, parent);
|
||||
}catch (ItemNotFoundException e){
|
||||
logger.error("Error in server during item retrieving, getFileModelByWorkpaceItemId", e);
|
||||
throw new Exception("The Item id "+itemId+" not found in workspace");
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in server during item retrieving, getFileModelByWorkpaceItemId", e);
|
||||
String error = ConstantsSharing.SERVER_ERROR + " retrieving the item from workspace, "+e.getMessage();
|
||||
|
@ -348,12 +354,10 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
// //DEBUG
|
||||
//System.out.println("shareFolder "+ folder.getIdentifier() + " name: "+ folder.getName() + " parent name: " + folder.getParentFileModel().getName() + " listContacts size: " + listContacts.size());
|
||||
|
||||
// for (InfoContactModel infoContactModel : listContacts) {
|
||||
// System.out.println("share with "+ infoContactModel.getLogin());
|
||||
// }
|
||||
|
||||
printContacts(listContacts);
|
||||
// printContacts(listContacts);
|
||||
|
||||
List<String> listLogin = UserUtil.getListLoginByInfoContactModel(listContacts);
|
||||
|
||||
|
@ -506,10 +510,12 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
return builder.buildGxtInfoContactsFromPortalLogins(admins);
|
||||
}else
|
||||
throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER);
|
||||
|
||||
} catch (ItemNotFoundException e){
|
||||
logger.error("Error in server getAdministratorsByFolderId", e);
|
||||
throw new Exception("The Item id "+sharedFolderId+" not found in workspace or is not a shared folder");
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in server getAdministratorsByFolderId", e);
|
||||
String error = "Sorry an erroro occurred on getting Administrators";
|
||||
String error = "Sorry an error occurred on getting Administrators";
|
||||
throw new Exception(error);
|
||||
}
|
||||
}
|
||||
|
@ -543,6 +549,8 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl();
|
||||
|
|
|
@ -77,7 +77,7 @@ public class WsUtil {
|
|||
user=TEST_USER;
|
||||
|
||||
//UNCOMMENT THIS IN DEVELOP ENVIROMENT
|
||||
// user = "francesco.mangiacrapa";
|
||||
user = "francesco.mangiacrapa";
|
||||
|
||||
logger.warn("WORKSPACE PORTLET STARTING IN TEST MODE - NO USER FOUND - PORTLETS STARTING WITH FOLLOWING SETTINGS:");
|
||||
logger.warn("session id: "+sessionID);
|
||||
|
@ -104,9 +104,9 @@ public class WsUtil {
|
|||
withoutPortal = true;
|
||||
|
||||
//COMMENT THIS IN PRODUCTION ENVIROMENT
|
||||
// }else if(user.compareToIgnoreCase("francesco.mangiacrapa")==0){
|
||||
//
|
||||
// withoutPortal = false;
|
||||
}else if(user.compareToIgnoreCase("francesco.mangiacrapa")==0){
|
||||
|
||||
withoutPortal = true;
|
||||
// END UNCOMMENT
|
||||
}else{
|
||||
|
||||
|
|
Loading…
Reference in New Issue