2013-02-06 15:40:17 +01:00
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.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.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.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.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 > ( ) ;
public MultiDragContact ( ) {
setStyleAttribute ( " margin " , " 10px " ) ;
setSize ( 563 , 452 ) ;
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 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 left list (All Contacts) to right list (Share with contacts) to add the 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 ( " login " ) ;
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 contacts... " ) ) ;
Grid < InfoContactModel > grid2 = new Grid < InfoContactModel > ( storeTarget , createColumnModel ( ) ) ;
grid2 . setSize ( 250 , 300 ) ;
grid2 . setBorders ( false ) ;
grid2 . setAutoExpandColumn ( " login " ) ;
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 ( " login " ) ;
column . setHeader ( " login " ) ;
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 addTargetContacts ( List < InfoContactModel > listContact ) {
if ( listContact ! = null & & listContact . size ( ) > 0 )
storeTarget . add ( listContact ) ;
}
2013-02-25 19:03:53 +01:00
public void addTargetContact ( InfoContactModel contact ) {
if ( contact ! = null )
storeTarget . add ( contact ) ;
}
2013-02-06 15:40:17 +01:00
public List < InfoContactModel > getTargetListContact ( ) {
return storeTarget . getModels ( ) ;
}
}