Package com.proyecto.miniplan.client

Source Code of com.proyecto.miniplan.client.MiniPlan

package com.proyecto.miniplan.client;

import java.util.ArrayList;

import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.proyecto.miniplan.client.LoginInfo;
import com.proyecto.miniplan.client.LoginService;
import com.proyecto.miniplan.client.LoginServiceAsync;
import com.proyecto.miniplan.shared.ProyectoDTO;
import com.proyecto.miniplan.shared.TareaDTO;
import com.google.gwt.cell.client.DatePickerCell;
import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.i18n.client.DateTimeFormat;


import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;

import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.SimplePager;

import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;

import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.ResizeLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ProvidesKey;

import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;

/**
* Entry point classes define <code>onModuleLoad()</code>.
*/

public class MiniPlan implements EntryPoint {

  //internacionalizaci�n
  private MiniPlanConstants constants = GWT.create(MiniPlanConstants.class);
 
  private final ProyectoServiceAsync ProyService = GWT.create(ProyectoService.class);
 
  //Objetos PanelLogin
  private LoginInfo loginInfo = null;
  private HorizontalPanel panelLogin = new HorizontalPanel();
  private HTML labelLogin = new HTML("", true);
  private Anchor linkAcceder = new Anchor(constants.acceder());
  private Anchor linkSalir = new Anchor(constants.salir());
  private ListBox lb = new ListBox();
  private HTML img1 = new HTML("<img  src=\"/images/world.png\"/> ", true);
 
 
  //Objetos Proyecto
  MenuBar panelOpcionesP;
  private final String ffecha = "dd/MM/yyyy";
  //public CellTable<TareaDTO> table;
  public TabLayoutPanel tabPanel;
  public CellTable tablaP;
  public List<ProyectoDTO> proyectos;
  public ProyectoDTO ProySeleccionado;
  public ResizeLayoutPanel resizePanel;
  public List<ProyectoCliente> proyAbiertos;
  public ProyectoCliente PSeleccion;
  public boolean saved = false;
 
 
  public final SingleSelectionModel<TareaDTO> selectionModel = new SingleSelectionModel<TareaDTO>();
  public final SingleSelectionModel<ProyectoDTO> selectionModelP = new SingleSelectionModel<ProyectoDTO>();
 
 
  //pdf error de conexi�n del servidor
  private String SERVER_ERROR = constants.de1(); //"Un error ha ocurrido mientras se establecia una conexi�n al servidor de Google Docs, por favor revise su conexi�n y pruebe otra vez."

  //pdf
  private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
  public DialogBox dialogBox = new DialogBox();
  public  Button closeButton = new Button("Close");
  public Label textToServerLabel = new Label();
  public HTML serverResponseLabel = new HTML();
  public Button btpdf = new Button("PDF");
 
 
  //informaci�n trabajando
  private HTML workmsg = new HTML("",true);
  private HTML workmsg2 = new HTML("",true);
 
  private String value = com.google.gwt.user.client.Window.Location.getPath();
  private String valueen = value+"?locale=en_US";
 
  //timer
  private Timer t;
  private int TIME=3000;
 
  public final long MS_POR_DIA = 1000 * 60 * 60 * 24;
 
  DialogBox dialogBox2 = createDialogBox();
 
    //dialogBox2.setGlassEnabled(true);
    //dialogBox2.setAnimationEnabled(true);
 
  public void onModuleLoad() {
   
   
   
   
    dialogBox2.setGlassEnabled(true);
    dialogBox2.setAnimationEnabled(true);
   
    //pdf
    // Creando el cuadro de dialogo
    dialogBox.setText(constants.de2());//Llama al servidor de Google Docs
    dialogBox.setAnimationEnabled(true);
    closeButton.getElement().setId("closeButton");
   
    VerticalPanel dialogVPanel = new VerticalPanel();
    dialogVPanel.addStyleName("dialogVPanel");
    dialogVPanel.add(new HTML("<b>"+constants.de3()+"</b>")); //Env&iacute;ando informaci&oacute;n al servidor de Google Docs:
    dialogVPanel.add(textToServerLabel);
    dialogVPanel.add(new HTML("<br><b>"+constants.de4()+"</b>"));//El servidor de Google Docs dice:
    dialogVPanel.add(serverResponseLabel);
    dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT);
    dialogVPanel.add(closeButton);
    dialogBox.setWidget(dialogVPanel);
   
   
   
    closeButton.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        dialogBox.hide();
        //enable pdf buton
        btpdf.setEnabled(true);
       
      }
    });
   
   
    //pdf
   
    //internacionalizaci�n
    lb.addItem("Default");
    lb.addItem(constants.espanol());
    lb.addItem(constants.ingles());
   
    lb.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        if (lb.getSelectedIndex()==1){
          espanol();
        }
        else if (lb.getSelectedIndex()==2){
          ingles();
       
      }

      private void ingles() {
       
       
        Window.open(valueen, "_self""menubar=no," +
              "location=false," +
              "resizable=no," +
              "scrollbars=no," +
              "status=no," +
              "dependent=true");
       
       
       
      }

      private void espanol() {
       
        Window.open(value, "_self""menubar=no," +
              "location=false," +
              "resizable=no," +
              "scrollbars=no," +
              "status=no," +
              "dependent=true");
       
       
       
      }
    });
   
   
   
   
   
    //internacionalizaci�n
   
    panelLogin.addStyleName("login");
    panelLogin.add(labelLogin);
    panelLogin.add(linkAcceder);
   
    RootPanel.get("PanelLogin").add(panelLogin);
   
    LoginServiceAsync loginService = GWT.create(LoginService.class);
      loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>() {
        public void onFailure(Throwable error) {
        }

        public void onSuccess(LoginInfo result) {
          loginInfo = result;
          if(loginInfo.isLoggedIn()) {
            CargarAplicacion();
          } else {
            CargarPanelLogin();
          }
        }
      });
     
     
     
        DOM.removeChild(RootPanel.getBodyElement(), DOM.getElementById("loading"));
     

  }
 
  public void CargarPanelLogin(){
    //panelLogin.clear();
    panelLogin.add(img1);
    panelLogin.add(lb);
    labelLogin.setHTML("&nbsp; | "+constants.bienvenida()+" | &nbsp;");
   
    linkAcceder.setHref(loginInfo.getLoginUrl());
    panelLogin.add(labelLogin);
    panelLogin.add(linkAcceder);
    RootPanel.get("PanelLogin").add(panelLogin);
  }
 
  public void CargarAplicacion(){
    //PanelLogin
    panelLogin.clear();
    panelLogin.add(img1);
    panelLogin.add(lb);
    labelLogin.setHTML("&nbsp; | "+ loginInfo.getNickname()+ " | &nbsp;");
    panelLogin.add(labelLogin);
    panelLogin.add(linkSalir);
    linkSalir.setHref(loginInfo.getLogoutUrl());
   
    //Cargar lista de los proyectos
    CargarProyectos();
  }
   
    public void CargarProyectos(){
     
        //panel de cargar
        workmsg.setHTML("&nbsp; "+constants.ocupado()+"...");
      workmsg.setStyleName("workmsg");
      workmsg2.setStyleName("workmsg2");
      workmsg.setVisible(false);
      workmsg2.setVisible(false);
      RootPanel.get("PanelProyecto").add(workmsg);
      RootPanel.get("PanelProyecto").add(workmsg2);
     
     
      tabPanel = new TabLayoutPanel(2.5, Unit.EM);
      tabPanel.setAnimationDuration(1000);
      proyAbiertos = new ArrayList<ProyectoCliente>();
      proyAbiertos.add(new ProyectoCliente(new ProyectoDTO()));
      tabPanel.addSelectionHandler(new SelectionHandler<Integer>(){
          public void onSelection(SelectionEvent<Integer> event) {
            if(proyAbiertos.size()>0){
              //Window.alert("Proyecto " + proyAbiertos.get(event.getSelectedItem()).proyecto.nombre);
              PSeleccion = proyAbiertos.get(event.getSelectedItem());
            }
              
      }});
     
     
      proyectos = new ArrayList<ProyectoDTO>();
    //Cargar proyecos del usuario, buscado por su email
      ProyService.abrirProyectos(loginInfo.getEmailAddress(), new AsyncCallback<ArrayList<ProyectoDTO>>(){

        @Override
        public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
          Window.alert(constants.error1()); //error abriendo proyectos
         
        }

        @Override
        public void onSuccess(ArrayList<ProyectoDTO> result) {
          // TODO Auto-generated method stub
         
         
         
          proyectos = result;
         
          tabPanel.add(CargarPanelProyectos(), constants.inicio());
         
         
          resizePanel = new ResizeLayoutPanel();
            resizePanel.setWidth("100%");
            resizePanel.setHeight(Window.getClientHeight() + "px");
           
            Window.addResizeHandler(new ResizeHandler() {

                public void onResize(ResizeEvent event) {
                  int height = event.getHeight();
                  resizePanel.setHeight(height + "px");
                }
              });
           
            resizePanel.setWidget(tabPanel);
           

          RootPanel.get("PanelProyecto").add(resizePanel);
        }
       
      });
    }
   
   
    TextBox txNuevoN = new TextBox();
    TextBox txNuevoD = new TextBox();
    private SimplePager pager;
   
    public List<ProyectoDTO> proy;
   
    public Widget CargarPanelProyectos(){


     
        //Crear CellTable
        //tablaP = new CellTable<ProyectoDTO>(KEY_PROVIDER);
        tablaP = new CellTable<ProyectoDTO>();
        tablaP.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
        tablaP.setWidth("100%", true);
        //tablaP.setPageSize(15);
       
        tablaP.setSelectionModel(selectionModelP);
        selectionModelP.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
          public void onSelectionChange(SelectionChangeEvent event) {
            ProyectoDTO selected = selectionModelP.getSelectedObject();
            if (selected != null) {
              //Window.alert("You selected: " + selected);
              ProySeleccionado = selected;
            }
          }
        });
   
      

       
      //Columna nombre
        EditTextCell txnombre2 = new EditTextCell();
        Column<ProyectoDTO, String> col_nombre = new Column<ProyectoDTO, String>(txnombre2){
          @Override
          public String getValue(ProyectoDTO object) {
            return object.nombre;
          }
        };
       
       
        col_nombre.setFieldUpdater(new FieldUpdater<ProyectoDTO, String>(){
          @Override
        public void update(int index, ProyectoDTO object, String value) {
          // TODO Auto-generated method stub
          object.nombre = value;
          actualizarNombreProyecto(value)
        }
        });
       
        tablaP.addColumn(col_nombre, constants.nombre());
        tablaP.setColumnWidth(col_nombre, Window.getClientWidth()*.25, Unit.PX);
       

     
       
        //columna id
        EditTextCell txid2 = new EditTextCell();
        Column<ProyectoDTO, String> col_des = new Column<ProyectoDTO, String>(txid2){
          @Override
          public String getValue(ProyectoDTO object) {
            return object.descripcion;
          }
        };
   
        col_des.setFieldUpdater(new FieldUpdater<ProyectoDTO, String>(){

        @Override
        public void update(int index, ProyectoDTO object, String value) {
          // TODO Auto-generated method stub
          object.descripcion = value;
          actualizarDescripcionProyecto(value);
        }
         
        });
       
        tablaP.addColumn(col_des, constants.descripcion());
        tablaP.setColumnWidth(col_des, Window.getClientWidth()*.70, Unit.PX);
       


        AsyncDataProvider<ProyectoDTO> provider = new AsyncDataProvider<ProyectoDTO>() {
            @Override
            protected void onRangeChanged(HasData<ProyectoDTO> display) {
              int start = display.getVisibleRange().getStart();
              int end = start + display.getVisibleRange().getLength();
              end = end >= proyectos.size() ? proyectos.size() : end;
              List<ProyectoDTO> sub = proyectos.subList(start, end);
              updateRowData(start, sub);
            }
          };
          provider.addDataDisplay(tablaP);
          provider.updateRowCount(proyectos.size(), true);
       
        /*panel horizonal de controles */
        HorizontalPanel hP = new HorizontalPanel();
        hP.setSpacing(5);
       
        Label lbNuevoN = new Label(constants.nombre()+":");
        Label lbNuevoD = new Label(constants.descripcion()+":");
        Button btNuevo =  new Button( constants.crear());
        btNuevo.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    CrearProyecto();
                  }
        });
        btNuevo.ensureDebugId("cwBasicButton-normal");
       
        Button btEliminar =  new Button(constants.eliminar());
        btEliminar.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    //Window.alert("Eliminar proyecto " + ProySeleccionado.nombre + " de " + ProySeleccionado.usuario);
                    EliminarProyecto();
                  }
        });
        btEliminar.ensureDebugId("cwBasicButton-normal");
       
        Button btAbrir =  new Button(constants.abrir());
        btAbrir.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    PSeleccion = new ProyectoCliente(ProySeleccionado);
                    proyAbiertos.add(PSeleccion);
                    AbrirProyecto();
                  }
        });
        btAbrir.ensureDebugId("cwBasicButton-normal");
       
        lbNuevoN.setVisible(true);
        txNuevoN.setVisible(true);
        lbNuevoD.setVisible(true);
        txNuevoD.setVisible(true);
        btNuevo.setVisible(true);
        btEliminar.setVisible(true);
        btAbrir.setVisible(true);
       
        hP.add(lbNuevoN);
        hP.add(txNuevoN);
        hP.add(lbNuevoD);
        hP.add(txNuevoD);
        hP.add(btNuevo);
        hP.add(btEliminar);
        hP.add(btAbrir);
       
       
        /*fin de panel horizontal*/
       
        VerticalPanel vP = new VerticalPanel();
        vP.setWidth("100%");
        vP.setSpacing(5);
        vP.add(hP);
       
        //SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
        //pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
        pager = new SimplePager();
        pager.setDisplay(tablaP);
       
        pager.getElement().getStyle().setProperty("marginLeft", "auto");
        pager.getElement().getStyle().setProperty("marginRight", "auto");
       
        vP.add(tablaP);
      vP.add(pager);
      vP.setStyleName(".centrar");
          resizePanel = new ResizeLayoutPanel();
          resizePanel.setWidth("99%");
          resizePanel.setHeight(Window.getClientHeight() + "px");
         
          Window.addResizeHandler(new ResizeHandler() {

              public void onResize(ResizeEvent event) {
                int height = event.getHeight();
                resizePanel.setHeight(height + "px");
              }
            });
         
          resizePanel.setWidget(vP);
   
     
         
         
       return resizePanel;
    }
   

   
   
    public Long id_nuevo;
   
    public void CrearProyecto(){
     
      if (txNuevoN.getText().compareTo("")!=0){
        ProyService.nuevoProyecto(loginInfo.getEmailAddress(), txNuevoN.getText(), txNuevoD.getText(), new AsyncCallback<Long>(){
          @Override
          public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
            //Window.alert(constants.error1()); //error abriendo proyectos
            workmsg2.setHTML("&nbsp; "+constants.error1()+"...");
             workmsg2.setVisible(true);
           
               t = new Timer() {
                public void run() {
                  workmsg2.setVisible(false);  
                }
              };

              t.schedule(TIME);
           
          }

          @Override
          public void onSuccess(Long result) {
            // TODO Auto-generated method stub
            id_nuevo=result;
          //int num = tablaP.getRowCount();
          proyectos.add(new ProyectoDTO(id_nuevo, loginInfo.getEmailAddress(),txNuevoN.getText(), txNuevoD.getText(), false));
          tablaP.setRowCount(proyectos.size(), true);
          tablaP.setRowData(0, proyectos);
          //tablaP.redraw();
          }   
        });
      }
      else{
        workmsg2.setHTML("&nbsp; "+constants.m4()+"..."); //ingrese el nombre
          workmsg2.setVisible(true);
          t = new Timer() {
              public void run() {
                workmsg2.setVisible(false);  
              }
            };

            t.schedule(TIME);
      }
     
     
    }
   
    public void AbrirProyecto(){
      workmsg.setVisible(true);
    //LLamar tareas
        ProyService.abrirTarea(ProySeleccionado.id, new AsyncCallback<ArrayList<TareaDTO>>(){

        @Override
        public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
         
        }

        @Override
        public void onSuccess(ArrayList<TareaDTO> result) {
          // TODO Auto-generated method stub
          ProySeleccionado.tareas = result;
          PSeleccion.proyecto.tareas = result;
          tabPanel.add(CargarPanelProyecto(),ProySeleccionado.nombre);
          //tabPanel.selectTab(proyAbiertos.size() - 1);
          tabPanel.selectTab(tabPanel.getWidgetCount()-1);
          int x = tabPanel.getOffsetWidth();
            PSeleccion.scrollPanel.setPixelSize(x-570, 450);
            PSeleccion.cargarTareas();
        }
         
        });
       
    }
   
    public void EliminarProyecto(){
      ProyService.eliminarProyecto(ProySeleccionado.id, ProySeleccionado.usuario, new AsyncCallback<Void>(){

      @Override
      public void onFailure(Throwable caught) {
        // TODO Auto-generated method stub
       
      }

      @Override
      public void onSuccess(Void result) {
        // TODO Auto-generated method stub
        ProyectoDTO selected = selectionModelP.getSelectedObject();
        proyectos.remove(selected);
         
        /*Iterator iter = proyectos.iterator();
        int i=0;
        while (iter.hasNext()){
          ((ProyectoDTO)iter.next()).numero = i;
          i++;
        }*/
        tablaP.setRowCount(proyectos.size(), true);
        tablaP.setRowData(0, proyectos);
        //tablaP.redraw();
        //Window.alert(constants.m1());//"Proyecto eliminado exitosamente"
       
        workmsg2.setHTML("&nbsp; "+constants.m1()+"...");
          workmsg2.setVisible(true);
       
            t = new Timer() {
              public void run() {
                workmsg2.setVisible(false);  
              }
            };

            t.schedule(3000);
          
           
       
       
      }
       
      });
    }
   
    public Widget CargarPanelProyecto(){
       
        //Crear Tablas
        // Agregar columna numero
        TextColumn<TareaDTO> txnumero = new TextColumn<TareaDTO>() {
          @Override
          public String getValue(TareaDTO object) {
            return String.valueOf(object.numero);
          }
        };
        PSeleccion.tabla.addColumn(txnumero, constants.numero());
        PSeleccion.tabla.setColumnWidth(txnumero, 10, Unit.PX);
       
        //Columna nombre
        EditTextCell txnombre = new EditTextCell();
        Column<TareaDTO, String> col_nombre = new Column<TareaDTO, String>(txnombre){
          @Override
          public String getValue(TareaDTO object) {
            return object.nombre;
          }
        };
        PSeleccion.tabla.addColumn(col_nombre, constants.nombre());
        PSeleccion.tabla.setColumnWidth(col_nombre, 300, Unit.PX);
        col_nombre.setFieldUpdater(new FieldUpdater<TareaDTO, String>(){

        @Override
        public void update(int index, TareaDTO object, String value) {
          // TODO Auto-generated method stub
          object.nombre = value;
        }
         
        });
       
        //Columna inicio
        DatePickerCell tx_inicio = new DatePickerCell(DateTimeFormat.getFormat(ffecha));
       
        Column<TareaDTO, Date> col_inicio = new Column<TareaDTO, Date>(tx_inicio) {
          @Override
          public Date getValue(TareaDTO object) {
            return object.inicio;
          }
        };
        PSeleccion.tabla.addColumn(col_inicio, constants.inicio());
        col_inicio.setFieldUpdater(new FieldUpdater<TareaDTO, Date>(){

        @Override
        public void update(int index, TareaDTO object, Date value) {
          // TODO Auto-generated method stub   
          object.inicio = value;
         
          if(object.inicio.before(PSeleccion.fecha_ini)){
            PSeleccion.canvas.clear();
            PSeleccion.crea_gantt();
            PSeleccion.cargarTareas();
          }
         
          PSeleccion.actualizarDibujo(PSeleccion.proyecto.tareas.indexOf(object), object.inicio, object.fin);
        }
         
        });
       
        //Columna fin
        DatePickerCell tx_fin = new DatePickerCell(DateTimeFormat.getFormat(ffecha));
        Column<TareaDTO, Date> col_fin = new Column<TareaDTO, Date>(tx_fin) {
          @Override
          public Date getValue(TareaDTO object) {
            return object.fin;
          }
        };
        PSeleccion.tabla.addColumn(col_fin, constants.fin());
        col_fin.setFieldUpdater(new FieldUpdater<TareaDTO, Date>(){

        @Override
        public void update(int index, TareaDTO object, Date value) {
          // TODO Auto-generated method stub
          object.fin = value;
         
          if(object.fin.after(PSeleccion.fecha_fin)){
            PSeleccion.canvas.clear();
            PSeleccion.crea_gantt();
            PSeleccion.cargarTareas();
          }
         
          PSeleccion.actualizarDibujo(PSeleccion.proyecto.tareas.indexOf(object), object.inicio, object.fin);
        }
         
        });
       
       
     // Add a selection model to handle user selection.
        PSeleccion.tabla.setSelectionModel(selectionModel);
        selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
          public void onSelectionChange(SelectionChangeEvent event) {
            TareaDTO selected = selectionModel.getSelectedObject();
            if (selected != null) {
              //Window.alert("You selected: " + String.valueOf(selected.nombre));
            }
          }
        });
       
       
        PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
        PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
       
        HorizontalPanel hP = new HorizontalPanel();
        hP.setStyleName(".cosa");
        //hP.setWidth("100%");
        hP.setSpacing(5);
       
        Button btNuevo =  new Button(constants.nueva());
        btNuevo.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    NuevaTarea();
                  }
        });
        btNuevo.ensureDebugId("cwBasicButton-normal");
       
        Button btEliminar =  new Button(constants.eliminar());
        btEliminar.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                   
                  workmsg2.setHTML("&nbsp; "+constants.m2());
                workmsg2.setVisible(true);
                    t = new Timer() {
                  public void run() {
                    workmsg2.setVisible(false);  
                  }
                };
             
                    EliminarTarea();
                    t.schedule(TIME);
                  }
        });
        btEliminar.ensureDebugId("cwBasicButton-normal");
       
        Button btGuardar =  new Button(constants.guardarp());
        btGuardar.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    //Window.alert("Tiene tareas: " + String.valueOf(PSeleccion.proyecto.tareas.size()));
                    GuardarProyectoP();
                    /*if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
                      for (TareaDTO tar : PSeleccion.proyecto.tareas) {
                    Window.alert(tar.nombre + " " + String.valueOf(tar.duracion) + " " + String.valueOf(tar.inicio) + " " + String.valueOf(tar.fin));
                      }
                      } else {
                          // ... no results ...
                      }*/
                  }
        });
        btGuardar.ensureDebugId("cwBasicButton-normal");
       
        Button btCerrar =  new Button(constants.cerrarp());
        btCerrar.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    CerrarProyecto();
                  }
        });
        btCerrar.ensureDebugId("cwBasicButton-normal");
       
       
       
       
        //pdf
      //  Button btpdf = new Button("PDF");
        btpdf.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) {
                  btpdf.setEnabled(false);
                  workmsg.setVisible(true);
                  datos();
                 
                }
        });
       
       
       
        btNuevo.setVisible(true);
        btEliminar.setVisible(true);
        btGuardar.setVisible(true);
        btCerrar.setVisible(true);
        btpdf.setVisible(true);
        btpdf.getElement().setId("bpdf");
       
        hP.add(btNuevo);
        hP.add(btEliminar);
        hP.add(btGuardar);
        hP.add(btCerrar);
        hP.add(btpdf);
       
        VerticalPanel vP = new VerticalPanel();
        vP.setStyleName(".cosa");
        vP.setWidth("100%");
        vP.setSpacing(5);
        vP.add(hP);
       //if(proyectos.size()>0){
         ScrollPanel SP = new ScrollPanel(PSeleccion.tabla);
         vP.add(SP);
       //}
      HorizontalPanel tabProy = new HorizontalPanel();
      tabProy.add(vP);
      PSeleccion.crea_gantt();
      PSeleccion.iniciarDiagrama();
      tabProy.add(PSeleccion.scrollPanel);
       
     
      resizePanel = new ResizeLayoutPanel();
        resizePanel.setWidth("99%");
        resizePanel.setHeight(Window.getClientHeight() + "px");
       
        Window.addResizeHandler(new ResizeHandler() {

            public void onResize(ResizeEvent event) {
              int height = event.getHeight();
              resizePanel.setHeight(height + "px");
            }
          });
       
        resizePanel.setWidget(tabProy);
      
        workmsg.setVisible(false);
       
       return resizePanel;
     
        //return tabProy;
    }
   
   
    //carga de datos del pdf
    public void datos(){
       
      String filas="";
        int numeroDT=0;
        Date hoy = new Date();
        String dato="";
        int inicio, fin;
        int mayor=0;
        int mes1,mes2, dia1, dia2, year1, year2;
       
        Date fmenor = new Date();
        Date fmayor = new Date();
         
        fmenor.setDate(1);
        fmenor.setMonth(0);
        fmenor.setYear(200);
       
        fmayor.setDate(31);
        fmayor.setMonth(11);
        fmayor.setYear(0);
       
       
        Date faux,faux2;
       
        //Window.alert("menor " + fmenor + "\n mayor " +fmayor);
       
        dato = "<img src=\"http://aboutplanningt.appspot.com/images/planning.jpg\"><br><br>"+
            "<p> <b>"+constants.nombre()+": </b> "+
            ProySeleccionado.nombre+"</p> <br>"+
            "<p> <b>"+constants.descripcion()+": </b>"+
            ProySeleccionado.descripcion+"</p> <br><br>";
       
          if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
            for (TareaDTO tar : PSeleccion.proyecto.tareas) {
              numeroDT++;
              inicio = tar.inicio.getYear()-100;
              fin = tar.fin.getYear()-100;
              mes1 = tar.inicio.getMonth()+1;
              mes2= tar.fin.getMonth()+1;
              //fila += 
              filas+= "<TR><TD WIDTH=10%>"+String.valueOf(numeroDT) +"</TD><TD WIDTH=40%>"+String.valueOf(tar.nombre)+"</TD><TD WIDTH=25%>"+String.valueOf(tar.inicio.getDate()+"/"+mes1+"/"+inicio)+"</TD><TD WIDTH=25%>"+String.valueOf(tar.fin.getDate()+"/"+mes2+"/"+fin)+"</TR>";
             
              faux = new Date();
              faux.setDate(tar.inicio.getDate());
              faux.setMonth(tar.inicio.getMonth());
              faux.setYear(tar.inicio.getYear());
             
              faux2 = new Date();
              faux2.setDate(tar.fin.getDate());
              faux2.setMonth(tar.fin.getMonth());
              faux2.setYear(tar.fin.getYear());
             
 
              if (faux.compareTo(fmenor)<0){
                fmenor = faux;
               
              }
             
              if(faux2.compareTo(fmayor)>0 ){
                fmayor = faux2;
              }
             
              //if (tar.duracion>mayor){
                //mayor = tar.duracion; //tarea de mayor duraci�n
              //}
             
             
             
             
            }
          }
         
         
         
         
       
          int totaldias = contarDias(fmayor, fmenor);
          //Window.alert("menor " + fmenor + "\n mayor " +fmayor);
          //Window.alert("dias "+dias);
       
          dato += "<TABLE > <TR > <TH WIDTH=10%>"+constants.numero()+"</TH>  <TH WIDTH=40%>"+constants.nombre()+"</TH>  <TH WIDTH=25%>"+constants.inicio()+"</TH>  <TH WIDTH=25%>"+constants.fin()+"</TH> </TR> " +
              filas +" </TABLE> ";
         
          //crear gantt
         
         
         
         
       
         
         
         
          dato+="<br/><br/>"+
          "<TABLE cellspacing=0 cellpadding=2 WIDTH=100%  > " +
          "<TR><TH WIDTH=20%> Tarea</TH><TH WIDTH=80%> </TD></TH>";
           
         
          String cuerpog = "";
          double p1=0,p2=0,p3=0;
         
          numeroDT=0;
          if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
            for (TareaDTO tar : PSeleccion.proyecto.tareas) {
              numeroDT++;
             
              faux = new Date();
              faux.setDate(tar.inicio.getDate());
              faux.setMonth(tar.inicio.getMonth());
              faux.setYear(tar.inicio.getYear());
             
              faux2 = new Date();
              faux2.setDate(tar.fin.getDate());
              faux2.setMonth(tar.fin.getMonth());
              faux2.setYear(tar.fin.getYear());
             
              p1 = contarDias(faux, fmenor);
              p1 = p1/totaldias*100;
             
              p2 = contarDias(faux,faux2);
              p2 = p2/totaldias*100;
             
              p3 = contarDias(faux2, fmayor);
              p3 = p3/totaldias*100;
              mes1 = faux.getMonth()+1;
              mes2 = faux2.getMonth()+1;
             
              cuerpog +="<TR>" +
                  "<TD WIDTH=20%>"+tar.nombre+"</TD>"+
              "<TD WIDTH=80%>"+
                "<TABLE BORDER=0 WIDTH=100%  BORDERCOLOR=\"#ffffff\">"+
                "<TD WIDTH="+p1+"% align=\"right\">"+ tar.inicio.getDate()+"/"+mes1 +"</TD>"+
                "<TD WIDTH="+p2+"% BGCOLOR=\"#667de1\" Height=\"12px\"></TD>"+
                "<TD WIDTH="+p3+"%>"+ tar.fin.getDate()+"/"+mes2 +"</TD>"+
                "</TABLE>"+
              "</TD>"+
              "</TR>";
             
             
             
            }
          }
         
          //Window.alert("p1 "+p1+" p2 "+p2+" p3 "+p3 +" total "+totaldias );
          dato+= cuerpog+ "</TD></TABLE>";
         
          fin = hoy.getYear()-100;
          dato += "<br><br><p> "+constants.creado()+": "+ hoy.toGMTString()+" "+constants.por()+" "+loginInfo.getNickname();
         
          CrearPdf(dato);
      }
 
    public int cdia=0;
    public int contarDias(Date _ini, Date _fin)
    {
         cdia = (int)Math.ceil(((double)_fin.getTime() - _ini.getTime()) / MS_POR_DIA);
        
         if (cdia<0){
           cdia = cdia *-1;
         }
        
             return cdia;
    }
   
      //metodo para la creaci�n de pdf
      public void CrearPdf(String input){
          final String input2=input;
         
        textToServerLabel.setText(constants.de5()+"...");//documento...
        serverResponseLabel.setText("");
        greetingService.greetServer(input2,
            new AsyncCallback<String>() {
              public void onFailure(Throwable caught) {
                dialogBox.setText(constants.de6()); //error en la creaci�n del PDF
                serverResponseLabel.addStyleName("serverResponseLabelError");
                serverResponseLabel.setHTML(SERVER_ERROR);
                dialogBox.center();
                closeButton.setFocus(true);
                workmsg.setVisible(false);
                //CrearPdf(input2);
              }

              public void onSuccess(String result) {
                dialogBox.setText(constants.de7()); //creado pdf
                serverResponseLabel.removeStyleName("serverResponseLabelError");
                if (result.compareTo("error interfacing with Google Docs, see your logs")==0){
                  CrearPdf(input2);
                }
                else{
                serverResponseLabel.setHTML(result);
                dialogBox.center();
                closeButton.setFocus(true);
                workmsg.setVisible(false);
                }
              }
            });
      }
 
     
      public void NuevaTarea(){
        int num = PSeleccion.tabla.getRowCount();
        PSeleccion.proyecto.tareas.add(new TareaDTO(num,constants.tareanueva() +" " + num));
        PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
        PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
        PSeleccion.tabla.redraw();
        //Window.alert("creada tarea " + PSeleccion.proyecto.nombre + " tareas " + String.valueOf(num));
        PSeleccion.dibujarTarea(num, new Date(), new Date(), "blue");
       
       
      }
     
      public void EliminarTarea(){
       
          
        TareaDTO selected = selectionModel.getSelectedObject();
     
     
      
        PSeleccion.proyecto.tareas.remove(selected);
        PSeleccion.canvas.clear();
        PSeleccion.crea_gantt();
       
        Iterator iter = PSeleccion.proyecto.tareas.iterator();
        int i=0;
        while (iter.hasNext()){
          ((TareaDTO)iter.next()).numero = i;
          i++;
        }
        PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
        PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
        PSeleccion.tabla.redraw();
       
        PSeleccion.cargarTareas();
       
       
        /**/
      }
     
      public void GuardarProyectoP(){
        ProyService.guardarProyecto(PSeleccion.proyecto.id, PSeleccion.proyecto.tareas, new AsyncCallback<Void>(){

        @Override
        public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
          workmsg2.setHTML("&nbsp; Error...");
             workmsg2.setVisible(true);
           
               t = new Timer() {
                public void run() {
                  workmsg2.setVisible(false);  
                }
              };

              t.schedule(TIME);
         
        }

        @Override
        public void onSuccess(Void result) {
          // TODO Auto-generated method stub
          //Window.alert(constants.m3());//proyecto guardado exitosamente
          workmsg2.setHTML("&nbsp; "+constants.m3()+"...");
             workmsg2.setVisible(true);
           
               t = new Timer() {
                public void run() {
                  workmsg2.setVisible(false);  
                }
              };

              t.schedule(TIME);
             
        }
         
        });
      }
     
      public void CerrarProyecto(){
        //RootPanel.get("PanelProyecto").clear();
       /* dialogBox2.center();*/
       /* dialogBox2.show();*/
        GuardarProyectoP();
       tabPanel.remove(tabPanel.getSelectedIndex());
        proyAbiertos.remove(PSeleccion);
      }
     
     
      public void actualizarNombreProyecto(String nombre){
        ProyService.actualizarNombreProyecto(ProySeleccionado.id, nombre , new AsyncCallback<Void> (){

        @Override
        public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
         
        }

        @Override
        public void onSuccess(Void result) {
          // TODO Auto-generated method stub
         
        }
        });
       
      }
     
      public void actualizarDescripcionProyecto(String descripcion){
        ProyService.actualizarDescripcionProyecto(ProySeleccionado.id, descripcion , new AsyncCallback<Void> (){

        @Override
        public void onFailure(Throwable caught) {
          // TODO Auto-generated method stub
         
        }

        @Override
        public void onSuccess(Void result) {
          // TODO Auto-generated method stub
         
        }
        });
       
      }
     
     
      private DialogBox createDialogBox() {
       
          final DialogBox dialogBox = new DialogBox();
          dialogBox.ensureDebugId("cwDialogBox");
          dialogBox.setText("PlanninGt");
        
          VerticalPanel verp = new VerticalPanel();
          verp.setSpacing(4);
          dialogBox.setWidget(verp);
         
          HTML details = new HTML(constants.pregunta()+"<br/>");
          verp.add(details);
         
          HorizontalPanel dialogContents = new HorizontalPanel();
          HorizontalPanel dialogContents2 = new HorizontalPanel();
          dialogContents.setWidth("100%");
          //dialogContents.setBorderWidth(2);
         
         
          dialogContents.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
          //dialogContents2.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
         

          Button okButton = new Button(
              constants.aceptar(), new ClickHandler() {
                public void onClick(ClickEvent event) {
                  GuardarProyectoP();
                  tabPanel.remove(tabPanel.getSelectedIndex());
              proyAbiertos.remove(PSeleccion);
              dialogBox.hide();
                }
              });
         
          Button cancelButton = new Button(
                constants.cancelar(), new ClickHandler() {
                  public void onClick(ClickEvent event) {
                    tabPanel.remove(tabPanel.getSelectedIndex());
                proyAbiertos.remove(PSeleccion);
                dialogBox.hide();
                  }
                });
         
         
         
         // dialogContents.setCellHorizontalAlignment(okButton, HasHorizontalAlignment.ALIGN_RIGHT);
         // dialogContents.setCellHorizontalAlignment(cancelButton, HasHorizontalAlignment.ALIGN_RIGHT);
         
          dialogContents.add(okButton);
          dialogContents.add(cancelButton);
         
         
         
 

          verp.add(dialogContents);
         // verp.add(dialogContents2);
           
          return dialogBox;
        }
}
TOP

Related Classes of com.proyecto.miniplan.client.MiniPlan

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.