enhancements on sharing with groups

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@97857 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2014-06-26 13:06:10 +00:00
parent d275856fa3
commit 2788eb29ec
10 changed files with 160 additions and 28 deletions

View File

@ -1,5 +1,6 @@
package org.gcube.portlets.widgets.workspacesharingwidget.client; package org.gcube.portlets.widgets.workspacesharingwidget.client;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.ACL_TYPE; import org.gcube.portlets.widgets.workspacesharingwidget.shared.ACL_TYPE;
import com.extjs.gxt.ui.client.widget.Window; import com.extjs.gxt.ui.client.widget.Window;
@ -22,8 +23,9 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint {
public void onModuleLoad() { public void onModuleLoad() {
try { try {
WorkspaceSharingController controller = new WorkspaceSharingController(ITEMID, true, ACL_TYPE.READ_ONLY); /*WorkspaceSharingController controller = new WorkspaceSharingController(ITEMID, true, ACL_TYPE.READ_ONLY);
final Window sharingWindow = controller.getSharingDialog(); final Window sharingWindow = controller.getSharingDialog();
@ -36,6 +38,20 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint {
}); });
RootPanel.get("workpacesharingwidget").add(openSharingWindow); RootPanel.get("workpacesharingwidget").add(openSharingWindow);
*/
final SmartShare smartShare = new SmartShare(false, true);
Button openSharingWindow = new Button("Show Smart Share Window",
new ClickHandler() {
public void onClick(ClickEvent event) {
smartShare.show();
}
});
RootPanel.get("workpacesharingwidget").add(openSharingWindow);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -25,5 +25,17 @@ public interface Icons extends ClientBundle {
@Source("share.png") @Source("share.png")
ImageResource share(); ImageResource share();
/**
* @return
*/
@Source("shareuser.png")
ImageResource user();
/**
* @return
*/
@Source("sharegroup.png")
ImageResource group();
} }

View File

@ -45,5 +45,20 @@ public class Resources {
public static AbstractImagePrototype getIconShare() { public static AbstractImagePrototype getIconShare() {
return AbstractImagePrototype.create(ICONS.share()); return AbstractImagePrototype.create(ICONS.share());
} }
/**
* @return
*/
public static AbstractImagePrototype getIconUser() {
return AbstractImagePrototype.create(ICONS.user());
}
/**
* @return
*/
public static AbstractImagePrototype getIconGroup() {
return AbstractImagePrototype.create(ICONS.group());
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

View File

@ -18,6 +18,7 @@ import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store; import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreSorter;
import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.Dialog;
@ -29,8 +30,10 @@ import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.StoreFilterField; import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
import com.extjs.gxt.ui.client.widget.form.TextArea; import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel; import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid; import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.RowData; import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout; import com.extjs.gxt.ui.client.widget.layout.RowLayout;
@ -57,6 +60,10 @@ public class MultiDragContact extends Dialog {
setResizable(true); setResizable(true);
setButtonAlign(HorizontalAlignment.CENTER); setButtonAlign(HorizontalAlignment.CENTER);
setButtons(Dialog.OKCANCEL); setButtons(Dialog.OKCANCEL);
//SORTING STORE
setGropUserStoreSorter(storeSource);
setGropUserStoreSorter(storeTarget);
ContentPanel cpAlreadyShared = new ContentPanel(); ContentPanel cpAlreadyShared = new ContentPanel();
cpAlreadyShared.setSize(530, 60); cpAlreadyShared.setSize(530, 60);
@ -151,8 +158,9 @@ public class MultiDragContact extends Dialog {
filter.bind(storeSource); filter.bind(storeSource);
gridAllContacts.setSize(250,310); gridAllContacts.setSize(250,310);
gridAllContacts.setBorders(false); gridAllContacts.setBorders(false);
gridAllContacts.setAutoExpandColumn(InfoContactModel.FULLNAME); gridAllContacts.getView().setAutoFill(true);
// gridAllContacts.setAutoExpandColumn(InfoContactModel.FULLNAME);
gridAllContacts.setBorders(true); gridAllContacts.setBorders(true);
vp.add(hp); vp.add(hp);
@ -199,7 +207,8 @@ public class MultiDragContact extends Dialog {
gridShareWith.setSize(250, 310); gridShareWith.setSize(250, 310);
gridShareWith.setBorders(false); gridShareWith.setBorders(false);
gridShareWith.setAutoExpandColumn(InfoContactModel.FULLNAME); gridShareWith.getView().setAutoFill(true);
// gridShareWith.setAutoExpandColumn(InfoContactModel.FULLNAME);
gridShareWith.setBorders(true); gridShareWith.setBorders(true);
vp.add(hp); vp.add(hp);
vp.add(gridShareWith); vp.add(gridShareWith);
@ -239,20 +248,49 @@ public class MultiDragContact extends Dialog {
private ColumnModel createColumnModel() { private ColumnModel createColumnModel() {
List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig(); ColumnConfig icon = new ColumnConfig("Icon", "", 25);
column.setId(InfoContactModel.FULLNAME); configs.add(icon);
column.setHeader("Name");
column.setWidth(200); ColumnConfig columnConfigDisplayName = new ColumnConfig(InfoContactModel.FULLNAME, "Name", 150);
configs.add(column); configs.add(columnConfigDisplayName);
// column = new ColumnConfig(); ColumnConfig type = new ColumnConfig(InfoContactModel.ISGROUP, "Type", 50);
// column.setId("symbol"); configs.add(type);
// column.setHeader("Symbol");
// column.setWidth(100); GridCellRenderer<InfoContactModel> iconRender = new GridCellRenderer<InfoContactModel>() {
// configs.add(column); @Override
public String render(InfoContactModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<InfoContactModel> store, Grid<InfoContactModel> grid) {
return new ColumnModel(configs); Boolean isGroup = (Boolean) model.get(property);
if(isGroup){
return Resources.getIconGroup().getHTML();
}else{
return Resources.getIconUser().getHTML();
}
}
};
icon.setRenderer(iconRender);
GridCellRenderer<InfoContactModel> typeRender = new GridCellRenderer<InfoContactModel>() {
@Override
public String render(InfoContactModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<InfoContactModel> store, Grid<InfoContactModel> grid) {
Boolean isGroup = (Boolean) model.get(property);
String color = "#0F4FA8";
String val = "";
if(isGroup){
val = "Group";
color = "#05316D";
return "<span style='font-weight: bold; color:" + color + "'>" + val + "</span>";
}else{
val = "User";
return "<span style='font-weight: bold; color:" + color + "'>" + val + "</span>";
}
}
};
type.setRenderer(typeRender);
return new ColumnModel(configs);
} }
public void addSourceContacts(List<InfoContactModel> listContact){ public void addSourceContacts(List<InfoContactModel> listContact){
@ -302,4 +340,24 @@ public class MultiDragContact extends Dialog {
return storeTarget.getModels(); return storeTarget.getModels();
} }
private void setGropUserStoreSorter(ListStore<InfoContactModel> store){
// Sorting files
store.setStoreSorter(new StoreSorter<InfoContactModel>() {
@Override
public int compare(Store<InfoContactModel> store, InfoContactModel m1, InfoContactModel m2, String property) {
boolean m1Group = m1.isGroup();
boolean m2Group = m2.isGroup();
if (m1Group && !m2Group) {
return -1;
} else if (!m1Group && m2Group) {
return 1;
}
return m1.getName().compareToIgnoreCase(m2.getName());
}
});
}
} }

View File

@ -87,6 +87,10 @@ public class GWTWorkspaceSharingBuilder {
hashTestUser.put("valentina.marioli", new InfoContactModel( hashTestUser.put("valentina.marioli", new InfoContactModel(
"valentina.marioli", "valentina.marioli", "valentina.marioli", "valentina.marioli",
"Valentina Marioli", false)); "Valentina Marioli", false));
hashTestUser.put("devVRE", new InfoContactModel(
"devVRE", "devVRE",
"devVRE", true));
// hashTestUser.put(WsUtil.TEST_USER.toString(), // hashTestUser.put(WsUtil.TEST_USER.toString(),
// new InfoContactModel( // new InfoContactModel(

View File

@ -33,6 +33,7 @@ import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel
import org.gcube.portlets.widgets.workspacesharingwidget.shared.SessionExpiredException; import org.gcube.portlets.widgets.workspacesharingwidget.shared.SessionExpiredException;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL; import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VO; import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VO;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VRE;
import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.UserManager; import org.gcube.vomanagement.usermanagement.UserManager;
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager;
@ -89,8 +90,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
GWTWorkspaceSharingBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceSharingBuilder builder = getGWTWorkspaceBuilder();
if(isTestMode()){ if(isTestMode()){
logger.info("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS"); logger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS AND GROUPS");
logger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS");
List<InfoContactModel> listContactsModel = new ArrayList<InfoContactModel>(); List<InfoContactModel> listContactsModel = new ArrayList<InfoContactModel>();
// //TEST USERS // //TEST USERS
listContactsModel.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri", false)); listContactsModel.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri", false));
@ -102,6 +102,10 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante", false)); listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante", false));
listContactsModel.add(new InfoContactModel("valentina.marioli", "valentina.marioli", "Valentina Marioli", false)); listContactsModel.add(new InfoContactModel("valentina.marioli", "valentina.marioli", "Valentina Marioli", false));
listContactsModel.add(new InfoContactModel("leonardo.candela", "leonardo.candela", "Leonardo Candela", false)); listContactsModel.add(new InfoContactModel("leonardo.candela", "leonardo.candela", "Leonardo Candela", false));
listContactsModel.add(new InfoContactModel("devVRE", "devVRE", "devVRE", true));
// listContactsModel.addAll(getFakeGroups());
return listContactsModel; return listContactsModel;
} }
@ -135,7 +139,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
listContactsModel.addAll(builder.buildGXTListContactsModelFromVOs(lsVOs)); listContactsModel.addAll(builder.buildGXTListContactsModelFromVOs(lsVOs));
} }
logger.info("Get all contacts returning a list having size: "+listContactsModel.size());
return listContactsModel; return listContactsModel;
} catch (Exception e) { } catch (Exception e) {
@ -453,20 +457,43 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
return listContacts; return listContacts;
} }
/**
* DEBUG
* @return
*/
private List<InfoContactModel> getFakeGroups(){
List<InfoContactModel> listContactsModel = new ArrayList<InfoContactModel>();
PortalContext context = PortalContext.getConfiguration();
System.out.println("context.getInfrastructureName(): "+context.getInfrastructureName());
// System.out.println("context.getVOsAsString(): "+context.getVOsAsString());
List<VO> vos = WsUtil.getVresFromInfrastructure(context.getInfrastructureName(), "devsec");
for (VO vo : vos) {
System.out.println("vo name "+vo.getName());
for (VRE vre : vo.getVres()) {
System.out.println("vre name "+vre.getName());
listContactsModel.add(new InfoContactModel(vre.getName(), vre.getName(), vre.getName(), true));
}
}
return listContactsModel;
}
public static void main(String[] args) { public static void main(String[] args) {
// WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl(); WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl();
try { try {
PortalContext context = PortalContext.getConfiguration(); List<InfoContactModel> groups = impl.getFakeGroups();
System.out.println("context.getInfrastructureName(): "+context.getInfrastructureName());
System.out.println("context.getVOsAsString(): "+context.getVOsAsString());
List<VO> vos = WsUtil.getVresFromInfrastructure(context.getInfrastructureName(), context.getVOsAsString());
for (VO vo : vos) { for (InfoContactModel infoContactModel : groups) {
System.out.println("vo name "+vo.getName()); System.out.println(infoContactModel);
} }
} catch (Exception e) { } catch (Exception e) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B