/******************************************************************************* * 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.admin.windows; import java.util.List; import org.opensheet.client.dto.BranchDTO; import org.opensheet.client.dto.DepartmentDTO; import org.opensheet.client.dto.UserDTO; import org.opensheet.client.services.DepartmentService; import org.opensheet.client.services.DepartmentServiceAsync; import org.opensheet.client.services.UserService; import org.opensheet.client.services.UserServiceAsync; import org.opensheet.client.widges.BranchComboBox; import com.extjs.gxt.ui.client.data.BaseListLoader; import com.extjs.gxt.ui.client.data.BeanModel; import com.extjs.gxt.ui.client.data.BeanModelReader; import com.extjs.gxt.ui.client.data.ListLoadResult; import com.extjs.gxt.ui.client.data.ListLoader; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.data.RpcProxy; 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.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.form.CheckBox; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.extjs.gxt.ui.client.widget.form.DateField; import com.extjs.gxt.ui.client.widget.form.FormPanel; import com.extjs.gxt.ui.client.widget.form.TextArea; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; import com.extjs.gxt.ui.client.widget.grid.Grid; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; public class addDepartmentWindow extends Window{ private TextField<String> name; private CheckBox statusBox; private ComboBox<BeanModel> ownerComboBox; private BranchComboBox branchComboBox; private DateField finish; private TextArea noteTextArea; private String usersRpcCriteria = "1"; private ListLoader<?> Userloader; private UserServiceAsync userService = GWT.create(UserService.class); private ListLoader<?> loader; private Grid<BeanModel> grid; @SuppressWarnings({ "unchecked", "rawtypes" }) public addDepartmentWindow(Grid grid){ this.grid = grid; RpcProxy<List<UserDTO>> UserProxy = new RpcProxy<List<UserDTO>>() { @Override protected void load(Object loadConfig, AsyncCallback<List<UserDTO>> callback) { userService.getUsersByRole("dm",callback); } }; Userloader = new BaseListLoader<ListLoadResult<ModelData>>(UserProxy,new BeanModelReader()); final ListStore<BeanModel> UserStore = new ListStore<BeanModel>(Userloader); UserStore.setMonitorChanges(true); Userloader.load(); setSize(360, 440); setPlain(true); setModal(true); setBlinkModal(true); setHeadingHtml("Add new Department"); setLayout(new FitLayout()); FormPanel panel = new FormPanel(); panel.setHeaderVisible(false); name = new TextField<String>(); name.setName("name"); name.setAllowBlank(false); name.setAutoValidate(true); name.setFieldLabel("Name"); panel.add(name); statusBox = new CheckBox(); statusBox.setName("status"); statusBox.setFieldLabel("Status"); statusBox.setValue(true); panel.add(statusBox); branchComboBox = new BranchComboBox(false); panel.add(branchComboBox); ownerComboBox = new ComboBox<BeanModel>(); ownerComboBox.setDisplayField("fullName"); ownerComboBox.setWidth(150); ownerComboBox.setName("owner"); ownerComboBox.setFieldLabel("Owner"); ownerComboBox.setAllowBlank(false); ownerComboBox.setEditable(false); ownerComboBox.setStore(UserStore); ownerComboBox.setTypeAhead(true); ownerComboBox.setValue(UserStore.getAt(0)); ownerComboBox.setTriggerAction(TriggerAction.ALL); panel.add(ownerComboBox); finish = new DateField(); finish.setName("finished"); finish.setFieldLabel("Finish"); panel.add(finish); noteTextArea = new TextArea(); noteTextArea.setPreventScrollbars(true); noteTextArea.setFieldLabel("Description"); noteTextArea.setName("note"); noteTextArea.setMaxLength(450); panel.add(noteTextArea); panel.addButton(new Button("Add Department", new SelectionListener<ButtonEvent>() { @Override public void componentSelected(ButtonEvent ce) { if( name.isValid() && ownerComboBox.isValid() && branchComboBox.isValid()){ addDepartment(); } } })); panel.addButton(new Button("Cancel", new SelectionListener<ButtonEvent>() { @Override public void componentSelected(ButtonEvent ce) { hide(); } })); add(panel); show(); } private void addDepartment(){ DepartmentDTO departmentDTO = new DepartmentDTO(); departmentDTO.setName(name.getValue().toString()); departmentDTO.setBranch((BranchDTO)branchComboBox.getValue().getBean()); if(statusBox.getValue() != true){ departmentDTO.setStatus(false); }else{ departmentDTO.setStatus(true); } departmentDTO.setOwner((UserDTO) ownerComboBox.getValue().getBean()); departmentDTO.setFinished(finish.getValue()); if(noteTextArea.getValue() == null){ departmentDTO.setNote(null); } else { departmentDTO.setNote(noteTextArea.getValue().toString()); } DepartmentServiceAsync departmentService = GWT.create(DepartmentService.class); departmentService.addDepartment(departmentDTO, new AsyncCallback<Void>() { @Override public void onFailure(Throwable caught) { MessageBox.alert("Cannot update department", caught.getMessage(), null); } @Override public void onSuccess(Void result) { hide(); grid.getStore().getLoader().load(); } }); } }