221 lines
7.3 KiB
Java
221 lines
7.3 KiB
Java
package org.gcube.portlets.user.workspace.client.view.sharing.multisuggest;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
|
|
import org.gcube.portlets.user.workspace.client.resources.Resources;
|
|
|
|
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
|
|
import com.extjs.gxt.ui.client.Style.Orientation;
|
|
import com.extjs.gxt.ui.client.Style.Scroll;
|
|
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
|
|
import com.extjs.gxt.ui.client.dnd.GridDragSource;
|
|
import com.extjs.gxt.ui.client.dnd.GridDropTarget;
|
|
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
|
import com.extjs.gxt.ui.client.event.SelectionListener;
|
|
import com.extjs.gxt.ui.client.store.ListStore;
|
|
import com.extjs.gxt.ui.client.util.Margins;
|
|
import com.extjs.gxt.ui.client.widget.ContentPanel;
|
|
import com.extjs.gxt.ui.client.widget.Dialog;
|
|
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
|
import com.extjs.gxt.ui.client.widget.Label;
|
|
import com.extjs.gxt.ui.client.widget.MessageBox;
|
|
import com.extjs.gxt.ui.client.widget.VerticalPanel;
|
|
import com.extjs.gxt.ui.client.widget.button.Button;
|
|
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.ColumnModel;
|
|
import com.extjs.gxt.ui.client.widget.grid.Grid;
|
|
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.RowLayout;
|
|
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
|
|
|
|
public class MultiDragContact extends Dialog {
|
|
|
|
private GridDropTarget dropSource;
|
|
private GridDropTarget dropTarget;
|
|
private ListStore<InfoContactModel> storeSource = new ListStore<InfoContactModel>();
|
|
private ListStore<InfoContactModel> storeTarget = new ListStore<InfoContactModel>();
|
|
private TextArea textAreaAlreadyShared;
|
|
|
|
public MultiDragContact() {
|
|
setStyleAttribute("margin", "10px");
|
|
setSize(563, 502);
|
|
setHeading("Group dragging contacts");
|
|
setIcon(Resources.getIconUsers());
|
|
setModal(true);
|
|
setScrollMode(Scroll.AUTOY);
|
|
setBodyStyle("padding: 9px; background: none");
|
|
setResizable(true);
|
|
setButtonAlign(HorizontalAlignment.CENTER);
|
|
setButtons(Dialog.OKCANCEL);
|
|
|
|
ContentPanel cpAlreadyShared = new ContentPanel();
|
|
cpAlreadyShared.setSize(530, 50);
|
|
cpAlreadyShared.setHeaderVisible(false);
|
|
|
|
cpAlreadyShared.setLayout(new FitLayout());
|
|
|
|
VerticalPanel vpShared = new VerticalPanel();
|
|
vpShared.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
vpShared.setHorizontalAlign(HorizontalAlignment.CENTER);
|
|
vpShared.setStyleAttribute("padding", "5px");
|
|
vpShared.setLayout(new FitLayout());
|
|
HorizontalPanel hpSharedContacts = new HorizontalPanel();
|
|
hpSharedContacts.setHorizontalAlign(HorizontalAlignment.CENTER);
|
|
hpSharedContacts.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
textAreaAlreadyShared = new TextArea();
|
|
// textField.setFieldLabel("Already shared with");
|
|
// textField.setHeight(30);
|
|
textAreaAlreadyShared.setWidth(401);
|
|
textAreaAlreadyShared.setHeight(33);
|
|
cpAlreadyShared.setStyleAttribute("padding-bottom", "5px");
|
|
textAreaAlreadyShared.setReadOnly(true);
|
|
cpAlreadyShared.add(textAreaAlreadyShared);
|
|
|
|
Label label = new Label("Already shared with");
|
|
label.setStyleAttribute("padding-right", "10px");
|
|
|
|
hpSharedContacts.add(label);
|
|
hpSharedContacts.add(textAreaAlreadyShared);
|
|
vpShared.add(hpSharedContacts);
|
|
cpAlreadyShared.add(vpShared);
|
|
add(cpAlreadyShared);
|
|
|
|
|
|
ContentPanel cp = new ContentPanel();
|
|
cp.setSize(530, 340);
|
|
cp.setHeaderVisible(false);
|
|
cp.setLayout(new RowLayout(Orientation.HORIZONTAL));
|
|
|
|
ToolBar toolBar = new ToolBar();
|
|
Button buttonHelp = new Button();
|
|
buttonHelp.setIcon(Resources.getIconInfo());
|
|
|
|
buttonHelp.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
public void componentSelected(ButtonEvent ce) {
|
|
MessageBox.info("Group dragging action", "Drag one or more contacts from the left (All Contacts) to the right (Share with) to add users in your sharing list.", null);
|
|
|
|
}
|
|
});
|
|
|
|
toolBar.add(buttonHelp);
|
|
setTopComponent(toolBar);
|
|
|
|
VerticalPanel vp = new VerticalPanel();
|
|
vp.setHorizontalAlign(HorizontalAlignment.CENTER);
|
|
vp.add(new Label("All Contacts"));
|
|
Grid<InfoContactModel> grid = new Grid<InfoContactModel>(storeSource, createColumnModel());
|
|
grid.setSize(250,300);
|
|
grid.setBorders(false);
|
|
grid.setAutoExpandColumn(InfoContactModel.FULLNAME);
|
|
grid.setBorders(true);
|
|
|
|
vp.add(grid);
|
|
|
|
RowData data = new RowData(.5, 1);
|
|
data.setMargins(new Margins(6));
|
|
cp.add(vp, data);
|
|
|
|
vp = new VerticalPanel();
|
|
vp.setHorizontalAlign(HorizontalAlignment.CENTER);
|
|
vp.add(new Label("Share with..."));
|
|
Grid<InfoContactModel> grid2 = new Grid<InfoContactModel>(storeTarget, createColumnModel());
|
|
grid2.setSize(250, 300);
|
|
grid2.setBorders(false);
|
|
grid2.setAutoExpandColumn(InfoContactModel.FULLNAME);
|
|
grid2.setBorders(true);
|
|
vp.add(grid2);
|
|
|
|
data = new RowData(.5, 1);
|
|
data.setMargins(new Margins(6, 6, 6, 0));
|
|
cp.add(vp, data);
|
|
|
|
new GridDragSource(grid);
|
|
new GridDragSource(grid2);
|
|
|
|
dropSource = new GridDropTarget(grid);
|
|
dropSource.setAllowSelfAsSource(false);
|
|
|
|
dropTarget = new GridDropTarget(grid2);
|
|
dropTarget.setAllowSelfAsSource(false);
|
|
|
|
add(cp);
|
|
|
|
this.getButtonById(Dialog.CANCEL).addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
public void componentSelected(ButtonEvent ce) {
|
|
hide();
|
|
}
|
|
});
|
|
|
|
|
|
this.getButtonById(Dialog.OK).addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
public void componentSelected(ButtonEvent ce) {
|
|
hide();
|
|
}
|
|
});
|
|
}
|
|
|
|
private ColumnModel createColumnModel() {
|
|
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
|
|
|
|
ColumnConfig column = new ColumnConfig();
|
|
column.setId(InfoContactModel.FULLNAME);
|
|
column.setHeader("Name");
|
|
column.setWidth(200);
|
|
configs.add(column);
|
|
|
|
// column = new ColumnConfig();
|
|
// column.setId("symbol");
|
|
// column.setHeader("Symbol");
|
|
// column.setWidth(100);
|
|
// configs.add(column);
|
|
|
|
return new ColumnModel(configs);
|
|
}
|
|
|
|
public void addSourceContacts(List<InfoContactModel> listContact){
|
|
|
|
if(listContact!=null && listContact.size()>0)
|
|
storeSource.add(listContact);
|
|
}
|
|
|
|
public void addAlreadySharedContacts(List<InfoContactModel> listContact){
|
|
|
|
if(listContact!=null && listContact.size()>0){
|
|
|
|
String alreadyShared = "";
|
|
for (int i=0; i<listContact.size()-1; i++)
|
|
alreadyShared+=listContact.get(i).getName()+", ";
|
|
|
|
alreadyShared+=listContact.get(listContact.size()-1).getName();
|
|
|
|
textAreaAlreadyShared.setValue(alreadyShared);
|
|
}
|
|
|
|
}
|
|
|
|
public void addTargetContacts(List<InfoContactModel> listContact){
|
|
if(listContact!=null && listContact.size()>0)
|
|
storeTarget.add(listContact);
|
|
}
|
|
|
|
public void addTargetContact(InfoContactModel contact){
|
|
if(contact!=null)
|
|
storeTarget.add(contact);
|
|
}
|
|
|
|
public List<InfoContactModel> getTargetListContact(){
|
|
return storeTarget.getModels();
|
|
}
|
|
|
|
}
|