128 lines
3.7 KiB
Java
128 lines
3.7 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
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.rpc.AsyncCallback;
|
|
|
|
/**
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
* @Jul 30, 2014
|
|
*
|
|
*/
|
|
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 List<InfoContactModel> targets = new ArrayList<InfoContactModel>();
|
|
/**
|
|
* Load administrators or shared users as contacts
|
|
*/
|
|
public SimpleMultiDragContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal) {
|
|
this.loadContactAs = load;
|
|
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");
|
|
}
|
|
|
|
@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);
|
|
}
|
|
}
|
|
|
|
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
|
|
|
|
}
|
|
});
|
|
|
|
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");
|
|
for (InfoContactModel infoContactModel : result) {
|
|
if(infoContactModel.getName()!=null){
|
|
multiDragContact.addTargetContact(infoContactModel);
|
|
targets.add(infoContactModel);
|
|
}
|
|
}
|
|
|
|
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
GWT.log("Error on loading shared contacts");
|
|
|
|
}
|
|
});
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
// List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(suggestPanel.getSelectedUser());
|
|
// multiDrag.addSourceContacts(exclusiveContacts);
|
|
|
|
}
|
|
|
|
private void loadAllContacts(boolean readGroupsFromHL, boolean readGroupsFromPortal){
|
|
userStore.getListContact(addSourceContacts, false, readGroupsFromHL, readGroupsFromPortal);
|
|
}
|
|
|
|
private AsyncCallback<List<InfoContactModel>> addSourceContacts = new AsyncCallback<List<InfoContactModel>>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
GWT.log("Error on loading contacts");
|
|
MessageBox.alert("Error", caught.getMessage(), null);
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(List<InfoContactModel> result) {
|
|
|
|
if(result!=null && result.size()>0){
|
|
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(targets);
|
|
multiDragContact.addSourceContacts(exclusiveContacts);
|
|
}
|
|
}
|
|
};
|
|
|
|
public MultiDragContact getMultiDragContact() {
|
|
return multiDragContact;
|
|
}
|
|
}
|