Package ar.com.AmberSoft.iEvenTask.client

Source Code of ar.com.AmberSoft.iEvenTask.client.Window

package ar.com.AmberSoft.iEvenTask.client;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import ar.com.AmberSoft.iEvenTask.client.resources.Resources;

import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;

/**
* Representa una ventan estandar para la aplicacion
* @author Leo
*
*/

@SuppressWarnings("rawtypes")
public abstract class Window extends com.extjs.gxt.ui.client.widget.Window implements Seleccionable{

  public static final Integer EXTRA_WIDTH = 20;
 
  protected State windowState;
  protected Collection<Field> fields = new ArrayList<Field>();
 
  public Window(){
    windowState =  State.UNKNOW_STATE;
    setIcon(Resources.ICONS.table());
    setLayout(new FitLayout())
  }
 
  /**
   * Retorna el estado de la ventana actual en la aplicacion para el cliente actual
   * @return
   */
  public State getWindowState(){
    return windowState;
  }
 
  /**
   * Establece el estado de la ventana actual
   * @param state
   */
  public void setWindowState(State state){
    windowState = state;
  }
 

  /**
   * Valida que todos los campos a validar sean validos
   * @return
   */
  protected Boolean isValid() {
    Boolean valid = Boolean.TRUE;
    Iterator it = fields.iterator();
    while (it.hasNext()) {
      Field field = (Field) it.next();
      if (!field.isValid()) {
        valid = Boolean.FALSE;
      }
    }
    return valid;
  }
 

  @SuppressWarnings("unused")
  protected void clear() {
    Boolean valid = Boolean.TRUE;
    Iterator it = fields.iterator();
    while (it.hasNext()) {
      Field field = (Field) it.next();
      field.clear();
    }
  } 

  /**
   * Registra el campo
   * @param field
   */
  protected void registerField(Field field){
    if (field != null) {
      fields.add(field);
    }
  }
 
  /**
   * Se invoca cuando se presiona el boton cancelar
   */
  public void onCancel(){
    clear();
    windowState = State.UNKNOW_STATE;
  }

  /**
   * Se invoca cuando se realiza una accion de borrado
   */
  public void onDelete(){
    clear();
    setWindowState(State.UNKNOW_STATE);
  }
 
  /**
   * Se invoca cuando se realiza una accion de seleccion
   */
  public void onSelect(List selected){
    if (selected.size() == 1) {
      Iterator it = selected.iterator();
      if (it.hasNext()) {
        beforeUpdate((BaseModel) it.next());
        Context.getInstance().addDetailExecution("windowState=UPDATE_STATE");
        windowState = State.UPDATE_STATE;
      }
    } else {
      clear();
      Context.getInstance().addDetailExecution("windowState=UNKNOW_STATE");
      windowState = State.UNKNOW_STATE;
    }
  }
 
  /**
   * Se invoca antes de actualizar
   * Por lo general utilizado para cargar los datos de la grilla a los campos correspondientes
   * @param baseModel
   */
  public abstract void beforeUpdate(BaseModel baseModel);
 
  /**
   * Se invoca cuando se presiona el boton save
   */
  public abstract void onSave();
 

  /**
   * Genera un panel horizontal con una etiqueta y el campo correspondiente
   * @param field
   * @param labelText
   * @param fieldWith
   * @param labelWidth
   * @return
   */
  protected HorizontalPanel getFieldHorizontalLine(Field field, String labelText, Integer fieldWith, Integer labelWidth) {
    HorizontalPanel fieldHorizontalLine = new HorizontalPanel();
    fieldHorizontalLine.setWidth(new Integer(fieldWith + labelWidth + EXTRA_WIDTH));
    LabelField labelField = new LabelField(labelText);
    fieldHorizontalLine.add(labelField);
    labelField.setWidth(labelWidth);
    fieldHorizontalLine.add(field);
    // Realiza la validacion del campo cuando pierde el foco
    field.setAutoValidate(Boolean.TRUE);
    field.setValidateOnBlur(Boolean.TRUE);
    field.setWidth(fieldWith);
    return fieldHorizontalLine;
  }
  
  /**
   * Retorna un Model Data Basico
   * Usualmente utilizado en los combos
   * @param key
   * @param value
   * @return
   */
  protected BaseModel getModelData(String key, String value) {
    BaseModel baseModel = new BaseModel();
    baseModel.set("key", key);
    baseModel.set("text", value);
    return baseModel;
  }
 
  /**
   * Setea el valor seleccionado de un combo
   * @param comboBox
   * @param key
   */
  @SuppressWarnings("unchecked")
  protected void setCombo(ComboBox comboBox, String key) {
    ListStore<ModelData> listStore = comboBox.getStore();
    ModelData modelData = null;
    Iterator it = listStore.getModels().iterator();
    while (it.hasNext()) {
      ModelData mdAux = (ModelData) it.next();
      //Context.getInstance().addDetailExecution("Comparando " + key + " con " + mdAux.get("key"));
      if (key.trim().equals(mdAux.get("key").toString().trim())){
        modelData = mdAux;
        break;
      }
    }
    comboBox.setValue(modelData);
  }
 
  public void maskAvaiable(){
    this.mask("Aguarde un momento...");
  }
 
  public void maskDisable(){
    this.unmask();
  }
 
  @Override
  public void onDividir() {
  }

}
TOP

Related Classes of ar.com.AmberSoft.iEvenTask.client.Window

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.