2014-09-08 18:45:24 +02:00
package org.gcube.portlets.user.vremembers.client.panels ;
import java.util.ArrayList ;
2016-05-26 14:06:59 +02:00
import org.gcube.portal.databook.client.GCubeSocialNetworking ;
import org.gcube.portal.databook.client.util.Encoder ;
2014-09-08 18:45:24 +02:00
import org.gcube.portlets.user.vremembers.client.MembersService ;
import org.gcube.portlets.user.vremembers.client.MembersServiceAsync ;
import org.gcube.portlets.user.vremembers.client.ui.DisplayBadge ;
import org.gcube.portlets.user.vremembers.shared.BelongingUser ;
2016-05-26 14:06:59 +02:00
import org.gcube.portlets.user.vremembers.shared.VREGroup ;
2014-09-08 18:45:24 +02:00
2016-05-26 14:06:59 +02:00
import com.github.gwtbootstrap.client.ui.PageHeader ;
2014-09-08 18:45:24 +02:00
import com.google.gwt.core.client.GWT ;
2016-05-26 14:06:59 +02:00
import com.google.gwt.user.client.Window ;
2014-09-08 18:45:24 +02:00
import com.google.gwt.user.client.rpc.AsyncCallback ;
import com.google.gwt.user.client.ui.FlowPanel ;
import com.google.gwt.user.client.ui.HTML ;
2016-03-28 20:31:01 +02:00
public class VREMembersPanel extends FlowPanel {
2014-09-26 15:26:40 +02:00
2016-03-28 20:31:01 +02:00
private final MembersServiceAsync vreMemberService = GWT . create ( MembersService . class ) ;
2014-09-26 15:26:40 +02:00
2014-09-08 18:45:24 +02:00
public VREMembersPanel ( ) {
2016-05-26 14:06:59 +02:00
//if showing a VRE Group
if ( getGroupShowId ( ) ! = null ) {
String teamId = Encoder . decode ( getGroupShowId ( ) ) ;
2016-10-03 17:44:42 +02:00
if ( teamId . compareTo ( " -100 " ) = = 0 ) {
vreMemberService . getVREManagers ( new AsyncCallback < VREGroup > ( ) {
2016-05-26 14:06:59 +02:00
2016-10-03 17:44:42 +02:00
@Override
public void onFailure ( Throwable caught ) {
add ( new HTML ( " <div class= \" nofeed-message \" > " +
" Sorry, looks like something is broken with the server connection<br> " +
" Please check your connection and try refresh this page.</div> " ) ) ;
}
2016-05-26 14:06:59 +02:00
2016-10-03 17:44:42 +02:00
@Override
public void onSuccess ( VREGroup group ) {
clear ( ) ;
PageHeader toAdd = new PageHeader ( ) ;
toAdd . setText ( " VRE managers " ) ;
toAdd . setSubtext ( " The moderators of this VRE " ) ;
add ( toAdd ) ;
if ( group . getUsers ( ) . size ( ) > 0 )
showMembers ( group . getUsers ( ) ) ;
else
add ( new HTML ( " <div class= \" nofeed-message \" >There are no VRE Managers in this VRE, this is weird please report this issue.</div> " ) ) ;
}
} ) ;
} else {
vreMemberService . getVREGroupUsers ( teamId , new AsyncCallback < VREGroup > ( ) {
@Override
public void onFailure ( Throwable caught ) {
add ( new HTML ( " <div class= \" nofeed-message \" > " +
" Sorry, looks like something is broken with the server connection<br> " +
" Please check your connection and try refresh this page.</div> " ) ) ;
}
@Override
public void onSuccess ( VREGroup group ) {
clear ( ) ;
PageHeader toAdd = new PageHeader ( ) ;
toAdd . setText ( group . getName ( ) ) ;
toAdd . setSubtext ( group . getDescription ( ) ) ;
add ( toAdd ) ;
if ( group . getUsers ( ) . size ( ) > 0 )
showMembers ( group . getUsers ( ) ) ;
else
add ( new HTML ( " <div class= \" nofeed-message \" >This group has no members, VRE Managers can define VRE groups and associate members to these groups.</div> " ) ) ;
}
} ) ;
}
2016-05-26 14:06:59 +02:00
} else { //show all the VRE Members
vreMemberService . getSiteUsers ( new AsyncCallback < ArrayList < BelongingUser > > ( ) {
@Override
public void onSuccess ( ArrayList < BelongingUser > users ) {
clear ( ) ;
showMembers ( users ) ;
2014-09-08 18:45:24 +02:00
}
2014-09-26 15:26:40 +02:00
2016-05-26 14:06:59 +02:00
@Override
public void onFailure ( Throwable caught ) {
add ( new HTML ( " <div class= \" nofeed-message \" > " +
" Sorry, looks like something is broken with the server connection<br> " +
" Please check your connection and try refresh this page.</div> " ) ) ;
2014-09-26 15:26:40 +02:00
2016-05-26 14:06:59 +02:00
}
} ) ;
}
}
private void showMembers ( ArrayList < BelongingUser > users ) {
if ( users = = null | | users . isEmpty ( ) ) {
add ( new HTML ( " <div class= \" frame \" style= \" font-size: 16px; \" >Ops, something went wrong. Please <a href= \" javascript: location.reload(); \" >reload<a/> this page.</div> " ) ) ;
} else {
for ( int i = 0 ; i < users . size ( ) ; i + + ) {
add ( new DisplayBadge ( users . get ( i ) ) ) ;
2014-09-08 18:45:24 +02:00
}
2016-05-26 14:06:59 +02:00
}
}
/ * *
* check if it has to show a group
* @return
* /
private String getGroupShowId ( ) {
return Window . Location . getParameter ( Encoder . encode ( GCubeSocialNetworking . GROUP_MEMBERS_OID ) ) ;
2014-09-08 18:45:24 +02:00
}
2016-10-03 17:44:42 +02:00
2014-09-08 18:45:24 +02:00
}