diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/admin/PanelMultiDragContactAdmin.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/admin/PanelMultiDragContactAdmin.java index d605130..4d04c8d 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/admin/PanelMultiDragContactAdmin.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/admin/PanelMultiDragContactAdmin.java @@ -59,13 +59,12 @@ import com.google.gwt.user.client.ui.FlexTable; */ public class PanelMultiDragContactAdmin extends ContentPanel { - - // private String workspaceItemId; private String myLogin; private InfoContactModel myContact; + private InfoContactModel owner; private List targetContact; private List vresList; private HashMap> contactsMap; @@ -76,12 +75,12 @@ public class PanelMultiDragContactAdmin extends ContentPanel { // public static final String LOADING = "Loading"; public static final String LOADINGSTYLE = "x-mask-loading"; - + private static final int HEIGHT_VRE_PANEL = 40; private static final int WIDTH_VRE_PANEL = 597; private static final int HEIGHT_CONTACTS_PANEL = 400; private static final int WIDTH_CONTACTS_PANEL = 597; - + private static final int WIDTH_VRE_LIST_COMBO = 550; private static final int HEIGHT_GRID = 310; @@ -136,16 +135,38 @@ public class PanelMultiDragContactAdmin extends ContentPanel { public void onFailure(Throwable caught) { GWT.log("Error retrieving my login"); myLogin = null; - retrieveListOfAdmin(); + retrieveOwner(); } @Override public void onSuccess(String result) { GWT.log("My login is: " + result); myLogin = result; + retrieveOwner(); + + } + }); + } + + private void retrieveOwner() { + WorkspaceSharingServiceAsync.INSTANCE.getOwnerByItemId(workspaceItemId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error retrieving owner"); + owner = null; retrieveListOfAdmin(); } + + @Override + public void onSuccess(InfoContactModel result) { + GWT.log("Owner is: " + result); + owner = result; + retrieveListOfAdmin(); + + } + }); } @@ -169,14 +190,32 @@ public class PanelMultiDragContactAdmin extends ContentPanel { break; } } + } if (myContact != null) { - result.remove(myContact); - targetContact = result; + if (owner != null) { + if (InfoContactModel.COMPARATORLOGINS.compare(myContact, owner) == 0) { + result.remove(myContact); + targetContact = result; + } else { + result.remove(myContact); + result.remove(owner); + targetContact = result; + } + } else { + result.remove(myContact); + targetContact = result; + } } else { - targetContact = result; + if (owner != null) { + result.remove(owner); + targetContact = result; + } else { + targetContact = result; + } } + storeTarget.removeAll(); storeTarget.add(targetContact); storeTarget.commitChanges(); @@ -417,7 +456,6 @@ public class PanelMultiDragContactAdmin extends ContentPanel { GWT.log("PanelMultiDragContactAdmin view Created"); } - private void retrieveContactList(final UserVRE userVRE) { if (!contactsMap.isEmpty() && contactsMap.containsKey(userVRE)) { @@ -638,7 +676,22 @@ public class PanelMultiDragContactAdmin extends ContentPanel { public List getTargetListContactWithMyLogin() { List target = new ArrayList<>(); target.addAll(storeTarget.getModels()); - target.add(myContact); + if (myContact != null) { + if (owner != null) { + if (InfoContactModel.COMPARATORLOGINS.compare(myContact, owner) == 0) { + target.add(owner); + } else { + target.add(owner); + target.add(myContact); + } + } else { + target.add(myContact); + } + } else { + if (owner != null) { + target.add(owner); + } + } return target; } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/multisuggest/MultiValuePanel.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/multisuggest/MultiValuePanel.java index 04d105e..cd7fb48 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/multisuggest/MultiValuePanel.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/multisuggest/MultiValuePanel.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing; import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.ContactFetcher; import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;