/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.client.widges.department; import java.util.ArrayList; import java.util.List; import org.opensheet.client.services.DepartmentService; import org.opensheet.client.services.DepartmentServiceAsync; import org.opensheet.client.widges.Reloadable; import com.extjs.gxt.ui.client.Style.SelectionMode; import com.extjs.gxt.ui.client.data.BaseModel; import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Info; import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.Window; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel; 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.ColumnLayout; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; public class AddUserToAssignmentWindow extends Window{ private Grid<BaseModel> userAssignmentCheckGrid; private DepartmentServiceAsync departmentService = GWT.create(DepartmentService.class); private Integer departmentId; private Integer assignmentId; private Reloadable panel; public AddUserToAssignmentWindow(Integer assignment,Integer department,Reloadable p){ this.assignmentId = assignment; this.departmentId = department; this.panel = p; setFrame(true); setHeight(450); setWidth(300); setHeadingHtml("Users in assignment: "); setHeaderVisible(true); setClosable(true); setResizable(false); Button saveButton = new Button("Save"); saveButton.addListener(Events.Select,new Listener<BaseEvent>(){ @Override public void handleEvent(BaseEvent be) { List<BaseModel> selectedItems = userAssignmentCheckGrid.getSelectionModel().getSelectedItems(); departmentService.setUsersByDepartmentAndByAssignment(selectedItems, departmentId, assignmentId,new AsyncCallback<Void>(){ @Override public void onFailure(Throwable caught) { MessageBox.alert("Cannot add Users", caught.getMessage(), null); } @Override public void onSuccess(Void result) { Info.display("Success", "it's ok"); loadUserAssignmentCheckGrid(); panel.reload(); } }); } }); Button relaodButton = new Button("Reload"); relaodButton.addListener(Events.Select,new Listener<BaseEvent>(){ @Override public void handleEvent(BaseEvent be) { loadUserAssignmentCheckGrid(); } }); Button closeButton = new Button("Close"); closeButton.addListener(Events.Select,new Listener<BaseEvent>(){ @Override public void handleEvent(BaseEvent be) { hide(); } }); add(doUserAssignmentCheckGrid()); addButton(saveButton); addButton(relaodButton); addButton(closeButton); loadUserAssignmentCheckGrid(); show(); } private void loadUserAssignmentCheckGrid(){ departmentService.getUsersByDepartmentAndByAssignment(departmentId,assignmentId,new AsyncCallback<List<BaseModel>>(){ @Override public void onFailure(Throwable caught) { Info.display("Error", caught.toString()); } @Override public void onSuccess(List<BaseModel> result) { userAssignmentCheckGrid.getStore().removeAll(); userAssignmentCheckGrid.getStore().add(result); for(BaseModel bm: result){ if(bm.get("selected").equals(true)) userAssignmentCheckGrid.getSelectionModel().select(bm, true); } } }); } private Grid<BaseModel> doUserAssignmentCheckGrid(){ final CheckBoxSelectionModel<BaseModel> sm = new CheckBoxSelectionModel<BaseModel>(); sm.getColumn().setMenuDisabled(true); sm.getColumn().setFixed(true); sm.setSelectionMode(SelectionMode.SIMPLE); sm.getColumn().setSortable(false); sm.getColumn().setDataIndex("selected"); List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); configs.add(sm.getColumn()); ColumnConfig userConfig = new ColumnConfig("name", "User", 150); userConfig.setFixed(true); userConfig.setSortable(false); userConfig.setMenuDisabled(true); configs.add(userConfig); ColumnModel cm = new ColumnModel(configs); userAssignmentCheckGrid = new Grid<BaseModel>(new ListStore<BaseModel>(), cm); userAssignmentCheckGrid.setLoadMask(true); userAssignmentCheckGrid.setWidth(288); userAssignmentCheckGrid.setHeight(400); userAssignmentCheckGrid.addStyleName(".my-table-style"); userAssignmentCheckGrid.setBorders(true); userAssignmentCheckGrid.setSelectionModel(sm); userAssignmentCheckGrid.setAutoExpandColumn("name"); userAssignmentCheckGrid.getView().setEmptyText("no data"); userAssignmentCheckGrid.setId("userAssignmentCheckGridId"); return userAssignmentCheckGrid; } }