Package com.proyecto.miniplan.client

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

package com.proyecto.miniplan.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.vaadin.gwtgraphics.client.DrawingArea;
import org.vaadin.gwtgraphics.client.animation.Animate;
import org.vaadin.gwtgraphics.client.shape.Rectangle;
import org.vaadin.gwtgraphics.client.shape.Text;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.datepicker.client.CalendarUtil;
import com.proyecto.miniplan.shared.ProyectoDTO;
import com.proyecto.miniplan.shared.TareaDTO;


public class ProyectoCliente {
  public ProyectoDTO proyecto;
  public CellTable tabla;
  public ScrollPanel scrollPanel = new ScrollPanel();
 
  public DrawingArea canvas = new DrawingArea(2400, 410);
  Date hoy = new Date();
  final int margen = 23;
 
  public List<Rectangle> widTareas = new ArrayList<Rectangle>();
 
  public Date fecha_ini, fecha_fin, inicioreal, finreal;
  //public int tama�oX = 2000;
 
  public Date lista_dia;
 
  public CalendarUtil calendario = new CalendarUtil();
 
  public ProyectoCliente(){
  }
   
  public ProyectoCliente(ProyectoDTO proy){
    proyecto = proy;
    tabla = new CellTable<TareaDTO>();
    tabla.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
    fecha_ini = new Date();
    fecha_fin = new Date();
    //fecha_fin.setDate(fecha_ini.getDate() + 100);
    inicioreal = new Date();
    finreal = new Date();;
    hoy.setHours(0);
    hoy.setMinutes(0);
   
    inicioreal.setHours(0);
    inicioreal.setMinutes(0);
   
    finreal.setHours(0);
    finreal.setMinutes(0);
  }
 
 
  public void crea_gantt(){
   
    lista_dia = new Date();
    fecha_ini = new Date();
    fecha_fin = new Date();
    //lista_dia = new Date(lista_dia.getYear(), lista_dia.getMonth(), lista_dia.getDate());
    //fecha_ini = new Date(fecha_ini.getYear(), fecha_ini.getMonth(), fecha_ini.getDate());
    //fecha_ini = new Date(fecha_fin.getYear(), fecha_fin.getMonth(), fecha_fin.getDate());
    //lista_dia = truncarDia(lista_dia);
    //truncarDia(fecha_ini);
    //fecha_fin = truncarDia(fecha_fin);
   
    lista_dia.setHours(0);
    lista_dia.setMinutes(0);
   
    fecha_ini.setHours(0);
    fecha_ini.setMinutes(0);
   
    fecha_fin.setHours(0);
    fecha_fin.setMinutes(0);
   
    calculaInicio();
    calculaFin();
   
    //Window.alert(String.valueOf(fecha_fin));
   
    inicioreal.setDate((fecha_ini.getDate() - fecha_ini.getDate())+1);
    finreal.setDate(fecha_fin.getDate() - fecha_fin.getDate());
    finreal.setMonth(fecha_fin.getMonth());   
   
    //Window.alert(String.valueOf(inicioreal));
   
    lista_dia = (Date)inicioreal.clone();
   
    Rectangle base;
    Text txt;
    Text txtmes;
    int dia_tipo = 0;
    String color = "teal";
    int dia_diciembre = 0;
   
    int fin = contarDias(inicioreal, finreal);
    //int fin2 = calendario.getDaysBetween(inicioreal, finreal);
    if(fin<0){
      finreal.setYear(finreal.getYear()+1);
      fin = contarDias(inicioreal, finreal);
    }
   
    //Window.alert("inicio " + String.valueOf(inicioreal));
    //Window.alert("fin " + String.valueOf(finreal));
    //Window.alert("Dias totales " + String.valueOf(fin));
    //Window.alert("Dias totales 2 " + String.valueOf(fin2));
   
    canvas.setWidth((fin*20)+20);
   
    //for(int i=0; i<100; i++){
    for(int i=0; i<=fin; i++){
      
       if(lista_dia.getDate()==1 || (i==0 && lista_dia.getDate() <=24)){
         txtmes = new Text((i*20)+5,31+margen,darMes(lista_dia.getMonth())+ " 20" + String.valueOf(lista_dia.getYear()-100));
         txtmes.setFontSize(14);
         canvas.add(txtmes);
       }
      
       dia_tipo = lista_dia.getDay();
       if(dia_tipo == 0 || dia_tipo == 6){
         color = "#6c84ed";
         base = new Rectangle(i*20,53+margen,18,350);
         base.setFillOpacity(0.2);
         base.setStrokeOpacity(0.3);
         base.setStrokeColor(color);
         base.setFillColor(color);
         canvas.add(base);
       }
       else{
         color = "teal";
       }
      
       if(contarDias(lista_dia, hoy)==0){
         base = new Rectangle(i*20,53+margen,18,350);
         base.setFillOpacity(0.3);
         base.setStrokeOpacity(0.3);
         base.setStrokeColor("#facc2e");
         base.setFillColor("#facc2e");
         canvas.add(base);
       }
      
       base = new Rectangle(i*20,34+margen,18,18);
       base.setFillOpacity(0.0);
       base.setStrokeOpacity(0.5);
       base.setStrokeColor(color);
       canvas.add(base);
      
       String dia = String.valueOf(lista_dia.getDate());
       if(dia.length()==1)
         dia = "0"+dia;
       txt = new Text((i*20)+2,50+margen,dia);
       txt.setFontSize(14);
       canvas.add(txt);
        
       /*if(lista_dia.getMonth()==11 && lista_dia.getDate()==31){
         Window.alert("fecha final " + String.valueOf(lista_dia));
         lista_dia.setYear(lista_dia.getYear()+1);
         lista_dia.setMonth(0);
         lista_dia.setDate(1);
         Window.alert("fecha nueva " + String.valueOf(lista_dia));
       }else{
       if(lista_dia.getMonth() == 11)
         dia_diciembre++;
       if(dia_diciembre==31){
         txt = new Text((i*20)+2,150+margen,"fin de a�o");
         txt.setFontSize(14);
         canvas.add(txt);
         lista_dia = new Date(lista_dia.getYear()+1, 0,1);
         //Window.alert("Fin de a�o " + String.valueOf(lista_dia));
        
       }else*/
         //lista_dia.setDate(lista_dia.getDate() + 1);
       calendario.addDaysToDate(lista_dia, 1);
         //lista_dia = new Date(lista_dia.getYear(), lista_dia.getMonth())
         //lista_dia.setDate(lista_dia.getTime()+1);
       //}
     }
    
   }
 
  public void iniciarDiagrama(){
    scrollPanel.setSize("550px", "450px");
    scrollPanel.add(canvas);
  }
 
  private final long MS_POR_DIA = 1000 * 60 * 60 * 24;
  public int contarDias(Date _ini, Date _fin)
    {
         return (int)Math.ceil(((double)_fin.getTime() - _ini.getTime()) / MS_POR_DIA);
    }
 
  public void dibujarTarea(int _NoTarea, Date _ini, Date _fin, String _color){
    Date ini = _ini;
    ini.setHours(0);
    ini.setMinutes(0);
   
    Date fin = _fin;
    fin.setHours(0);
    fin.setMinutes(0);
   
    ClickHandler handler = new ClickHandler() {
        public void onClick(ClickEvent event) {
          String col = cambiaColor(((Rectangle) event.getSource()).getFillColor());
          ((Rectangle) event.getSource()).setFillColor(col);
          ((Rectangle) event.getSource()).setStrokeColor(col);
        }
      };
     
    int inicio = contarDias(inicioreal,ini);
    int dura = contarDias(ini,fin);

    //inicio = inicio - 1 ;
    Rectangle r1 = new Rectangle((inicio) * 20, 62+margen + (_NoTarea * 26), 0, 10);
    r1.setFillColor(_color);
    r1.setFillOpacity(0.7);
    r1.setStrokeColor(_color);
    r1.setRoundedCorners(1);
   
    r1.addClickHandler(handler);
   
    canvas.add(r1);
    widTareas.add(r1);
   
    if(dura < 0)
      dura=0;
    new Animate(r1, "width", 0, (dura + 1) * 20, 500).start();
  }
 
  public void actualizarDibujo(int _pos, Date _ini, Date _fin){
    Date ini = _ini;
    ini.setHours(0);
    ini.setMinutes(0);

    Date fin = _fin;
    fin.setHours(0);
    fin.setMinutes(0);
   
    int inicio = contarDias(inicioreal,ini);
    int dura = contarDias(ini,fin);
    //if(inicio != 0)
      //inicio = inicio - 1 ;
    ((Rectangle)widTareas.get(_pos)).setWidth(0);
    if(dura < 0)
      dura=0;
    new Animate(((Rectangle)widTareas.get(_pos)), "x", ((Rectangle)widTareas.get(_pos)).getX(), inicio * 20, 500).start();
    new Animate(((Rectangle)widTareas.get(_pos)), "width", ((Rectangle)widTareas.get(_pos)).getWidth(), (dura + 1) * 20, 500).start();
  }

  public String darMes(int _mes){
    switch(_mes){
      case 0: return "Enero";
      case 1: return "Febrero";
      case 2: return "Marzo";
      case 3: return "Abril";
      case 4: return "Mayo";
      case 5: return "Junio";
      case 6: return "Julio";
      case 7: return "Agosto";
      case 8: return "Septiembre";
      case 9: return "Octubre";
      case 10: return "Noviembre";
      case 11: return "Diciembre";
      default: return "error";
    }
  }
 
  public String cambiaColor(String _col){
   
    if(_col.compareTo("blue")==0)
      return "red";
    else
      if(_col.compareTo("red")==0)
        return "yellow";
      else
        if(_col.compareTo("yellow")==0)
          return "green";
        else
          if(_col.compareTo("green")==0)
            return "fuchsia";
          else
            if(_col.compareTo("fuchsia")==0)
              return "lime";
            else
              if(_col.compareTo("lime")==0)
                return "maroon";
              else
                if(_col.compareTo("maroon")==0)
                  return "navy";
                else
                  if(_col.compareTo("navy")==0)
                    return "olive";
                  else
                    if(_col.compareTo("olive")==0)
                      return "teal";
                    else
                      return "blue";
  }
 
  public void cargarTareas(){
    widTareas = new ArrayList<Rectangle>();
    TareaDTO aux;
    for(int i=0; i<proyecto.tareas.size();i++){
      aux = ((TareaDTO)proyecto.tareas.get(i));
      dibujarTarea(i, aux.inicio, aux.fin, "blue");
    }
  }
 
  public void calculaInicio(){
    TareaDTO aux;
    for(int i=0; i<proyecto.tareas.size();i++){
      aux = ((TareaDTO)proyecto.tareas.get(i));
      if(aux.inicio.before(fecha_ini)){
        fecha_ini = aux.inicio;
      }
    }
    //return null;
  }
 
  public void calculaFin(){
    TareaDTO aux;
    for(int i=0; i<proyecto.tareas.size();i++){
      aux = ((TareaDTO)proyecto.tareas.get(i));
      if(aux.fin.after(fecha_fin)){
        fecha_fin = aux.fin;
      }
    }
  }
 
  public static Date truncarDia(Date date)
    {
        return new Date(date.getYear(), date.getMonth(), date.getDate());
    }
}
TOP

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

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.